Browse Source

qcacld-3.0: set correct L2 header length for FISA RX

In some case, the L2 header length is not exactly equal
to ETHERNET_HDR_LEN 14 bytes, actually it could be with
extra 4 bytes 802.1Q tag, so assume L2 header length just
14 bytes is not correctly in FISA aggregation.
Use L2 header length fetched from RX PKT TLV to handle FISA
correctly.

Change-Id: I254f5faa4548b74bf1a6d7a188c15b52b12711b8
CRs-Fixed: 2770284
Jinwei Chen 4 years ago
parent
commit
d2064e9301
1 changed files with 2 additions and 1 deletions
  1. 2 1
      core/dp/txrx3.0/dp_fisa_rx.c

+ 2 - 1
core/dp/txrx3.0/dp_fisa_rx.c

@@ -558,10 +558,11 @@ dp_rx_fisa_aggr_tcp(struct dp_rx_fst *fisa_hdl,
 static int get_transport_payload_offset(struct dp_rx_fst *fisa_hdl,
 					uint8_t *rx_tlv_hdr)
 {
+	uint32_t eth_hdr_len = HAL_RX_TLV_GET_IP_OFFSET(rx_tlv_hdr);
 	uint32_t ip_hdr_len = HAL_RX_TLV_GET_TCP_OFFSET(rx_tlv_hdr);
 
 	/* ETHERNET_HDR_LEN + ip_hdr_len + UDP/TCP; */
-	return (ETHERNET_HDR_LEN + ip_hdr_len + sizeof(struct udphdr));
+	return (eth_hdr_len + ip_hdr_len + sizeof(struct udphdr));
 }
 
 /**