Message ID | 20240430165811.1377182-5-quic_periyasa@quicinc.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 53bf4a14f8c55e84d200f8328fde39ab6bdf1bf5 |
Delegated to: | Kalle Valo |
Headers | show |
Series | wifi: ath12k: Add multi device support for WBM idle ring buffer setup | expand |
On 4/30/2024 9:58 AM, Karthikeyan Periyasamy wrote: > Currently, inter device MLO is not supported. Therefore, the WBM idle ring > buffers choose the implicit return buffer manager (DEV0_IDLE_DESC_LIST). > However, this implicit return buffer manager design not meeting the Kalle, can you add the missing word in pending: design *is* not meeting > requirements to support inter device MLO. In inter device MLO, multiple > devices participate. The device specific WBM idle ring buffers transmit > to multiple device REO rings. To distinguish between device specific WBM > idle buffers, the setup configuration need to choose a different return > buffer manager based on the unique identifier (device index). > > Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1 > > Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Jeff Johnson <quic_jjohnson@quicinc.com> writes: > On 4/30/2024 9:58 AM, Karthikeyan Periyasamy wrote: >> Currently, inter device MLO is not supported. Therefore, the WBM idle ring >> buffers choose the implicit return buffer manager (DEV0_IDLE_DESC_LIST). >> However, this implicit return buffer manager design not meeting the > > Kalle, can you add the missing word in pending: > design *is* not meeting Fixed in the pending branch.
diff --git a/drivers/net/wireless/ath/ath12k/dp.c b/drivers/net/wireless/ath/ath12k/dp.c index f41b3f9dac3d..72ea9baaf8d7 100644 --- a/drivers/net/wireless/ath/ath12k/dp.c +++ b/drivers/net/wireless/ath/ath12k/dp.c @@ -1589,6 +1589,24 @@ static int ath12k_dp_reoq_lut_setup(struct ath12k_base *ab) return 0; } +static enum hal_rx_buf_return_buf_manager +ath12k_dp_get_idle_link_rbm(struct ath12k_base *ab) +{ + switch (ab->device_id) { + case 0: + return HAL_RX_BUF_RBM_WBM_DEV0_IDLE_DESC_LIST; + case 1: + return HAL_RX_BUF_RBM_WBM_DEV1_IDLE_DESC_LIST; + case 2: + return HAL_RX_BUF_RBM_WBM_DEV2_IDLE_DESC_LIST; + default: + ath12k_warn(ab, "invalid %d device id, so choose default rbm\n", + ab->device_id); + WARN_ON(1); + return HAL_RX_BUF_RBM_WBM_DEV0_IDLE_DESC_LIST; + } +} + int ath12k_dp_alloc(struct ath12k_base *ab) { struct ath12k_dp *dp = &ab->dp; @@ -1605,7 +1623,7 @@ int ath12k_dp_alloc(struct ath12k_base *ab) spin_lock_init(&dp->reo_cmd_lock); dp->reo_cmd_cache_flush_count = 0; - dp->idle_link_rbm = HAL_RX_BUF_RBM_WBM_DEV0_IDLE_DESC_LIST; + dp->idle_link_rbm = ath12k_dp_get_idle_link_rbm(ab); ret = ath12k_wbm_idle_ring_setup(ab, &n_link_desc); if (ret) {
Currently, inter device MLO is not supported. Therefore, the WBM idle ring buffers choose the implicit return buffer manager (DEV0_IDLE_DESC_LIST). However, this implicit return buffer manager design not meeting the requirements to support inter device MLO. In inter device MLO, multiple devices participate. The device specific WBM idle ring buffers transmit to multiple device REO rings. To distinguish between device specific WBM idle buffers, the setup configuration need to choose a different return buffer manager based on the unique identifier (device index). Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1 Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com> --- drivers/net/wireless/ath/ath12k/dp.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-)