qcacmn: Use different Rx ring mask for ML and non-ML peers
Add framework to use different RX hash values and ring masks for ML and non-ML peers Change-Id: I098cb50b8873eb137ce096011d01a5c21aaf854f CRs-Fixed: 3269916
Этот коммит содержится в:

коммит произвёл
Madan Koyyalamudi

родитель
383edf35d0
Коммит
adbb77002a
@@ -450,7 +450,7 @@
|
||||
#define WLAN_CFG_PPE_RELEASE_RING_SIZE_MAX 1024
|
||||
|
||||
#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
|
||||
#define WLAN_CFG_MLO_RX_RING_MAP 0xF
|
||||
#define WLAN_CFG_MLO_RX_RING_MAP 0x7
|
||||
#define WLAN_CFG_MLO_RX_RING_MAP_MIN 0x0
|
||||
#define WLAN_CFG_MLO_RX_RING_MAP_MAX 0xFF
|
||||
#endif
|
||||
@@ -1614,57 +1614,16 @@
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_DP_MLO_CHIP0_RX_RING_MAP \
|
||||
CFG_INI_UINT("dp_chip0_rx_ring_map", \
|
||||
#define CFG_DP_MLO_RX_RING_MAP \
|
||||
CFG_INI_UINT("dp_mlo_reo_rings_map", \
|
||||
WLAN_CFG_MLO_RX_RING_MAP_MIN, \
|
||||
WLAN_CFG_MLO_RX_RING_MAP_MAX, \
|
||||
WLAN_CFG_MLO_RX_RING_MAP, \
|
||||
CFG_VALUE_OR_DEFAULT, "DP Rx ring map chip0")
|
||||
CFG_VALUE_OR_DEFAULT, "DP MLO Rx ring map")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* dp_chip1_rx_ring_map - Set Rx ring map for CHIP 1
|
||||
* @Min: 0x0
|
||||
* @Max: 0xFF
|
||||
* @Default: 0xF
|
||||
*
|
||||
* This ini sets Rx ring map for CHIP 1
|
||||
*
|
||||
* Usage: Internal
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_DP_MLO_CHIP1_RX_RING_MAP \
|
||||
CFG_INI_UINT("dp_chip1_rx_ring_map", \
|
||||
WLAN_CFG_MLO_RX_RING_MAP_MIN, \
|
||||
WLAN_CFG_MLO_RX_RING_MAP_MAX, \
|
||||
WLAN_CFG_MLO_RX_RING_MAP, \
|
||||
CFG_VALUE_OR_DEFAULT, "DP Rx ring map chip1")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* dp_chip2_rx_ring_map - Set Rx ring map for CHIP 2
|
||||
* @Min: 0x0
|
||||
* @Max: 0xFF
|
||||
* @Default: 0xF
|
||||
*
|
||||
* This ini sets Rx ring map for CHIP 2
|
||||
*
|
||||
* Usage: Internal
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_DP_MLO_CHIP2_RX_RING_MAP \
|
||||
CFG_INI_UINT("dp_chip2_rx_ring_map", \
|
||||
WLAN_CFG_MLO_RX_RING_MAP_MIN, \
|
||||
WLAN_CFG_MLO_RX_RING_MAP_MAX, \
|
||||
WLAN_CFG_MLO_RX_RING_MAP, \
|
||||
CFG_VALUE_OR_DEFAULT, "DP Rx ring map chip2")
|
||||
|
||||
#define CFG_DP_MLO_CONFIG \
|
||||
CFG(CFG_DP_MLO_CHIP0_RX_RING_MAP) \
|
||||
CFG(CFG_DP_MLO_CHIP1_RX_RING_MAP) \
|
||||
CFG(CFG_DP_MLO_CHIP2_RX_RING_MAP)
|
||||
CFG(CFG_DP_MLO_RX_RING_MAP)
|
||||
#else
|
||||
#define CFG_DP_MLO_CONFIG
|
||||
#endif
|
||||
|
@@ -2546,25 +2546,8 @@ wlan_multi_soc_mlo_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
|
||||
uint8_t rx_ring_map;
|
||||
|
||||
rx_ring_map =
|
||||
cfg_get(psoc, CFG_DP_MLO_CHIP0_RX_RING_MAP);
|
||||
wlan_cfg_ctx->mlo_chip_rx_ring_map[0] = rx_ring_map;
|
||||
wlan_cfg_ctx->mlo_chip_default_rx_ring_id[0] =
|
||||
wlan_cfg_get_lsb_set_pos(rx_ring_map);
|
||||
wlan_cfg_ctx->lmac_peer_id_msb[0] = 1;
|
||||
|
||||
rx_ring_map =
|
||||
cfg_get(psoc, CFG_DP_MLO_CHIP1_RX_RING_MAP);
|
||||
wlan_cfg_ctx->mlo_chip_rx_ring_map[1] = rx_ring_map;
|
||||
wlan_cfg_ctx->mlo_chip_default_rx_ring_id[1] =
|
||||
wlan_cfg_get_lsb_set_pos(rx_ring_map);
|
||||
wlan_cfg_ctx->lmac_peer_id_msb[1] = 2;
|
||||
|
||||
rx_ring_map =
|
||||
cfg_get(psoc, CFG_DP_MLO_CHIP2_RX_RING_MAP);
|
||||
wlan_cfg_ctx->mlo_chip_rx_ring_map[2] = rx_ring_map;
|
||||
wlan_cfg_ctx->mlo_chip_default_rx_ring_id[2] =
|
||||
wlan_cfg_get_lsb_set_pos(rx_ring_map);
|
||||
wlan_cfg_ctx->lmac_peer_id_msb[2] = 3;
|
||||
cfg_get(psoc, CFG_DP_MLO_RX_RING_MAP);
|
||||
wlan_cfg_ctx->mlo_chip_rx_ring_map = rx_ring_map;
|
||||
}
|
||||
#else
|
||||
static inline void
|
||||
@@ -2637,6 +2620,14 @@ static void wlan_soc_tx_capt_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
wlan_cfg_soc_update_tgt_params(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
|
||||
struct cdp_ctrl_objmgr_psoc *psoc)
|
||||
{
|
||||
wlan_cfg_ctx->reo_rings_mapping = cfg_get(psoc,
|
||||
CFG_DP_REO_RINGS_MAP);
|
||||
}
|
||||
|
||||
/**
|
||||
* wlan_cfg_soc_attach() - Allocate and prepare SoC configuration
|
||||
* @psoc - Object manager psoc
|
||||
@@ -3983,24 +3974,9 @@ wlan_cfg_set_rx_rel_ring_id(struct wlan_cfg_dp_soc_ctxt *cfg,
|
||||
|
||||
#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
|
||||
uint8_t
|
||||
wlan_cfg_mlo_rx_ring_map_get_by_chip_id(struct wlan_cfg_dp_soc_ctxt *cfg,
|
||||
uint8_t chip_id)
|
||||
wlan_cfg_mlo_rx_ring_map_get(struct wlan_cfg_dp_soc_ctxt *cfg)
|
||||
{
|
||||
return cfg->mlo_chip_rx_ring_map[chip_id];
|
||||
}
|
||||
|
||||
uint8_t
|
||||
wlan_cfg_mlo_default_rx_ring_get_by_chip_id(struct wlan_cfg_dp_soc_ctxt *cfg,
|
||||
uint8_t chip_id)
|
||||
{
|
||||
return cfg->mlo_chip_default_rx_ring_id[chip_id];
|
||||
}
|
||||
|
||||
uint8_t
|
||||
wlan_cfg_mlo_lmac_peer_id_msb_get_by_chip_id(struct wlan_cfg_dp_soc_ctxt *cfg,
|
||||
uint8_t chip_id)
|
||||
{
|
||||
return cfg->lmac_peer_id_msb[chip_id];
|
||||
return cfg->mlo_chip_rx_ring_map;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@@ -260,8 +260,6 @@ struct wlan_srng_cfg {
|
||||
* @tx_rings_grp_bitmap: bitmap of group intr contexts which have
|
||||
* non-zero tx ring mask
|
||||
* @mlo_chip_rx_ring_map: map of chip_id to rx ring map
|
||||
* @mlo_chip_default_rx_ring_id: default rx_ring of chip when hash is not found
|
||||
* @lmac_peer_id_msb: value used for hash based routing
|
||||
* @vdev_stats_hw_offload_config: HW vdev stats config
|
||||
* @vdev_stats_hw_offload_timer: HW vdev stats timer duration
|
||||
* @txmon_hw_support: TxMON HW support
|
||||
@@ -424,9 +422,7 @@ struct wlan_cfg_dp_soc_ctxt {
|
||||
uint8_t rx_rel_wbm2sw_ring_id;
|
||||
uint32_t tx_rings_grp_bitmap;
|
||||
#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
|
||||
uint8_t mlo_chip_rx_ring_map[WLAN_MAX_MLO_CHIPS];
|
||||
uint8_t mlo_chip_default_rx_ring_id[WLAN_MAX_MLO_CHIPS];
|
||||
uint8_t lmac_peer_id_msb[WLAN_MAX_MLO_CHIPS];
|
||||
uint8_t mlo_chip_rx_ring_map;
|
||||
#endif
|
||||
#ifdef QCA_VDEV_STATS_HW_OFFLOAD_SUPPORT
|
||||
bool vdev_stats_hw_offload_config;
|
||||
@@ -2099,38 +2095,13 @@ wlan_cfg_get_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg);
|
||||
|
||||
#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
|
||||
/**
|
||||
* wlan_cfg_mlo_rx_ring_map_get_by_chip_id() - get rx ring map
|
||||
* wlan_cfg_mlo_rx_ring_map_get() - get rx ring map
|
||||
* @cfg: soc configuration context
|
||||
* @chip_id: mlo_chip_id
|
||||
*
|
||||
* Return: rx_ring_map
|
||||
*/
|
||||
uint8_t
|
||||
wlan_cfg_mlo_rx_ring_map_get_by_chip_id(struct wlan_cfg_dp_soc_ctxt *cfg,
|
||||
uint8_t chip_id);
|
||||
|
||||
/**
|
||||
* wlan_cfg_mlo_default_rx_ring_get_by_chip_id() - get default RX ring
|
||||
* @cfg: soc configuration context
|
||||
* @chip_id: mlo_chip_id
|
||||
*
|
||||
* Return: default rx ring
|
||||
*/
|
||||
uint8_t
|
||||
wlan_cfg_mlo_default_rx_ring_get_by_chip_id(struct wlan_cfg_dp_soc_ctxt *cfg,
|
||||
uint8_t chip_id);
|
||||
|
||||
/**
|
||||
* wlan_cfg_mlo_lmac_peer_id_msb_get_by_chip_id() - get chip's lmac_peer_id_msb
|
||||
* @cfg: soc configuration context
|
||||
* @chip_id: mlo_chip_id
|
||||
*
|
||||
* Return: lmac_peer_id_msb
|
||||
*/
|
||||
uint8_t
|
||||
wlan_cfg_mlo_lmac_peer_id_msb_get_by_chip_id(struct wlan_cfg_dp_soc_ctxt *cfg,
|
||||
uint8_t chip_id);
|
||||
|
||||
wlan_cfg_mlo_rx_ring_map_get(struct wlan_cfg_dp_soc_ctxt *cfg);
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -2194,4 +2165,14 @@ wlan_cfg_get_tx_capt_max_mem(struct wlan_cfg_dp_soc_ctxt *cfg)
|
||||
*/
|
||||
uint8_t wlan_cfg_get_napi_scale_factor(struct wlan_cfg_dp_soc_ctxt *cfg);
|
||||
|
||||
/**
|
||||
* wlan_cfg_soc_update_tgt_params() - Update band specific params
|
||||
* @wlan_cfg_ctx - SOC cfg context
|
||||
* @ctrl_obj - PSOC object
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
void
|
||||
wlan_cfg_soc_update_tgt_params(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
|
||||
struct cdp_ctrl_objmgr_psoc *ctrl_obj);
|
||||
#endif /*__WLAN_CFG_H*/
|
||||
|
Ссылка в новой задаче
Block a user