mac80211: remove antenna_sel_tx TX info field
authorJohannes Berg <johannes.berg@intel.com>
Wed, 28 Mar 2012 09:04:23 +0000 (11:04 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 10 Apr 2012 18:54:09 +0000 (14:54 -0400)
This field is never set to anything non-zero in
mac80211, so we should be able to remove it.
Unfortunately though, the iwlwifi and iwlegacy
drivers use it for their internal TX status
processing (which shouldn't be using the rate
control API to start with), so add a new field
"status.antenna" for them, at least for now.

In the future, I plan to use the new field to
hold the hardware queue, while the SKB's queue
mapping holds the AC.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/b43/xmit.c
drivers/net/wireless/b43legacy/xmit.c
drivers/net/wireless/iwlegacy/4965-mac.c
drivers/net/wireless/iwlegacy/4965-rs.c
drivers/net/wireless/iwlwifi/iwl-agn-rs.c
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
drivers/net/wireless/p54/txrx.c
include/net/mac80211.h

index 2c5367884b3ff0f0a600ba5c6b409b43fabcc349..cba413536270bbc831e80a34a2d655179a9bfaae 100644 (file)
@@ -378,7 +378,7 @@ int b43_generate_txhdr(struct b43_wldev *dev,
        if (info->control.rates[0].flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)
                phy_ctl |= B43_TXH_PHY_SHORTPRMBL;
 
-       switch (b43_ieee80211_antenna_sanitize(dev, info->antenna_sel_tx)) {
+       switch (b43_ieee80211_antenna_sanitize(dev, 0)) {
        case 0: /* Default */
                phy_ctl |= B43_TXH_PHY_ANT01AUTO;
                break;
index 5188fab0b377aae80f5b46e904d78608dc6e16ad..e6c573af494d1937992fbaef2cd0c3d5a17746b7 100644 (file)
@@ -277,19 +277,7 @@ static int generate_txhdr_fw3(struct b43legacy_wldev *dev,
                phy_ctl |= B43legacy_TX4_PHY_ENC_OFDM;
        if (info->control.rates[0].flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)
                phy_ctl |= B43legacy_TX4_PHY_SHORTPRMBL;
-       switch (info->antenna_sel_tx) {
-       case 0:
-               phy_ctl |= B43legacy_TX4_PHY_ANTLAST;
-               break;
-       case 1:
-               phy_ctl |= B43legacy_TX4_PHY_ANT0;
-               break;
-       case 2:
-               phy_ctl |= B43legacy_TX4_PHY_ANT1;
-               break;
-       default:
-               B43legacy_BUG_ON(1);
-       }
+       phy_ctl |= B43legacy_TX4_PHY_ANTLAST;
 
        /* MAC control */
        rates = info->control.rates;
index c46275a92565a592b15b66ff4d19fd271eb32f5b..f2baf94f069c3b787b16b807e62ee3a8b6741f4b 100644 (file)
@@ -2850,9 +2850,9 @@ void
 il4965_hwrate_to_tx_control(struct il_priv *il, u32 rate_n_flags,
                            struct ieee80211_tx_info *info)
 {
-       struct ieee80211_tx_rate *r = &info->control.rates[0];
+       struct ieee80211_tx_rate *r = &info->status.rates[0];
 
-       info->antenna_sel_tx =
+       info->status.antenna =
            ((rate_n_flags & RATE_MCS_ANT_ABC_MSK) >> RATE_MCS_ANT_POS);
        if (rate_n_flags & RATE_MCS_HT_MSK)
                r->flags |= IEEE80211_TX_RC_MCS;
index d7e2856e41d3b0e90929d605096e9e40932f95ee..ac4d31b30e467597f9e36e1325ec0e71a0c0020c 100644 (file)
@@ -873,7 +873,7 @@ il4965_rs_tx_status(void *il_r, struct ieee80211_supported_band *sband,
            tbl_type.is_SGI != !!(mac_flags & IEEE80211_TX_RC_SHORT_GI) ||
            tbl_type.is_ht40 != !!(mac_flags & IEEE80211_TX_RC_40_MHZ_WIDTH) ||
            tbl_type.is_dup != !!(mac_flags & IEEE80211_TX_RC_DUP_DATA) ||
-           tbl_type.ant_type != info->antenna_sel_tx ||
+           tbl_type.ant_type != info->status.antenna ||
            !!(tx_rate & RATE_MCS_HT_MSK) != !!(mac_flags & IEEE80211_TX_RC_MCS)
            || !!(tx_rate & RATE_MCS_GF_MSK) !=
            !!(mac_flags & IEEE80211_TX_RC_GREEN_FIELD) || rs_idx != mac_idx) {
index 23434122419f90245a0acb0bd739681b3ec52973..f3db23e3efc923ddd43993ef464c0d4038863763 100644 (file)
@@ -969,7 +969,7 @@ static void rs_tx_status(void *priv_r, struct ieee80211_supported_band *sband,
            (tbl_type.is_SGI != !!(mac_flags & IEEE80211_TX_RC_SHORT_GI)) ||
            (tbl_type.is_ht40 != !!(mac_flags & IEEE80211_TX_RC_40_MHZ_WIDTH)) ||
            (tbl_type.is_dup != !!(mac_flags & IEEE80211_TX_RC_DUP_DATA)) ||
-           (tbl_type.ant_type != info->antenna_sel_tx) ||
+           (tbl_type.ant_type != info->status.antenna) ||
            (!!(tx_rate & RATE_MCS_HT_MSK) != !!(mac_flags & IEEE80211_TX_RC_MCS)) ||
            (!!(tx_rate & RATE_MCS_GF_MSK) != !!(mac_flags & IEEE80211_TX_RC_GREEN_FIELD)) ||
            (rs_index != mac_index)) {
index 07563a68d32ab93dc2cc219b9a5880edbd8bcf13..697f2032bfd6eae891f1ed144b2558cc13ecb724 100644 (file)
@@ -779,9 +779,9 @@ static void iwlagn_non_agg_tx_status(struct iwl_priv *priv,
 static void iwlagn_hwrate_to_tx_control(struct iwl_priv *priv, u32 rate_n_flags,
                                  struct ieee80211_tx_info *info)
 {
-       struct ieee80211_tx_rate *r = &info->control.rates[0];
+       struct ieee80211_tx_rate *r = &info->status.rates[0];
 
-       info->antenna_sel_tx =
+       info->status.antenna =
                ((rate_n_flags & RATE_MCS_ANT_ABC_MSK) >> RATE_MCS_ANT_POS);
        if (rate_n_flags & RATE_MCS_HT_MSK)
                r->flags |= IEEE80211_TX_RC_MCS;
index a08a6f0e4dd118064606754e3fbd3be369d7bee5..7c8f118c2b09bc3cabb1005a781bd76314892257 100644 (file)
@@ -914,8 +914,7 @@ void p54_tx_80211(struct ieee80211_hw *dev, struct sk_buff *skb)
        txhdr->hw_queue = queue;
        txhdr->backlog = priv->tx_stats[queue].len - 1;
        memset(txhdr->durations, 0, sizeof(txhdr->durations));
-       txhdr->tx_antenna = ((info->antenna_sel_tx == 0) ?
-               2 : info->antenna_sel_tx - 1) & priv->tx_diversity_mask;
+       txhdr->tx_antenna = 2 & priv->tx_diversity_mask;
        if (priv->rxhw == 5) {
                txhdr->longbow.cts_rate = cts_rate;
                txhdr->longbow.output_power = cpu_to_le16(priv->output_power);
index dc0d3e715759c6820fce75162d1809c51f9d9f9e..a0e79d13fa8bb1962a78515fa5ecfab58062c5d1 100644 (file)
@@ -522,7 +522,7 @@ struct ieee80211_tx_rate {
  *
  * @flags: transmit info flags, defined above
  * @band: the band to transmit on (use for checking for races)
- * @antenna_sel_tx: antenna to use, 0 for automatic diversity
+ * @reserved: reserved for future use
  * @ack_frame_id: internal frame ID for TX status, used internally
  * @control: union for control data
  * @status: union for status data
@@ -538,7 +538,7 @@ struct ieee80211_tx_info {
        u32 flags;
        u8 band;
 
-       u8 antenna_sel_tx;
+       u8 reserved;
 
        u16 ack_frame_id;
 
@@ -564,7 +564,8 @@ struct ieee80211_tx_info {
                        u8 ampdu_ack_len;
                        int ack_signal;
                        u8 ampdu_len;
-                       /* 15 bytes free */
+                       u8 antenna;
+                       /* 14 bytes free */
                } status;
                struct {
                        struct ieee80211_tx_rate driver_rates[