qcacmn: Strip additional bytes from skb containing Rx payload
In existing code, the RX payload buffer for M-copy mode contained
RX MSDU payload followed by additional TLV data.
Add change to strip the skb and only provide MSDU payload
Change-Id: I9834fabfb0e26404a620d8419e7c570fff68f182
diff --git a/dp/wifi3.0/dp_rx_mon_status.c b/dp/wifi3.0/dp_rx_mon_status.c
index a0e6377..f269d09 100644
--- a/dp/wifi3.0/dp_rx_mon_status.c
+++ b/dp/wifi3.0/dp_rx_mon_status.c
@@ -216,7 +216,7 @@
{
uint8_t size = 0;
- if (ppdu_info->first_msdu_payload == NULL)
+ if (ppdu_info->msdu_info.first_msdu_payload == NULL)
return QDF_STATUS_SUCCESS;
if (pdev->m_copy_id.rx_ppdu_id == ppdu_info->com_info.ppdu_id)
@@ -225,12 +225,16 @@
pdev->m_copy_id.rx_ppdu_id = ppdu_info->com_info.ppdu_id;
/* Include 2 bytes of reserved space appended to the msdu payload */
- size = (ppdu_info->first_msdu_payload - qdf_nbuf_data(nbuf)) + 2;
- ppdu_info->first_msdu_payload = NULL;
+ size = (ppdu_info->msdu_info.first_msdu_payload -
+ qdf_nbuf_data(nbuf)) + 2;
+ ppdu_info->msdu_info.first_msdu_payload = NULL;
if (qdf_nbuf_pull_head(nbuf, size) == NULL)
return QDF_STATUS_SUCCESS;
+ /* only retain RX MSDU payload in the skb */
+ qdf_nbuf_trim_tail(nbuf, qdf_nbuf_len(nbuf) -
+ ppdu_info->msdu_info.payload_len);
dp_wdi_event_handler(WDI_EVENT_RX_DATA, soc,
nbuf, HTT_INVALID_PEER, WDI_NO_VAL, pdev->pdev_id);
return QDF_STATUS_E_ALREADY;