Ver Fonte

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
Mohit Khanna há 8 anos atrás
pai
commit
b477e0ba22
2 ficheiros alterados com 0 adições e 18 exclusões
  1. 0 9
      core/hdd/src/wlan_hdd_softap_tx_rx.c
  2. 0 9
      core/hdd/src/wlan_hdd_tx_rx.c

+ 0 - 9
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

+ 0 - 9
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