Sfoglia il codice sorgente

qcacmn: Update tlv hdr size to 8 Bytes for QCA5332 and QCN6432

Issue:
TX Monitor feature is broken recently in mainline (12.4)
for both QCA5332 and QCN6432.

RCA:
As part of tx monitor processing, it is needed to iterate
through the status buffer queue to populate TX PPDU info.
Every TLV present in the status buffer is parsed one by
one. Moving from one to next TLV is done based on:
tlv + tlv length + tlv header size

And the TLV tag gets computed from the initial 4 Bytes of
the TLV; TLV tag is generally used for further TLV parsing
methodology at HOST.

In case of QCA5332 and QCN6432, the tlv header size should
be 8 Bytes, whereas it is 4 Bytes now. Hence, right after the
first TLV is parsed, we see the TLV tag being computed as 0
for the second TLV and since there is a miscalculation of
4 Bytes in every TLV parsing, all other TLV parsings are
improper. This is the reason why the TX DATA TLV is getting
invoked before TX MPDU START; which results into system crash.

Fix:
Update the TLV header size to 8 bytes

Change-Id: Ib2857ae55e309a78ed6ee9bdbe695ae6daa71a08
CRs-Fixed: 3588743
Adwait Nayak 1 anno fa
parent
commit
af00744c5d
1 ha cambiato i file con 2 aggiunte e 0 eliminazioni
  1. 2 0
      dp/wifi3.0/monitor/dp_mon.c

+ 2 - 0
dp/wifi3.0/monitor/dp_mon.c

@@ -5622,6 +5622,8 @@ static void dp_mon_pdev_per_target_config(struct dp_pdev *pdev)
 	switch (target_type) {
 	case TARGET_TYPE_KIWI:
 	case TARGET_TYPE_QCN9224:
+	case TARGET_TYPE_QCA5332:
+	case TARGET_TYPE_QCN6432:
 	case TARGET_TYPE_MANGO:
 		mon_pdev->is_tlv_hdr_64_bit = true;
 		mon_pdev->tlv_hdr_size = HAL_RX_TLV64_HDR_SIZE;