|
@@ -199,9 +199,7 @@ void hdd_softap_tx_resume_cb(void *adapter_context, bool tx_resume)
|
|
|
static inline struct sk_buff *hdd_skb_orphan(struct hdd_adapter *adapter,
|
|
|
struct sk_buff *skb)
|
|
|
{
|
|
|
-#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3, 19, 0))
|
|
|
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
|
|
-#endif
|
|
|
int need_orphan = 0;
|
|
|
|
|
|
if (adapter->tx_flow_low_watermark > 0) {
|
|
@@ -224,10 +222,16 @@ static inline struct sk_buff *hdd_skb_orphan(struct hdd_adapter *adapter,
|
|
|
if (hdd_ctx->config->tx_orphan_enable)
|
|
|
need_orphan = 1;
|
|
|
#endif
|
|
|
+ } else if (hdd_ctx->config->tx_orphan_enable) {
|
|
|
+ if (qdf_nbuf_is_ipv4_tcp_pkt(skb) ||
|
|
|
+ qdf_nbuf_is_ipv6_tcp_pkt(skb))
|
|
|
+ need_orphan = 1;
|
|
|
}
|
|
|
|
|
|
- if (need_orphan)
|
|
|
+ if (need_orphan) {
|
|
|
skb_orphan(skb);
|
|
|
+ ++adapter->hdd_stats.hddTxRxStats.txXmitOrphaned;
|
|
|
+ }
|
|
|
else
|
|
|
skb = skb_unshare(skb, GFP_ATOMIC);
|
|
|
|