common/sfc_efx/base: add match spec validate API
[dpdk.git] / drivers / common / sfc_efx / base / efx_mcdi.h
index 97ac8bf..9dd0a23 100644 (file)
@@ -384,6 +384,17 @@ efx_mcdi_phy_module_get_info(
                MC_CMD_ ## _field9, _value9,                            \
                MC_CMD_ ## _field10, _value10)
 
+/*
+ * Native setters (MCDI_IN_SET_*_NATIVE) are used when MCDI field is in
+ * network order to avoid conversion to little-endian that is done in
+ * other setters.
+ */
+#define        MCDI_IN_SET_WORD_NATIVE(_emr, _ofst, _value)                    \
+       MCDI_IN2((_emr), efx_word_t, _ofst)->ew_u16[0] = (_value)
+
+#define        MCDI_IN_SET_DWORD_NATIVE(_emr, _ofst, _value)                   \
+       MCDI_IN2((_emr), efx_dword_t, _ofst)->ed_u32[0] = (_value)
+
 #define        MCDI_OUT(_emr, _type, _ofst)                                    \
        ((_type *)((_emr).emr_out_buf + (_ofst)))
 
@@ -410,6 +421,10 @@ efx_mcdi_phy_module_get_info(
        EFX_DWORD_FIELD(*MCDI_OUT2(_emr, efx_dword_t, _ofst),           \
                        MC_CMD_ ## _field)
 
+#define        MCDI_OUT_INDEXED_DWORD_FIELD(_emr, _ofst, _idx, _field)         \
+       EFX_DWORD_FIELD(*(MCDI_OUT2(_emr, efx_dword_t, _ofst) +         \
+                       (_idx)), _field)
+
 #define        MCDI_EV_FIELD(_eqp, _field)                                     \
        EFX_QWORD_FIELD(*_eqp, MCDI_EVENT_ ## _field)