summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDARAM SUDHA <dsudha@qti.qualcomm.com>2014-06-05 12:33:26 +0530
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-06-09 17:46:29 -0700
commit29688951b8717b104ce6decbc0107318ef09de0a (patch)
tree0a56f1bb49317e4f50b678828742ae4c88002eef
parenta7c72177b6c15124539b76064baedbab8ae7da38 (diff)
Fix for UDP-UL data-stall on ROME3.1
Reverting below gerrit changes to avoid data-stall issue. https://review-android.quicinc.com/#/c/743002 https://review-android.quicinc.com/#/c/750398 Change-Id: Id461e72919911dff2f93ea7210cb41f643a19b33 CRs-FIXED: 673363
-rwxr-xr-xCORE/HDD/src/wlan_hdd_main.c4
-rw-r--r--CORE/HDD/src/wlan_hdd_softap_tx_rx.c21
-rw-r--r--CORE/HDD/src/wlan_hdd_tx_rx.c20
3 files changed, 41 insertions, 4 deletions
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 887fda325810..418376128839 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -7570,11 +7570,7 @@ static hdd_adapter_t* hdd_alloc_station_adapter( hdd_context_t *pHddCtx, tSirMac
vos_mem_copy(pWlanDev->dev_addr, (void *)macAddr, sizeof(tSirMacAddr));
vos_mem_copy( pAdapter->macAddressCurrent.bytes, macAddr, sizeof(tSirMacAddr));
pWlanDev->watchdog_timeo = HDD_TX_TIMEOUT;
-#ifndef QCA_WIFI_2_0
- pWlanDev->hard_header_len += LIBRA_HW_NEEDED_HEADROOM;
-#elif defined(HIF_USB)
pWlanDev->hard_header_len += LIBRA_HW_NEEDED_HEADROOM;
-#endif
#ifdef QCA_WIFI_2_0
if (pHddCtx->cfg_ini->enableIPChecksumOffload)
diff --git a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
index 07b902e61086..2fc4f3c0f5e3 100644
--- a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
@@ -638,6 +638,27 @@ int hdd_softap_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
ac = hdd_QdiscAcToTlAC[skb->queue_mapping];
++pAdapter->hdd_stats.hddTxRxStats.txXmitClassifiedAC[ac];
+#if defined (IPA_OFFLOAD)
+ if(!(NBUF_OWNER_ID(skb) == IPA_NBUF_OWNER_ID)) {
+#endif
+ // Check if the buffer has enough header room
+ skb = skb_unshare(skb, GFP_ATOMIC);
+ if (!skb)
+ goto drop_pkt;
+
+ 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;
+ }
+#if defined (IPA_OFFLOAD)
+ }
+#endif
+
+
#ifdef QCA_PKT_PROTO_TRACE
if ((hddCtxt->cfg_ini->gEnableDebugLog & VOS_PKT_TRAC_TYPE_EAPOL) ||
(hddCtxt->cfg_ini->gEnableDebugLog & VOS_PKT_TRAC_TYPE_DHCP))
diff --git a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c
index f97607f8e608..ab03e606a9f3 100644
--- a/CORE/HDD/src/wlan_hdd_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_tx_rx.c
@@ -986,6 +986,26 @@ int hdd_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
//Get TL AC corresponding to Qdisc queue index/AC.
ac = hdd_QdiscAcToTlAC[skb->queue_mapping];
+#ifdef IPA_OFFLOAD
+ if(!(NBUF_OWNER_ID(skb) == IPA_NBUF_OWNER_ID)) {
+#endif
+
+ /* Check if the buffer has enough header room */
+ skb = skb_unshare(skb, GFP_ATOMIC);
+ if (!skb)
+ goto drop_pkt;
+
+ 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;
+ }
+#ifdef IPA_OFFLOAD
+ }
+#endif
//user priority from IP header, which is already extracted and set from
//select_queue call back function
up = skb->priority;