Преглед на файлове

iwlagn: use low retry limit for WoWLAN

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>
Wey-Yi Guy преди 13 години
родител
ревизия
f3129b7388
променени са 2 файла, в които са добавени 18 реда и са изтрити 11 реда
  1. 1 0
      drivers/net/wireless/iwlwifi/iwl-agn-hw.h
  2. 17 11
      drivers/net/wireless/iwlwifi/iwl-agn-tx.c

+ 1 - 0
drivers/net/wireless/iwlwifi/iwl-agn-hw.h

@@ -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 */

+ 17 - 11
drivers/net/wireless/iwlwifi/iwl-agn-tx.c

@@ -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;