aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/mvm/mvm.h
diff options
context:
space:
mode:
authorAriej Marjieh <ariej.marjieh@intel.com>2014-07-16 14:11:12 -0400
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2014-07-22 12:20:59 -0400
commitb112889c5af8124e2b6d884d00859fc172c6748a (patch)
treeb6f340ee3261ef04f86fd58e5dc4440c1399be8b /drivers/net/wireless/iwlwifi/mvm/mvm.h
parent720befbf2ecce8e5851a816fa567584320d721ec (diff)
iwlwifi: mvm: add Aux ROC request/response flow
The Remain On Channel framework added to the firmare is a bit like time events. It allows the driver to request the firmware to be on a certain channel for a certain time. Unlike the time events, the ROC infrastructure doesn't need a MAC context in the firmware - it uses a generic context called "auxiliary framework". This is useful for any offchannel activity that is not bound to a specific MAC. The flow is synchronized much like with time events: 1) The driver receives an action frame from the wpa_supplicant via nl80211 that requests to be sent offchannel. 2) The driver sends an Aux ROC command (0x53) to the firmware. 3) The firmware responds with the unique id of the time event. 4) When time event starts, the driver puts the frame in the Aux queue. Special care needs to be taken when the time events ends: the queue needs to be cleaned-up. Signed-off-by: Ariej Marjieh <ariej.marjieh@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/mvm.h')
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mvm.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/mvm.h b/drivers/net/wireless/iwlwifi/mvm/mvm.h
index 24c12c77d93a..2cead5d44309 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mvm.h
+++ b/drivers/net/wireless/iwlwifi/mvm/mvm.h
@@ -82,6 +82,8 @@
82/* RSSI offset for WkP */ 82/* RSSI offset for WkP */
83#define IWL_RSSI_OFFSET 50 83#define IWL_RSSI_OFFSET 50
84#define IWL_MVM_MISSED_BEACONS_THRESHOLD 8 84#define IWL_MVM_MISSED_BEACONS_THRESHOLD 8
85/* A TimeUnit is 1024 microsecond */
86#define MSEC_TO_TU(_msec) (_msec*1000/1024)
85 87
86/* 88/*
87 * The CSA NoA is scheduled IWL_MVM_CHANNEL_SWITCH_TIME TUs before "beacon 0" 89 * The CSA NoA is scheduled IWL_MVM_CHANNEL_SWITCH_TIME TUs before "beacon 0"
@@ -336,6 +338,7 @@ struct iwl_mvm_vif {
336 */ 338 */
337 struct ieee80211_tx_queue_params queue_params[IEEE80211_NUM_ACS]; 339 struct ieee80211_tx_queue_params queue_params[IEEE80211_NUM_ACS];
338 struct iwl_mvm_time_event_data time_event_data; 340 struct iwl_mvm_time_event_data time_event_data;
341 struct iwl_mvm_time_event_data hs_time_event_data;
339 342
340 struct iwl_mvm_int_sta bcast_sta; 343 struct iwl_mvm_int_sta bcast_sta;
341 344
@@ -669,6 +672,9 @@ struct iwl_mvm {
669 u8 bt_tx_prio; 672 u8 bt_tx_prio;
670 enum iwl_bt_force_ant_mode bt_force_ant_mode; 673 enum iwl_bt_force_ant_mode bt_force_ant_mode;
671 674
675 /* Aux ROC */
676 struct list_head aux_roc_te_list;
677
672 /* Thermal Throttling and CTkill */ 678 /* Thermal Throttling and CTkill */
673 struct iwl_mvm_tt_mgmt thermal_throttle; 679 struct iwl_mvm_tt_mgmt thermal_throttle;
674 s32 temperature; /* Celsius */ 680 s32 temperature; /* Celsius */
@@ -707,6 +713,7 @@ enum iwl_mvm_status {
707 IWL_MVM_STATUS_ROC_RUNNING, 713 IWL_MVM_STATUS_ROC_RUNNING,
708 IWL_MVM_STATUS_IN_HW_RESTART, 714 IWL_MVM_STATUS_IN_HW_RESTART,
709 IWL_MVM_STATUS_IN_D0I3, 715 IWL_MVM_STATUS_IN_D0I3,
716 IWL_MVM_STATUS_ROC_AUX_RUNNING,
710}; 717};
711 718
712static inline bool iwl_mvm_is_radio_killed(struct iwl_mvm *mvm) 719static inline bool iwl_mvm_is_radio_killed(struct iwl_mvm *mvm)