#include "mcdi_mon.h"
#endif
-#if EFSYS_OPT_QSTATS
-#define EFX_EV_QSTAT_INCR(_eep, _stat) \
- do { \
- (_eep)->ee_stat[_stat]++; \
- _NOTE(CONSTANTCONDITION) \
- } while (B_FALSE)
-#else
-#define EFX_EV_QSTAT_INCR(_eep, _stat)
-#endif
-
#define EFX_EV_PRESENT(_qword) \
(EFX_QWORD_FIELD((_qword), EFX_DWORD_0) != 0xffffffff && \
EFX_QWORD_FIELD((_qword), EFX_DWORD_1) != 0xffffffff)
};
#endif /* EFSYS_OPT_SIENA */
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
+#if EFX_OPTS_EF10()
static const efx_ev_ops_t __efx_ev_ef10_ops = {
ef10_ev_init, /* eevo_init */
ef10_ev_fini, /* eevo_fini */
ef10_ev_qstats_update, /* eevo_qstats_update */
#endif
};
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
+#endif /* EFX_OPTS_EF10() */
__checkReturn efx_rc_t
return (rc);
}
+ __checkReturn size_t
+efx_evq_size(
+ __in const efx_nic_t *enp,
+ __in unsigned int ndescs)
+{
+ const efx_nic_cfg_t *encp = efx_nic_cfg_get(enp);
+
+ return (ndescs * encp->enc_ev_desc_size);
+}
+
+ __checkReturn unsigned int
+efx_evq_nbufs(
+ __in const efx_nic_t *enp,
+ __in unsigned int ndescs)
+{
+ return (EFX_DIV_ROUND_UP(efx_evq_size(enp, ndescs), EFX_BUF_SIZE));
+}
+
void
efx_ev_fini(
__in efx_nic_t *enp)
{
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
unsigned int ticks;
+ efx_rc_t rc;
+
+ if (encp->enc_evq_timer_quantum_ns == 0) {
+ rc = ENOTSUP;
+ goto fail1;
+ }
/* Convert microseconds to a timer tick count */
if (us == 0)
*ticksp = ticks;
return (0);
+
+fail1:
+ EFSYS_PROBE1(fail1, efx_rc_t, rc);
+ return (rc);
}
__checkReturn efx_rc_t
#if EFSYS_OPT_QSTATS
#if EFSYS_OPT_NAMES
-/* START MKCONFIG GENERATED EfxEventQueueStatNamesBlock c0f3bc5083b40532 */
+/* START MKCONFIG GENERATED EfxEventQueueStatNamesBlock ac223f7134058b4f */
static const char * const __efx_ev_qstat_name[] = {
"all",
"rx",
"driver_tx_dsc_error",
"drv_gen",
"mcdi_response",
+ "rx_parse_incomplete",
};
/* END MKCONFIG GENERATED EfxEventQueueStatNamesBlock */