Commit b146f238 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau

mt76: add len parameter to __mt76_mcu_msg_alloc signature

Introduce len to __mt76_mcu_msg_alloc signature in order to add the
capability to specify two different value for allocation and copy length.
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 7e6ffd5d
...@@ -7,17 +7,19 @@ ...@@ -7,17 +7,19 @@
struct sk_buff * struct sk_buff *
__mt76_mcu_msg_alloc(struct mt76_dev *dev, const void *data, __mt76_mcu_msg_alloc(struct mt76_dev *dev, const void *data,
int data_len, gfp_t gfp) int len, int data_len, gfp_t gfp)
{ {
const struct mt76_mcu_ops *ops = dev->mcu_ops; const struct mt76_mcu_ops *ops = dev->mcu_ops;
int length = ops->headroom + data_len + ops->tailroom;
struct sk_buff *skb; struct sk_buff *skb;
skb = alloc_skb(length, gfp); len = max_t(int, len, data_len);
len = ops->headroom + len + ops->tailroom;
skb = alloc_skb(len, gfp);
if (!skb) if (!skb)
return NULL; return NULL;
memset(skb->head, 0, length); memset(skb->head, 0, len);
skb_reserve(skb, ops->headroom); skb_reserve(skb, ops->headroom);
if (data && data_len) if (data && data_len)
......
...@@ -1343,12 +1343,12 @@ int mt76s_rd_rp(struct mt76_dev *dev, u32 base, ...@@ -1343,12 +1343,12 @@ int mt76s_rd_rp(struct mt76_dev *dev, u32 base,
struct sk_buff * struct sk_buff *
__mt76_mcu_msg_alloc(struct mt76_dev *dev, const void *data, __mt76_mcu_msg_alloc(struct mt76_dev *dev, const void *data,
int data_len, gfp_t gfp); int len, int data_len, gfp_t gfp);
static inline struct sk_buff * static inline struct sk_buff *
mt76_mcu_msg_alloc(struct mt76_dev *dev, const void *data, mt76_mcu_msg_alloc(struct mt76_dev *dev, const void *data,
int data_len) int data_len)
{ {
return __mt76_mcu_msg_alloc(dev, data, data_len, GFP_KERNEL); return __mt76_mcu_msg_alloc(dev, data, data_len, data_len, GFP_KERNEL);
} }
void mt76_mcu_rx_event(struct mt76_dev *dev, struct sk_buff *skb); void mt76_mcu_rx_event(struct mt76_dev *dev, struct sk_buff *skb);
......
...@@ -1454,15 +1454,14 @@ static void mt7921_ipv6_addr_change(struct ieee80211_hw *hw, ...@@ -1454,15 +1454,14 @@ static void mt7921_ipv6_addr_change(struct ieee80211_hw *hw,
if (!idx) if (!idx)
return; return;
skb = __mt76_mcu_msg_alloc(&dev->mt76, NULL, sizeof(req_hdr) +
idx * sizeof(struct in6_addr), GFP_ATOMIC);
if (!skb)
return;
req_hdr.arpns.ips_num = idx; req_hdr.arpns.ips_num = idx;
req_hdr.arpns.len = cpu_to_le16(sizeof(struct mt76_connac_arpns_tlv) req_hdr.arpns.len = cpu_to_le16(sizeof(struct mt76_connac_arpns_tlv)
+ idx * sizeof(struct in6_addr)); + idx * sizeof(struct in6_addr));
skb_put_data(skb, &req_hdr, sizeof(req_hdr)); skb = __mt76_mcu_msg_alloc(&dev->mt76, &req_hdr,
sizeof(req_hdr) + idx * sizeof(struct in6_addr),
sizeof(req_hdr), GFP_ATOMIC);
if (!skb)
return;
for (i = 0; i < idx; i++) for (i = 0; i < idx; i++)
skb_put_data(skb, &ns_addrs[i].in6_u, sizeof(struct in6_addr)); skb_put_data(skb, &ns_addrs[i].in6_u, sizeof(struct in6_addr));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment