qcacmn: Config edits for multiple TX rings in HMT

The following configurations are changed
- Change numer of WBM2SWRELEASE rings from 7 to 8
- Use configurable RBM value when enqueuing packets for TX. This is needed
since WBM release ring numbers do not have an easy mapping to RBM values
for HMT1.0.

Change-Id: Idcf9e48e00b7039331fc1837bb1e900b12f19eb3
CRs-Fixed: 2984362
Cette révision appartient à :
Mohit Khanna
2021-07-16 03:45:46 -07:00
révisé par Madan Koyyalamudi
Parent 3e89b4435a
révision 47a165fe8e
9 fichiers modifiés avec 113 ajouts et 73 suppressions

Voir le fichier

@@ -45,6 +45,8 @@
#define WLAN_CFG_TX_RING_MASK_4 BIT(4)
#define WLAN_CFG_TX_RING_MASK_5 BIT(5)
#define WLAN_CFG_TX_RING_MASK_6 BIT(6)
#define WLAN_CFG_TX_RING_MASK_7 BIT(7)
#define WLAN_CFG_RX_MON_RING_MASK_0 0x1
#define WLAN_CFG_RX_MON_RING_MASK_1 0x2
@@ -112,13 +114,13 @@ struct dp_int_mask_assignment {
#ifdef CONFIG_BERYLLIUM
#ifdef IPA_OFFLOAD
static const uint8_t tx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
[0] = WLAN_CFG_TX_RING_MASK_0, [1] = WLAN_CFG_TX_RING_MASK_5,
[2] = WLAN_CFG_TX_RING_MASK_6};
[0] = WLAN_CFG_TX_RING_MASK_0, [1] = WLAN_CFG_TX_RING_MASK_6,
[2] = WLAN_CFG_TX_RING_MASK_7};
#else
static const uint8_t tx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
[0] = WLAN_CFG_TX_RING_MASK_0, [1] = WLAN_CFG_TX_RING_MASK_4,
[2] = WLAN_CFG_TX_RING_MASK_2, [3] = WLAN_CFG_TX_RING_MASK_5,
[4] = WLAN_CFG_TX_RING_MASK_6};
[2] = WLAN_CFG_TX_RING_MASK_2, [3] = WLAN_CFG_TX_RING_MASK_6,
[4] = WLAN_CFG_TX_RING_MASK_7};
#endif
#else
static const uint8_t tx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
@@ -213,32 +215,6 @@ static const uint8_t tx_ring_near_full_irq_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] =
0 };
#endif
#ifdef CONFIG_BERYLLIUM
#ifdef IPA_OFFLOAD
struct wlan_cfg_tcl_wbm_ring_num_map tcl_wbm_map_array[MAX_TCL_DATA_RINGS] = {
{.tcl_ring_num = 0, .wbm_ring_num = 0, .for_ipa = 0},
{1, 4, 1}, /* For IPA */
{2, 2, 1}, /* For IPA */
{3, 5, 0},
{4, 6, 0},
};
#else
struct wlan_cfg_tcl_wbm_ring_num_map tcl_wbm_map_array[MAX_TCL_DATA_RINGS] = {
{.tcl_ring_num = 0, .wbm_ring_num = 0, .for_ipa = 0},
{1, 4, 0},
{2, 2, 0},
{3, 5, 0},
{4, 6, 0},
};
#endif /* IPA_OFFLOAD */
#else
struct wlan_cfg_tcl_wbm_ring_num_map tcl_wbm_map_array[MAX_TCL_DATA_RINGS] = {
{.tcl_ring_num = 0, .wbm_ring_num = 0, .for_ipa = 0},
{1, 4, 1}, /* For IPA */
{2, 2, 1}, /* For IPA */
};
#endif
#else
/* Integrated configuration + 8 possible MSI configurations */
#define NUM_INTERRUPT_COMBINATIONS 9
@@ -826,14 +802,6 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO
0, 0, 0, 0},
},
};
struct wlan_cfg_tcl_wbm_ring_num_map tcl_wbm_map_array[MAX_TCL_DATA_RINGS] = {
{0, 0, 0},
{1, 1, 0},
{2, 2, 0},
{3, 3, 0},
{4, 4, 0},
};
#endif
/**
@@ -1486,12 +1454,6 @@ int wlan_cfg_get_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context)
return cfg->int_tx_ring_mask[context];
}
void wlan_cfg_get_tcl_wbm_ring_num_for_index(int index, int *tcl, int *wbm)
{
*tcl = tcl_wbm_map_array[index].tcl_ring_num;
*wbm = tcl_wbm_map_array[index].wbm_ring_num;
}
int wlan_cfg_get_rx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context)
{
return cfg->int_rx_ring_mask[context];