All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <4F4F60A0.5040006@qca.qualcomm.com>

diff --git a/a/1.txt b/N1/1.txt
index d488827..01e0870 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -99,10 +99,3 @@ also analyze if this can be done in a better way or any flaws in it
 -- 
 thanks,
 shafi
--------------- next part --------------
-A non-text attachment was scrubbed...
-Name: use-mac80211-api-freeing-skb.patch
-Type: text/x-patch
-Size: 2865 bytes
-Desc: not available
-Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20120301/ddeb851f/attachment.bin
diff --git a/N1/2.hdr b/N1/2.hdr
new file mode 100644
index 0000000..affeb36
--- /dev/null
+++ b/N1/2.hdr
@@ -0,0 +1,4 @@
+Content-Type: text/x-patch; name="use-mac80211-api-freeing-skb.patch"
+Content-Transfer-Encoding: 7bit
+Content-Disposition: attachment;
+	filename="use-mac80211-api-freeing-skb.patch"
diff --git a/N1/2.txt b/N1/2.txt
new file mode 100644
index 0000000..d7a6d7c
--- /dev/null
+++ b/N1/2.txt
@@ -0,0 +1,91 @@
+diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
+index 02e95c8..1a37a43 100644
+--- a/drivers/net/wireless/ath/ath9k/main.c
++++ b/drivers/net/wireless/ath/ath9k/main.c
+@@ -1148,7 +1148,7 @@ static void ath9k_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
+ 
+ 	return;
+ exit:
+-	dev_kfree_skb_any(skb);
++	ieee80211_free_txskb(sc->hw, skb);
+ }
+ 
+ static void ath9k_stop(struct ieee80211_hw *hw)
+diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
+index 5dd27d2..699086c 100644
+--- a/drivers/net/wireless/ath/ath9k/xmit.c
++++ b/drivers/net/wireless/ath/ath9k/xmit.c
+@@ -811,7 +811,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc,
+ 		fi = get_frame_info(skb);
+ 		bf = fi->bf;
+ 		if (!fi->bf)
+-			bf = ath_tx_setup_buffer(sc, txq, tid, skb);
++			bf = ath_tx_setup_buffer(sc, txq, tid, skb, false);
+ 
+ 		if (!bf)
+ 			continue;
+@@ -1728,7 +1728,7 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,
+ 		return;
+ 	}
+ 
+-	bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb);
++	bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false);
+ 	if (!bf)
+ 		return;
+ 
+@@ -1752,10 +1752,12 @@ static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq,
+ 	struct ath_frame_info *fi = get_frame_info(skb);
+ 	struct list_head bf_head;
+ 	struct ath_buf *bf;
++	bool is_paprd = false;
+ 
+ 	bf = fi->bf;
++
+ 	if (!bf)
+-		bf = ath_tx_setup_buffer(sc, txq, tid, skb);
++		bf = ath_tx_setup_buffer(sc, txq, tid, skb, false);
+ 
+ 	if (!bf)
+ 		return;
+@@ -1816,7 +1818,8 @@ u8 ath_txchainmask_reduction(struct ath_softc *sc, u8 chainmask, u32 rate)
+ static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
+ 					   struct ath_txq *txq,
+ 					   struct ath_atx_tid *tid,
+-					   struct sk_buff *skb)
++					   struct sk_buff *skb,
++					   bool is_paprd)
+ {
+ 	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
+ 	struct ath_frame_info *fi = get_frame_info(skb);
+@@ -1857,7 +1860,11 @@ static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
+ 	return bf;
+ 
+ error:
+-	dev_kfree_skb_any(skb);
++	if (is_paprd)
++		dev_kfree_skb_any(skb);
++	else
++		ieee80211_free_txskb(sc->hw, skb);
++
+ 	return NULL;
+ }
+ 
+@@ -1870,6 +1877,7 @@ static void ath_tx_start_dma(struct ath_softc *sc, struct sk_buff *skb,
+ 	struct ath_atx_tid *tid = NULL;
+ 	struct ath_buf *bf;
+ 	u8 tidno;
++	bool is_paprd = false;
+ 
+ 	if ((sc->sc_flags & SC_OP_TXAGGR) && txctl->an &&
+ 		ieee80211_is_data_qos(hdr->frame_control)) {
+@@ -1887,7 +1895,10 @@ static void ath_tx_start_dma(struct ath_softc *sc, struct sk_buff *skb,
+ 		 */
+ 		ath_tx_send_ampdu(sc, tid, skb, txctl);
+ 	} else {
+-		bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb);
++		if (txctl->paprd)
++			is_paprd = true;
++
++		bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, is_paprd);
+ 		if (!bf)
+ 			return;
diff --git a/a/content_digest b/N1/content_digest
index f2f0bd8..74c7b43 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,10 +1,18 @@
  "ref\0d053a9a1ec34c2e1b15cf50b272ba7863fb17088.1330360738.git.chunkeey@googlemail.com\0"
  "ref\04F4F0B83.9050203@qca.qualcomm.com\0"
  "From\0Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>\0"
- "Subject\0[ath9k-devel] [RFC 1/2] ath9k: use ieee80211_free_txskb\0"
+ "Subject\0Re: [RFC 1/2] ath9k: use ieee80211_free_txskb\0"
  "Date\0Thu, 1 Mar 2012 17:12:24 +0530\0"
- "To\0ath9k-devel@lists.ath9k.org\0"
- "\00:1\0"
+ "To\0Christian Lamparter <chunkeey@googlemail.com>\0"
+ "Cc\0<linux-wireless@vger.kernel.org>"
+  <ath9k-devel@lists.ath9k.org>
+  <senthilb@qca.qualcomm.com>
+  <vthiagar@qca.qualcomm.com>
+  <rodrigue@qca.qualcomm.com>
+  Rajkumar_contact <rmanohar@qca.qualcomm.com>
+  Manoharan
+ " Sujith <c_manoha@qca.qualcomm.com>\0"
+ "\01:1\0"
  "b\0"
  "On Thursday 01 March 2012 11:09 AM, Mohammed Shafi Shajakhan wrote:\n"
  "> Hi Christian,\n"
@@ -106,13 +114,100 @@
  "\n"
  "-- \n"
  "thanks,\n"
- "shafi\n"
- "-------------- next part --------------\n"
- "A non-text attachment was scrubbed...\n"
- "Name: use-mac80211-api-freeing-skb.patch\n"
- "Type: text/x-patch\n"
- "Size: 2865 bytes\n"
- "Desc: not available\n"
- Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20120301/ddeb851f/attachment.bin
+ shafi
+ "\01:2\0"
+ "fn\0use-mac80211-api-freeing-skb.patch\0"
+ "b\0"
+ "diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c\n"
+ "index 02e95c8..1a37a43 100644\n"
+ "--- a/drivers/net/wireless/ath/ath9k/main.c\n"
+ "+++ b/drivers/net/wireless/ath/ath9k/main.c\n"
+ "@@ -1148,7 +1148,7 @@ static void ath9k_tx(struct ieee80211_hw *hw, struct sk_buff *skb)\n"
+ " \n"
+ " \treturn;\n"
+ " exit:\n"
+ "-\tdev_kfree_skb_any(skb);\n"
+ "+\tieee80211_free_txskb(sc->hw, skb);\n"
+ " }\n"
+ " \n"
+ " static void ath9k_stop(struct ieee80211_hw *hw)\n"
+ "diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c\n"
+ "index 5dd27d2..699086c 100644\n"
+ "--- a/drivers/net/wireless/ath/ath9k/xmit.c\n"
+ "+++ b/drivers/net/wireless/ath/ath9k/xmit.c\n"
+ "@@ -811,7 +811,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc,\n"
+ " \t\tfi = get_frame_info(skb);\n"
+ " \t\tbf = fi->bf;\n"
+ " \t\tif (!fi->bf)\n"
+ "-\t\t\tbf = ath_tx_setup_buffer(sc, txq, tid, skb);\n"
+ "+\t\t\tbf = ath_tx_setup_buffer(sc, txq, tid, skb, false);\n"
+ " \n"
+ " \t\tif (!bf)\n"
+ " \t\t\tcontinue;\n"
+ "@@ -1728,7 +1728,7 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,\n"
+ " \t\treturn;\n"
+ " \t}\n"
+ " \n"
+ "-\tbf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb);\n"
+ "+\tbf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false);\n"
+ " \tif (!bf)\n"
+ " \t\treturn;\n"
+ " \n"
+ "@@ -1752,10 +1752,12 @@ static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq,\n"
+ " \tstruct ath_frame_info *fi = get_frame_info(skb);\n"
+ " \tstruct list_head bf_head;\n"
+ " \tstruct ath_buf *bf;\n"
+ "+\tbool is_paprd = false;\n"
+ " \n"
+ " \tbf = fi->bf;\n"
+ "+\n"
+ " \tif (!bf)\n"
+ "-\t\tbf = ath_tx_setup_buffer(sc, txq, tid, skb);\n"
+ "+\t\tbf = ath_tx_setup_buffer(sc, txq, tid, skb, false);\n"
+ " \n"
+ " \tif (!bf)\n"
+ " \t\treturn;\n"
+ "@@ -1816,7 +1818,8 @@ u8 ath_txchainmask_reduction(struct ath_softc *sc, u8 chainmask, u32 rate)\n"
+ " static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,\n"
+ " \t\t\t\t\t   struct ath_txq *txq,\n"
+ " \t\t\t\t\t   struct ath_atx_tid *tid,\n"
+ "-\t\t\t\t\t   struct sk_buff *skb)\n"
+ "+\t\t\t\t\t   struct sk_buff *skb,\n"
+ "+\t\t\t\t\t   bool is_paprd)\n"
+ " {\n"
+ " \tstruct ath_common *common = ath9k_hw_common(sc->sc_ah);\n"
+ " \tstruct ath_frame_info *fi = get_frame_info(skb);\n"
+ "@@ -1857,7 +1860,11 @@ static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,\n"
+ " \treturn bf;\n"
+ " \n"
+ " error:\n"
+ "-\tdev_kfree_skb_any(skb);\n"
+ "+\tif (is_paprd)\n"
+ "+\t\tdev_kfree_skb_any(skb);\n"
+ "+\telse\n"
+ "+\t\tieee80211_free_txskb(sc->hw, skb);\n"
+ "+\n"
+ " \treturn NULL;\n"
+ " }\n"
+ " \n"
+ "@@ -1870,6 +1877,7 @@ static void ath_tx_start_dma(struct ath_softc *sc, struct sk_buff *skb,\n"
+ " \tstruct ath_atx_tid *tid = NULL;\n"
+ " \tstruct ath_buf *bf;\n"
+ " \tu8 tidno;\n"
+ "+\tbool is_paprd = false;\n"
+ " \n"
+ " \tif ((sc->sc_flags & SC_OP_TXAGGR) && txctl->an &&\n"
+ " \t\tieee80211_is_data_qos(hdr->frame_control)) {\n"
+ "@@ -1887,7 +1895,10 @@ static void ath_tx_start_dma(struct ath_softc *sc, struct sk_buff *skb,\n"
+ " \t\t */\n"
+ " \t\tath_tx_send_ampdu(sc, tid, skb, txctl);\n"
+ " \t} else {\n"
+ "-\t\tbf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb);\n"
+ "+\t\tif (txctl->paprd)\n"
+ "+\t\t\tis_paprd = true;\n"
+ "+\n"
+ "+\t\tbf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, is_paprd);\n"
+ " \t\tif (!bf)\n"
+ " \t\t\treturn;"
 
-5e003a3f0bb830dd9f07401b18acd13090b27ff9e0a1408074a8bc7ca1104aa6
+6bac0c4d39babf7efec3e26d00968232a032a90889bc91a1954221e4248ad60f

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.