From 0c2b5e57a0d7b3db85fcce67987f3b49a81ba3f3 Mon Sep 17 00:00:00 2001 From: Kai Liu Date: Mon, 24 Oct 2016 16:25:46 +0800 Subject: [PATCH] qcacld-3.0: Store tx desc id in sk_buff instead of skb head qcacld-2.0 to qcacld-3.0 propagation In MDM ap+ap case, sometimes kernel issues two skb but has same mem address of skb head and driver tx desc id is stored in skb head, so the first id will be overwrote by the second one. Will hit crash when handle the tx_desc. The solution is storing tx desc id in sk_buff to avoid the case that two skb has same tx desc id. Change-Id: I2186a06ad3ec929683292c4c052904a18427cc64 CRs-Fixed: 951208 --- core/dp/ol/inc/ol_txrx_htt_api.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/dp/ol/inc/ol_txrx_htt_api.h b/core/dp/ol/inc/ol_txrx_htt_api.h index 213e649964..190d20947a 100644 --- a/core/dp/ol/inc/ol_txrx_htt_api.h +++ b/core/dp/ol/inc/ol_txrx_htt_api.h @@ -39,12 +39,19 @@ #include /* ol_txrx_pdev_handle */ #include +#ifdef CONFIG_HL_SUPPORT +static inline uint16_t *ol_tx_msdu_id_storage(qdf_nbuf_t msdu) +{ + return QDF_NBUF_CB_TX_DESC_ID(msdu); + +} +#else static inline uint16_t *ol_tx_msdu_id_storage(qdf_nbuf_t msdu) { qdf_assert(qdf_nbuf_headroom(msdu) >= (sizeof(uint16_t) * 2 - 1)); return (uint16_t *) (((qdf_size_t) (qdf_nbuf_head(msdu) + 1)) & ~0x1); } - +#endif /** * @brief Tx MSDU download completion for a LL system * @details