iwlagn: set rts retry limit
authorWey-Yi Guy <wey-yi.w.guy@intel.com>
Mon, 10 Oct 2011 14:26:59 +0000 (07:26 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 14 Oct 2011 18:48:10 +0000 (14:48 -0400)
setup the rts rety limit for tx command

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 33951a1..64e3417 100644 (file)
 /* RSSI to dBm */
 #define IWLAGN_RSSI_OFFSET     44
 
-#define IWLAGN_DEFAULT_TX_RETRY  15
+#define IWLAGN_DEFAULT_TX_RETRY                        15
+#define IWLAGN_MGMT_DFAULT_RETRY_LIMIT         3
+#define IWLAGN_RTS_DFAULT_RETRY_LIMIT          60
+#define IWLAGN_BAR_DFAULT_RETRY_LIMIT          60
 
 /* Limit range of txpower output target to be between these values */
 #define IWLAGN_TX_POWER_TARGET_POWER_MIN       (0)     /* 0 dBm: 1 milliwatt */
index dcb3bd6..2584f6f 100644 (file)
@@ -113,8 +113,6 @@ static void iwlagn_tx_cmd_build_basic(struct iwl_priv *priv,
        tx_cmd->next_frame_len = 0;
 }
 
-#define RTS_DFAULT_RETRY_LIMIT         60
-
 static void iwlagn_tx_cmd_build_rate(struct iwl_priv *priv,
                                     struct iwl_tx_cmd *tx_cmd,
                                     struct ieee80211_tx_info *info,
@@ -126,17 +124,19 @@ 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 = 3;
+       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;
 
-       /* Set retry limit on RTS packets */
-       rts_retry_limit = RTS_DFAULT_RETRY_LIMIT;
-       if (data_retry_limit < rts_retry_limit)
-               rts_retry_limit = data_retry_limit;
+       tx_cmd->data_retry_limit = data_retry_limit;
        tx_cmd->rts_retry_limit = rts_retry_limit;
 
        /* DATA packets will use the uCode station table for rate/antenna