net/sfc/base: add the max number of RSS exclusive contexts
authorMark Spender <mspender@solarflare.com>
Wed, 30 Aug 2017 18:17:34 +0000 (19:17 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 6 Oct 2017 00:49:47 +0000 (02:49 +0200)
The patch adds enc_rx_scale_max_exclusive_contexts member
to nic_cfg_t structure and sets the corresponding values
for Siena, Huntington and Medford

Signed-off-by: Mark Spender <mspender@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andrew Lee <alee@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
drivers/net/sfc/base/efx.h
drivers/net/sfc/base/hunt_nic.c
drivers/net/sfc/base/medford_nic.c
drivers/net/sfc/base/siena_nic.c

index 1e369bf..c4ea4e1 100644 (file)
@@ -1127,6 +1127,7 @@ typedef struct efx_nic_cfg_s {
        uint32_t                enc_rx_prefix_size;
        uint32_t                enc_rx_buf_align_start;
        uint32_t                enc_rx_buf_align_end;
+       uint32_t                enc_rx_scale_max_exclusive_contexts;
 #if EFSYS_OPT_LOOPBACK
        efx_qword_t             enc_loopback_types[EFX_LINK_NMODES];
 #endif /* EFSYS_OPT_LOOPBACK */
index addbf1c..19fb7cf 100644 (file)
@@ -301,6 +301,13 @@ hunt_board_cfg(
        /* Alignment for WPTR updates */
        encp->enc_rx_push_align = EF10_RX_WPTR_ALIGN;
 
+       /*
+        * Maximum number of exclusive RSS contexts which can be allocated. The
+        * hardware supports 64, but 6 are reserved for shared contexts. They
+        * are a global resource so not all may be available.
+        */
+       encp->enc_rx_scale_max_exclusive_contexts = 58;
+
        encp->enc_tx_dma_desc_size_max = EFX_MASK32(ESF_DZ_RX_KER_BYTE_CNT);
        /* No boundary crossing limits */
        encp->enc_tx_dma_desc_boundary = 0;
index 07afac1..d361d65 100644 (file)
@@ -298,6 +298,13 @@ medford_board_cfg(
        /* Alignment for WPTR updates */
        encp->enc_rx_push_align = EF10_RX_WPTR_ALIGN;
 
+       /*
+        * Maximum number of exclusive RSS contexts which can be allocated. The
+        * hardware supports 64, but 6 are reserved for shared contexts. They
+        * are a global resource so not all may be available.
+        */
+       encp->enc_rx_scale_max_exclusive_contexts = 58;
+
        encp->enc_tx_dma_desc_size_max = EFX_MASK32(ESF_DZ_RX_KER_BYTE_CNT);
        /* No boundary crossing limits */
        encp->enc_tx_dma_desc_boundary = 0;
index 129b854..fcc8f15 100644 (file)
@@ -135,6 +135,9 @@ siena_board_cfg(
        /* Alignment for WPTR updates */
        encp->enc_rx_push_align = 1;
 
+       /* There is one RSS context per function */
+       encp->enc_rx_scale_max_exclusive_contexts = 1;
+
        encp->enc_tx_dma_desc_size_max = EFX_MASK32(FSF_AZ_TX_KER_BYTE_COUNT);
        /* Fragments must not span 4k boundaries. */
        encp->enc_tx_dma_desc_boundary = 4096;