Commit 82453b1c authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau
Browse files

mt76: connac: fix UC entry is being overwritten



Fix UC entry is being overwritten by BC entry

Tested-by: default avatarDeren Wu <deren.wu@mediatek.com>
Co-developed-by: default avatarDeren Wu <deren.wu@mediatek.com>
Signed-off-by: default avatarDeren Wu <deren.wu@mediatek.com>
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 435d68f9
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1148,12 +1148,14 @@ mt7615_mcu_sta_rx_ba(struct mt7615_dev *dev,

static int
__mt7615_mcu_add_sta(struct mt76_phy *phy, struct ieee80211_vif *vif,
		     struct ieee80211_sta *sta, bool enable, int cmd)
		     struct ieee80211_sta *sta, bool enable, int cmd,
		     bool offload_fw)
{
	struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv;
	struct mt76_sta_cmd_info info = {
		.sta = sta,
		.vif = vif,
		.offload_fw = offload_fw,
		.enable = enable,
		.cmd = cmd,
	};
@@ -1167,7 +1169,7 @@ mt7615_mcu_add_sta(struct mt7615_phy *phy, struct ieee80211_vif *vif,
		   struct ieee80211_sta *sta, bool enable)
{
	return __mt7615_mcu_add_sta(phy->mt76, vif, sta, enable,
				    MCU_EXT_CMD_STA_REC_UPDATE);
				    MCU_EXT_CMD_STA_REC_UPDATE, false);
}

static int
@@ -1302,7 +1304,7 @@ mt7615_mcu_uni_add_sta(struct mt7615_phy *phy, struct ieee80211_vif *vif,
		       struct ieee80211_sta *sta, bool enable)
{
	return __mt7615_mcu_add_sta(phy->mt76, vif, sta, enable,
				    MCU_UNI_CMD_STA_REC_UPDATE);
				    MCU_UNI_CMD_STA_REC_UPDATE, true);
}

static int
+6 −4
Original line number Diff line number Diff line
@@ -879,10 +879,12 @@ int mt76_connac_mcu_add_sta_cmd(struct mt76_phy *phy,
	if (IS_ERR(skb))
		return PTR_ERR(skb);

	mt76_connac_mcu_sta_basic_tlv(skb, info->vif, info->sta, info->enable);
	if (info->enable && info->sta)
		mt76_connac_mcu_sta_tlv(phy, skb, info->sta, info->vif,
					info->rcpi);
	if (info->sta || !info->offload_fw)
		mt76_connac_mcu_sta_basic_tlv(skb, info->vif, info->sta,
					      info->enable);
	if (info->sta && info->enable)
		mt76_connac_mcu_sta_tlv(phy, skb, info->sta,
					info->vif, info->rcpi);

	sta_wtbl = mt76_connac_mcu_add_tlv(skb, STA_REC_WTBL,
					   sizeof(struct tlv));
+1 −0
Original line number Diff line number Diff line
@@ -910,6 +910,7 @@ struct mt76_sta_cmd_info {

	struct ieee80211_vif *vif;

	bool offload_fw;
	bool enable;
	int cmd;
	u8 rcpi;
+1 −0
Original line number Diff line number Diff line
@@ -1277,6 +1277,7 @@ int mt7921_mcu_sta_add(struct mt7921_dev *dev, struct ieee80211_sta *sta,
		.vif = vif,
		.enable = enable,
		.cmd = MCU_UNI_CMD_STA_REC_UPDATE,
		.offload_fw = true,
		.rcpi = to_rcpi(rssi),
	};
	struct mt7921_sta *msta;