net/sfc: fix assert in set multicast address list
[dpdk.git] / drivers / net / sfc / base / efx.h
index 0b75f0f..5108b9b 100644 (file)
@@ -336,7 +336,7 @@ efx_intr_fini(
 
 #if EFSYS_OPT_MAC_STATS
 
-/* START MKCONFIG GENERATED EfxHeaderMacBlock 7d59c0d68431a5d1 */
+/* START MKCONFIG GENERATED EfxHeaderMacBlock ea466a9bc8789994 */
 typedef enum efx_mac_stat_e {
        EFX_MAC_RX_OCTETS,
        EFX_MAC_RX_PKTS,
@@ -441,6 +441,9 @@ typedef enum efx_mac_stat_e {
        EFX_MAC_CTPIO_FALLBACK,
        EFX_MAC_CTPIO_POISON,
        EFX_MAC_CTPIO_ERASE,
+       EFX_MAC_RXDP_SCATTER_DISABLED_TRUNC,
+       EFX_MAC_RXDP_HLB_IDLE,
+       EFX_MAC_RXDP_HLB_TIMEOUT,
        EFX_MAC_NSTATS
 } efx_mac_stat_t;
 
@@ -1270,6 +1273,7 @@ typedef struct efx_nic_cfg_s {
        boolean_t               enc_init_evq_v2_supported;
        boolean_t               enc_rx_packed_stream_supported;
        boolean_t               enc_rx_var_packed_stream_supported;
+       boolean_t               enc_rx_es_super_buffer_supported;
        boolean_t               enc_fw_subvariant_no_tx_csum_supported;
        boolean_t               enc_pm_and_rxdp_counters;
        boolean_t               enc_mac_stats_40g_tx_size_bins;
@@ -1292,6 +1296,11 @@ typedef struct efx_nic_cfg_s {
        /* Firmware support for extended MAC_STATS buffer */
        uint32_t                enc_mac_stats_nstats;
        boolean_t               enc_fec_counters;
+       boolean_t               enc_hlb_counters;
+       /* Firmware support for "FLAG" and "MARK" filter actions */
+       boolean_t               enc_filter_action_flag_supported;
+       boolean_t               enc_filter_action_mark_supported;
+       uint32_t                enc_filter_action_mark_max;
 } efx_nic_cfg_t;
 
 #define        EFX_PCI_FUNCTION_IS_PF(_encp)   ((_encp)->enc_vf == 0xffff)
@@ -1863,7 +1872,7 @@ typedef   __checkReturn   boolean_t
        __in            uint32_t size,
        __in            uint16_t flags);
 
-#if EFSYS_OPT_RX_PACKED_STREAM
+#if EFSYS_OPT_RX_PACKED_STREAM || EFSYS_OPT_RX_ES_SUPER_BUFFER
 
 /*
  * Packed stream mode is documented in SF-112241-TC.
@@ -1873,6 +1882,13 @@ typedef  __checkReturn   boolean_t
  * packets are put there in a continuous stream.
  * The main advantage of such an approach is that RX queue refilling
  * happens much less frequently.
+ *
+ * Equal stride packed stream mode is documented in SF-119419-TC.
+ * The general idea is to utilize advantages of the packed stream,
+ * but avoid indirection in packets representation.
+ * The main advantage of such an approach is that RX queue refilling
+ * happens much less frequently and packets buffers are independent
+ * from upper layers point of view.
  */
 
 typedef        __checkReturn   boolean_t
@@ -1973,7 +1989,7 @@ typedef __checkReturn     boolean_t
 typedef struct efx_ev_callbacks_s {
        efx_initialized_ev_t            eec_initialized;
        efx_rx_ev_t                     eec_rx;
-#if EFSYS_OPT_RX_PACKED_STREAM
+#if EFSYS_OPT_RX_PACKED_STREAM || EFSYS_OPT_RX_ES_SUPER_BUFFER
        efx_rx_ps_ev_t                  eec_rx_ps;
 #endif
        efx_tx_ev_t                     eec_tx;
@@ -2280,6 +2296,7 @@ efx_pseudo_hdr_pkt_length_get(
 typedef enum efx_rxq_type_e {
        EFX_RXQ_TYPE_DEFAULT,
        EFX_RXQ_TYPE_PACKED_STREAM,
+       EFX_RXQ_TYPE_ES_SUPER_BUFFER,
        EFX_RXQ_NTYPES
 } efx_rxq_type_t;
 
@@ -2333,6 +2350,28 @@ efx_rx_qcreate_packed_stream(
 
 #endif
 
+#if EFSYS_OPT_RX_ES_SUPER_BUFFER
+
+/* Maximum head-of-line block timeout in nanoseconds */
+#define        EFX_RXQ_ES_SUPER_BUFFER_HOL_BLOCK_MAX   (400U * 1000 * 1000)
+
+extern __checkReturn   efx_rc_t
+efx_rx_qcreate_es_super_buffer(
+       __in            efx_nic_t *enp,
+       __in            unsigned int index,
+       __in            unsigned int label,
+       __in            uint32_t n_bufs_per_desc,
+       __in            uint32_t max_dma_len,
+       __in            uint32_t buf_stride,
+       __in            uint32_t hol_block_timeout,
+       __in            efsys_mem_t *esmp,
+       __in            size_t ndescs,
+       __in            unsigned int flags,
+       __in            efx_evq_t *eep,
+       __deref_out     efx_rxq_t **erpp);
+
+#endif
+
 typedef struct efx_buffer_s {
        efsys_dma_addr_t        eb_addr;
        size_t                  eb_size;
@@ -2588,6 +2627,10 @@ efx_tx_qdestroy(
 #define        EFX_FILTER_FLAG_RX              0x08
 /* Filter is for TX */
 #define        EFX_FILTER_FLAG_TX              0x10
+/* Set match flag on the received packet */
+#define        EFX_FILTER_FLAG_ACTION_FLAG     0x20
+/* Set match mark on the received packet */
+#define        EFX_FILTER_FLAG_ACTION_MARK     0x40
 
 typedef uint8_t efx_filter_flags_t;
 
@@ -2673,6 +2716,7 @@ typedef struct efx_filter_spec_s {
        efx_oword_t                     efs_loc_host;
        uint8_t                         efs_vni_or_vsid[EFX_VNI_OR_VSID_LEN];
        uint8_t                         efs_ifrm_loc_mac[EFX_MAC_ADDR_LEN];
+       uint32_t                        efs_mark;
 } efx_filter_spec_t;