net/sfc/base: reduce filter priorities to implemented only
[dpdk.git] / drivers / net / sfc / base / efx.h
index 53c7b42..c609c70 100644 (file)
@@ -29,6 +29,18 @@ extern "C" {
 /* The macro expands divider twice */
 #define        EFX_DIV_ROUND_UP(_n, _d)                (((_n) + (_d) - 1) / (_d))
 
+/* Round value up to the nearest power of two. */
+#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;
@@ -498,10 +510,10 @@ typedef enum efx_link_mode_e {
            + /* bug16011 */ 16)                                \
 
 #define        EFX_MAC_PDU(_sdu)                                       \
-       P2ROUNDUP((_sdu) + EFX_MAC_PDU_ADJUSTMENT, 8)
+       EFX_P2ROUNDUP(size_t, (_sdu) + EFX_MAC_PDU_ADJUSTMENT, 8)
 
 /*
- * Due to the P2ROUNDUP in EFX_MAC_PDU(), EFX_MAC_SDU_FROM_PDU() may give
+ * Due to the EFX_P2ROUNDUP in EFX_MAC_PDU(), EFX_MAC_SDU_FROM_PDU() may give
  * the SDU rounded up slightly.
  */
 #define        EFX_MAC_SDU_FROM_PDU(_pdu)      ((_pdu) - EFX_MAC_PDU_ADJUSTMENT)
@@ -587,8 +599,9 @@ efx_mac_stat_name(
 
 #define        EFX_MAC_STATS_MASK_BITS_PER_PAGE        (8 * sizeof (uint32_t))
 
-#define        EFX_MAC_STATS_MASK_NPAGES       \
-       (P2ROUNDUP(EFX_MAC_NSTATS, EFX_MAC_STATS_MASK_BITS_PER_PAGE) / \
+#define        EFX_MAC_STATS_MASK_NPAGES                               \
+       (EFX_P2ROUNDUP(uint32_t, EFX_MAC_NSTATS,                \
+                      EFX_MAC_STATS_MASK_BITS_PER_PAGE) /      \
            EFX_MAC_STATS_MASK_BITS_PER_PAGE)
 
 /*
@@ -2937,16 +2950,12 @@ typedef uint8_t efx_filter_flags_t;
 typedef uint32_t efx_filter_match_flags_t;
 
 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_priority_t;
 
 /*