diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2015-01-12 07:38:29 -0500 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2015-02-01 08:57:23 -0500 |
commit | 4cf677fd547d7671835d799e4d377b949510c642 (patch) | |
tree | efc85701c017e78342b04dea9f20451ec56357b4 /drivers/net/wireless/iwlwifi/mvm/mvm.h | |
parent | ce71c2f7976881f39fcf14f28bd7633612acd0ef (diff) |
iwlwifi: allow to define the stuck queue timer per queue
Different queue can have different behavior. While it can be
unacceptable for a certain queue to be stuck for 2 seconds
(e.g. the command queue), it can happen that another queue
will stay stuck for even longer (a queue servicing a power
saving client in GO).
The op_mode can even make the timeout be a function of the
listen interval.
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.h | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/mvm.h b/drivers/net/wireless/iwlwifi/mvm/mvm.h index 4a7620cb5775..6c69d0584f6c 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mvm.h +++ b/drivers/net/wireless/iwlwifi/mvm/mvm.h | |||
@@ -1318,11 +1318,13 @@ static inline bool iwl_mvm_vif_low_latency(struct iwl_mvm_vif *mvmvif) | |||
1318 | 1318 | ||
1319 | /* hw scheduler queue config */ | 1319 | /* hw scheduler queue config */ |
1320 | void iwl_mvm_enable_txq(struct iwl_mvm *mvm, int queue, u16 ssn, | 1320 | void iwl_mvm_enable_txq(struct iwl_mvm *mvm, int queue, u16 ssn, |
1321 | const struct iwl_trans_txq_scd_cfg *cfg); | 1321 | const struct iwl_trans_txq_scd_cfg *cfg, |
1322 | unsigned int wdg_timeout); | ||
1322 | void iwl_mvm_disable_txq(struct iwl_mvm *mvm, int queue, u8 flags); | 1323 | void iwl_mvm_disable_txq(struct iwl_mvm *mvm, int queue, u8 flags); |
1323 | 1324 | ||
1324 | static inline void iwl_mvm_enable_ac_txq(struct iwl_mvm *mvm, int queue, | 1325 | static inline |
1325 | u8 fifo) | 1326 | void iwl_mvm_enable_ac_txq(struct iwl_mvm *mvm, int queue, |
1327 | u8 fifo, unsigned int wdg_timeout) | ||
1326 | { | 1328 | { |
1327 | struct iwl_trans_txq_scd_cfg cfg = { | 1329 | struct iwl_trans_txq_scd_cfg cfg = { |
1328 | .fifo = fifo, | 1330 | .fifo = fifo, |
@@ -1331,12 +1333,13 @@ static inline void iwl_mvm_enable_ac_txq(struct iwl_mvm *mvm, int queue, | |||
1331 | .frame_limit = IWL_FRAME_LIMIT, | 1333 | .frame_limit = IWL_FRAME_LIMIT, |
1332 | }; | 1334 | }; |
1333 | 1335 | ||
1334 | iwl_mvm_enable_txq(mvm, queue, 0, &cfg); | 1336 | iwl_mvm_enable_txq(mvm, queue, 0, &cfg, wdg_timeout); |
1335 | } | 1337 | } |
1336 | 1338 | ||
1337 | static inline void iwl_mvm_enable_agg_txq(struct iwl_mvm *mvm, int queue, | 1339 | static inline void iwl_mvm_enable_agg_txq(struct iwl_mvm *mvm, int queue, |
1338 | int fifo, int sta_id, int tid, | 1340 | int fifo, int sta_id, int tid, |
1339 | int frame_limit, u16 ssn) | 1341 | int frame_limit, u16 ssn, |
1342 | unsigned int wdg_timeout) | ||
1340 | { | 1343 | { |
1341 | struct iwl_trans_txq_scd_cfg cfg = { | 1344 | struct iwl_trans_txq_scd_cfg cfg = { |
1342 | .fifo = fifo, | 1345 | .fifo = fifo, |
@@ -1346,7 +1349,7 @@ static inline void iwl_mvm_enable_agg_txq(struct iwl_mvm *mvm, int queue, | |||
1346 | .aggregate = true, | 1349 | .aggregate = true, |
1347 | }; | 1350 | }; |
1348 | 1351 | ||
1349 | iwl_mvm_enable_txq(mvm, queue, ssn, &cfg); | 1352 | iwl_mvm_enable_txq(mvm, queue, ssn, &cfg, wdg_timeout); |
1350 | } | 1353 | } |
1351 | 1354 | ||
1352 | /* Assoc status */ | 1355 | /* Assoc status */ |