net/mlx5: rearrange creation of WQ and CQ object
[dpdk.git] / drivers / net / sfc / base / efx.h
index 835d057..07cd0bb 100644 (file)
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  *
- * Copyright (c) 2006-2018 Solarflare Communications Inc.
- * All rights reserved.
+ * Copyright(c) 2019-2020 Xilinx, Inc.
+ * Copyright(c) 2006-2019 Solarflare Communications Inc.
  */
 
 #ifndef        _SYS_EFX_H
@@ -33,6 +33,14 @@ extern "C" {
 #define        EFX_P2ROUNDUP(_type, _value, _align)    \
        (-(-(_type)(_value) & -(_type)(_align)))
 
+/* Align value down to the nearest power of two. */
+#define        EFX_P2ALIGN(_type, _value, _align)      \
+       ((_type)(_value) & -(_type)(_align))
+
+/* Test if value is power of 2 aligned. */
+#define        EFX_IS_P2ALIGNED(_type, _value, _align) \
+       ((((_type)(_value)) & ((_type)(_align) - 1)) == 0)
+
 /* Return codes */
 
 typedef __success(return == 0) int efx_rc_t;
@@ -536,6 +544,12 @@ efx_mac_filter_set(
        __in                            boolean_t all_mulcst,
        __in                            boolean_t brdcst);
 
+extern                                 void
+efx_mac_filter_get_all_ucast_mcast(
+       __in                            efx_nic_t *enp,
+       __out                           boolean_t *all_unicst,
+       __out                           boolean_t *all_mulcst);
+
 extern __checkReturn   efx_rc_t
 efx_mac_multicast_list_set(
        __in                            efx_nic_t *enp,
@@ -2941,17 +2955,15 @@ typedef uint8_t efx_filter_flags_t;
 
 typedef uint32_t efx_filter_match_flags_t;
 
+/* Filter priority from lowest to highest */
 typedef enum efx_filter_priority_s {
-       EFX_FILTER_PRI_HINT = 0,        /* Performance hint */
-       EFX_FILTER_PRI_AUTO,            /* Automatic filter based on device
+       EFX_FILTER_PRI_AUTO = 0,        /* Automatic filter based on device
                                         * address list or hardware
                                         * requirements. This may only be used
                                         * by the filter implementation for
                                         * each NIC type. */
        EFX_FILTER_PRI_MANUAL,          /* Manually configured filter */
-       EFX_FILTER_PRI_REQUIRED,        /* Required for correct behaviour of the
-                                        * client (e.g. SR-IOV, HyperV VMQ etc.)
-                                        */
+       EFX_FILTER_NPRI,
 } efx_filter_priority_t;
 
 /*
@@ -2966,6 +2978,11 @@ typedef struct efx_filter_spec_s {
        uint16_t                        efs_dmaq_id;
        uint32_t                        efs_rss_context;
        uint32_t                        efs_mark;
+       /*
+        * Saved lower-priority filter. If it is set, it is restored on
+        * filter delete operation.
+        */
+       struct efx_filter_spec_s        *efs_overridden_spec;
        /* Fields below here are hashed for software filter lookup */
        uint16_t                        efs_outer_vid;
        uint16_t                        efs_inner_vid;