]> git.droids-corp.org - dpdk.git/commitdiff
common/sfc_efx/base: add max number of Rx scatter buffers
authorAndrew Rybchenko <arybchenko@solarflare.com>
Tue, 13 Oct 2020 13:45:23 +0000 (14:45 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 16 Oct 2020 17:48:17 +0000 (19:48 +0200)
Riverhead QDMA has limitation on maximum number of Rx scatter
buffers to be used by a packet. If the limitation is violated,
the datapath is dead. FW should ensure that it is OK, but
drivers need to know the limitation anyway to check parameters
when Rx queues are configured and MTU is set.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
drivers/common/sfc_efx/base/ef10_nic.c
drivers/common/sfc_efx/base/efx.h
drivers/common/sfc_efx/base/rhead_nic.c
drivers/common/sfc_efx/base/siena_nic.c

index 81cd436424d80d788f5d1570549520c2768ff478..df7db6a8038d543c9a957169510e2563638ca1d3 100644 (file)
@@ -1156,6 +1156,9 @@ ef10_get_datapath_caps(
        else
                encp->enc_rx_disable_scatter_supported = B_FALSE;
 
+       /* No limit on maximum number of Rx scatter elements per packet. */
+       encp->enc_rx_scatter_max = -1;
+
        /* Check if the firmware supports packed stream mode */
        if (CAP_FLAGS1(req, RX_PACKED_STREAM))
                encp->enc_rx_packed_stream_supported = B_TRUE;
index a245acfe0f9f99e7c41c148553d87fad33cf0dfd..4b7beb209d9abf3b03f7e3f2ce9453e0bc97b379 100644 (file)
@@ -1555,6 +1555,8 @@ typedef struct efx_nic_cfg_s {
        /* Datapath firmware vport reconfigure support */
        boolean_t               enc_vport_reconfigure_supported;
        boolean_t               enc_rx_disable_scatter_supported;
+       /* Maximum number of Rx scatter segments supported by HW */
+       uint32_t                enc_rx_scatter_max;
        boolean_t               enc_allow_set_mac_with_installed_filters;
        boolean_t               enc_enhanced_set_mac_supported;
        boolean_t               enc_init_evq_v2_supported;
index 66db68b384a41630e23aeb7b9a6a1e18303b5137..92bc6fdfae3864af355910a46b987671e173dc42 100644 (file)
@@ -158,6 +158,9 @@ rhead_board_cfg(
        }
        encp->enc_rx_buf_align_end = end_padding;
 
+       /* FIXME: It should be extracted from design parameters (Bug 86844) */
+       encp->enc_rx_scatter_max = 7;
+
        /*
         * Riverhead stores a single global copy of VPD, not per-PF as on
         * Huntington.
index 9c30e27f5985e9699876ddec78798585ac2ef18f..4137c1e2452e2ff36ce412497d2dfd9ec341dd7f 100644 (file)
@@ -177,6 +177,7 @@ siena_board_cfg(
        encp->enc_fw_assisted_tso_v2_enabled = B_FALSE;
        encp->enc_fw_assisted_tso_v2_n_contexts = 0;
        encp->enc_tso_v3_enabled = B_FALSE;
+       encp->enc_rx_scatter_max = -1;
        encp->enc_allow_set_mac_with_installed_filters = B_TRUE;
        encp->enc_rx_packed_stream_supported = B_FALSE;
        encp->enc_rx_var_packed_stream_supported = B_FALSE;