From d2064e93019e9c9a2db2e3dffa75cd6d7dd5e587 Mon Sep 17 00:00:00 2001 From: Jinwei Chen Date: Fri, 4 Sep 2020 23:01:46 +0800 Subject: [PATCH] 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 --- core/dp/txrx3.0/dp_fisa_rx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/dp/txrx3.0/dp_fisa_rx.c b/core/dp/txrx3.0/dp_fisa_rx.c index 8059ee097ae5..769a92a94e67 100644 --- a/core/dp/txrx3.0/dp_fisa_rx.c +++ b/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)); } /**