Lines Matching full:beacon
85 * is an AP, and the beacon interval of the AP is a multiple or
86 * divisor of the beacon interval of the client, the same TSF
111 * The new interface is AP/GO, so if its beacon interval is a
112 * multiple or a divisor of the beacon interval of an existing
608 * more beacon intervals happen until the DTIM TBTT. Therefore
793 /* TODO: Assumes that the beacon id == mac context id */
854 u8 *beacon, u32 frame_size)
857 struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)beacon;
860 * variable-length part of the beacon. */
861 tim_idx = mgmt->u.beacon.variable - beacon;
863 /* Parse variable-length elements of beacon to find WLAN_EID_TIM */
865 (beacon[tim_idx] != WLAN_EID_TIM))
866 tim_idx += beacon[tim_idx+1] + 2;
869 if ((tim_idx < (frame_size - 1)) && (beacon[tim_idx] == WLAN_EID_TIM)) {
871 *tim_size = cpu_to_le32((u32)beacon[tim_idx + 1]);
873 IWL_WARN(mvm, "Unable to find TIM Element in beacon\n");
877 u32 iwl_mvm_find_ie_offset(u8 *beacon, u8 eid, u32 frame_size)
879 struct ieee80211_mgmt *mgmt = (void *)beacon;
882 if (WARN_ON_ONCE(frame_size <= (mgmt->u.beacon.variable - beacon)))
885 frame_size -= mgmt->u.beacon.variable - beacon;
887 ie = cfg80211_find_ie(eid, mgmt->u.beacon.variable, frame_size);
891 return ie - beacon;
981 /* if beacon rate was configured try using it */
993 struct sk_buff *beacon,
1001 info = IEEE80211_SKB_CB(beacon);
1004 tx->len = cpu_to_le16((u16)beacon->len);
1009 iwl_mvm_bt_coex_tx_prio(mvm, (void *)beacon->data, info, 0) <<
1032 struct sk_buff *beacon,
1043 cmd.len[1] = beacon->len;
1044 cmd.data[1] = beacon->data;
1052 struct sk_buff *beacon)
1057 iwl_mvm_mac_ctxt_set_tx(mvm, vif, beacon, &beacon_cmd.tx);
1064 beacon->data, beacon->len);
1066 return iwl_mvm_mac_ctxt_send_beacon_cmd(mvm, beacon, &beacon_cmd,
1072 struct sk_buff *beacon)
1077 iwl_mvm_mac_ctxt_set_tx(mvm, vif, beacon, &beacon_cmd.tx);
1084 beacon->data, beacon->len);
1087 cpu_to_le32(iwl_mvm_find_ie_offset(beacon->data,
1089 beacon->len));
1091 cpu_to_le32(iwl_mvm_find_ie_offset(beacon->data,
1093 beacon->len));
1095 return iwl_mvm_mac_ctxt_send_beacon_cmd(mvm, beacon, &beacon_cmd,
1114 struct sk_buff *beacon,
1118 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(beacon);
1143 beacon_cmd.byte_cnt = cpu_to_le16((u16)beacon->len);
1157 beacon->data, beacon->len);
1160 cpu_to_le32(iwl_mvm_find_ie_offset(beacon->data,
1162 beacon->len));
1164 cpu_to_le32(iwl_mvm_find_ie_offset(beacon->data,
1166 beacon->len));
1171 cpu_to_le32(iwl_mvm_find_ie_offset(beacon->data,
1173 beacon->len));
1175 return iwl_mvm_mac_ctxt_send_beacon_cmd(mvm, beacon, &beacon_cmd,
1181 struct sk_buff *beacon,
1184 if (WARN_ON(!beacon))
1192 return iwl_mvm_mac_ctxt_send_beacon_v6(mvm, vif, beacon);
1196 return iwl_mvm_mac_ctxt_send_beacon_v9(mvm, vif, beacon,
1199 return iwl_mvm_mac_ctxt_send_beacon_v7(mvm, vif, beacon);
1202 /* The beacon template for the AP/GO/IBSS has changed and needs update */
1207 struct sk_buff *beacon;
1213 beacon = ieee80211_beacon_get_template(mvm->hw, vif, NULL,
1215 if (!beacon)
1220 dev_kfree_skb(beacon);
1225 ret = iwl_mvm_mac_ctxt_send_beacon(mvm, vif, beacon, link_conf);
1226 dev_kfree_skb(beacon);
1311 * Only set the beacon time when the MAC is being added, when we
1338 /* TODO: Assume that the beacon id == mac context id */
1483 /* Don't start to countdown from a failed beacon */
1519 struct iwl_extended_beacon_notif *beacon = (void *)pkt->data;
1528 mvm->ap_last_beacon_gp2 = le32_to_cpu(beacon->gp2);
1541 "beacon status %#x retries:%d tsf:0x%016llX gp2:0x%X rate:%d\n",
1543 le64_to_cpu(beacon->tsf),
1547 if (unlikely(pkt_len < sizeof(*beacon)))
1550 mvm->ibss_manager = beacon->ibss_mgr_status != 0;
1551 status = le32_to_cpu(beacon->status) & TX_STATUS_MSK;
1553 "beacon status %#x tsf:0x%016llX gp2:0x%X\n",
1554 status, le64_to_cpu(beacon->tsf),
1572 * stations. If this is the first beacon (the timeout wasn't
1636 IWL_DEBUG_INFO(mvm, "missed beacon mac_type=%u,\n", mac_type);
1947 iwl_mvm_connection_loss(mvm, vif, "missed vap beacon");