aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2017-05-05 05:53:19 -0400
committerJohannes Berg <johannes.berg@intel.com>2017-05-08 05:11:56 -0400
commit2f242bf45370b8ea44f209b22c3c90984655a102 (patch)
tree357b432e630a3daa56cc98150957aa8c6cf5c8a5
parent4ac4d584886a4f47f8ff3bca0f32ff9a2987d3e5 (diff)
mac80211: properly remove RX_ENC_FLAG_40MHZ
Somehow I missed this in my RX rate cleanup series, causing some drivers to not report correct bandwidth since this flag isn't used by mac80211 anymore. Fix this, and make hwsim also report higher bandwidths appropriately. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_mac.c2
-rw-r--r--drivers/net/wireless/ath/ath9k/mac.c4
-rw-r--r--drivers/net/wireless/intel/iwlegacy/4965-mac.c4
-rw-r--r--drivers/net/wireless/intel/iwlwifi/dvm/rx.c4
-rw-r--r--drivers/net/wireless/mac80211_hwsim.c8
-rw-r--r--include/net/mac80211.h2
6 files changed, 16 insertions, 8 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
index 68fcbe03bce2..b3f20b3c0210 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
@@ -522,7 +522,7 @@ int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah, struct ath_rx_status *rxs,
522 rxs->rs_moreaggr = (rxsp->status11 & AR_RxMoreAggr) ? 1 : 0; 522 rxs->rs_moreaggr = (rxsp->status11 & AR_RxMoreAggr) ? 1 : 0;
523 rxs->rs_antenna = (MS(rxsp->status4, AR_RxAntenna) & 0x7); 523 rxs->rs_antenna = (MS(rxsp->status4, AR_RxAntenna) & 0x7);
524 rxs->enc_flags |= (rxsp->status4 & AR_GI) ? RX_ENC_FLAG_SHORT_GI : 0; 524 rxs->enc_flags |= (rxsp->status4 & AR_GI) ? RX_ENC_FLAG_SHORT_GI : 0;
525 rxs->enc_flags |= (rxsp->status4 & AR_2040) ? RX_ENC_FLAG_40MHZ : 0; 525 rxs->bw = (rxsp->status4 & AR_2040) ? RATE_INFO_BW_40 : RATE_INFO_BW_20;
526 526
527 rxs->evm0 = rxsp->status6; 527 rxs->evm0 = rxsp->status6;
528 rxs->evm1 = rxsp->status7; 528 rxs->evm1 = rxsp->status7;
diff --git a/drivers/net/wireless/ath/ath9k/mac.c b/drivers/net/wireless/ath/ath9k/mac.c
index 6128c2bb23d8..77c94f9e7b61 100644
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
@@ -580,8 +580,8 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds,
580 /* directly mapped flags for ieee80211_rx_status */ 580 /* directly mapped flags for ieee80211_rx_status */
581 rs->enc_flags |= 581 rs->enc_flags |=
582 (ads.ds_rxstatus3 & AR_GI) ? RX_ENC_FLAG_SHORT_GI : 0; 582 (ads.ds_rxstatus3 & AR_GI) ? RX_ENC_FLAG_SHORT_GI : 0;
583 rs->enc_flags |= 583 rs->bw = (ads.ds_rxstatus3 & AR_2040) ? RATE_INFO_BW_40 :
584 (ads.ds_rxstatus3 & AR_2040) ? RX_ENC_FLAG_40MHZ : 0; 584 RATE_INFO_BW_20;
585 if (AR_SREV_9280_20_OR_LATER(ah)) 585 if (AR_SREV_9280_20_OR_LATER(ah))
586 rs->enc_flags |= 586 rs->enc_flags |=
587 (ads.ds_rxstatus3 & AR_STBC) ? 587 (ads.ds_rxstatus3 & AR_STBC) ?
diff --git a/drivers/net/wireless/intel/iwlegacy/4965-mac.c b/drivers/net/wireless/intel/iwlegacy/4965-mac.c
index 5d5faa3cad24..49a2ff15ddae 100644
--- a/drivers/net/wireless/intel/iwlegacy/4965-mac.c
+++ b/drivers/net/wireless/intel/iwlegacy/4965-mac.c
@@ -734,7 +734,9 @@ il4965_hdl_rx(struct il_priv *il, struct il_rx_buf *rxb)
734 if (rate_n_flags & RATE_MCS_HT_MSK) 734 if (rate_n_flags & RATE_MCS_HT_MSK)
735 rx_status.encoding = RX_ENC_HT; 735 rx_status.encoding = RX_ENC_HT;
736 if (rate_n_flags & RATE_MCS_HT40_MSK) 736 if (rate_n_flags & RATE_MCS_HT40_MSK)
737 rx_status.enc_flags |= RX_ENC_FLAG_40MHZ; 737 rx_status.bw = RATE_INFO_BW_40;
738 else
739 rx_status.bw = RATE_INFO_BW_20;
738 if (rate_n_flags & RATE_MCS_SGI_MSK) 740 if (rate_n_flags & RATE_MCS_SGI_MSK)
739 rx_status.enc_flags |= RX_ENC_FLAG_SHORT_GI; 741 rx_status.enc_flags |= RX_ENC_FLAG_SHORT_GI;
740 742
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/rx.c b/drivers/net/wireless/intel/iwlwifi/dvm/rx.c
index 1ee1ba9931a7..adfd6307edca 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/rx.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/rx.c
@@ -889,7 +889,9 @@ static void iwlagn_rx_reply_rx(struct iwl_priv *priv,
889 if (rate_n_flags & RATE_MCS_HT_MSK) 889 if (rate_n_flags & RATE_MCS_HT_MSK)
890 rx_status.encoding = RX_ENC_HT; 890 rx_status.encoding = RX_ENC_HT;
891 if (rate_n_flags & RATE_MCS_HT40_MSK) 891 if (rate_n_flags & RATE_MCS_HT40_MSK)
892 rx_status.enc_flags |= RX_ENC_FLAG_40MHZ; 892 rx_status.bw = RATE_INFO_BW_40;
893 else
894 rx_status.bw = RATE_INFO_BW_20;
893 if (rate_n_flags & RATE_MCS_SGI_MSK) 895 if (rate_n_flags & RATE_MCS_SGI_MSK)
894 rx_status.enc_flags |= RX_ENC_FLAG_SHORT_GI; 896 rx_status.enc_flags |= RX_ENC_FLAG_SHORT_GI;
895 if (rate_n_flags & RATE_MCS_GF_MSK) 897 if (rate_n_flags & RATE_MCS_GF_MSK)
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 87444af20fc5..002b25cff5b6 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -1201,7 +1201,13 @@ static bool mac80211_hwsim_tx_frame_no_nl(struct ieee80211_hw *hw,
1201 rx_status.encoding = RX_ENC_HT; 1201 rx_status.encoding = RX_ENC_HT;
1202 } 1202 }
1203 if (info->control.rates[0].flags & IEEE80211_TX_RC_40_MHZ_WIDTH) 1203 if (info->control.rates[0].flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
1204 rx_status.enc_flags |= RX_ENC_FLAG_40MHZ; 1204 rx_status.bw = RATE_INFO_BW_40;
1205 else if (info->control.rates[0].flags & IEEE80211_TX_RC_80_MHZ_WIDTH)
1206 rx_status.bw = RATE_INFO_BW_80;
1207 else if (info->control.rates[0].flags & IEEE80211_TX_RC_160_MHZ_WIDTH)
1208 rx_status.bw = RATE_INFO_BW_160;
1209 else
1210 rx_status.bw = RATE_INFO_BW_20;
1205 if (info->control.rates[0].flags & IEEE80211_TX_RC_SHORT_GI) 1211 if (info->control.rates[0].flags & IEEE80211_TX_RC_SHORT_GI)
1206 rx_status.enc_flags |= RX_ENC_FLAG_SHORT_GI; 1212 rx_status.enc_flags |= RX_ENC_FLAG_SHORT_GI;
1207 /* TODO: simulate real signal strength (and optional packet loss) */ 1213 /* TODO: simulate real signal strength (and optional packet loss) */
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 4d05a9443344..76ed24a201eb 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1141,7 +1141,6 @@ enum mac80211_rx_flags {
1141 * enum mac80211_rx_encoding_flags - MCS & bandwidth flags 1141 * enum mac80211_rx_encoding_flags - MCS & bandwidth flags
1142 * 1142 *
1143 * @RX_ENC_FLAG_SHORTPRE: Short preamble was used for this frame 1143 * @RX_ENC_FLAG_SHORTPRE: Short preamble was used for this frame
1144 * @RX_ENC_FLAG_40MHZ: HT40 (40 MHz) was used
1145 * @RX_ENC_FLAG_SHORT_GI: Short guard interval was used 1144 * @RX_ENC_FLAG_SHORT_GI: Short guard interval was used
1146 * @RX_ENC_FLAG_HT_GF: This frame was received in a HT-greenfield transmission, 1145 * @RX_ENC_FLAG_HT_GF: This frame was received in a HT-greenfield transmission,
1147 * if the driver fills this value it should add 1146 * if the driver fills this value it should add
@@ -1153,7 +1152,6 @@ enum mac80211_rx_flags {
1153 */ 1152 */
1154enum mac80211_rx_encoding_flags { 1153enum mac80211_rx_encoding_flags {
1155 RX_ENC_FLAG_SHORTPRE = BIT(0), 1154 RX_ENC_FLAG_SHORTPRE = BIT(0),
1156 RX_ENC_FLAG_40MHZ = BIT(1),
1157 RX_ENC_FLAG_SHORT_GI = BIT(2), 1155 RX_ENC_FLAG_SHORT_GI = BIT(2),
1158 RX_ENC_FLAG_HT_GF = BIT(3), 1156 RX_ENC_FLAG_HT_GF = BIT(3),
1159 RX_ENC_FLAG_STBC_MASK = BIT(4) | BIT(5), 1157 RX_ENC_FLAG_STBC_MASK = BIT(4) | BIT(5),