diff for duplicates of <4F4F7DC2.8030204@qca.qualcomm.com> diff --git a/a/1.txt b/N1/1.txt index 864ba1e..1ded309 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -58,10 +58,3 @@ the declaration, attached patch passes compilation. -- thanks, shafi --------------- next part -------------- -A non-text attachment was scrubbed... -Name: use-mac80211-api-freeing-skb.patch -Type: text/x-patch -Size: 3092 bytes -Desc: not available -Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20120301/21a9b702/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..f7e23bd --- /dev/null +++ b/N1/2.txt @@ -0,0 +1,98 @@ +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..7b9f1ba 100644 +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -64,7 +64,8 @@ static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid, + 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); + + enum { + MCS_HT20, +@@ -811,7 +812,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 +1729,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; + +@@ -1754,8 +1755,9 @@ static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq, + struct ath_buf *bf; + + 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 60acdb4..5c00250 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -2,10 +2,18 @@ "ref\04F4F0B83.9050203@qca.qualcomm.com\0" "ref\04F4F60A0.5040006@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 19:16:42 +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 05:12 PM, Mohammed Shafi Shajakhan wrote:\n" "> On Thursday 01 March 2012 11:09 AM, Mohammed Shafi Shajakhan wrote:\n" @@ -66,13 +74,107 @@ "\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: 3092 bytes\n" - "Desc: not available\n" - Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20120301/21a9b702/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..7b9f1ba 100644\n" + "--- a/drivers/net/wireless/ath/ath9k/xmit.c\n" + "+++ b/drivers/net/wireless/ath/ath9k/xmit.c\n" + "@@ -64,7 +64,8 @@ static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid,\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" + " enum {\n" + " \tMCS_HT20,\n" + "@@ -811,7 +812,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 +1729,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" + "@@ -1754,8 +1755,9 @@ static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq,\n" + " \tstruct ath_buf *bf;\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;" -546079358c4e63bb03d0bcd433b64def427e5f8e8cae4dd08faa9e86973a33ab +184e3d9f1c9d5e2e4aed0f7bf04ddf4e03df1ba3b90e5ee21b8bd501455fcb23
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.