qcacmn: Enable monitor destination ring interrupt for waikiki
Enable monitor Tx/Rx ring interrupt for waikiki CRs-Fixed: 3010851 Change-Id: I33537f7d4dbab700af7ccdb2ca511531fd3ade76
このコミットが含まれているのは:
@@ -344,6 +344,10 @@
|
||||
#define WLAN_CFG_TX_MONITOR_DST_RING_SIZE_MIN 48
|
||||
#define WLAN_CFG_TX_MONITOR_DST_RING_SIZE_MAX 4096
|
||||
|
||||
#define WLAN_CFG_TX_MONITOR_BUF_SIZE 2048
|
||||
#define WLAN_CFG_TX_MONITOR_BUF_SIZE_MIN 48
|
||||
#define WLAN_CFG_TX_MONITOR_BUF_SIZE_MAX 8192
|
||||
|
||||
#define WLAN_CFG_RXDMA_MONITOR_STATUS_RING_SIZE 1024
|
||||
#define WLAN_CFG_RXDMA_MONITOR_STATUS_RING_SIZE_MIN 16
|
||||
#define WLAN_CFG_RXDMA_MONITOR_STATUS_RING_SIZE_MAX 8192
|
||||
|
@@ -53,6 +53,9 @@
|
||||
#define WLAN_CFG_RX_MON_RING_MASK_2 0x4
|
||||
#define WLAN_CFG_RX_MON_RING_MASK_3 0x0
|
||||
|
||||
#define WLAN_CFG_TX_MON_RING_MASK_0 BIT(0)
|
||||
#define WLAN_CFG_TX_MON_RING_MASK_1 BIT(1)
|
||||
|
||||
#define WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0 0x1
|
||||
#define WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1 0x2
|
||||
#define WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2 0x4
|
||||
@@ -90,6 +93,7 @@ struct dp_int_mask_assignment {
|
||||
uint8_t tx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
uint8_t rx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
uint8_t rx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
uint8_t tx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
uint8_t host2rxdma_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
uint8_t rxdma2host_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
uint8_t host2rxdma_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
@@ -1300,6 +1304,10 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO
|
||||
WLAN_CFG_RX_MON_RING_MASK_1,
|
||||
WLAN_CFG_RX_MON_RING_MASK_2,
|
||||
0, 0, 0, 0, 0},
|
||||
/* tx mon ring masks */
|
||||
{ WLAN_CFG_TX_MON_RING_MASK_0,
|
||||
WLAN_CFG_TX_MON_RING_MASK_1,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
/* host2rxdma ring masks */
|
||||
{ 0, 0, 0,
|
||||
WLAN_CFG_HOST2RXDMA_RING_MASK_0,
|
||||
@@ -1393,6 +1401,13 @@ struct wlan_srng_cfg wlan_srng_rxdma_monitor_status_cfg = {
|
||||
.low_threshold = WLAN_CFG_RXDMA_MONITOR_STATUS_RING_SIZE >> 3,
|
||||
};
|
||||
|
||||
/* TX_MONITOR_BUF ring configuration */
|
||||
struct wlan_srng_cfg wlan_srng_tx_monitor_buf_cfg = {
|
||||
.timer_threshold = WLAN_CFG_INT_TIMER_THRESHOLD_TX,
|
||||
.batch_count_threshold = 0,
|
||||
.low_threshold = WLAN_CFG_TX_MONITOR_BUF_SIZE_MAX >> 3,
|
||||
};
|
||||
|
||||
/* DEFAULT_CONFIG ring configuration */
|
||||
struct wlan_srng_cfg wlan_srng_default_cfg = {
|
||||
.timer_threshold = WLAN_CFG_INT_TIMER_THRESHOLD_OTHER,
|
||||
@@ -1425,6 +1440,7 @@ void wlan_set_srng_cfg(struct wlan_srng_cfg **wlan_cfg)
|
||||
#ifdef WLAN_FEATURE_CIF_CFR
|
||||
g_wlan_srng_cfg[WIFI_POS_SRC] = wlan_srng_default_cfg;
|
||||
#endif
|
||||
g_wlan_srng_cfg[TX_MONITOR_BUF] = wlan_srng_tx_monitor_buf_cfg;
|
||||
*wlan_cfg = g_wlan_srng_cfg;
|
||||
}
|
||||
|
||||
@@ -1447,6 +1463,7 @@ void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
|
||||
wlan_cfg_ctx->int_tx_ring_mask[i] = tx_ring_mask_msi[i];
|
||||
wlan_cfg_ctx->int_rx_mon_ring_mask[i] =
|
||||
rx_mon_ring_mask_msi[i];
|
||||
wlan_cfg_ctx->int_tx_mon_ring_mask[i] = 0;
|
||||
wlan_cfg_ctx->int_rx_err_ring_mask[i] =
|
||||
rx_err_ring_mask_msi[i];
|
||||
wlan_cfg_ctx->int_rx_wbm_rel_ring_mask[i] =
|
||||
@@ -1501,6 +1518,8 @@ void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
|
||||
dp_mask_assignment[interrupt_index].tx_ring_mask[i];
|
||||
wlan_cfg_ctx->int_rx_mon_ring_mask[i] =
|
||||
dp_mask_assignment[interrupt_index].rx_mon_ring_mask[i];
|
||||
wlan_cfg_ctx->int_tx_mon_ring_mask[i] =
|
||||
dp_mask_assignment[interrupt_index].tx_mon_ring_mask[i];
|
||||
wlan_cfg_ctx->int_rx_err_ring_mask[i] =
|
||||
dp_mask_assignment[interrupt_index].rx_err_ring_mask[i];
|
||||
wlan_cfg_ctx->int_rx_wbm_rel_ring_mask[i] =
|
||||
@@ -1915,6 +1934,12 @@ void wlan_cfg_set_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
|
||||
cfg->int_rx_mon_ring_mask[context] = mask;
|
||||
}
|
||||
|
||||
void wlan_cfg_set_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
|
||||
int context, int mask)
|
||||
{
|
||||
cfg->int_tx_mon_ring_mask[context] = mask;
|
||||
}
|
||||
|
||||
int wlan_cfg_get_host2rxdma_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
|
||||
int context)
|
||||
{
|
||||
@@ -2094,6 +2119,11 @@ int wlan_cfg_get_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context)
|
||||
return cfg->int_rx_mon_ring_mask[context];
|
||||
}
|
||||
|
||||
int wlan_cfg_get_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context)
|
||||
{
|
||||
return cfg->int_tx_mon_ring_mask[context];
|
||||
}
|
||||
|
||||
int wlan_cfg_get_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context)
|
||||
{
|
||||
return cfg->int_ce_ring_mask[context];
|
||||
|
@@ -137,6 +137,8 @@ struct wlan_srng_cfg {
|
||||
* @int_rx_ring_mask: Bitmap of Rx interrupts mapped to each NAPI/Intr context
|
||||
* @int_rx_mon_ring_mask: Bitmap of Rx monitor ring interrupts mapped to each
|
||||
* NAPI/Intr context
|
||||
* @int_tx_mon_ring_mask: Bitmap of Tx monitor ring interrupts mapped to each
|
||||
* NAPI/Intr context
|
||||
* @int_rx_err_ring_mask: Bitmap of Rx err ring interrupts mapped to each
|
||||
* NAPI/Intr context
|
||||
* @int_wbm_rel_ring_mask: Bitmap of wbm rel ring interrupts mapped to each
|
||||
@@ -261,6 +263,7 @@ struct wlan_cfg_dp_soc_ctxt {
|
||||
uint8_t int_tx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
uint8_t int_rx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
uint8_t int_rx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
uint8_t int_tx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
uint8_t int_host2rxdma_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
uint8_t int_rxdma2host_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
uint8_t int_ce_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
|
||||
@@ -607,6 +610,29 @@ int wlan_cfg_get_rx_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
|
||||
int wlan_cfg_get_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
|
||||
int context);
|
||||
|
||||
/**
|
||||
* wlan_cfg_set_tx_mon_ring_mask() - Set Tx monitor ring interrupt mask
|
||||
* mapped to an interrupt context
|
||||
* @wlan_cfg_ctx - Configuration Handle
|
||||
* @context - Numerical ID identifying the Interrupt/NAPI context
|
||||
* @mask: Interrupt mask
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void wlan_cfg_set_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
|
||||
int context, int mask);
|
||||
|
||||
/**
|
||||
* wlan_cfg_get_tx_mon_ring_mask() - Return Tx monitor ring interrupt mask
|
||||
* mapped to an interrupt context
|
||||
* @wlan_cfg_ctx - Configuration Handle
|
||||
* @context - Numerical ID identifying the Interrupt/NAPI context
|
||||
*
|
||||
* Return: int_tx_mon_ring_mask[context]
|
||||
*/
|
||||
int wlan_cfg_get_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
|
||||
int context);
|
||||
|
||||
/**
|
||||
* wlan_cfg_set_rxdma2host_ring_mask() - Set rxdma2host ring interrupt mask
|
||||
* for the given interrupt context
|
||||
|
新しいイシューから参照
ユーザーをブロックする