Bladeren bron

qcacld-3.0: Enable the TX orphan for TCP packets by gEnableTxOrphan

Enable the TX orphan for TCP packets by gEnableTxOrphan if TX flow control
is not enabled, such as SCC mode.

Change-Id: I0f3bc41bb22f8db10614d4833558caa664e52517
CRs-Fixed: 2123892
tfyu 7 jaren geleden
bovenliggende
commit
5f01db27c1
2 gewijzigde bestanden met toevoegingen van 14 en 6 verwijderingen
  1. 7 3
      core/hdd/src/wlan_hdd_softap_tx_rx.c
  2. 7 3
      core/hdd/src/wlan_hdd_tx_rx.c

+ 7 - 3
core/hdd/src/wlan_hdd_softap_tx_rx.c

@@ -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);
 

+ 7 - 3
core/hdd/src/wlan_hdd_tx_rx.c

@@ -162,9 +162,7 @@ hdd_tx_resume_false(struct hdd_adapter *adapter, 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) {
@@ -187,10 +185,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);