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
This commit is contained in:

committed by
nshrivas

parent
b39e413ac0
commit
7f9c050df4
@@ -753,7 +753,9 @@ struct ol_if_ops {
|
|||||||
(*peer_rx_reorder_queue_setup)(struct cdp_ctrl_objmgr_pdev *ctrl_pdev,
|
(*peer_rx_reorder_queue_setup)(struct cdp_ctrl_objmgr_pdev *ctrl_pdev,
|
||||||
uint8_t vdev_id, uint8_t *peer_mac,
|
uint8_t vdev_id, uint8_t *peer_mac,
|
||||||
qdf_dma_addr_t hw_qdesc, int tid,
|
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
|
QDF_STATUS
|
||||||
(*peer_rx_reorder_queue_remove)(struct cdp_ctrl_objmgr_pdev *ctrl_pdev,
|
(*peer_rx_reorder_queue_remove)(struct cdp_ctrl_objmgr_pdev *ctrl_pdev,
|
||||||
uint8_t vdev_id, uint8_t *peer_macaddr,
|
uint8_t vdev_id, uint8_t *peer_macaddr,
|
||||||
|
@@ -1128,6 +1128,13 @@ static int dp_rx_tid_update_wifi3(struct dp_peer *peer, int tid, uint32_t
|
|||||||
dp_reo_send_cmd(soc, CMD_UPDATE_RX_REO_QUEUE, ¶ms, dp_rx_tid_update_cb, rx_tid);
|
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;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1329,7 +1336,7 @@ try_desc_alloc:
|
|||||||
soc->cdp_soc.ol_ops->peer_rx_reorder_queue_setup(
|
soc->cdp_soc.ol_ops->peer_rx_reorder_queue_setup(
|
||||||
vdev->pdev->ctrl_pdev,
|
vdev->pdev->ctrl_pdev,
|
||||||
peer->vdev->vdev_id, peer->mac_addr.raw,
|
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;
|
return 0;
|
||||||
|
@@ -322,7 +322,7 @@ struct hal_reo_cmd_update_queue_params {
|
|||||||
pn_uneven:1,
|
pn_uneven:1,
|
||||||
pn_hand_enab:1,
|
pn_hand_enab:1,
|
||||||
ignore_ampdu:1;
|
ignore_ampdu:1;
|
||||||
uint32_t ba_window_size:8,
|
uint32_t ba_window_size:9,
|
||||||
pn_size:8,
|
pn_size:8,
|
||||||
svld:1,
|
svld:1,
|
||||||
ssn:12,
|
ssn:12,
|
||||||
|
@@ -54,6 +54,8 @@ target_if_peer_set_default_routing(struct cdp_ctrl_objmgr_pdev *pdev,
|
|||||||
* @hw_qdesc: hw queue descriptor
|
* @hw_qdesc: hw queue descriptor
|
||||||
* @tid: tid number
|
* @tid: tid number
|
||||||
* @queue_no: queue 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
|
* return: QDF_STATUS_SUCCESS for success or error code
|
||||||
*/
|
*/
|
||||||
@@ -61,7 +63,9 @@ QDF_STATUS
|
|||||||
target_if_peer_rx_reorder_queue_setup(struct cdp_ctrl_objmgr_pdev *pdev,
|
target_if_peer_rx_reorder_queue_setup(struct cdp_ctrl_objmgr_pdev *pdev,
|
||||||
uint8_t vdev_id, uint8_t *peer_macaddr,
|
uint8_t vdev_id, uint8_t *peer_macaddr,
|
||||||
qdf_dma_addr_t hw_qdesc, int tid,
|
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
|
* target_if_peer_rx_reorder_queue_remove() - remove rx reorder queue
|
||||||
|
@@ -62,7 +62,9 @@ QDF_STATUS
|
|||||||
target_if_peer_rx_reorder_queue_setup(struct cdp_ctrl_objmgr_pdev *pdev,
|
target_if_peer_rx_reorder_queue_setup(struct cdp_ctrl_objmgr_pdev *pdev,
|
||||||
uint8_t vdev_id, uint8_t *peer_macaddr,
|
uint8_t vdev_id, uint8_t *peer_macaddr,
|
||||||
qdf_dma_addr_t hw_qdesc, int tid,
|
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 rx_reorder_queue_setup_params param;
|
||||||
struct common_wmi_handle *pdev_wmi_handle;
|
struct common_wmi_handle *pdev_wmi_handle;
|
||||||
@@ -79,6 +81,9 @@ target_if_peer_rx_reorder_queue_setup(struct cdp_ctrl_objmgr_pdev *pdev,
|
|||||||
param.hw_qdesc_paddr_lo = hw_qdesc & 0xffffffff;
|
param.hw_qdesc_paddr_lo = hw_qdesc & 0xffffffff;
|
||||||
param.hw_qdesc_paddr_hi = (uint64_t)hw_qdesc >> 32;
|
param.hw_qdesc_paddr_hi = (uint64_t)hw_qdesc >> 32;
|
||||||
param.queue_no = queue_no;
|
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,
|
return wmi_unified_peer_rx_reorder_queue_setup_send(pdev_wmi_handle,
|
||||||
¶m);
|
¶m);
|
||||||
}
|
}
|
||||||
|
@@ -4863,6 +4863,8 @@ struct rtt_keepalive_req_params {
|
|||||||
* @hw_qdesc_paddr_lo: lower 32 bits of queue desc adddress
|
* @hw_qdesc_paddr_lo: lower 32 bits of queue desc adddress
|
||||||
* @hw_qdesc_paddr_hi: upper 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
|
* @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 {
|
struct rx_reorder_queue_setup_params {
|
||||||
uint8_t *peer_macaddr;
|
uint8_t *peer_macaddr;
|
||||||
@@ -4871,6 +4873,9 @@ struct rx_reorder_queue_setup_params {
|
|||||||
uint32_t hw_qdesc_paddr_lo;
|
uint32_t hw_qdesc_paddr_lo;
|
||||||
uint32_t hw_qdesc_paddr_hi;
|
uint32_t hw_qdesc_paddr_hi;
|
||||||
uint16_t queue_no;
|
uint16_t queue_no;
|
||||||
|
uint8_t ba_window_size_valid;
|
||||||
|
uint16_t ba_window_size;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -935,6 +935,9 @@ QDF_STATUS send_peer_rx_reorder_queue_setup_cmd_tlv(wmi_unified_t wmi,
|
|||||||
cmd->queue_ptr_lo = param->hw_qdesc_paddr_lo;
|
cmd->queue_ptr_lo = param->hw_qdesc_paddr_lo;
|
||||||
cmd->queue_ptr_hi = param->hw_qdesc_paddr_hi;
|
cmd->queue_ptr_hi = param->hw_qdesc_paddr_hi;
|
||||||
cmd->queue_no = param->queue_no;
|
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,
|
if (wmi_unified_cmd_send(wmi, buf, len,
|
||||||
WMI_PEER_REORDER_QUEUE_SETUP_CMDID)) {
|
WMI_PEER_REORDER_QUEUE_SETUP_CMDID)) {
|
||||||
|
Reference in New Issue
Block a user