common/sfc_efx/base: handle MCDI events on Riverhead
[dpdk.git] / drivers / common / sfc_efx / base / efx_impl.h
index 87c7d5d..f6b0850 100644 (file)
 #include "medford2_impl.h"
 #endif /* EFSYS_OPT_MEDFORD2 */
 
-#if EFX_OPTS_EF10()
+#if EFSYS_OPT_RIVERHEAD || EFX_OPTS_EF10()
 #include "ef10_impl.h"
-#endif /* EFX_OPTS_EF10() */
+#endif /* EFSYS_OPT_RIVERHEAD || EFX_OPTS_EF10() */
+
+#if EFSYS_OPT_RIVERHEAD
+#include "rhead_impl.h"
+#endif /* EFSYS_OPT_RIVERHEAD */
 
 #ifdef __cplusplus
 extern "C" {
@@ -73,6 +77,7 @@ typedef enum efx_mac_type_e {
        EFX_MAC_HUNTINGTON,
        EFX_MAC_MEDFORD,
        EFX_MAC_MEDFORD2,
+       EFX_MAC_RIVERHEAD,
        EFX_MAC_NTYPES
 } efx_mac_type_t;
 
@@ -85,6 +90,8 @@ typedef struct efx_ev_ops_s {
        void            (*eevo_qdestroy)(efx_evq_t *);
        efx_rc_t        (*eevo_qprime)(efx_evq_t *, unsigned int);
        void            (*eevo_qpost)(efx_evq_t *, uint16_t);
+       void            (*eevo_qpoll)(efx_evq_t *, unsigned int *,
+                                       const efx_ev_callbacks_t *, void *);
        efx_rc_t        (*eevo_qmoderate)(efx_evq_t *, unsigned int);
 #if EFSYS_OPT_QSTATS
        void            (*eevo_qstats_update)(efx_evq_t *, efsys_stat_t *);
@@ -459,9 +466,9 @@ typedef struct efx_filter_s {
 #if EFSYS_OPT_SIENA
        siena_filter_t          *ef_siena_filter;
 #endif /* EFSYS_OPT_SIENA */
-#if EFX_OPTS_EF10()
+#if EFSYS_OPT_RIVERHEAD || EFX_OPTS_EF10()
        ef10_filter_table_t     *ef_ef10_filter_table;
-#endif /* EFX_OPTS_EF10() */
+#endif /* EFSYS_OPT_RIVERHEAD || EFX_OPTS_EF10() */
 } efx_filter_t;
 
 #if EFSYS_OPT_SIENA
@@ -833,7 +840,7 @@ struct efx_nic_s {
 #endif /* EFSYS_OPT_SIENA */
                int     enu_unused;
        } en_u;
-#if EFX_OPTS_EF10()
+#if EFSYS_OPT_RIVERHEAD || EFX_OPTS_EF10()
        union en_arch {
                struct {
                        int                     ena_vi_base;
@@ -854,7 +861,7 @@ struct efx_nic_s {
                        size_t                  ena_wc_mem_map_size;
                } ef10;
        } en_arch;
-#endif /* EFX_OPTS_EF10() */
+#endif /* EFSYS_OPT_RIVERHEAD || EFX_OPTS_EF10() */
 #if EFSYS_OPT_EVB
        const efx_evb_ops_t     *en_eeop;
        struct efx_vswitch_s    *en_vswitchp;
@@ -869,6 +876,9 @@ struct efx_nic_s {
         (_enp)->en_family == EFX_FAMILY_MEDFORD || \
         (_enp)->en_family == EFX_FAMILY_HUNTINGTON)
 
+#define        EFX_FAMILY_IS_EF100(_enp) \
+       ((_enp)->en_family == EFX_FAMILY_RIVERHEAD)
+
 
 #define        EFX_NIC_MAGIC   0x02121996
 
@@ -1003,6 +1013,10 @@ struct efx_txq_s {
                        rev = 'F';                                      \
                        break;                                          \
                                                                        \
+               case EFX_FAMILY_RIVERHEAD:                              \
+                       rev = 'G';                                      \
+                       break;                                          \
+                                                                       \
                default:                                                \
                        rev = '?';                                      \
                        break;                                          \
@@ -1394,6 +1408,28 @@ efx_mcdi_get_workarounds(
        __out_opt               uint32_t *implementedp,
        __out_opt               uint32_t *enabledp);
 
+#if EFSYS_OPT_RIVERHEAD || EFX_OPTS_EF10()
+
+LIBEFX_INTERNAL
+extern __checkReturn   efx_rc_t
+efx_mcdi_init_evq(
+       __in            efx_nic_t *enp,
+       __in            unsigned int instance,
+       __in            efsys_mem_t *esmp,
+       __in            size_t nevs,
+       __in            uint32_t irq,
+       __in            uint32_t us,
+       __in            uint32_t flags,
+       __in            boolean_t low_latency);
+
+LIBEFX_INTERNAL
+extern __checkReturn   efx_rc_t
+efx_mcdi_fini_evq(
+       __in            efx_nic_t *enp,
+       __in            uint32_t instance);
+
+#endif /* EFSYS_OPT_RIVERHEAD || EFX_OPTS_EF10() */
+
 #endif /* EFSYS_OPT_MCDI */
 
 #if EFSYS_OPT_MAC_STATS