From b477e0ba22cd67af81fe8ab048942db3d27b2e93 Mon Sep 17 00:00:00 2001 From: Mohit Khanna Date: Fri, 1 Jul 2016 15:46:25 -0700 Subject: qcacld-3.0: Revert [qca-cld]Fix for UDP-UL data-stall on ROME3.1 qcacld-2.0 to qcacld-3.0 propagation This reverts change Id461e72919911dff2f93ea7210cb41f643a19b33 The existing code is checking for headroom in the skb coming to HDD from TCP/IP stack and ends up allocating a new skb and skb->data in case there is not enough headroom. Headroom is not needed to process outgoing TX packets in qca_cld3.0 converged code for ROME and ihelium. Besides a CPU hit, the re-allocation is also causing ROME based products to use bounce buffers when the new skb(data) is mapped for DMA, since the API for headroom allocation does not use GFP_DMA flag. Remove the skb headroom/re-alloc logic to fix the issue. Keep the existing skb_unshare code as it affects TCP TX for ihelium. Needs further analysis. Change-Id: I4980e047aa158c5de0f4f2a557c83f4555bca840 CRs-Fixed: 851524 --- core/hdd/src/wlan_hdd_softap_tx_rx.c | 9 --------- core/hdd/src/wlan_hdd_tx_rx.c | 9 --------- 2 files changed, 18 deletions(-) diff --git a/core/hdd/src/wlan_hdd_softap_tx_rx.c b/core/hdd/src/wlan_hdd_softap_tx_rx.c index a0dbea356d3b..be1edf2fac2f 100644 --- a/core/hdd/src/wlan_hdd_softap_tx_rx.c +++ b/core/hdd/src/wlan_hdd_softap_tx_rx.c @@ -317,15 +317,6 @@ int hdd_softap_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) skb = skb_unshare(skb, GFP_ATOMIC); if (!skb) goto drop_pkt_accounting; - - if (skb_headroom(skb) < dev->hard_header_len) { - struct sk_buff *tmp; - tmp = skb; - skb = skb_realloc_headroom(tmp, dev->hard_header_len); - dev_kfree_skb(tmp); - if (!skb) - goto drop_pkt_accounting; - } #if defined (IPA_OFFLOAD) } #endif diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index 3509a86c6a3e..9a4ff03294ea 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/core/hdd/src/wlan_hdd_tx_rx.c @@ -396,15 +396,6 @@ int hdd_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) skb = skb_unshare(skb, GFP_ATOMIC); if (!skb) goto drop_pkt_accounting; - - if (skb_headroom(skb) < dev->hard_header_len) { - struct sk_buff *tmp; - tmp = skb; - skb = skb_realloc_headroom(tmp, dev->hard_header_len); - dev_kfree_skb(tmp); - if (!skb) - goto drop_pkt_accounting; - } } /* user priority from IP header, which is already extracted and set from -- cgit v1.2.3