diff --git a/mt7603/main.c b/mt7603/main.c index 10c45503..43891912 100644 --- a/mt7603/main.c +++ b/mt7603/main.c @@ -318,8 +318,18 @@ 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)) { diff --git a/mt7603/mt7603.h b/mt7603/mt7603.h index d19d6783..0e68d7f2 100644 --- a/mt7603/mt7603.h +++ b/mt7603/mt7603.h @@ -48,6 +48,9 @@ #define MT7603_EDCCA_BLOCK_TH 10 +#define MT7603_CFEND_RATE_DEFAULT 0x69 /* chip default (24M) */ +#define MT7603_CFEND_RATE_11B 0x03 /* 11B LP, 11M */ + struct mt7603_vif; struct mt7603_sta;