diff --git a/mt7603/mac.c b/mt7603/mac.c index c6c78809..46419dfb 100644 --- a/mt7603/mac.c +++ b/mt7603/mac.c @@ -56,6 +56,7 @@ void mt7603_mac_set_timing(struct mt7603_dev *dev) u32 reg_offset = FIELD_PREP(MT_TIMEOUT_VAL_PLCP, offset) | FIELD_PREP(MT_TIMEOUT_VAL_CCA, offset); int sifs; + u32 val; if (dev->mt76.chandef.chan->band == NL80211_BAND_5GHZ) sifs = 16; @@ -74,6 +75,13 @@ void mt7603_mac_set_timing(struct mt7603_dev *dev) FIELD_PREP(MT_IFS_SIFS, sifs) | FIELD_PREP(MT_IFS_SLOT, dev->slottime)); + if (dev->slottime < 20) + val = MT7603_CFEND_RATE_DEFAULT; + else + val = MT7603_CFEND_RATE_11B; + + mt76_rmw_field(dev, MT_AGG_CONTROL, MT_AGG_CONTROL_CFEND_RATE, val); + mt76_clear(dev, MT_ARB_SCR, MT_ARB_SCR_TX_DISABLE | MT_ARB_SCR_RX_DISABLE); } diff --git a/mt7603/main.c b/mt7603/main.c index dcb56f81..6fba4fb3 100644 --- a/mt7603/main.c +++ b/mt7603/main.c @@ -318,18 +318,8 @@ mt7603_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif, } if (changed & BSS_CHANGED_ERP_SLOT) { - u32 val; - dev->slottime = info->use_short_slot ? 9 : 20; mt7603_mac_set_timing(dev); - - if (info->use_short_slot) - val = MT7603_CFEND_RATE_DEFAULT; - else - val = MT7603_CFEND_RATE_11B; - - mt76_rmw_field(dev, MT_AGG_CONTROL, MT_AGG_CONTROL_CFEND_RATE, - val); } if (changed & (BSS_CHANGED_BEACON_ENABLED | BSS_CHANGED_BEACON_INT)) {