qcacmn: Rx path changes for multichip MLO

Rx patch changes for multichip MLO

1. Create ini for rx ring mask for each chip
2. Configure hash based routing for each chip based
   on lmac_peer_id_msb
3. Peer setup changes to configure lmac_peer_id_msb
   to enable hash based routing
4. Rx Replenish changes to provide buffers back to owner
   SOC of reo ring

Change-Id: Ibbe6e81f9e62d88d9bb289a082dd14b4362252c4
This commit is contained in:
Chaithanya Garrepalli
2021-11-23 15:34:30 +05:30
committed by Madan Koyyalamudi
vanhempi bbe062b4b7
commit c42af1f62f
23 muutettua tiedostoa jossa 658 lisäystä ja 57 poistoa

Näytä tiedosto

@@ -87,6 +87,13 @@
#endif
#endif
/* Max number of chips that can participate in MLO */
#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
#define WLAN_MAX_MLO_CHIPS 3
#else
#define WLAN_MAX_MLO_CHIPS 1
#endif
struct wlan_cfg_dp_pdev_ctxt;
/**
@@ -234,6 +241,9 @@ struct wlan_srng_cfg {
* @tx_mon_buf_ring_size: Tx monitor buf ring size
* @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
*/
struct wlan_cfg_dp_soc_ctxt {
int num_int_ctxts;
@@ -382,6 +392,11 @@ struct wlan_cfg_dp_soc_ctxt {
uint32_t tx_mon_buf_ring_size;
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];
#endif
};
/**
@@ -1933,3 +1948,38 @@ void
wlan_cfg_set_rx_rel_ring_id(struct wlan_cfg_dp_soc_ctxt *cfg,
uint8_t wbm2sw_ring_id);
#endif
#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
* @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);
#endif