qcacmn: Enable msi support for ext_group ring groupings

assign msi vectors to srng rings based on the ext_group they will be
serviced in.

provide support for ext_groups in hif_pci.

Change-Id: If313fdb43b939871c0d73dea9a05f757427b5b16
CRs-Fixed: 2051911
This commit is contained in:
Houston Hoffman
2017-05-21 23:27:50 -07:00
کامیت شده توسط snandini
والد 811c917719
کامیت 648a918927
14فایلهای تغییر یافته به همراه553 افزوده شده و 186 حذف شده

مشاهده پرونده

@@ -174,6 +174,34 @@
#define WLAN_RX_HASH_ENABLE 0
#endif
#ifdef CONFIG_MCL
static const int tx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = {
0,
WLAN_CFG_TX_RING_MASK_0,
0,
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[WLAN_CFG_INT_NUM_CONTEXTS] = {
0,
0,
WLAN_CFG_RX_RING_MASK_0,
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[WLAN_CFG_INT_NUM_CONTEXTS] = {
0,
0,
0,
WLAN_CFG_RX_MON_RING_MASK_0,
WLAN_CFG_RX_MON_RING_MASK_1,
WLAN_CFG_RX_MON_RING_MASK_2,
WLAN_CFG_RX_MON_RING_MASK_3};
#else
static const int tx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_TX_RING_MASK_0,
WLAN_CFG_TX_RING_MASK_1,
@@ -192,6 +220,8 @@ static const int rx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RX_MON_RING_MASK_2,
WLAN_CFG_RX_MON_RING_MASK_3};
#endif
static const int rx_err_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RX_ERR_RING_MASK_0,
WLAN_CFG_RX_ERR_RING_MASK_1,
@@ -216,75 +246,6 @@ static const int rxdma2host_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS] = {
WLAN_CFG_RXDMA2HOST_RING_MASK_2,
WLAN_CFG_RXDMA2HOST_RING_MASK_3};
/**
* struct wlan_cfg_dp_soc_ctxt - Configuration parameters for SoC (core TxRx)
* @num_int_ctxts - Number of NAPI/Interrupt contexts to be registered for DP
* @max_clients - Maximum number of peers/stations supported by device
* @max_alloc_size - Maximum allocation size for any dynamic memory
* allocation request for this device
* @per_pdev_tx_ring - 0 - TCL ring is not mapped per radio
* 1 - Each TCL ring is mapped to one radio/pdev
* @num_tcl_data_rings - Number of TCL Data rings supported by device
* @per_pdev_rx_ring - 0 - REO ring is not mapped per radio
* 1 - Each REO ring is mapped to one radio/pdev
* @num_tx_desc_pool - Number of Tx Descriptor pools
* @num_tx_ext_desc_pool - Number of Tx MSDU extension Descriptor pools
* @num_tx_desc - Number of Tx Descriptors per pool
* @num_tx_ext_desc - Number of Tx MSDU extension Descriptors per pool
* @max_peer_id - Maximum value of peer id that FW can assign for a client
* @htt_packet_type - Default 802.11 encapsulation type for any VAP created
* @int_tx_ring_mask - Bitmap of Tx interrupts mapped to each NAPI/Intr context
* @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_rxdma2host_ring_mask - Bitmap of RXDMA2host ring interrupts mapped to
* each NAPI/Intr context
* @int_ce_ring_mask - Bitmap of CE interrupts mapped to each NAPI/Intr context
* @lro_enabled - is LRO enabled
* @rx_hash - Enable hash based steering of rx packets
*
*/
struct wlan_cfg_dp_soc_ctxt {
int num_int_ctxts;
int max_clients;
int max_alloc_size;
int per_pdev_tx_ring;
int num_tcl_data_rings;
int per_pdev_rx_ring;
int num_reo_dest_rings;
int num_tx_desc_pool;
int num_tx_ext_desc_pool;
int num_tx_desc;
int num_tx_ext_desc;
int max_peer_id;
int htt_packet_type;
int int_batch_threshold_tx;
int int_timer_threshold_tx;
int int_batch_threshold_rx;
int int_timer_threshold_rx;
int int_batch_threshold_other;
int int_timer_threshold_other;
int tx_ring_size;
int tx_comp_ring_size;
int int_tx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
int int_rx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
int int_rx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
int int_rxdma2host_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
int int_ce_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
int int_rx_err_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
int int_rx_wbm_rel_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
int int_reo_status_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
bool lro_enabled;
bool rx_hash;
int nss_cfg;
int hw_macid[MAX_PDEV_CNT];
int base_hw_macid;
#ifdef QCA_LL_TX_FLOW_CONTROL_V2
int tx_flow_stop_queue_th;
int tx_flow_start_queue_offset;
#endif
};
/**
* struct wlan_cfg_dp_pdev_ctxt - Configuration parameters for pdev (radio)
* @rx_dma_buf_ring_size - Size of RxDMA buffer ring