From: Michal Kazior <michal.kazior@tieto.com> To: ath10k@lists.infradead.org Cc: linux-wireless@vger.kernel.org, Michal Kazior <michal.kazior@tieto.com> Subject: [PATCH v3 9/9] ath10k: store msdu_id instead of txbuf pointers Date: Wed, 18 Nov 2015 06:59:23 +0100 [thread overview] Message-ID: <1447826363-16818-10-git-send-email-michal.kazior@tieto.com> (raw) In-Reply-To: <1447826363-16818-1-git-send-email-michal.kazior@tieto.com> Txbuf is no longer a DMA pool and can be easily tracked with a mere msdu_id. This saves 10 bytes on 64bit systems and 6 bytes on 32bit systems of precious sk_buff control buffer. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> --- drivers/net/wireless/ath/ath10k/core.h | 6 +--- drivers/net/wireless/ath/ath10k/htt_tx.c | 55 ++++++++++++++++---------------- 2 files changed, 28 insertions(+), 33 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h index 75dee79ec206..ec19260bf5d1 100644 --- a/drivers/net/wireless/ath/ath10k/core.h +++ b/drivers/net/wireless/ath/ath10k/core.h @@ -93,12 +93,8 @@ struct ath10k_skb_cb { dma_addr_t paddr; u8 flags; u8 eid; + u16 msdu_id; struct ieee80211_vif *vif; - - struct { - struct ath10k_htt_txbuf *txbuf; - u32 txbuf_paddr; - } __packed htt; } __packed; struct ath10k_skb_rxcb { diff --git a/drivers/net/wireless/ath/ath10k/htt_tx.c b/drivers/net/wireless/ath/ath10k/htt_tx.c index 23e047b0aca3..5274f5bb0b45 100644 --- a/drivers/net/wireless/ath/ath10k/htt_tx.c +++ b/drivers/net/wireless/ath/ath10k/htt_tx.c @@ -539,8 +539,6 @@ int ath10k_htt_mgmt_tx(struct ath10k_htt *htt, struct sk_buff *msdu) memcpy(cmd->mgmt_tx.hdr, msdu->data, min_t(int, msdu->len, HTT_MGMT_FRM_HDR_DOWNLOAD_LEN)); - skb_cb->htt.txbuf = NULL; - res = ath10k_htc_send(&htt->ar->htc, htt->eid, txdesc); if (res) goto err_unmap_msdu; @@ -570,6 +568,7 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, struct ieee80211_tx_info *info = IEEE80211_SKB_CB(msdu); struct ath10k_skb_cb *skb_cb = ATH10K_SKB_CB(msdu); struct ath10k_hif_sg_item sg_items[2]; + struct ath10k_htt_txbuf *txbuf; struct htt_data_tx_desc_frag *frags; bool is_eth = (txmode == ATH10K_HW_TXRX_ETHERNET); u8 vdev_id = ath10k_htt_tx_get_vdev_id(ar, msdu); @@ -580,6 +579,7 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, u16 msdu_id, flags1 = 0; u16 freq = 0; u32 frags_paddr = 0; + u32 txbuf_paddr; struct htt_msdu_ext_desc *ext_desc = NULL; bool limit_mgmt_desc = false; bool is_probe_resp = false; @@ -607,9 +607,9 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, prefetch_len = min(htt->prefetch_len, msdu->len); prefetch_len = roundup(prefetch_len, 4); - skb_cb->htt.txbuf = &htt->txbuf.vaddr[msdu_id]; - skb_cb->htt.txbuf_paddr = htt->txbuf.paddr + - (sizeof(struct ath10k_htt_txbuf) * msdu_id); + txbuf = &htt->txbuf.vaddr[msdu_id]; + txbuf_paddr = htt->txbuf.paddr + + (sizeof(struct ath10k_htt_txbuf) * msdu_id); if ((ieee80211_is_action(hdr->frame_control) || ieee80211_is_deauth(hdr->frame_control) || @@ -653,14 +653,14 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, frags_paddr = htt->frag_desc.paddr + (sizeof(struct htt_msdu_ext_desc) * msdu_id); } else { - frags = skb_cb->htt.txbuf->frags; + frags = txbuf->frags; frags[0].dword_addr.paddr = __cpu_to_le32(skb_cb->paddr); frags[0].dword_addr.len = __cpu_to_le32(msdu->len); frags[1].dword_addr.paddr = 0; frags[1].dword_addr.len = 0; - frags_paddr = skb_cb->htt.txbuf_paddr; + frags_paddr = txbuf_paddr; } flags0 |= SM(txmode, HTT_DATA_TX_DESC_FLAGS0_PKT_TYPE); break; @@ -689,12 +689,11 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, * avoid extra memory allocations, compress data structures and thus * improve performance. */ - skb_cb->htt.txbuf->htc_hdr.eid = htt->eid; - skb_cb->htt.txbuf->htc_hdr.len = __cpu_to_le16( - sizeof(skb_cb->htt.txbuf->cmd_hdr) + - sizeof(skb_cb->htt.txbuf->cmd_tx) + - prefetch_len); - skb_cb->htt.txbuf->htc_hdr.flags = 0; + txbuf->htc_hdr.eid = htt->eid; + txbuf->htc_hdr.len = __cpu_to_le16(sizeof(txbuf->cmd_hdr) + + sizeof(txbuf->cmd_tx) + + prefetch_len); + txbuf->htc_hdr.flags = 0; if (skb_cb->flags & ATH10K_SKB_F_NO_HWCRYPT) flags0 |= HTT_DATA_TX_DESC_FLAGS0_NO_ENCRYPT; @@ -715,19 +714,19 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, */ flags1 |= HTT_DATA_TX_DESC_FLAGS1_POSTPONED; - skb_cb->htt.txbuf->cmd_hdr.msg_type = HTT_H2T_MSG_TYPE_TX_FRM; - skb_cb->htt.txbuf->cmd_tx.flags0 = flags0; - skb_cb->htt.txbuf->cmd_tx.flags1 = __cpu_to_le16(flags1); - skb_cb->htt.txbuf->cmd_tx.len = __cpu_to_le16(msdu->len); - skb_cb->htt.txbuf->cmd_tx.id = __cpu_to_le16(msdu_id); - skb_cb->htt.txbuf->cmd_tx.frags_paddr = __cpu_to_le32(frags_paddr); + txbuf->cmd_hdr.msg_type = HTT_H2T_MSG_TYPE_TX_FRM; + txbuf->cmd_tx.flags0 = flags0; + txbuf->cmd_tx.flags1 = __cpu_to_le16(flags1); + txbuf->cmd_tx.len = __cpu_to_le16(msdu->len); + txbuf->cmd_tx.id = __cpu_to_le16(msdu_id); + txbuf->cmd_tx.frags_paddr = __cpu_to_le32(frags_paddr); if (ath10k_mac_tx_frm_has_freq(ar)) { - skb_cb->htt.txbuf->cmd_tx.offchan_tx.peerid = + txbuf->cmd_tx.offchan_tx.peerid = __cpu_to_le16(HTT_INVALID_PEERID); - skb_cb->htt.txbuf->cmd_tx.offchan_tx.freq = + txbuf->cmd_tx.offchan_tx.freq = __cpu_to_le16(freq); } else { - skb_cb->htt.txbuf->cmd_tx.peerid = + txbuf->cmd_tx.peerid = __cpu_to_le32(HTT_INVALID_PEERID); } @@ -743,12 +742,12 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, sg_items[0].transfer_id = 0; sg_items[0].transfer_context = NULL; - sg_items[0].vaddr = &skb_cb->htt.txbuf->htc_hdr; - sg_items[0].paddr = skb_cb->htt.txbuf_paddr + - sizeof(skb_cb->htt.txbuf->frags); - sg_items[0].len = sizeof(skb_cb->htt.txbuf->htc_hdr) + - sizeof(skb_cb->htt.txbuf->cmd_hdr) + - sizeof(skb_cb->htt.txbuf->cmd_tx); + sg_items[0].vaddr = &txbuf->htc_hdr; + sg_items[0].paddr = txbuf_paddr + + sizeof(txbuf->frags); + sg_items[0].len = sizeof(txbuf->htc_hdr) + + sizeof(txbuf->cmd_hdr) + + sizeof(txbuf->cmd_tx); sg_items[1].transfer_id = 0; sg_items[1].transfer_context = NULL; -- 2.1.4
WARNING: multiple messages have this Message-ID (diff)
From: Michal Kazior <michal.kazior@tieto.com> To: ath10k@lists.infradead.org Cc: linux-wireless@vger.kernel.org, Michal Kazior <michal.kazior@tieto.com> Subject: [PATCH v3 9/9] ath10k: store msdu_id instead of txbuf pointers Date: Wed, 18 Nov 2015 06:59:23 +0100 [thread overview] Message-ID: <1447826363-16818-10-git-send-email-michal.kazior@tieto.com> (raw) In-Reply-To: <1447826363-16818-1-git-send-email-michal.kazior@tieto.com> Txbuf is no longer a DMA pool and can be easily tracked with a mere msdu_id. This saves 10 bytes on 64bit systems and 6 bytes on 32bit systems of precious sk_buff control buffer. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> --- drivers/net/wireless/ath/ath10k/core.h | 6 +--- drivers/net/wireless/ath/ath10k/htt_tx.c | 55 ++++++++++++++++---------------- 2 files changed, 28 insertions(+), 33 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h index 75dee79ec206..ec19260bf5d1 100644 --- a/drivers/net/wireless/ath/ath10k/core.h +++ b/drivers/net/wireless/ath/ath10k/core.h @@ -93,12 +93,8 @@ struct ath10k_skb_cb { dma_addr_t paddr; u8 flags; u8 eid; + u16 msdu_id; struct ieee80211_vif *vif; - - struct { - struct ath10k_htt_txbuf *txbuf; - u32 txbuf_paddr; - } __packed htt; } __packed; struct ath10k_skb_rxcb { diff --git a/drivers/net/wireless/ath/ath10k/htt_tx.c b/drivers/net/wireless/ath/ath10k/htt_tx.c index 23e047b0aca3..5274f5bb0b45 100644 --- a/drivers/net/wireless/ath/ath10k/htt_tx.c +++ b/drivers/net/wireless/ath/ath10k/htt_tx.c @@ -539,8 +539,6 @@ int ath10k_htt_mgmt_tx(struct ath10k_htt *htt, struct sk_buff *msdu) memcpy(cmd->mgmt_tx.hdr, msdu->data, min_t(int, msdu->len, HTT_MGMT_FRM_HDR_DOWNLOAD_LEN)); - skb_cb->htt.txbuf = NULL; - res = ath10k_htc_send(&htt->ar->htc, htt->eid, txdesc); if (res) goto err_unmap_msdu; @@ -570,6 +568,7 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, struct ieee80211_tx_info *info = IEEE80211_SKB_CB(msdu); struct ath10k_skb_cb *skb_cb = ATH10K_SKB_CB(msdu); struct ath10k_hif_sg_item sg_items[2]; + struct ath10k_htt_txbuf *txbuf; struct htt_data_tx_desc_frag *frags; bool is_eth = (txmode == ATH10K_HW_TXRX_ETHERNET); u8 vdev_id = ath10k_htt_tx_get_vdev_id(ar, msdu); @@ -580,6 +579,7 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, u16 msdu_id, flags1 = 0; u16 freq = 0; u32 frags_paddr = 0; + u32 txbuf_paddr; struct htt_msdu_ext_desc *ext_desc = NULL; bool limit_mgmt_desc = false; bool is_probe_resp = false; @@ -607,9 +607,9 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, prefetch_len = min(htt->prefetch_len, msdu->len); prefetch_len = roundup(prefetch_len, 4); - skb_cb->htt.txbuf = &htt->txbuf.vaddr[msdu_id]; - skb_cb->htt.txbuf_paddr = htt->txbuf.paddr + - (sizeof(struct ath10k_htt_txbuf) * msdu_id); + txbuf = &htt->txbuf.vaddr[msdu_id]; + txbuf_paddr = htt->txbuf.paddr + + (sizeof(struct ath10k_htt_txbuf) * msdu_id); if ((ieee80211_is_action(hdr->frame_control) || ieee80211_is_deauth(hdr->frame_control) || @@ -653,14 +653,14 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, frags_paddr = htt->frag_desc.paddr + (sizeof(struct htt_msdu_ext_desc) * msdu_id); } else { - frags = skb_cb->htt.txbuf->frags; + frags = txbuf->frags; frags[0].dword_addr.paddr = __cpu_to_le32(skb_cb->paddr); frags[0].dword_addr.len = __cpu_to_le32(msdu->len); frags[1].dword_addr.paddr = 0; frags[1].dword_addr.len = 0; - frags_paddr = skb_cb->htt.txbuf_paddr; + frags_paddr = txbuf_paddr; } flags0 |= SM(txmode, HTT_DATA_TX_DESC_FLAGS0_PKT_TYPE); break; @@ -689,12 +689,11 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, * avoid extra memory allocations, compress data structures and thus * improve performance. */ - skb_cb->htt.txbuf->htc_hdr.eid = htt->eid; - skb_cb->htt.txbuf->htc_hdr.len = __cpu_to_le16( - sizeof(skb_cb->htt.txbuf->cmd_hdr) + - sizeof(skb_cb->htt.txbuf->cmd_tx) + - prefetch_len); - skb_cb->htt.txbuf->htc_hdr.flags = 0; + txbuf->htc_hdr.eid = htt->eid; + txbuf->htc_hdr.len = __cpu_to_le16(sizeof(txbuf->cmd_hdr) + + sizeof(txbuf->cmd_tx) + + prefetch_len); + txbuf->htc_hdr.flags = 0; if (skb_cb->flags & ATH10K_SKB_F_NO_HWCRYPT) flags0 |= HTT_DATA_TX_DESC_FLAGS0_NO_ENCRYPT; @@ -715,19 +714,19 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, */ flags1 |= HTT_DATA_TX_DESC_FLAGS1_POSTPONED; - skb_cb->htt.txbuf->cmd_hdr.msg_type = HTT_H2T_MSG_TYPE_TX_FRM; - skb_cb->htt.txbuf->cmd_tx.flags0 = flags0; - skb_cb->htt.txbuf->cmd_tx.flags1 = __cpu_to_le16(flags1); - skb_cb->htt.txbuf->cmd_tx.len = __cpu_to_le16(msdu->len); - skb_cb->htt.txbuf->cmd_tx.id = __cpu_to_le16(msdu_id); - skb_cb->htt.txbuf->cmd_tx.frags_paddr = __cpu_to_le32(frags_paddr); + txbuf->cmd_hdr.msg_type = HTT_H2T_MSG_TYPE_TX_FRM; + txbuf->cmd_tx.flags0 = flags0; + txbuf->cmd_tx.flags1 = __cpu_to_le16(flags1); + txbuf->cmd_tx.len = __cpu_to_le16(msdu->len); + txbuf->cmd_tx.id = __cpu_to_le16(msdu_id); + txbuf->cmd_tx.frags_paddr = __cpu_to_le32(frags_paddr); if (ath10k_mac_tx_frm_has_freq(ar)) { - skb_cb->htt.txbuf->cmd_tx.offchan_tx.peerid = + txbuf->cmd_tx.offchan_tx.peerid = __cpu_to_le16(HTT_INVALID_PEERID); - skb_cb->htt.txbuf->cmd_tx.offchan_tx.freq = + txbuf->cmd_tx.offchan_tx.freq = __cpu_to_le16(freq); } else { - skb_cb->htt.txbuf->cmd_tx.peerid = + txbuf->cmd_tx.peerid = __cpu_to_le32(HTT_INVALID_PEERID); } @@ -743,12 +742,12 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, sg_items[0].transfer_id = 0; sg_items[0].transfer_context = NULL; - sg_items[0].vaddr = &skb_cb->htt.txbuf->htc_hdr; - sg_items[0].paddr = skb_cb->htt.txbuf_paddr + - sizeof(skb_cb->htt.txbuf->frags); - sg_items[0].len = sizeof(skb_cb->htt.txbuf->htc_hdr) + - sizeof(skb_cb->htt.txbuf->cmd_hdr) + - sizeof(skb_cb->htt.txbuf->cmd_tx); + sg_items[0].vaddr = &txbuf->htc_hdr; + sg_items[0].paddr = txbuf_paddr + + sizeof(txbuf->frags); + sg_items[0].len = sizeof(txbuf->htc_hdr) + + sizeof(txbuf->cmd_hdr) + + sizeof(txbuf->cmd_tx); sg_items[1].transfer_id = 0; sg_items[1].transfer_context = NULL; -- 2.1.4 _______________________________________________ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
next prev parent reply other threads:[~2015-11-18 5:59 UTC|newest] Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-11-02 14:03 [PATCH 0/8] ath10k: clean up ath10k_skb_cb Michal Kazior 2015-11-02 14:03 ` Michal Kazior 2015-11-02 14:03 ` [PATCH 1/8] ath10k: merge is_protected with nohwcrypt Michal Kazior 2015-11-02 14:03 ` Michal Kazior 2015-11-02 14:03 ` [PATCH 2/8] ath10k: rename function to adhere to naming convention Michal Kazior 2015-11-02 14:03 ` Michal Kazior 2015-11-02 14:03 ` [PATCH 3/8] ath10k: remove txmode from skb_cb Michal Kazior 2015-11-02 14:03 ` Michal Kazior 2015-11-02 14:03 ` [PATCH 4/8] ath10k: remove is_offchan Michal Kazior 2015-11-02 14:03 ` Michal Kazior 2015-11-02 14:03 ` [PATCH 5/8] ath10k: remove freq from skb_cb Michal Kazior 2015-11-02 14:03 ` Michal Kazior 2015-11-02 14:03 ` [PATCH 6/8] ath10k: pack up flags in skb_cb Michal Kazior 2015-11-02 14:03 ` Michal Kazior 2015-11-02 14:03 ` [PATCH 7/8] ath10k: replace vdev_id and tid in skb cb Michal Kazior 2015-11-02 14:03 ` Michal Kazior 2015-11-03 9:37 ` Michal Kazior 2015-11-03 9:37 ` Michal Kazior 2015-11-02 14:03 ` [PATCH 8/8] ath10k: store msdu_id instead of txbuf pointers Michal Kazior 2015-11-02 14:03 ` Michal Kazior 2015-11-10 13:10 ` [PATCH v2 0/9] ath10k: clean up ath10k_skb_cb Michal Kazior 2015-11-10 13:10 ` Michal Kazior 2015-11-10 13:10 ` [PATCH v2 1/9] ath10k: merge is_protected with nohwcrypt Michal Kazior 2015-11-10 13:10 ` Michal Kazior 2015-11-10 13:10 ` [PATCH v2 2/9] ath10k: rename function to adhere to naming convention Michal Kazior 2015-11-10 13:10 ` Michal Kazior 2015-11-10 13:10 ` [PATCH v2 3/9] ath10k: remove txmode from skb_cb Michal Kazior 2015-11-10 13:10 ` Michal Kazior 2015-11-10 13:10 ` [PATCH v2 4/9] ath10k: remove is_offchan Michal Kazior 2015-11-10 13:10 ` Michal Kazior 2015-11-10 13:10 ` [PATCH v2 5/9] ath10k: remove freq from skb_cb Michal Kazior 2015-11-10 13:10 ` Michal Kazior 2015-11-10 13:10 ` [PATCH v2 6/9] ath10k: pack up flags in skb_cb Michal Kazior 2015-11-10 13:10 ` Michal Kazior 2015-11-10 13:10 ` [PATCH v2 7/9] ath10k: fix tx header parsing Michal Kazior 2015-11-10 13:10 ` Michal Kazior 2015-11-10 13:10 ` [PATCH v2 8/9] ath10k: replace vdev_id and tid in skb cb Michal Kazior 2015-11-10 13:10 ` Michal Kazior 2015-11-10 13:10 ` [PATCH v2 9/9] ath10k: store msdu_id instead of txbuf pointers Michal Kazior 2015-11-10 13:10 ` Michal Kazior 2015-11-12 19:29 ` [PATCH v2 0/9] ath10k: clean up ath10k_skb_cb Kalle Valo 2015-11-12 19:29 ` Kalle Valo 2015-11-13 6:20 ` Michal Kazior 2015-11-13 6:20 ` Michal Kazior 2015-11-18 5:59 ` [PATCH v3 " Michal Kazior 2015-11-18 5:59 ` Michal Kazior 2015-11-18 5:59 ` [PATCH v3 1/9] ath10k: merge is_protected with nohwcrypt Michal Kazior 2015-11-18 5:59 ` Michal Kazior 2015-11-18 5:59 ` [PATCH v3 2/9] ath10k: rename function to adhere to naming convention Michal Kazior 2015-11-18 5:59 ` Michal Kazior 2015-11-18 5:59 ` [PATCH v3 3/9] ath10k: remove txmode from skb_cb Michal Kazior 2015-11-18 5:59 ` Michal Kazior 2015-11-18 5:59 ` [PATCH v3 4/9] ath10k: remove is_offchan Michal Kazior 2015-11-18 5:59 ` Michal Kazior 2015-11-18 5:59 ` [PATCH v3 5/9] ath10k: remove freq from skb_cb Michal Kazior 2015-11-18 5:59 ` Michal Kazior 2015-11-18 5:59 ` [PATCH v3 6/9] ath10k: pack up flags in skb_cb Michal Kazior 2015-11-18 5:59 ` Michal Kazior 2015-11-18 5:59 ` [PATCH v3 7/9] ath10k: fix tx header parsing Michal Kazior 2015-11-18 5:59 ` Michal Kazior 2015-11-18 5:59 ` [PATCH v3 8/9] ath10k: replace vdev_id and tid in skb cb Michal Kazior 2015-11-18 5:59 ` Michal Kazior 2015-11-18 5:59 ` Michal Kazior [this message] 2015-11-18 5:59 ` [PATCH v3 9/9] ath10k: store msdu_id instead of txbuf pointers Michal Kazior 2015-11-19 15:10 ` QCA998X not working at all Sebastian Gottschall 2015-11-19 15:33 ` Ben Greear 2015-11-19 15:35 ` Sebastian Gottschall 2015-11-19 16:13 ` Ben Greear 2015-11-19 17:12 ` Sebastian Gottschall 2015-11-19 18:21 ` Sebastian Gottschall 2015-11-20 11:53 ` Kalle Valo 2015-11-20 15:55 ` Sebastian Gottschall 2015-11-20 16:46 ` Ben Greear 2016-04-13 15:36 ` Ben Greear 2016-04-13 17:05 ` Alexis Green 2016-04-14 14:13 ` Sebastian Gottschall 2016-04-14 14:12 ` Sebastian Gottschall 2015-11-19 15:35 ` Sebastian Gottschall 2015-11-23 15:21 ` [PATCH v3 0/9] ath10k: clean up ath10k_skb_cb Kalle Valo 2015-11-23 15:21 ` Kalle Valo
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1447826363-16818-10-git-send-email-michal.kazior@tieto.com \ --to=michal.kazior@tieto.com \ --cc=ath10k@lists.infradead.org \ --cc=linux-wireless@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.