qcacmn: Check DBS capable to determine max_mac_rings

For 1x1 DBS case, host also need to configure max_mac_rings
as 2 and initialize each RX ring, currently host only consider
2x2 DBS case.

Check DBS capable instead of 2x2 DBS capable only.

Change-Id: Ic2d4fda9be245a3d0448b6b87ba8676f41d9187e
CRs-Fixed: 3129165
This commit is contained in:
Jinwei Chen
2022-02-14 21:03:03 -08:00
committed by Madan Koyyalamudi
parent 198acb4138
commit a2f8cef72d
2 changed files with 10 additions and 27 deletions

View File

@@ -1141,7 +1141,7 @@ struct ol_if_ops {
uint8_t pdev_id, uint8_t pdev_id,
uint8_t *peer_mac, uint8_t *peer_mac,
uint8_t *vdev_mac, enum wlan_op_mode opmode); uint8_t *vdev_mac, enum wlan_op_mode opmode);
bool (*is_hw_dbs_2x2_capable)(struct wlan_objmgr_psoc *psoc); bool (*is_hw_dbs_capable)(struct wlan_objmgr_psoc *psoc);
int (*peer_add_wds_entry)(struct cdp_ctrl_objmgr_psoc *soc, int (*peer_add_wds_entry)(struct cdp_ctrl_objmgr_psoc *soc,
uint8_t vdev_id, uint8_t vdev_id,
uint8_t *peer_macaddr, uint8_t *peer_macaddr,

View File

@@ -5811,7 +5811,6 @@ static QDF_STATUS dp_rxdma_ring_config(struct dp_soc *soc)
if (pdev) { if (pdev) {
int mac_id; int mac_id;
bool dbs_enable = 0;
int max_mac_rings = int max_mac_rings =
wlan_cfg_get_num_mac_rings wlan_cfg_get_num_mac_rings
(pdev->wlan_cfg_ctx); (pdev->wlan_cfg_ctx);
@@ -5828,28 +5827,9 @@ static QDF_STATUS dp_rxdma_ring_config(struct dp_soc *soc)
.hal_srng, .hal_srng,
RXDMA_BUF); RXDMA_BUF);
if (soc->cdp_soc.ol_ops-> /* get max_mac_rings based on DBS */
is_hw_dbs_2x2_capable) { dp_is_hw_dbs_enable(soc, &max_mac_rings);
dbs_enable = soc->cdp_soc.ol_ops-> dp_err("pdev_id %d max_mac_rings %d",
is_hw_dbs_2x2_capable(
(void *)soc->ctrl_psoc);
}
if (dbs_enable) {
QDF_TRACE(QDF_MODULE_ID_TXRX,
QDF_TRACE_LEVEL_ERROR,
FL("DBS enabled max_mac_rings %d"),
max_mac_rings);
} else {
max_mac_rings = 1;
QDF_TRACE(QDF_MODULE_ID_TXRX,
QDF_TRACE_LEVEL_ERROR,
FL("DBS disabled, max_mac_rings %d"),
max_mac_rings);
}
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
FL("pdev_id %d max_mac_rings %d"),
pdev->pdev_id, max_mac_rings); pdev->pdev_id, max_mac_rings);
for (mac_id = 0; mac_id < max_mac_rings; mac_id++) { for (mac_id = 0; mac_id < max_mac_rings; mac_id++) {
@@ -13572,11 +13552,14 @@ void dp_is_hw_dbs_enable(struct dp_soc *soc,
int *max_mac_rings) int *max_mac_rings)
{ {
bool dbs_enable = false; bool dbs_enable = false;
if (soc->cdp_soc.ol_ops->is_hw_dbs_2x2_capable)
if (soc->cdp_soc.ol_ops->is_hw_dbs_capable)
dbs_enable = soc->cdp_soc.ol_ops-> dbs_enable = soc->cdp_soc.ol_ops->
is_hw_dbs_2x2_capable((void *)soc->ctrl_psoc); is_hw_dbs_capable((void *)soc->ctrl_psoc);
*max_mac_rings = (dbs_enable)?(*max_mac_rings):1; *max_mac_rings = (dbs_enable)?(*max_mac_rings):1;
dp_info("dbs_enable %d, max_mac_rings %d",
dbs_enable, *max_mac_rings);
} }
qdf_export_symbol(dp_is_hw_dbs_enable); qdf_export_symbol(dp_is_hw_dbs_enable);