From bbebea7d6dc64313132226adc3f7369d36e9359d Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 15 Jul 2021 19:49:46 +0200 Subject: [PATCH] Revert "mt76: fix mt76_rates for the multiple devices" Fix rate values for MT7915 and MT7921 This reverts commit ca64a36908b7a1b9d4a0cdc3c64dd5434010e302. Signed-off-by: Felix Fietkau --- mac80211.c | 24 ++++++++++++------------ mt76.h | 12 ++++++------ mt7603/init.c | 19 ++----------------- mt76x02_util.c | 16 ++++++++-------- mt7915/mac.c | 5 ++++- mt7921/mac.c | 5 ++++- 6 files changed, 36 insertions(+), 45 deletions(-) diff --git a/mac80211.c b/mac80211.c index 0d670fa4..7403a012 100644 --- a/mac80211.c +++ b/mac80211.c @@ -84,18 +84,18 @@ static const struct ieee80211_tpt_blink mt76_tpt_blink[] = { }; struct ieee80211_rate mt76_rates[] = { - CCK_RATE(0, 10, 6), - CCK_RATE(1, 20, 6), - CCK_RATE(2, 55, 6), - CCK_RATE(3, 110, 6), - OFDM_RATE(11, 60, 6), - OFDM_RATE(15, 90, 6), - OFDM_RATE(10, 120, 6), - OFDM_RATE(14, 180, 6), - OFDM_RATE(9, 240, 6), - OFDM_RATE(13, 360, 6), - OFDM_RATE(8, 480, 6), - OFDM_RATE(12, 540, 6), + CCK_RATE(0, 10), + CCK_RATE(1, 20), + CCK_RATE(2, 55), + CCK_RATE(3, 110), + OFDM_RATE(11, 60), + OFDM_RATE(15, 90), + OFDM_RATE(10, 120), + OFDM_RATE(14, 180), + OFDM_RATE(9, 240), + OFDM_RATE(13, 360), + OFDM_RATE(8, 480), + OFDM_RATE(12, 540), }; EXPORT_SYMBOL_GPL(mt76_rates); diff --git a/mt76.h b/mt76.h index 1c8647f8..bf36f922 100644 --- a/mt76.h +++ b/mt76.h @@ -764,17 +764,17 @@ enum mt76_phy_type { MT_PHY_TYPE_HE_MU, }; -#define CCK_RATE(_idx, _rate, _offset) { \ +#define CCK_RATE(_idx, _rate) { \ .bitrate = _rate, \ .flags = IEEE80211_RATE_SHORT_PREAMBLE, \ - .hw_value = (MT_PHY_TYPE_CCK << (_offset)) | (_idx), \ - .hw_value_short = (MT_PHY_TYPE_CCK << (_offset)) | (4 + _idx), \ + .hw_value = (MT_PHY_TYPE_CCK << 8) | (_idx), \ + .hw_value_short = (MT_PHY_TYPE_CCK << 8) | (4 + _idx), \ } -#define OFDM_RATE(_idx, _rate, _offset) { \ +#define OFDM_RATE(_idx, _rate) { \ .bitrate = _rate, \ - .hw_value = (MT_PHY_TYPE_OFDM << (_offset)) | (_idx), \ - .hw_value_short = (MT_PHY_TYPE_OFDM << (_offset)) | (_idx), \ + .hw_value = (MT_PHY_TYPE_OFDM << 8) | (_idx), \ + .hw_value_short = (MT_PHY_TYPE_OFDM << 8) | (_idx), \ } extern struct ieee80211_rate mt76_rates[12]; diff --git a/mt7603/init.c b/mt7603/init.c index 59f684b0..031d39a4 100644 --- a/mt7603/init.c +++ b/mt7603/init.c @@ -304,21 +304,6 @@ mt7603_init_hardware(struct mt7603_dev *dev) return 0; } -static struct ieee80211_rate mt7603_rates[] = { - CCK_RATE(0, 10, 8), - CCK_RATE(1, 20, 8), - CCK_RATE(2, 55, 8), - CCK_RATE(3, 110, 8), - OFDM_RATE(11, 60, 8), - OFDM_RATE(15, 90, 8), - OFDM_RATE(10, 120, 8), - OFDM_RATE(14, 180, 8), - OFDM_RATE(9, 240, 8), - OFDM_RATE(13, 360, 8), - OFDM_RATE(8, 480, 8), - OFDM_RATE(12, 540, 8), -}; - static const struct ieee80211_iface_limit if_limits[] = { { .max = 1, @@ -556,8 +541,8 @@ int mt7603_register_device(struct mt7603_dev *dev) wiphy->reg_notifier = mt7603_regd_notifier; - ret = mt76_register_device(&dev->mt76, true, mt7603_rates, - ARRAY_SIZE(mt7603_rates)); + ret = mt76_register_device(&dev->mt76, true, mt76_rates, + ARRAY_SIZE(mt76_rates)); if (ret) return ret; diff --git a/mt76x02_util.c b/mt76x02_util.c index 70a62bf1..ccdbab34 100644 --- a/mt76x02_util.c +++ b/mt76x02_util.c @@ -19,14 +19,14 @@ struct ieee80211_rate mt76x02_rates[] = { MT76x02_CCK_RATE(1, 20), MT76x02_CCK_RATE(2, 55), MT76x02_CCK_RATE(3, 110), - OFDM_RATE(0, 60, 8), - OFDM_RATE(1, 90, 8), - OFDM_RATE(2, 120, 8), - OFDM_RATE(3, 180, 8), - OFDM_RATE(4, 240, 8), - OFDM_RATE(5, 360, 8), - OFDM_RATE(6, 480, 8), - OFDM_RATE(7, 540, 8), + OFDM_RATE(0, 60), + OFDM_RATE(1, 90), + OFDM_RATE(2, 120), + OFDM_RATE(3, 180), + OFDM_RATE(4, 240), + OFDM_RATE(5, 360), + OFDM_RATE(6, 480), + OFDM_RATE(7, 540), }; EXPORT_SYMBOL_GPL(mt76x02_rates); diff --git a/mt7915/mac.c b/mt7915/mac.c index 3d5899e8..b5a3fd96 100644 --- a/mt7915/mac.c +++ b/mt7915/mac.c @@ -1055,12 +1055,15 @@ void mt7915_mac_write_txwi(struct mt7915_dev *dev, __le32 *txwi, mt7915_mac_write_txwi_80211(dev, txwi, skb, key); if (txwi[2] & cpu_to_le32(MT_TXD2_FIX_RATE)) { - u16 rate; + u16 rate, mode; /* hardware won't add HTC for mgmt/ctrl frame */ txwi[2] |= cpu_to_le32(MT_TXD2_HTC_VLD); rate = mt76_default_basic_rate(mphy, vif); + mode = rate >> 8; + rate &= GENMASK(7, 0); + rate |= FIELD_PREP(MT_TX_RATE_MODE, mode); val = MT_TXD6_FIXED_BW | FIELD_PREP(MT_TXD6_TX_RATE, rate); diff --git a/mt7921/mac.c b/mt7921/mac.c index 160eac01..296e0f7a 100644 --- a/mt7921/mac.c +++ b/mt7921/mac.c @@ -811,12 +811,15 @@ void mt7921_mac_write_txwi(struct mt7921_dev *dev, __le32 *txwi, mt7921_mac_write_txwi_80211(dev, txwi, skb, key); if (txwi[2] & cpu_to_le32(MT_TXD2_FIX_RATE)) { - u16 rate; + u16 rate, mode; /* hardware won't add HTC for mgmt/ctrl frame */ txwi[2] |= cpu_to_le32(MT_TXD2_HTC_VLD); rate = mt76_default_basic_rate(mphy, vif); + mode = rate >> 8; + rate &= GENMASK(7, 0); + rate |= FIELD_PREP(MT_TX_RATE_MODE, mode); val = MT_TXD6_FIXED_BW | FIELD_PREP(MT_TXD6_TX_RATE, rate);