qcacmn: ba_window size in WMI for rx_reorder_queue_setup
ba_window_size_valid and ba_window size support is missing
while sending wmi_peer_reorder_queue_setup. This is needed
for handing 256 BA which is not FW default.
Change-Id: I3218921c48c0f82225b7992076e73ac0acf7bd11
CRs-fixed: 2285423
diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h
index 7cb6c66..1a857ec 100644
--- a/dp/inc/cdp_txrx_ops.h
+++ b/dp/inc/cdp_txrx_ops.h
@@ -753,7 +753,9 @@
(*peer_rx_reorder_queue_setup)(struct cdp_ctrl_objmgr_pdev *ctrl_pdev,
uint8_t vdev_id, uint8_t *peer_mac,
qdf_dma_addr_t hw_qdesc, int tid,
- uint16_t queue_num);
+ uint16_t queue_num,
+ uint8_t ba_window_size_valid,
+ uint16_t ba_window_size);
QDF_STATUS
(*peer_rx_reorder_queue_remove)(struct cdp_ctrl_objmgr_pdev *ctrl_pdev,
uint8_t vdev_id, uint8_t *peer_macaddr,
diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c
index c56b641..5022e8b 100644
--- a/dp/wifi3.0/dp_peer.c
+++ b/dp/wifi3.0/dp_peer.c
@@ -1128,6 +1128,13 @@
dp_reo_send_cmd(soc, CMD_UPDATE_RX_REO_QUEUE, ¶ms, dp_rx_tid_update_cb, rx_tid);
rx_tid->ba_win_size = ba_window_size;
+ if (soc->cdp_soc.ol_ops->peer_rx_reorder_queue_setup) {
+ soc->cdp_soc.ol_ops->peer_rx_reorder_queue_setup(
+ peer->vdev->pdev->ctrl_pdev,
+ peer->vdev->vdev_id, peer->mac_addr.raw,
+ rx_tid->hw_qdesc_paddr, tid, tid, 1, ba_window_size);
+
+ }
return 0;
}
@@ -1329,7 +1336,7 @@
soc->cdp_soc.ol_ops->peer_rx_reorder_queue_setup(
vdev->pdev->ctrl_pdev,
peer->vdev->vdev_id, peer->mac_addr.raw,
- rx_tid->hw_qdesc_paddr, tid, tid);
+ rx_tid->hw_qdesc_paddr, tid, tid, 1, ba_window_size);
}
return 0;
diff --git a/hal/wifi3.0/hal_reo.h b/hal/wifi3.0/hal_reo.h
index fa672ec..8a53ffe 100644
--- a/hal/wifi3.0/hal_reo.h
+++ b/hal/wifi3.0/hal_reo.h
@@ -322,7 +322,7 @@
pn_uneven:1,
pn_hand_enab:1,
ignore_ampdu:1;
- uint32_t ba_window_size:8,
+ uint32_t ba_window_size:9,
pn_size:8,
svld:1,
ssn:12,
diff --git a/target_if/dp/inc/target_if_dp.h b/target_if/dp/inc/target_if_dp.h
index ef1d09e..32ef453 100644
--- a/target_if/dp/inc/target_if_dp.h
+++ b/target_if/dp/inc/target_if_dp.h
@@ -54,6 +54,8 @@
* @hw_qdesc: hw queue descriptor
* @tid: tid number
* @queue_no: queue number
+ * @ba_window_size_valid: BA window size validity flag
+ * @ba_window_size: BA window size
*
* return: QDF_STATUS_SUCCESS for success or error code
*/
@@ -61,7 +63,9 @@
target_if_peer_rx_reorder_queue_setup(struct cdp_ctrl_objmgr_pdev *pdev,
uint8_t vdev_id, uint8_t *peer_macaddr,
qdf_dma_addr_t hw_qdesc, int tid,
- uint16_t queue_no);
+ uint16_t queue_no,
+ uint8_t ba_window_size_valid,
+ uint16_t ba_window_size);
/**
* target_if_peer_rx_reorder_queue_remove() - remove rx reorder queue
diff --git a/target_if/dp/src/target_if_dp.c b/target_if/dp/src/target_if_dp.c
index 12a6e46..1b9122d 100644
--- a/target_if/dp/src/target_if_dp.c
+++ b/target_if/dp/src/target_if_dp.c
@@ -62,7 +62,9 @@
target_if_peer_rx_reorder_queue_setup(struct cdp_ctrl_objmgr_pdev *pdev,
uint8_t vdev_id, uint8_t *peer_macaddr,
qdf_dma_addr_t hw_qdesc, int tid,
- uint16_t queue_no)
+ uint16_t queue_no,
+ uint8_t ba_window_size_valid,
+ uint16_t ba_window_size)
{
struct rx_reorder_queue_setup_params param;
struct common_wmi_handle *pdev_wmi_handle;
@@ -79,6 +81,9 @@
param.hw_qdesc_paddr_lo = hw_qdesc & 0xffffffff;
param.hw_qdesc_paddr_hi = (uint64_t)hw_qdesc >> 32;
param.queue_no = queue_no;
+ param.ba_window_size_valid = ba_window_size_valid;
+ param.ba_window_size = ba_window_size;
+
return wmi_unified_peer_rx_reorder_queue_setup_send(pdev_wmi_handle,
¶m);
}
diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h
index 168667b..49b78aa 100644
--- a/wmi/inc/wmi_unified_param.h
+++ b/wmi/inc/wmi_unified_param.h
@@ -4863,6 +4863,8 @@
* @hw_qdesc_paddr_lo: lower 32 bits of queue desc adddress
* @hw_qdesc_paddr_hi: upper 32 bits of queue desc adddress
* @queue_no: 16-bit number assigned by host for queue
+ * @ba_window_size_valid: BA window size validity flag
+ * @ba_window_size: BA window size
*/
struct rx_reorder_queue_setup_params {
uint8_t *peer_macaddr;
@@ -4871,6 +4873,9 @@
uint32_t hw_qdesc_paddr_lo;
uint32_t hw_qdesc_paddr_hi;
uint16_t queue_no;
+ uint8_t ba_window_size_valid;
+ uint16_t ba_window_size;
+
};
/**
diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c
index bce9c55..81b85c7 100644
--- a/wmi/src/wmi_unified_tlv.c
+++ b/wmi/src/wmi_unified_tlv.c
@@ -935,6 +935,9 @@
cmd->queue_ptr_lo = param->hw_qdesc_paddr_lo;
cmd->queue_ptr_hi = param->hw_qdesc_paddr_hi;
cmd->queue_no = param->queue_no;
+ cmd->ba_window_size_valid = param->ba_window_size_valid;
+ cmd->ba_window_size = param->ba_window_size;
+
if (wmi_unified_cmd_send(wmi, buf, len,
WMI_PEER_REORDER_QUEUE_SETUP_CMDID)) {