Просмотр исходного кода

qcacmn: fix incorrect length setting for jumbo RX monitor MPDU

Currently for jumbo RX monitor MPDU, it will spread across multiple
RX buffers(N). host set length 112 bytes for (N-1) skbs(not include
the last skb), while the expected length should be (2048 - 400
- 112) = 1536 bytes for them, this lead to last skb length
calculation incorrectly, which will be total MPDU length -
112 * (N - 1), this will be over boundary of skb buffer room
easily.

Set length 1536 bytes for (N-1) skbs to fix it.

Change-Id: I4e73673887d5d8197cf64bed5da34a3751df1e33
CRs-Fixed: 3381528
Jinwei Chen 2 лет назад
Родитель
Сommit
95eec89597
1 измененных файлов с 2 добавлено и 2 удалено
  1. 2 2
      dp/wifi3.0/monitor/1.0/dp_rx_mon_1.0.h

+ 2 - 2
dp/wifi3.0/monitor/1.0/dp_rx_mon_1.0.h

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -749,7 +749,7 @@ dp_rx_mon_parse_desc_buffer(struct dp_soc *dp_soc,
 		*is_frag_p = true;
 		*frag_len_p = (RX_MONITOR_BUFFER_SIZE - rx_pkt_tlv_len -
 			       *l2_hdr_offset_p) &
-			      (RXDMA_DATA_DMA_BLOCK_SIZE - 1);
+			      ~(RXDMA_DATA_DMA_BLOCK_SIZE - 1);
 		*total_frag_len_p += *frag_len_p;
 	} else {
 		if (hal_rx_tlv_decap_format_get(dp_soc->hal_soc, rx_desc_tlv) ==