iwlagn: use low retry limit for WoWLAN
authorWey-Yi Guy <wey-yi.w.guy@intel.com>
Mon, 10 Oct 2011 14:27:06 +0000 (07:27 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 14 Oct 2011 18:48:11 +0000 (14:48 -0400)
When in D3 state, use low retry limit for both data and rts

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-agn-hw.h
drivers/net/wireless/iwlwifi/iwl-agn-tx.c

index 64e3417..ac039d4 100644 (file)
@@ -85,6 +85,7 @@
 #define IWLAGN_MGMT_DFAULT_RETRY_LIMIT         3
 #define IWLAGN_RTS_DFAULT_RETRY_LIMIT          60
 #define IWLAGN_BAR_DFAULT_RETRY_LIMIT          60
+#define IWLAGN_LOW_RETRY_LIMIT                 7
 
 /* Limit range of txpower output target to be between these values */
 #define IWLAGN_TX_POWER_TARGET_POWER_MIN       (0)     /* 0 dBm: 1 milliwatt */
index 2584f6f..f849097 100644 (file)
@@ -124,17 +124,23 @@ static void iwlagn_tx_cmd_build_rate(struct iwl_priv *priv,
        u8 data_retry_limit;
        u8 rate_plcp;
 
-       /* Set retry limit on RTS packets */
-       rts_retry_limit = IWLAGN_RTS_DFAULT_RETRY_LIMIT;
-
-       /* Set retry limit on DATA packets and Probe Responses*/
-       if (ieee80211_is_probe_resp(fc)) {
-               data_retry_limit = IWLAGN_MGMT_DFAULT_RETRY_LIMIT;
-               rts_retry_limit = min(data_retry_limit, rts_retry_limit);
-       } else if (ieee80211_is_back_req(fc))
-               data_retry_limit = IWLAGN_BAR_DFAULT_RETRY_LIMIT;
-       else
-               data_retry_limit = IWLAGN_DEFAULT_TX_RETRY;
+       if (priv->shrd->wowlan) {
+               rts_retry_limit = IWLAGN_LOW_RETRY_LIMIT;
+               data_retry_limit = IWLAGN_LOW_RETRY_LIMIT;
+       } else {
+               /* Set retry limit on RTS packets */
+               rts_retry_limit = IWLAGN_RTS_DFAULT_RETRY_LIMIT;
+
+               /* Set retry limit on DATA packets and Probe Responses*/
+               if (ieee80211_is_probe_resp(fc)) {
+                       data_retry_limit = IWLAGN_MGMT_DFAULT_RETRY_LIMIT;
+                       rts_retry_limit =
+                               min(data_retry_limit, rts_retry_limit);
+               } else if (ieee80211_is_back_req(fc))
+                       data_retry_limit = IWLAGN_BAR_DFAULT_RETRY_LIMIT;
+               else
+                       data_retry_limit = IWLAGN_DEFAULT_TX_RETRY;
+       }
 
        tx_cmd->data_retry_limit = data_retry_limit;
        tx_cmd->rts_retry_limit = rts_retry_limit;