summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDeepak Dhamdhere <ddhamdhe@qca.qualcomm.com>2014-09-10 00:06:51 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-09-17 13:54:38 -0700
commitd0be29c4eceb98c13fc12ce9c5942763116c232e (patch)
tree116491e6c3423eab8a0dbb64cc4a3396add80a16
parent7e70aa76859e50897124c78c2eb34fbcf0990996 (diff)
qcacld: WMA: Use correct field offset for channel frequency tag.
Use 14 byte offset value to access chanfreq field in DWORD 3 of htt_tx_desc of management tx frame. Use byte offset for access peer_id in DWORD 3 of htt_tx_desc. Change-Id: Ic9a3a3334e6dc48f406d1fc862f29912b582cd84 CRs-Fixed: 725618
-rw-r--r--CORE/CLD_TXRX/HTT/htt.h9
-rw-r--r--CORE/CLD_TXRX/TXRX/ol_tx.c5
-rw-r--r--CORE/SERVICES/COMMON/ol_htt_tx_api.h8
3 files changed, 15 insertions, 7 deletions
diff --git a/CORE/CLD_TXRX/HTT/htt.h b/CORE/CLD_TXRX/HTT/htt.h
index 397a407f0c11..6902b75f8662 100644
--- a/CORE/CLD_TXRX/HTT/htt.h
+++ b/CORE/CLD_TXRX/HTT/htt.h
@@ -447,11 +447,18 @@ A_COMPILE_TIME_ASSERT(
#define HTT_TX_DESC_FRAGS_DESC_PADDR_S 0
/* dword 3 */
+/* peer_id */
#define HTT_TX_DESC_PEERID_DESC_PADDR_OFFSET_BYTES 12
#define HTT_TX_DESC_PEERID_DESC_PADDR_OFFSET_DWORD 3
-#define HTT_TX_DESC_PEERID_DESC_PADDR_M 0xffffffff
+#define HTT_TX_DESC_PEERID_DESC_PADDR_M 0x0000ffff
#define HTT_TX_DESC_PEERID_DESC_PADDR_S 0
+/* channel frequency tag */
+#define HTT_TX_DESC_CHANFREQ_DESC_PADDR_OFFSET_BYTES 14
+#define HTT_TX_DESC_CHANFREQ_DESC_PADDR_OFFSET_DWORD 3
+#define HTT_TX_DESC_CHANFREQ_DESC_PADDR_M 0xffff0000
+#define HTT_TX_DESC_CHANFREQ_DESC_PADDR_S 16
+
#define HTT_TX_DESC_PKT_SUBTYPE_GET(_var) \
(((_var) & HTT_TX_DESC_PKT_SUBTYPE_M) >> HTT_TX_DESC_PKT_SUBTYPE_S)
#define HTT_TX_DESC_PKT_SUBTYPE_SET(_var, _val) \
diff --git a/CORE/CLD_TXRX/TXRX/ol_tx.c b/CORE/CLD_TXRX/TXRX/ol_tx.c
index 8367ed06c7cf..5171dde8480a 100644
--- a/CORE/CLD_TXRX/TXRX/ol_tx.c
+++ b/CORE/CLD_TXRX/TXRX/ol_tx.c
@@ -838,7 +838,7 @@ ol_txrx_mgmt_send(
tx_mgmt_frm,
&tx_msdu_info.htt);
htt_tx_desc_display(tx_desc->htt_tx_desc);
- htt_tx_desc_set_chanfreq((u_int32_t *)(tx_desc->htt_tx_desc), chanfreq);
+ htt_tx_desc_set_chanfreq(tx_desc->htt_tx_desc, chanfreq);
ol_tx_enqueue(vdev->pdev, txq, tx_desc, &tx_msdu_info);
if (tx_msdu_info.peer) {
@@ -847,6 +847,7 @@ ol_txrx_mgmt_send(
}
ol_tx_sched(vdev->pdev);
} else {
+ htt_tx_desc_set_chanfreq(tx_desc->htt_tx_desc, chanfreq);
ol_tx_send_nonstd(pdev, tx_desc, tx_mgmt_frm, htt_pkt_type_mgmt);
}
@@ -874,7 +875,7 @@ adf_nbuf_t ol_tx_reinject(
ol_tx_prepare_ll(tx_desc, vdev, msdu, &msdu_info);
HTT_TX_DESC_POSTPONED_SET(*((u_int32_t *)(tx_desc->htt_tx_desc)), TRUE);
- htt_tx_desc_set_peer_id((u_int32_t *)(tx_desc->htt_tx_desc), peer_id);
+ htt_tx_desc_set_peer_id(tx_desc->htt_tx_desc, peer_id);
ol_tx_send(vdev->pdev, tx_desc, msdu);
diff --git a/CORE/SERVICES/COMMON/ol_htt_tx_api.h b/CORE/SERVICES/COMMON/ol_htt_tx_api.h
index 6c5d5da75939..71f46d22034d 100644
--- a/CORE/SERVICES/COMMON/ol_htt_tx_api.h
+++ b/CORE/SERVICES/COMMON/ol_htt_tx_api.h
@@ -635,22 +635,22 @@ htt_tx_desc_display(void *tx_desc);
#endif
static inline
-void htt_tx_desc_set_peer_id(u_int32_t *htt_tx_desc, u_int16_t peer_id)
+void htt_tx_desc_set_peer_id(void *htt_tx_desc, u_int16_t peer_id)
{
u_int16_t *peer_id_field_ptr;
peer_id_field_ptr = (u_int16_t *)
- (htt_tx_desc + HTT_TX_DESC_PEERID_DESC_PADDR_OFFSET_DWORD);
+ (htt_tx_desc + HTT_TX_DESC_PEERID_DESC_PADDR_OFFSET_BYTES);
*peer_id_field_ptr = peer_id;
}
static inline
-void htt_tx_desc_set_chanfreq(u_int32_t *htt_tx_desc, u_int16_t chanfreq)
+void htt_tx_desc_set_chanfreq(void *htt_tx_desc, u_int16_t chanfreq)
{
u_int16_t *chanfreq_field_ptr;
chanfreq_field_ptr = (u_int16_t *)
- (htt_tx_desc + HTT_TX_DESC_PEERID_DESC_PADDR_OFFSET_DWORD + sizeof(u_int16_t));
+ (htt_tx_desc + HTT_TX_DESC_CHANFREQ_DESC_PADDR_OFFSET_BYTES);
*chanfreq_field_ptr = chanfreq;
}