qcacmn: Create new interrupt mask for msi

Created a new interrupt mask for msi chipsets so that both ahb
and pci chipsets can work together.

Change-Id: I78d1b9641e58f07d1582152c691c5ae29e6ddb03
This commit is contained in:
Nandha Kishore Easwaran
2019-12-13 18:14:16 +05:30
committed by nshrivas
parent 1d9464d4fa
commit bd98e6205e
4 changed files with 175 additions and 49 deletions

View File

@@ -1696,7 +1696,7 @@ static void dp_soc_set_interrupt_mode(struct dp_soc *soc)
uint32_t msi_base_data, msi_vector_start; uint32_t msi_base_data, msi_vector_start;
int msi_vector_count, ret; int msi_vector_count, ret;
soc->intr_mode = DP_INTR_LEGACY; soc->intr_mode = DP_INTR_INTEGRATED;
if (!(soc->wlan_cfg_ctx->napi_enabled) || if (!(soc->wlan_cfg_ctx->napi_enabled) ||
(soc->cdp_soc.ol_ops->get_con_mode && (soc->cdp_soc.ol_ops->get_con_mode &&
@@ -1784,7 +1784,7 @@ static void dp_soc_interrupt_map_calculate_integrated(struct dp_soc *soc,
int host2rxdma_mon_ring_mask = wlan_cfg_get_host2rxdma_mon_ring_mask( int host2rxdma_mon_ring_mask = wlan_cfg_get_host2rxdma_mon_ring_mask(
soc->wlan_cfg_ctx, intr_ctx_num); soc->wlan_cfg_ctx, intr_ctx_num);
soc->intr_mode = DP_INTR_LEGACY; soc->intr_mode = DP_INTR_INTEGRATED;
for (j = 0; j < HIF_MAX_GRP_IRQ; j++) { for (j = 0; j < HIF_MAX_GRP_IRQ; j++) {
@@ -10606,6 +10606,7 @@ void *dp_soc_init(struct dp_soc *dpsoc, HTC_HANDLE htc_handle,
} }
dp_soc_set_interrupt_mode(soc); dp_soc_set_interrupt_mode(soc);
wlan_cfg_fill_interrupt_mask(soc->wlan_cfg_ctx, soc->intr_mode);
wlan_cfg_set_rx_hash(soc->wlan_cfg_ctx, wlan_cfg_set_rx_hash(soc->wlan_cfg_ctx,
cfg_get(soc->ctrl_psoc, CFG_DP_RX_HASH)); cfg_get(soc->ctrl_psoc, CFG_DP_RX_HASH));
soc->cce_disable = false; soc->cce_disable = false;

View File

@@ -200,12 +200,12 @@ enum dp_fl_ctrl_threshold {
/** /**
* enum dp_intr_mode * enum dp_intr_mode
* @DP_INTR_LEGACY: Legacy/Line interrupts, for WIN * @DP_INTR_INTEGRATED: Line interrupts
* @DP_INTR_MSI: MSI interrupts, for MCL * @DP_INTR_MSI: MSI interrupts
* @DP_INTR_POLL: Polling * @DP_INTR_POLL: Polling
*/ */
enum dp_intr_mode { enum dp_intr_mode {
DP_INTR_LEGACY = 0, DP_INTR_INTEGRATED = 0,
DP_INTR_MSI, DP_INTR_MSI,
DP_INTR_POLL, DP_INTR_POLL,
}; };

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2016-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -28,6 +28,7 @@
#include "wlan_cfg.h" #include "wlan_cfg.h"
#include "cfg_ucfg_api.h" #include "cfg_ucfg_api.h"
#include "hal_api.h" #include "hal_api.h"
#include "dp_types.h"
/* /*
* FIX THIS - * FIX THIS -
@@ -91,48 +92,129 @@
#define WLAN_CFG_HOST2RXDMA_RING_MASK_3 0x0 #define WLAN_CFG_HOST2RXDMA_RING_MASK_3 0x0
#if defined(WLAN_MAX_PDEVS) && (WLAN_MAX_PDEVS == 1) #if defined(WLAN_MAX_PDEVS) && (WLAN_MAX_PDEVS == 1)
static const int tx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int tx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_TX_RING_MASK_0, 0, 0, 0, 0, 0, 0}; WLAN_CFG_TX_RING_MASK_0, 0, 0, 0, 0, 0, 0};
#ifndef IPA_OFFLOAD #ifndef IPA_OFFLOAD
static const int rx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, WLAN_CFG_RX_RING_MASK_0, WLAN_CFG_RX_RING_MASK_1, WLAN_CFG_RX_RING_MASK_2, WLAN_CFG_RX_RING_MASK_3, 0, 0}; 0, WLAN_CFG_RX_RING_MASK_0, WLAN_CFG_RX_RING_MASK_1, WLAN_CFG_RX_RING_MASK_2, WLAN_CFG_RX_RING_MASK_3, 0, 0};
#else #else
static const int rx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, WLAN_CFG_RX_RING_MASK_0, WLAN_CFG_RX_RING_MASK_1, WLAN_CFG_RX_RING_MASK_2, 0, 0, 0}; 0, WLAN_CFG_RX_RING_MASK_0, WLAN_CFG_RX_RING_MASK_1, WLAN_CFG_RX_RING_MASK_2, 0, 0, 0};
#endif #endif
static const int rx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rx_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, WLAN_CFG_RX_MON_RING_MASK_0, WLAN_CFG_RX_MON_RING_MASK_1, 0, 0, 0, 0}; 0, WLAN_CFG_RX_MON_RING_MASK_0, WLAN_CFG_RX_MON_RING_MASK_1, 0, 0, 0, 0};
static const int host2rxdma_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int host2rxdma_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0}; 0, 0, 0, 0, 0, 0, 0};
static const int rxdma2host_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rxdma2host_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, WLAN_CFG_RXDMA2HOST_RING_MASK_0, WLAN_CFG_RXDMA2HOST_RING_MASK_1}; 0, 0, 0, 0, 0, WLAN_CFG_RXDMA2HOST_RING_MASK_0, WLAN_CFG_RXDMA2HOST_RING_MASK_1};
static const int host2rxdma_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int host2rxdma_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0}; 0, 0, 0, 0, 0, 0, 0};
static const int rxdma2host_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rxdma2host_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0}; 0, 0, 0, 0, 0, 0, 0};
static const int rx_err_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rx_err_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, WLAN_CFG_RX_ERR_RING_MASK_0}; 0, 0, 0, 0, 0, 0, WLAN_CFG_RX_ERR_RING_MASK_0};
static const int rx_wbm_rel_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rx_wbm_rel_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, WLAN_CFG_RX_WBM_REL_RING_MASK_0}; 0, 0, 0, 0, 0, 0, WLAN_CFG_RX_WBM_REL_RING_MASK_0};
static const int reo_status_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int reo_status_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, WLAN_CFG_REO_STATUS_RING_MASK_0}; 0, 0, 0, 0, 0, 0, WLAN_CFG_REO_STATUS_RING_MASK_0};
static const int tx_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0};
static const int rx_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0};
static const int rx_mon_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0};
static const int host2rxdma_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0};
static const int rxdma2host_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0};
static const int host2rxdma_mon_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0};
static const int rxdma2host_mon_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0};
static const int rx_err_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0};
static const int rx_wbm_rel_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0};
static const int reo_status_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0, 0, 0, 0};
#else #else
static const int tx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = {
static const int tx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_TX_RING_MASK_0, WLAN_CFG_TX_RING_MASK_0,
WLAN_CFG_TX_RING_MASK_1, WLAN_CFG_TX_RING_MASK_1,
WLAN_CFG_TX_RING_MASK_2, WLAN_CFG_TX_RING_MASK_2,
WLAN_CFG_TX_RING_MASK_3}; WLAN_CFG_TX_RING_MASK_3};
static const int rx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RX_RING_MASK_0,
WLAN_CFG_RX_RING_MASK_1,
WLAN_CFG_RX_RING_MASK_2,
WLAN_CFG_RX_RING_MASK_3};
static const int rx_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0};
static const int host2rxdma_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0};
static const int rxdma2host_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0, 0, 0};
static const int host2rxdma_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2};
static const int rxdma2host_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2};
static const int rx_err_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RX_ERR_RING_MASK_0,
WLAN_CFG_RX_ERR_RING_MASK_1,
WLAN_CFG_RX_ERR_RING_MASK_2,
WLAN_CFG_RX_ERR_RING_MASK_3};
static const int rx_wbm_rel_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RX_WBM_REL_RING_MASK_0,
WLAN_CFG_RX_WBM_REL_RING_MASK_1,
WLAN_CFG_RX_WBM_REL_RING_MASK_2,
WLAN_CFG_RX_WBM_REL_RING_MASK_3};
static const int reo_status_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_REO_STATUS_RING_MASK_0,
WLAN_CFG_REO_STATUS_RING_MASK_1,
WLAN_CFG_REO_STATUS_RING_MASK_2,
WLAN_CFG_REO_STATUS_RING_MASK_3};
static const int tx_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_TX_RING_MASK_0,
WLAN_CFG_TX_RING_MASK_1,
WLAN_CFG_TX_RING_MASK_2,
WLAN_CFG_TX_RING_MASK_3};
static const int rx_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0,
0, 0,
0, 0,
@@ -145,7 +227,7 @@ static const int rx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RX_RING_MASK_2, WLAN_CFG_RX_RING_MASK_2,
WLAN_CFG_RX_RING_MASK_3}; WLAN_CFG_RX_RING_MASK_3};
static const int rx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rx_mon_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0,
0, 0,
0, 0,
@@ -154,19 +236,19 @@ static const int rx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RX_MON_RING_MASK_1, WLAN_CFG_RX_MON_RING_MASK_1,
WLAN_CFG_RX_MON_RING_MASK_2}; WLAN_CFG_RX_MON_RING_MASK_2};
static const int host2rxdma_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int host2rxdma_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_HOST2RXDMA_RING_MASK_0, WLAN_CFG_HOST2RXDMA_RING_MASK_0,
WLAN_CFG_HOST2RXDMA_RING_MASK_1, WLAN_CFG_HOST2RXDMA_RING_MASK_1,
WLAN_CFG_HOST2RXDMA_RING_MASK_2, WLAN_CFG_HOST2RXDMA_RING_MASK_2,
WLAN_CFG_HOST2RXDMA_RING_MASK_3}; WLAN_CFG_HOST2RXDMA_RING_MASK_3};
static const int rxdma2host_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rxdma2host_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RXDMA2HOST_RING_MASK_0, WLAN_CFG_RXDMA2HOST_RING_MASK_0,
WLAN_CFG_RXDMA2HOST_RING_MASK_1, WLAN_CFG_RXDMA2HOST_RING_MASK_1,
WLAN_CFG_RXDMA2HOST_RING_MASK_2, WLAN_CFG_RXDMA2HOST_RING_MASK_2,
WLAN_CFG_RXDMA2HOST_RING_MASK_3}; WLAN_CFG_RXDMA2HOST_RING_MASK_3};
static const int host2rxdma_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int host2rxdma_mon_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0,
0, 0,
0, 0,
@@ -175,7 +257,7 @@ static const int host2rxdma_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1, WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2}; WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2};
static const int rxdma2host_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rxdma2host_mon_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
0, 0,
0, 0,
0, 0,
@@ -184,19 +266,19 @@ static const int rxdma2host_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1, WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2}; WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2};
static const int rx_err_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rx_err_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RX_ERR_RING_MASK_0, WLAN_CFG_RX_ERR_RING_MASK_0,
WLAN_CFG_RX_ERR_RING_MASK_1, WLAN_CFG_RX_ERR_RING_MASK_1,
WLAN_CFG_RX_ERR_RING_MASK_2, WLAN_CFG_RX_ERR_RING_MASK_2,
WLAN_CFG_RX_ERR_RING_MASK_3}; WLAN_CFG_RX_ERR_RING_MASK_3};
static const int rx_wbm_rel_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int rx_wbm_rel_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RX_WBM_REL_RING_MASK_0, WLAN_CFG_RX_WBM_REL_RING_MASK_0,
WLAN_CFG_RX_WBM_REL_RING_MASK_1, WLAN_CFG_RX_WBM_REL_RING_MASK_1,
WLAN_CFG_RX_WBM_REL_RING_MASK_2, WLAN_CFG_RX_WBM_REL_RING_MASK_2,
WLAN_CFG_RX_WBM_REL_RING_MASK_3}; WLAN_CFG_RX_WBM_REL_RING_MASK_3};
static const int reo_status_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = { static const int reo_status_ring_mask_integrated[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_REO_STATUS_RING_MASK_0, WLAN_CFG_REO_STATUS_RING_MASK_0,
WLAN_CFG_REO_STATUS_RING_MASK_1, WLAN_CFG_REO_STATUS_RING_MASK_1,
WLAN_CFG_REO_STATUS_RING_MASK_2, WLAN_CFG_REO_STATUS_RING_MASK_2,
@@ -287,6 +369,59 @@ static const uint8_t rx_fst_toeplitz_key[WLAN_CFG_RX_FST_TOEPLITZ_KEYLEN] = {
0x6a, 0x42, 0xb7, 0x3b, 0xbe, 0xac, 0x01, 0xfa 0x6a, 0x42, 0xb7, 0x3b, 0xbe, 0xac, 0x01, 0xfa
}; };
void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
int interrupt_mode) {
int i = 0;
if (interrupt_mode == DP_INTR_INTEGRATED) {
for (i = 0; i < WLAN_CFG_INT_NUM_CONTEXTS; i++) {
wlan_cfg_ctx->int_tx_ring_mask[i] =
tx_ring_mask_integrated[i];
wlan_cfg_ctx->int_rx_ring_mask[i] =
rx_ring_mask_integrated[i];
wlan_cfg_ctx->int_rx_mon_ring_mask[i] =
rx_mon_ring_mask_integrated[i];
wlan_cfg_ctx->int_rx_err_ring_mask[i] =
rx_err_ring_mask_integrated[i];
wlan_cfg_ctx->int_rx_wbm_rel_ring_mask[i] =
rx_wbm_rel_ring_mask_integrated[i];
wlan_cfg_ctx->int_reo_status_ring_mask[i] =
reo_status_ring_mask_integrated[i];
wlan_cfg_ctx->int_rxdma2host_ring_mask[i] =
rxdma2host_ring_mask_integrated[i];
wlan_cfg_ctx->int_host2rxdma_ring_mask[i] =
host2rxdma_ring_mask_integrated[i];
wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[i] =
host2rxdma_mon_ring_mask_integrated[i];
wlan_cfg_ctx->int_rxdma2host_mon_ring_mask[i] =
rxdma2host_mon_ring_mask_integrated[i];
}
} else if (interrupt_mode == DP_INTR_MSI){
for (i = 0; i < WLAN_CFG_INT_NUM_CONTEXTS; i++) {
wlan_cfg_ctx->int_tx_ring_mask[i] = tx_ring_mask_msi[i];
wlan_cfg_ctx->int_rx_ring_mask[i] = rx_ring_mask_msi[i];
wlan_cfg_ctx->int_rx_mon_ring_mask[i] =
rx_mon_ring_mask_msi[i];
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] =
rx_wbm_rel_ring_mask_msi[i];
wlan_cfg_ctx->int_reo_status_ring_mask[i] =
reo_status_ring_mask_msi[i];
wlan_cfg_ctx->int_rxdma2host_ring_mask[i] =
rxdma2host_ring_mask_msi[i];
wlan_cfg_ctx->int_host2rxdma_ring_mask[i] =
host2rxdma_ring_mask_msi[i];
wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[i] =
host2rxdma_mon_ring_mask_msi[i];
wlan_cfg_ctx->int_rxdma2host_mon_ring_mask[i] =
rxdma2host_mon_ring_mask_msi[i];
}
} else {
qdf_err("Interrupt mode %d", interrupt_mode);
}
}
/** /**
* wlan_cfg_soc_attach() - Allocate and prepare SoC configuration * wlan_cfg_soc_attach() - Allocate and prepare SoC configuration
* @psoc - Object manager psoc * @psoc - Object manager psoc
@@ -295,8 +430,6 @@ static const uint8_t rx_fst_toeplitz_key[WLAN_CFG_RX_FST_TOEPLITZ_KEYLEN] = {
struct wlan_cfg_dp_soc_ctxt * struct wlan_cfg_dp_soc_ctxt *
wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc) wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
{ {
int i = 0;
struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx = struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx =
qdf_mem_malloc(sizeof(struct wlan_cfg_dp_soc_ctxt)); qdf_mem_malloc(sizeof(struct wlan_cfg_dp_soc_ctxt));
@@ -341,25 +474,6 @@ wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
wlan_cfg_ctx->int_timer_threshold_other = wlan_cfg_ctx->int_timer_threshold_other =
cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_OTHER); cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_OTHER);
for (i = 0; i < WLAN_CFG_INT_NUM_CONTEXTS; i++) {
wlan_cfg_ctx->int_tx_ring_mask[i] = tx_ring_mask[i];
wlan_cfg_ctx->int_rx_ring_mask[i] = rx_ring_mask[i];
wlan_cfg_ctx->int_rx_mon_ring_mask[i] = rx_mon_ring_mask[i];
wlan_cfg_ctx->int_rx_err_ring_mask[i] = rx_err_ring_mask[i];
wlan_cfg_ctx->int_rx_wbm_rel_ring_mask[i] =
rx_wbm_rel_ring_mask[i];
wlan_cfg_ctx->int_reo_status_ring_mask[i] =
reo_status_ring_mask[i];
wlan_cfg_ctx->int_rxdma2host_ring_mask[i] =
rxdma2host_ring_mask[i];
wlan_cfg_ctx->int_host2rxdma_ring_mask[i] =
host2rxdma_ring_mask[i];
wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[i] =
host2rxdma_mon_ring_mask[i];
wlan_cfg_ctx->int_rxdma2host_mon_ring_mask[i] =
rxdma2host_mon_ring_mask[i];
}
/* This is default mapping and can be overridden by HW config /* This is default mapping and can be overridden by HW config
* received from FW */ * received from FW */
wlan_cfg_set_hw_macid(wlan_cfg_ctx, 0, 1); wlan_cfg_set_hw_macid(wlan_cfg_ctx, 0, 1);

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2013-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -1230,4 +1230,15 @@ wlan_cfg_set_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg,
*/ */
bool bool
wlan_cfg_is_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); wlan_cfg_is_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
/**
* wlan_cfg_fill_interrupt_mask() - set interrupt mask
*
* @wlan_cfg_dp_soc_ctxt: soc configuration context
* @interrupt_mode: interrupt_mode: MSI/LEGACY
*
* Return: void
*/
void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
int interrupt_mode);
#endif #endif