@@ -355,11 +355,15 @@ static void rtw_ops_bss_info_changed(struct ieee80211_hw *hw,
rtw_coex_media_status_notify(rtwdev, conf->assoc);
if (rtw_bf_support)
rtw_bf_assoc(rtwdev, vif, conf);
+
+ rtwdev->fix_rate_count = 20;
} else {
rtw_leave_lps(rtwdev);
net_type = RTW_NET_NO_LINK;
rtwvif->aid = 0;
rtw_bf_disassoc(rtwdev, vif, conf);
+
+ rtwdev->fix_rate_count = 0;
}
rtwvif->net_type = net_type;
@@ -1761,6 +1761,8 @@ struct rtw_dev {
struct rtw_sar sar;
+ u32 fix_rate_count;
+
/* hci related data, must be last */
u8 priv[0] __aligned(sizeof(void *));
};
@@ -376,6 +376,11 @@ void rtw_tx_pkt_info_update(struct rtw_dev *rtwdev,
else if (ieee80211_is_data(fc))
rtw_tx_data_pkt_info_update(rtwdev, pkt_info, control, skb);
+ if (rtwdev->fix_rate_count) {
+ rtwdev->fix_rate_count--;
+ rtw_tx_pkt_info_update_rate(rtwdev, pkt_info, skb);
+ }
+
bmc = is_broadcast_ether_addr(hdr->addr1) ||
is_multicast_ether_addr(hdr->addr1);