Переглянути джерело

qcacld-3.0: Set IPA ownership for intra-BSS Tx packets

Set IPA ownership for intra-BSS Tx packets to avoid skb_orphan(), and
clear the ownership after check it to avoid ipa_free_skb() is called
when Tx completed.

Change-Id: I03883773e418bb5518ea63a324d22503173ea436
CRs-Fixed: 2062911
Yun Park 7 роки тому
батько
коміт
01deb2cbba
2 змінених файлів з 10 додано та 0 видалено
  1. 4 0
      core/hdd/src/wlan_hdd_ipa.c
  2. 6 0
      core/hdd/src/wlan_hdd_softap_tx_rx.c

+ 4 - 0
core/hdd/src/wlan_hdd_ipa.c

@@ -3815,6 +3815,10 @@ static void hdd_ipa_forward(struct hdd_ipa_priv *hdd_ipa,
 	struct hdd_ipa_pm_tx_cb *pm_tx_cb;
 
 	qdf_spin_lock_bh(&hdd_ipa->pm_lock);
+
+	/* Set IPA ownership for intra-BSS Tx packets to avoid skb_orphan */
+	qdf_nbuf_ipa_owned_set(skb);
+
 	/* WLAN subsystem is in suspend, put int queue */
 	if (hdd_ipa->suspended) {
 		qdf_spin_unlock_bh(&hdd_ipa->pm_lock);

+ 6 - 0
core/hdd/src/wlan_hdd_softap_tx_rx.c

@@ -398,6 +398,12 @@ static int __hdd_softap_hard_start_xmit(struct sk_buff *skb,
 			goto drop_pkt_accounting;
 
 #if defined(IPA_OFFLOAD)
+	} else {
+		/*
+		 * Clear the IPA ownership after check it to avoid ipa_free_skb
+		 * is called when Tx completed for intra-BSS Tx packets
+		 */
+		qdf_nbuf_ipa_owned_clear(skb);
 	}
 #endif