|
@@ -819,12 +819,6 @@ il4965_get_channels_for_scan(struct il_priv *il, struct ieee80211_vif *vif,
|
|
|
return added;
|
|
|
}
|
|
|
|
|
|
-static inline u32
|
|
|
-il4965_ant_idx_to_flags(u8 ant_idx)
|
|
|
-{
|
|
|
- return BIT(ant_idx) << RATE_MCS_ANT_POS;
|
|
|
-}
|
|
|
-
|
|
|
static void
|
|
|
il4965_toggle_tx_ant(struct il_priv *il, u8 *ant, u8 valid)
|
|
|
{
|
|
@@ -976,9 +970,8 @@ il4965_request_scan(struct il_priv *il, struct ieee80211_vif *vif)
|
|
|
rx_ant = il->cfg->scan_rx_antennas[band];
|
|
|
|
|
|
il4965_toggle_tx_ant(il, &il->scan_tx_ant[band], scan_tx_antennas);
|
|
|
- rate_flags |= il4965_ant_idx_to_flags(il->scan_tx_ant[band]);
|
|
|
- scan->tx_cmd.rate_n_flags =
|
|
|
- il4965_hw_set_rate_n_flags(rate, rate_flags);
|
|
|
+ rate_flags |= BIT(il->scan_tx_ant[band]) << RATE_MCS_ANT_POS;
|
|
|
+ scan->tx_cmd.rate_n_flags = cpu_to_le32(rate | rate_flags);
|
|
|
|
|
|
/* In power save mode use one chain, otherwise use all chains */
|
|
|
if (test_bit(S_POWER_PMI, &il->status)) {
|
|
@@ -1530,15 +1523,13 @@ il4965_tx_cmd_build_basic(struct il_priv *il, struct sk_buff *skb,
|
|
|
tx_cmd->next_frame_len = 0;
|
|
|
}
|
|
|
|
|
|
-#define RTS_DFAULT_RETRY_LIMIT 60
|
|
|
-
|
|
|
static void
|
|
|
il4965_tx_cmd_build_rate(struct il_priv *il, struct il_tx_cmd *tx_cmd,
|
|
|
struct ieee80211_tx_info *info, __le16 fc)
|
|
|
{
|
|
|
+ const u8 rts_retry_limit = 60;
|
|
|
u32 rate_flags;
|
|
|
int rate_idx;
|
|
|
- u8 rts_retry_limit;
|
|
|
u8 data_retry_limit;
|
|
|
u8 rate_plcp;
|
|
|
|
|
@@ -1548,12 +1539,8 @@ il4965_tx_cmd_build_rate(struct il_priv *il, struct il_tx_cmd *tx_cmd,
|
|
|
else
|
|
|
data_retry_limit = IL4965_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->rts_retry_limit = rts_retry_limit;
|
|
|
+ tx_cmd->rts_retry_limit = min(data_retry_limit, rts_retry_limit);
|
|
|
|
|
|
/* DATA packets will use the uCode station table for rate/antenna
|
|
|
* selection */
|
|
@@ -1589,11 +1576,10 @@ il4965_tx_cmd_build_rate(struct il_priv *il, struct il_tx_cmd *tx_cmd,
|
|
|
|
|
|
/* Set up antennas */
|
|
|
il4965_toggle_tx_ant(il, &il->mgmt_tx_ant, il->hw_params.valid_tx_ant);
|
|
|
- rate_flags |= il4965_ant_idx_to_flags(il->mgmt_tx_ant);
|
|
|
+ rate_flags |= BIT(il->mgmt_tx_ant) << RATE_MCS_ANT_POS;
|
|
|
|
|
|
/* Set the rate in the TX cmd */
|
|
|
- tx_cmd->rate_n_flags =
|
|
|
- il4965_hw_set_rate_n_flags(rate_plcp, rate_flags);
|
|
|
+ tx_cmd->rate_n_flags = cpu_to_le32(rate_plcp | rate_flags);
|
|
|
}
|
|
|
|
|
|
static void
|
|
@@ -2753,7 +2739,7 @@ il4965_sta_alloc_lq(struct il_priv *il, u8 sta_id)
|
|
|
rate_flags |=
|
|
|
il4965_first_antenna(il->hw_params.
|
|
|
valid_tx_ant) << RATE_MCS_ANT_POS;
|
|
|
- rate_n_flags = il4965_hw_set_rate_n_flags(il_rates[r].plcp, rate_flags);
|
|
|
+ rate_n_flags = cpu_to_le32(il_rates[r].plcp | rate_flags);
|
|
|
for (i = 0; i < LINK_QUAL_MAX_RETRY_NUM; i++)
|
|
|
link_cmd->rs_table[i].rate_n_flags = rate_n_flags;
|
|
|
|
|
@@ -3538,11 +3524,10 @@ il4965_hw_get_beacon_cmd(struct il_priv *il, struct il_frame *frame)
|
|
|
/* Set up packet rate and flags */
|
|
|
rate = il_get_lowest_plcp(il, il->beacon_ctx);
|
|
|
il4965_toggle_tx_ant(il, &il->mgmt_tx_ant, il->hw_params.valid_tx_ant);
|
|
|
- rate_flags = il4965_ant_idx_to_flags(il->mgmt_tx_ant);
|
|
|
+ rate_flags = BIT(il->mgmt_tx_ant) << RATE_MCS_ANT_POS;
|
|
|
if ((rate >= IL_FIRST_CCK_RATE) && (rate <= IL_LAST_CCK_RATE))
|
|
|
rate_flags |= RATE_MCS_CCK_MSK;
|
|
|
- tx_beacon_cmd->tx.rate_n_flags =
|
|
|
- il4965_hw_set_rate_n_flags(rate, rate_flags);
|
|
|
+ tx_beacon_cmd->tx.rate_n_flags = cpu_to_le32(rate | rate_flags);
|
|
|
|
|
|
return sizeof(*tx_beacon_cmd) + frame_size;
|
|
|
}
|