aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorIlan Peer <ilan.peer@intel.com>2013-03-05 08:26:03 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-03-20 07:02:27 -0400
commit571765c8598a86c81b658e55285643506770fb2d (patch)
tree657e4568e358bb7c4bdec07de9b2056d2ea0dd2e /drivers
parent6caffd4f9d11cbd9651d93a511ac385ce84aab83 (diff)
iwlwifi: mvm: Add beacon notification handler
Mostly for debugging purposes Signed-off-by: Ilan Peer <ilan.peer@intel.com> Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h6
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/fw-api.h1
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c19
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mvm.h3
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/ops.c2
5 files changed, 31 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h b/drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h
index 6d53850c5448..007a93b25bd7 100644
--- a/drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h
+++ b/drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h
@@ -537,6 +537,12 @@ struct iwl_mac_beacon_cmd {
537 struct ieee80211_hdr frame[0]; 537 struct ieee80211_hdr frame[0];
538} __packed; 538} __packed;
539 539
540struct iwl_beacon_notif {
541 struct iwl_mvm_tx_resp beacon_notify_hdr;
542 __le64 tsf;
543 __le32 ibss_mgr_status;
544} __packed;
545
540/** 546/**
541 * enum iwl_dump_control - dump (flush) control flags 547 * enum iwl_dump_control - dump (flush) control flags
542 * @DUMP_TX_FIFO_FLUSH: Dump MSDUs until the the FIFO is empty 548 * @DUMP_TX_FIFO_FLUSH: Dump MSDUs until the the FIFO is empty
diff --git a/drivers/net/wireless/iwlwifi/mvm/fw-api.h b/drivers/net/wireless/iwlwifi/mvm/fw-api.h
index 0e94d8b91956..1073f2682221 100644
--- a/drivers/net/wireless/iwlwifi/mvm/fw-api.h
+++ b/drivers/net/wireless/iwlwifi/mvm/fw-api.h
@@ -151,6 +151,7 @@ enum {
151 151
152 SET_CALIB_DEFAULT_CMD = 0x8e, 152 SET_CALIB_DEFAULT_CMD = 0x8e,
153 153
154 BEACON_NOTIFICATION = 0x90,
154 BEACON_TEMPLATE_CMD = 0x91, 155 BEACON_TEMPLATE_CMD = 0x91,
155 TX_ANT_CONFIGURATION_CMD = 0x98, 156 TX_ANT_CONFIGURATION_CMD = 0x98,
156 BT_CONFIG = 0x9b, 157 BT_CONFIG = 0x9b,
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c b/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c
index 2779235daa35..a00fb730386f 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c
+++ b/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c
@@ -1013,3 +1013,22 @@ int iwl_mvm_mac_ctxt_remove(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
1013 mvmvif->uploaded = false; 1013 mvmvif->uploaded = false;
1014 return 0; 1014 return 0;
1015} 1015}
1016
1017int iwl_mvm_rx_beacon_notif(struct iwl_mvm *mvm,
1018 struct iwl_rx_cmd_buffer *rxb,
1019 struct iwl_device_cmd *cmd)
1020{
1021 struct iwl_rx_packet *pkt = rxb_addr(rxb);
1022 struct iwl_beacon_notif *beacon = (void *)pkt->data;
1023 u16 status __maybe_unused =
1024 le16_to_cpu(beacon->beacon_notify_hdr.status.status);
1025 u32 rate __maybe_unused =
1026 le32_to_cpu(beacon->beacon_notify_hdr.initial_rate);
1027
1028 IWL_DEBUG_RX(mvm, "beacon status %#x retries:%d tsf:0x%16llX rate:%d\n",
1029 status & TX_STATUS_MSK,
1030 beacon->beacon_notify_hdr.failure_frame,
1031 le64_to_cpu(beacon->tsf),
1032 rate);
1033 return 0;
1034}
diff --git a/drivers/net/wireless/iwlwifi/mvm/mvm.h b/drivers/net/wireless/iwlwifi/mvm/mvm.h
index d022e44e83a1..ea1fafd616e9 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mvm.h
+++ b/drivers/net/wireless/iwlwifi/mvm/mvm.h
@@ -448,6 +448,9 @@ u32 iwl_mvm_mac_get_queues_mask(struct iwl_mvm *mvm,
448 struct ieee80211_vif *vif); 448 struct ieee80211_vif *vif);
449int iwl_mvm_mac_ctxt_beacon_changed(struct iwl_mvm *mvm, 449int iwl_mvm_mac_ctxt_beacon_changed(struct iwl_mvm *mvm,
450 struct ieee80211_vif *vif); 450 struct ieee80211_vif *vif);
451int iwl_mvm_rx_beacon_notif(struct iwl_mvm *mvm,
452 struct iwl_rx_cmd_buffer *rxb,
453 struct iwl_device_cmd *cmd);
451 454
452/* Bindings */ 455/* Bindings */
453int iwl_mvm_binding_add_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif); 456int iwl_mvm_binding_add_vif(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
diff --git a/drivers/net/wireless/iwlwifi/mvm/ops.c b/drivers/net/wireless/iwlwifi/mvm/ops.c
index b490426294cc..81ff28361dc2 100644
--- a/drivers/net/wireless/iwlwifi/mvm/ops.c
+++ b/drivers/net/wireless/iwlwifi/mvm/ops.c
@@ -231,6 +231,7 @@ static const struct iwl_rx_handlers iwl_mvm_rx_handlers[] = {
231 RX_HANDLER(SCAN_COMPLETE_NOTIFICATION, iwl_mvm_rx_scan_complete, false), 231 RX_HANDLER(SCAN_COMPLETE_NOTIFICATION, iwl_mvm_rx_scan_complete, false),
232 232
233 RX_HANDLER(BT_PROFILE_NOTIFICATION, iwl_mvm_rx_bt_coex_notif, true), 233 RX_HANDLER(BT_PROFILE_NOTIFICATION, iwl_mvm_rx_bt_coex_notif, true),
234 RX_HANDLER(BEACON_NOTIFICATION, iwl_mvm_rx_beacon_notif, false),
234 235
235 RX_HANDLER(RADIO_VERSION_NOTIFICATION, iwl_mvm_rx_radio_ver, false), 236 RX_HANDLER(RADIO_VERSION_NOTIFICATION, iwl_mvm_rx_radio_ver, false),
236 RX_HANDLER(CARD_STATE_NOTIFICATION, iwl_mvm_rx_card_state_notif, false), 237 RX_HANDLER(CARD_STATE_NOTIFICATION, iwl_mvm_rx_card_state_notif, false),
@@ -276,6 +277,7 @@ static const char *iwl_mvm_cmd_strings[REPLY_MAX] = {
276 CMD(WEP_KEY), 277 CMD(WEP_KEY),
277 CMD(REPLY_RX_PHY_CMD), 278 CMD(REPLY_RX_PHY_CMD),
278 CMD(REPLY_RX_MPDU_CMD), 279 CMD(REPLY_RX_MPDU_CMD),
280 CMD(BEACON_NOTIFICATION),
279 CMD(BEACON_TEMPLATE_CMD), 281 CMD(BEACON_TEMPLATE_CMD),
280 CMD(STATISTICS_NOTIFICATION), 282 CMD(STATISTICS_NOTIFICATION),
281 CMD(TX_ANT_CONFIGURATION_CMD), 283 CMD(TX_ANT_CONFIGURATION_CMD),