[PATCH 2/3] wcn36xx: let device generate qos seq numbers
Bob Copeland
me at bobcopeland.com
Wed Mar 5 12:35:02 EST 2014
wcn36xx currently sends an incorrect sequence number into the BA session
setup firmware command: it should be saving or updating the ssn in the
TX_START ampdu_action callback instead of waiting until TX_OPERATIONAL.
However, we can sidestep the issue by letting the hardware generate the
sequence numbers for QoS frames, as is done in prima, so do that.
Signed-off-by: Bob Copeland <bob at cozybit.com>
---
Changes since v1:
- use symbolic constant instead of plain 2 (Chun-Yeow Yeoh)
---
txrx.c | 1 +
txrx.h | 9 ++++++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/txrx.c b/txrx.c
index 0fae529..fed2379 100644
--- a/txrx.c
+++ b/txrx.c
@@ -95,6 +95,7 @@ static void wcn36xx_set_tx_pdu(struct wcn36xx_tx_bd *bd,
bd->pdu.mpdu_header_off;
bd->pdu.mpdu_len = len;
bd->pdu.tid = tid;
+ bd->pdu.bd_ssn = WCN36XX_TXBD_SSN_FILL_DPU_QOS;
}
static inline struct wcn36xx_vif *get_vif_by_addr(struct wcn36xx *wcn,
diff --git a/txrx.h b/txrx.h
index f72025c..5623662 100644
--- a/txrx.h
+++ b/txrx.h
@@ -33,6 +33,12 @@
#define WCN36XX_BD_RATE_MGMT 2
#define WCN36XX_BD_RATE_CTRL 3
+enum wcn36xx_txbd_ssn_type {
+ WCN36XX_TXBD_SSN_FILL_HOST = 0,
+ WCN36XX_TXBD_SSN_FILL_DPU_NON_QOS = 1,
+ WCN36XX_TXBD_SSN_FILL_DPU_QOS = 2,
+};
+
struct wcn36xx_pdu {
u32 dpu_fb:8;
u32 adu_fb:8;
@@ -51,7 +57,8 @@ struct wcn36xx_pdu {
/* 0x0c*/
u32 reserved4:8;
u32 tid:4;
- u32 reserved3:4;
+ u32 bd_ssn:2;
+ u32 reserved3:2;
u32 mpdu_len:16;
};
--
1.7.10.4
More information about the wcn36xx
mailing list