mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-19 05:18:41 +07:00
mt7615: mcu: use proper msg size in mt7615_mcu_add_wtbl_bmc
Use proper mcu message size in mt7615_mcu_add_wtbl_bmc and do not allocate a huge buffer. Moreover use stack memory instead of heap one Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
b876457c6a
commit
77eaa281c2
@ -987,39 +987,33 @@ int mt7615_mcu_set_wtbl_key(struct mt7615_dev *dev, int wcid,
|
||||
&wtbl_sec_key, buf_len);
|
||||
}
|
||||
|
||||
int mt7615_mcu_add_wtbl_bmc(struct mt7615_dev *dev, struct ieee80211_vif *vif)
|
||||
int mt7615_mcu_add_wtbl_bmc(struct mt7615_dev *dev,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv;
|
||||
struct wtbl_generic *wtbl_generic;
|
||||
struct wtbl_rx *wtbl_rx;
|
||||
int buf_len, ret;
|
||||
u8 *buf;
|
||||
struct {
|
||||
struct wtbl_generic g_wtbl;
|
||||
struct wtbl_rx rx_wtbl;
|
||||
} data = {
|
||||
.g_wtbl = {
|
||||
.tag = cpu_to_le16(WTBL_GENERIC),
|
||||
.len = cpu_to_le16(sizeof(struct wtbl_generic)),
|
||||
.muar_idx = 0xe,
|
||||
},
|
||||
.rx_wtbl = {
|
||||
.tag = cpu_to_le16(WTBL_RX),
|
||||
.len = cpu_to_le16(sizeof(struct wtbl_rx)),
|
||||
.rca1 = 1,
|
||||
.rca2 = 1,
|
||||
.rv = 1,
|
||||
},
|
||||
};
|
||||
eth_broadcast_addr(data.g_wtbl.peer_addr);
|
||||
|
||||
buf = kzalloc(MT7615_WTBL_UPDATE_MAX_SIZE, GFP_KERNEL);
|
||||
if (!buf)
|
||||
return -ENOMEM;
|
||||
|
||||
wtbl_generic = (struct wtbl_generic *)buf;
|
||||
buf_len = sizeof(*wtbl_generic);
|
||||
wtbl_generic->tag = cpu_to_le16(WTBL_GENERIC);
|
||||
wtbl_generic->len = cpu_to_le16(buf_len);
|
||||
eth_broadcast_addr(wtbl_generic->peer_addr);
|
||||
wtbl_generic->muar_idx = 0xe;
|
||||
|
||||
wtbl_rx = (struct wtbl_rx *)(buf + buf_len);
|
||||
buf_len += sizeof(*wtbl_rx);
|
||||
wtbl_rx->tag = cpu_to_le16(WTBL_RX);
|
||||
wtbl_rx->len = cpu_to_le16(sizeof(*wtbl_rx));
|
||||
wtbl_rx->rca1 = 1;
|
||||
wtbl_rx->rca2 = 1;
|
||||
wtbl_rx->rv = 1;
|
||||
|
||||
ret = __mt7615_mcu_set_wtbl(dev, mvif->sta.wcid.idx,
|
||||
WTBL_RESET_AND_SET, 2, buf,
|
||||
buf_len);
|
||||
|
||||
kfree(buf);
|
||||
return ret;
|
||||
return __mt7615_mcu_set_wtbl(dev, mvif->sta.wcid.idx,
|
||||
WTBL_RESET_AND_SET, 2, &data,
|
||||
sizeof(struct wtbl_generic) +
|
||||
sizeof(struct wtbl_rx));
|
||||
}
|
||||
|
||||
int mt7615_mcu_del_wtbl_bmc(struct mt7615_dev *dev, struct ieee80211_vif *vif)
|
||||
|
Loading…
Reference in New Issue
Block a user