diff options
| author | DARAM SUDHA <dsudha@qti.qualcomm.com> | 2014-06-05 12:33:26 +0530 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-06-09 17:46:29 -0700 |
| commit | 29688951b8717b104ce6decbc0107318ef09de0a (patch) | |
| tree | 0a56f1bb49317e4f50b678828742ae4c88002eef | |
| parent | a7c72177b6c15124539b76064baedbab8ae7da38 (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-x | CORE/HDD/src/wlan_hdd_main.c | 4 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_softap_tx_rx.c | 21 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_tx_rx.c | 20 |
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; |
