qcacld-3.0: set gso_size for non linear tcp packets
Currently, OL/TXRX is unable to handle non TSO
packets which are non-linear. These packets have skb->gso_size as zero
since they are not jumbo packets and dont need to be TSOed.
However, TSO code can handle such packets. The current code assumes that
non TSO packets will be linear. This may case an incorrect memory access
leading to a crash.
Fill in gso_size for non-linear TCP packets if it is zero. This lets the
TSO logic handle these packets for CE transmission.
Change-Id: I75c7759e1a35c462966a2d925db6f537670ad72f
CRs-Fixed: 2100254
diff --git a/core/hdd/src/wlan_hdd_softap_tx_rx.c b/core/hdd/src/wlan_hdd_softap_tx_rx.c
index c25c8a4..bbb2e8e 100644
--- a/core/hdd/src/wlan_hdd_softap_tx_rx.c
+++ b/core/hdd/src/wlan_hdd_softap_tx_rx.c
@@ -253,6 +253,8 @@
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
#endif
+ hdd_skb_fill_gso_size(adapter->dev, skb);
+
nskb = skb_unshare(skb, GFP_ATOMIC);
#if (LINUX_VERSION_CODE > KERNEL_VERSION(3, 19, 0))
if (unlikely(hdd_ctx->config->tx_orphan_enable) && (nskb == skb)) {