|
@@ -2192,6 +2192,8 @@ static int ath10k_wmi_10_4_op_pull_mgmt_rx_ev(struct ath10k *ar,
|
|
|
struct wmi_10_4_mgmt_rx_hdr *ev_hdr;
|
|
|
size_t pull_len;
|
|
|
u32 msdu_len;
|
|
|
+ struct wmi_mgmt_rx_ext_info *ext_info;
|
|
|
+ u32 len;
|
|
|
|
|
|
ev = (struct wmi_10_4_mgmt_rx_event *)skb->data;
|
|
|
ev_hdr = &ev->hdr;
|
|
@@ -2212,6 +2214,13 @@ static int ath10k_wmi_10_4_op_pull_mgmt_rx_ev(struct ath10k *ar,
|
|
|
if (skb->len < msdu_len)
|
|
|
return -EPROTO;
|
|
|
|
|
|
+ if (le32_to_cpu(arg->status) & WMI_RX_STATUS_EXT_INFO) {
|
|
|
+ len = ALIGN(le32_to_cpu(arg->buf_len), 4);
|
|
|
+ ext_info = (struct wmi_mgmt_rx_ext_info *)(skb->data + len);
|
|
|
+ memcpy(&arg->ext_info, ext_info,
|
|
|
+ sizeof(struct wmi_mgmt_rx_ext_info));
|
|
|
+ }
|
|
|
+
|
|
|
/* Make sure bytes added for padding are removed. */
|
|
|
skb_trim(skb, msdu_len);
|
|
|
|