common/sfc_efx/base: update EF100 registers definitions
[dpdk.git] / drivers / common / sfc_efx / base / rhead_rx.c
index d3d7339..692c3e1 100644 (file)
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  *
- * Copyright(c) 2019-2020 Xilinx, Inc.
+ * Copyright(c) 2019-2021 Xilinx, Inc.
  * Copyright(c) 2018-2019 Solarflare Communications Inc.
  */
 
@@ -37,7 +37,7 @@ static const efx_rx_prefix_layout_t rhead_default_rx_prefix_layout = {
                RHEAD_RX_PREFIX_FIELD(PARTIAL_TSTAMP, B_FALSE),
                RHEAD_RX_PREFIX_FIELD(RSS_HASH, B_FALSE),
                RHEAD_RX_PREFIX_FIELD(USER_MARK, B_FALSE),
-               RHEAD_RX_PREFIX_FIELD(INGRESS_VPORT, B_FALSE),
+               RHEAD_RX_PREFIX_FIELD(INGRESS_MPORT, B_FALSE),
                RHEAD_RX_PREFIX_FIELD(CSUM_FRAME, B_TRUE),
                RHEAD_RX_PREFIX_FIELD(VLAN_STRIP_TCI, B_TRUE),
 
@@ -624,13 +624,20 @@ rhead_rx_qcreate(
        else
                params.disable_scatter = encp->enc_rx_disable_scatter_supported;
 
+       if (flags & EFX_RXQ_FLAG_RSS_HASH) {
+               fields_mask |= 1U << EFX_RX_PREFIX_FIELD_RSS_HASH;
+               fields_mask |= 1U << EFX_RX_PREFIX_FIELD_RSS_HASH_VALID;
+       }
+
+       if (flags & EFX_RXQ_FLAG_INGRESS_MPORT)
+               fields_mask |= 1U << EFX_RX_PREFIX_FIELD_INGRESS_MPORT;
+
+       if (flags & EFX_RXQ_FLAG_USER_MARK)
+               fields_mask |= 1U << EFX_RX_PREFIX_FIELD_USER_MARK;
+
        /*
         * LENGTH is required in EF100 host interface, as receive events
         * do not include the packet length.
-        * NOTE: Required fields are hard-wired now. Future designs will
-        * want to allow the client (driver) code to have control over
-        * which fields are required or may be allow to request so-called
-        * default Rx prefix (which ID is equal to 0).
         */
        fields_mask |= 1U << EFX_RX_PREFIX_FIELD_LENGTH;
        if ((rc = rhead_rx_choose_prefix_id(enp, fields_mask, &erpl)) != 0)