EFX_FAMILY_NTYPES
} efx_family_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_family(
__in uint16_t venid,
};
/* Calculate the IEEE 802.3 CRC32 of a MAC addr */
+LIBEFX_API
extern __checkReturn uint32_t
efx_crc32_calculate(
__in uint32_t crc_init,
typedef struct efx_nic_s efx_nic_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_create(
__in efx_family_t family,
EFX_FW_VARIANT_DONT_CARE = 0xffffffff
} efx_fw_variant_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_probe(
__in efx_nic_t *enp,
__in efx_fw_variant_t efv);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_init(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_reset(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn boolean_t
efx_nic_hw_unavailable(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_nic_set_hw_unavailable(
__in efx_nic_t *enp);
#if EFSYS_OPT_DIAG
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_register_test(
__in efx_nic_t *enp);
#endif /* EFSYS_OPT_DIAG */
+LIBEFX_API
extern void
efx_nic_fini(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_nic_unprobe(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_nic_destroy(
__in efx_nic_t *enp);
EFX_PCIE_LINK_PERFORMANCE_OPTIMAL
} efx_pcie_link_performance_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_calculate_pcie_link_bandwidth(
__in uint32_t pcie_link_width,
__in uint32_t pcie_link_gen,
__out uint32_t *bandwidth_mbpsp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_check_pcie_link_speed(
__in efx_nic_t *enp,
#endif /* EFSYS_OPT_MCDI_PROXY_AUTH_SERVER */
} efx_mcdi_transport_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mcdi_init(
__in efx_nic_t *enp,
__in const efx_mcdi_transport_t *mtp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mcdi_reboot(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_mcdi_new_epoch(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_mcdi_get_timeout(
__in efx_nic_t *enp,
__in efx_mcdi_req_t *emrp,
__out uint32_t *usec_timeoutp);
+LIBEFX_API
extern void
efx_mcdi_request_start(
__in efx_nic_t *enp,
__in efx_mcdi_req_t *emrp,
__in boolean_t ev_cpl);
+LIBEFX_API
extern __checkReturn boolean_t
efx_mcdi_request_poll(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn boolean_t
efx_mcdi_request_abort(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_mcdi_fini(
__in efx_nic_t *enp);
#define EFX_INTR_SIZE (sizeof (efx_oword_t))
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_intr_init(
__in efx_nic_t *enp,
__in efx_intr_type_t type,
__in_opt efsys_mem_t *esmp);
+LIBEFX_API
extern void
efx_intr_enable(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_intr_disable(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_intr_disable_unlocked(
__in efx_nic_t *enp);
#define EFX_INTR_NEVQS 32
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_intr_trigger(
__in efx_nic_t *enp,
__in unsigned int level);
+LIBEFX_API
extern void
efx_intr_status_line(
__in efx_nic_t *enp,
__out boolean_t *fatalp,
__out uint32_t *maskp);
+LIBEFX_API
extern void
efx_intr_status_message(
__in efx_nic_t *enp,
__in unsigned int message,
__out boolean_t *fatalp);
+LIBEFX_API
extern void
efx_intr_fatal(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_intr_fini(
__in efx_nic_t *enp);
#define EFX_MAC_PDU_MIN 60
#define EFX_MAC_PDU_MAX EFX_MAC_PDU(EFX_MAC_SDU_MAX)
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_pdu_get(
__in efx_nic_t *enp,
__out size_t *pdu);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_pdu_set(
__in efx_nic_t *enp,
__in size_t pdu);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_addr_set(
__in efx_nic_t *enp,
__in uint8_t *addr);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_filter_set(
__in efx_nic_t *enp,
__in boolean_t all_mulcst,
__in boolean_t brdcst);
+LIBEFX_API
extern void
efx_mac_filter_get_all_ucast_mcast(
__in efx_nic_t *enp,
__out boolean_t *all_unicst,
__out boolean_t *all_mulcst);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_multicast_list_set(
__in efx_nic_t *enp,
__in_ecount(6*count) uint8_t const *addrs,
__in int count);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_filter_default_rxq_set(
__in efx_nic_t *enp,
__in efx_rxq_t *erp,
__in boolean_t using_rss);
+LIBEFX_API
extern void
efx_mac_filter_default_rxq_clear(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_drain(
__in efx_nic_t *enp,
__in boolean_t enabled);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_up(
__in efx_nic_t *enp,
#define EFX_FCNTL_RESPOND 0x00000001
#define EFX_FCNTL_GENERATE 0x00000002
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_fcntl_set(
__in efx_nic_t *enp,
__in unsigned int fcntl,
__in boolean_t autoneg);
+LIBEFX_API
extern void
efx_mac_fcntl_get(
__in efx_nic_t *enp,
#if EFSYS_OPT_NAMES
+LIBEFX_API
extern __checkReturn const char *
efx_mac_stat_name(
__in efx_nic_t *enp,
* returned. EFX_MAC_STATS_MASK_NPAGES multiplied by size of the page
* (which is sizeof (uint32_t)) is sufficient.
*/
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_stats_get_mask(
__in efx_nic_t *enp,
(1ULL << ((_stat) & (EFX_MAC_STATS_MASK_BITS_PER_PAGE - 1))))
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_stats_clear(
__in efx_nic_t *enp);
* Thus, drivers should zero this buffer before use, so that not-understood
* statistics read back as zero.
*/
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_stats_upload(
__in efx_nic_t *enp,
__in efsys_mem_t *esmp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_stats_periodic(
__in efx_nic_t *enp,
__in uint16_t period_ms,
__in boolean_t events);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mac_stats_update(
__in efx_nic_t *enp,
#if EFSYS_OPT_NAMES
+LIBEFX_API
extern const char *
efx_mon_name(
__in efx_nic_t *enp);
#endif /* EFSYS_OPT_NAMES */
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mon_init(
__in efx_nic_t *enp);
#if EFSYS_OPT_NAMES
+LIBEFX_API
extern const char *
efx_mon_stat_name(
__in efx_nic_t *enp,
__in efx_mon_stat_t id);
+LIBEFX_API
extern const char *
efx_mon_stat_description(
__in efx_nic_t *enp,
#endif /* EFSYS_OPT_NAMES */
+LIBEFX_API
extern __checkReturn boolean_t
efx_mon_mcdi_to_efx_stat(
__in int mcdi_index,
__out efx_mon_stat_t *statp);
+LIBEFX_API
extern __checkReturn boolean_t
efx_mon_get_stat_unit(
__in efx_mon_stat_t stat,
__out efx_mon_stat_unit_t *unitp);
+LIBEFX_API
extern __checkReturn boolean_t
efx_mon_get_stat_portmap(
__in efx_mon_stat_t stat,
__out efx_mon_stat_portmask_t *maskp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mon_stats_update(
__in efx_nic_t *enp,
__in efsys_mem_t *esmp,
__inout_ecount(EFX_MON_NSTATS) efx_mon_stat_value_t *values);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_mon_limits_update(
__in efx_nic_t *enp,
#endif /* EFSYS_OPT_MON_STATS */
+LIBEFX_API
extern void
efx_mon_fini(
__in efx_nic_t *enp);
/* PHY */
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_phy_verify(
__in efx_nic_t *enp);
EFX_PHY_LED_NMODES
} efx_phy_led_mode_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_phy_led_set(
__in efx_nic_t *enp,
#endif /* EFSYS_OPT_PHY_LED_CONTROL */
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_port_init(
__in efx_nic_t *enp);
EFX_LOOPBACK_NKINDS
} efx_loopback_kind_t;
+LIBEFX_API
extern void
efx_loopback_mask(
__in efx_loopback_kind_t loopback_kind,
__out efx_qword_t *maskp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_port_loopback_set(
__in efx_nic_t *enp,
#if EFSYS_OPT_NAMES
+LIBEFX_API
extern __checkReturn const char *
efx_loopback_type_name(
__in efx_nic_t *enp,
#endif /* EFSYS_OPT_LOOPBACK */
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_port_poll(
__in efx_nic_t *enp,
__out_opt efx_link_mode_t *link_modep);
+LIBEFX_API
extern void
efx_port_fini(
__in efx_nic_t *enp);
#define EFX_PHY_CAP_DEFAULT 0x00000001
#define EFX_PHY_CAP_PERM 0x00000002
+LIBEFX_API
extern void
efx_phy_adv_cap_get(
__in efx_nic_t *enp,
__in uint32_t flag,
__out uint32_t *maskp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_phy_adv_cap_set(
__in efx_nic_t *enp,
__in uint32_t mask);
+LIBEFX_API
extern void
efx_phy_lp_cap_get(
__in efx_nic_t *enp,
__out uint32_t *maskp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_phy_oui_get(
__in efx_nic_t *enp,
* the module, then this will be the media type of the module.
* Otherwise it will be the media type of the port.
*/
+LIBEFX_API
extern void
efx_phy_media_type_get(
__in efx_nic_t *enp,
#define EFX_PHY_MEDIA_INFO_MAX_OFFSET 0x100
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_phy_module_get_info(
__in efx_nic_t *enp,
#if EFSYS_OPT_NAMES
+LIBEFX_API
extern const char *
efx_phy_stat_name(
__in efx_nic_t *enp,
#define EFX_PHY_STATS_SIZE 0x100
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_phy_stats_update(
__in efx_nic_t *enp,
EFX_BIST_NVALUES,
} efx_bist_value_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_bist_enable_offline(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_bist_start(
__in efx_nic_t *enp,
__in efx_bist_type_t type);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_bist_poll(
__in efx_nic_t *enp,
__out_ecount_opt(count) unsigned long *valuesp,
__in size_t count);
+LIBEFX_API
extern void
efx_bist_stop(
__in efx_nic_t *enp,
#define EFX_PCI_VF_PARENT(_encp) ((_encp)->enc_pf)
+LIBEFX_API
extern const efx_nic_cfg_t *
efx_nic_cfg_get(
__in const efx_nic_t *enp);
uint16_t enfi_tx_dpcpu_fw_id;
} efx_nic_fw_info_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_get_fw_version(
__in efx_nic_t *enp,
uint32_t edl_max_pio_alloc_count;
} efx_drv_limits_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_set_drv_limits(
__inout efx_nic_t *enp,
* should be advertised. It is valid to set the version string
* only before efx_nic_probe() is called.
*/
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_set_drv_version(
__inout efx_nic_t *enp,
EFX_REGION_PIO_WRITE_VI, /* Memory BAR WC mapping */
} efx_nic_region_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_get_bar_region(
__in efx_nic_t *enp,
__out uint32_t *offsetp,
__out size_t *sizep);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_get_vi_pool(
__in efx_nic_t *enp,
#define EFX_VPD_KEYWORD(x, y) ((x) | ((y) << 8))
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_vpd_init(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_vpd_size(
__in efx_nic_t *enp,
__out size_t *sizep);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_vpd_read(
__in efx_nic_t *enp,
__out_bcount(size) caddr_t data,
__in size_t size);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_vpd_verify(
__in efx_nic_t *enp,
__in_bcount(size) caddr_t data,
__in size_t size);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_vpd_reinit(
__in efx_nic_t *enp,
__in_bcount(size) caddr_t data,
__in size_t size);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_vpd_get(
__in efx_nic_t *enp,
__in size_t size,
__inout efx_vpd_value_t *evvp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_vpd_set(
__in efx_nic_t *enp,
__in size_t size,
__in efx_vpd_value_t *evvp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_vpd_next(
__in efx_nic_t *enp,
__out efx_vpd_value_t *evvp,
__inout unsigned int *contp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_vpd_write(
__in efx_nic_t *enp,
__in_bcount(size) caddr_t data,
__in size_t size);
+LIBEFX_API
extern void
efx_vpd_fini(
__in efx_nic_t *enp);
#define EFX_NVRAM_FLAG_READ_ONLY (1 << 0)
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_init(
__in efx_nic_t *enp);
#if EFSYS_OPT_DIAG
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_test(
__in efx_nic_t *enp);
#endif /* EFSYS_OPT_DIAG */
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_size(
__in efx_nic_t *enp,
__in efx_nvram_type_t type,
__out size_t *sizep);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_info(
__in efx_nic_t *enp,
__in efx_nvram_type_t type,
__out efx_nvram_info_t *enip);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_rw_start(
__in efx_nic_t *enp,
__in efx_nvram_type_t type,
__out_opt size_t *pref_chunkp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_rw_finish(
__in efx_nic_t *enp,
__in efx_nvram_type_t type,
__out_opt uint32_t *verify_resultp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_get_version(
__in efx_nic_t *enp,
__out uint32_t *subtypep,
__out_ecount(4) uint16_t version[4]);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_read_chunk(
__in efx_nic_t *enp,
__out_bcount(size) caddr_t data,
__in size_t size);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_read_backup(
__in efx_nic_t *enp,
__out_bcount(size) caddr_t data,
__in size_t size);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_set_version(
__in efx_nic_t *enp,
__in efx_nvram_type_t type,
__in_ecount(4) uint16_t version[4]);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_validate(
__in efx_nic_t *enp,
__in_bcount(partn_size) caddr_t partn_data,
__in size_t partn_size);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_erase(
__in efx_nic_t *enp,
__in efx_nvram_type_t type);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nvram_write_chunk(
__in efx_nic_t *enp,
__in_bcount(size) caddr_t data,
__in size_t size);
+LIBEFX_API
extern void
efx_nvram_fini(
__in efx_nic_t *enp);
#if EFSYS_OPT_BOOTCFG
/* Report size and offset of bootcfg sector in NVRAM partition. */
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_bootcfg_sector_info(
__in efx_nic_t *enp,
* Copy bootcfg sector data to a target buffer which may differ in size.
* Optionally corrects format errors in source buffer.
*/
+LIBEFX_API
extern efx_rc_t
efx_bootcfg_copy_sector(
__in efx_nic_t *enp,
__in size_t data_size,
__in boolean_t handle_format_errors);
+LIBEFX_API
extern efx_rc_t
efx_bootcfg_read(
__in efx_nic_t *enp,
__out_bcount(size) uint8_t *data,
__in size_t size);
+LIBEFX_API
extern efx_rc_t
efx_bootcfg_write(
__in efx_nic_t *enp,
#define EFX_DHCP_ENCAP_OPT(encapsulator, encapsulated) \
(uint16_t)(((encapsulator) << 8) | (encapsulated))
+LIBEFX_API
extern __checkReturn uint8_t
efx_dhcp_csum(
__in_bcount(size) uint8_t const *data,
__in size_t size);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_dhcp_verify(
__in_bcount(size) uint8_t const *data,
__in size_t size,
__out_opt size_t *usedp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_dhcp_find_tag(
__in_bcount(buffer_length) uint8_t *bufferp,
__deref_out uint8_t **valuepp,
__out size_t *value_lengthp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_dhcp_find_end(
__in_bcount(buffer_length) uint8_t *bufferp,
__deref_out uint8_t **endpp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_dhcp_delete_tag(
__inout_bcount(buffer_length) uint8_t *bufferp,
__in size_t buffer_length,
__in uint16_t opt);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_dhcp_add_tag(
__inout_bcount(buffer_length) uint8_t *bufferp,
__in_bcount_opt(value_length) uint8_t *valuep,
__in size_t value_length);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_dhcp_update_tag(
__inout_bcount(buffer_length) uint8_t *bufferp,
efx_image_header_t * eii_headerp;
} efx_image_info_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_check_reflash_image(
__in void *bufferp,
__in uint32_t buffer_size,
__out efx_image_info_t *infop);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_build_signed_image_write_buffer(
__out_bcount(buffer_size)
__in boolean_t negate,
__out efx_qword_t *eqp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_sram_test(
__in efx_nic_t *enp,
#endif /* EFSYS_OPT_DIAG */
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_sram_buf_tbl_set(
__in efx_nic_t *enp,
__in efsys_mem_t *esmp,
__in size_t n);
+LIBEFX_API
extern void
efx_sram_buf_tbl_clear(
__in efx_nic_t *enp,
#endif /* EFSYS_OPT_QSTATS */
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_ev_init(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_ev_fini(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn size_t
efx_evq_size(
__in const efx_nic_t *enp,
__in unsigned int ndescs);
+LIBEFX_API
extern __checkReturn unsigned int
efx_evq_nbufs(
__in const efx_nic_t *enp,
*/
#define EFX_EVQ_FLAGS_NO_CONT_EV (0x10)
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_ev_qcreate(
__in efx_nic_t *enp,
__in uint32_t flags,
__deref_out efx_evq_t **eepp);
+LIBEFX_API
extern void
efx_ev_qpost(
__in efx_evq_t *eep,
#endif /* EFSYS_OPT_MAC_STATS */
} efx_ev_callbacks_t;
+LIBEFX_API
extern __checkReturn boolean_t
efx_ev_qpending(
__in efx_evq_t *eep,
#if EFSYS_OPT_EV_PREFETCH
+LIBEFX_API
extern void
efx_ev_qprefetch(
__in efx_evq_t *eep,
#endif /* EFSYS_OPT_EV_PREFETCH */
+LIBEFX_API
extern void
efx_ev_qpoll(
__in efx_evq_t *eep,
__in const efx_ev_callbacks_t *eecp,
__in_opt void *arg);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_ev_usecs_to_ticks(
__in efx_nic_t *enp,
__in unsigned int usecs,
__out unsigned int *ticksp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_ev_qmoderate(
__in efx_evq_t *eep,
__in unsigned int us);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_ev_qprime(
__in efx_evq_t *eep,
#if EFSYS_OPT_NAMES
+LIBEFX_API
extern const char *
efx_ev_qstat_name(
__in efx_nic_t *enp,
#endif /* EFSYS_OPT_NAMES */
+LIBEFX_API
extern void
efx_ev_qstats_update(
__in efx_evq_t *eep,
#endif /* EFSYS_OPT_QSTATS */
+LIBEFX_API
extern void
efx_ev_qdestroy(
__in efx_evq_t *eep);
/* RX */
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_init(
__inout efx_nic_t *enp);
+LIBEFX_API
extern void
efx_rx_fini(
__in efx_nic_t *enp);
#if EFSYS_OPT_RX_SCATTER
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_scatter_enable(
__in efx_nic_t *enp,
*/
#define EFX_RX_HASH_NFLAGS (EFX_RX_NCLASSES * EFX_RX_CLASS_HASH_NTUPLES)
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_scale_hash_flags_get(
__in efx_nic_t *enp,
__in unsigned int max_nflags,
__out unsigned int *nflagsp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_hash_default_support_get(
__in efx_nic_t *enp,
__out efx_rx_hash_support_t *supportp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_scale_default_support_get(
__in efx_nic_t *enp,
__out efx_rx_scale_context_type_t *typep);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_scale_context_alloc(
__in efx_nic_t *enp,
__in uint32_t num_queues,
__out uint32_t *rss_contextp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_scale_context_free(
__in efx_nic_t *enp,
__in uint32_t rss_context);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_scale_mode_set(
__in efx_nic_t *enp,
__in efx_rx_hash_type_t type,
__in boolean_t insert);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_scale_tbl_set(
__in efx_nic_t *enp,
__in_ecount(n) unsigned int *table,
__in size_t n);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_scale_key_set(
__in efx_nic_t *enp,
__in_ecount(n) uint8_t *key,
__in size_t n);
+LIBEFX_API
extern __checkReturn uint32_t
efx_pseudo_hdr_hash_get(
__in efx_rxq_t *erp,
#endif /* EFSYS_OPT_RX_SCALE */
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_pseudo_hdr_pkt_length_get(
__in efx_rxq_t *erp,
__in uint8_t *buffer,
__out uint16_t *pkt_lengthp);
+LIBEFX_API
extern __checkReturn size_t
efx_rxq_size(
__in const efx_nic_t *enp,
__in unsigned int ndescs);
+LIBEFX_API
extern __checkReturn unsigned int
efx_rxq_nbufs(
__in const efx_nic_t *enp,
*/
#define EFX_RXQ_FLAG_INNER_CLASSES 0x2
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_qcreate(
__in efx_nic_t *enp,
#define EFX_RXQ_PACKED_STREAM_BUF_SIZE_128K (128U * 1024)
#define EFX_RXQ_PACKED_STREAM_BUF_SIZE_64K (64U * 1024)
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_qcreate_packed_stream(
__in efx_nic_t *enp,
/* Maximum head-of-line block timeout in nanoseconds */
#define EFX_RXQ_ES_SUPER_BUFFER_HOL_BLOCK_MAX (400U * 1000 * 1000)
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_qcreate_es_super_buffer(
__in efx_nic_t *enp,
efx_qword_t ed_eq;
} efx_desc_t;
+LIBEFX_API
extern void
efx_rx_qpost(
__in efx_rxq_t *erp,
__in unsigned int completed,
__in unsigned int added);
+LIBEFX_API
extern void
efx_rx_qpush(
__in efx_rxq_t *erp,
#if EFSYS_OPT_RX_PACKED_STREAM
+LIBEFX_API
extern void
efx_rx_qpush_ps_credits(
__in efx_rxq_t *erp);
+LIBEFX_API
extern __checkReturn uint8_t *
efx_rx_qps_packet_info(
__in efx_rxq_t *erp,
__out uint32_t *timestamp);
#endif
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_rx_qflush(
__in efx_rxq_t *erp);
+LIBEFX_API
extern void
efx_rx_qenable(
__in efx_rxq_t *erp);
+LIBEFX_API
extern void
efx_rx_qdestroy(
__in efx_rxq_t *erp);
#endif /* EFSYS_OPT_QSTATS */
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tx_init(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_tx_fini(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn size_t
efx_txq_size(
__in const efx_nic_t *enp,
__in unsigned int ndescs);
+LIBEFX_API
extern __checkReturn unsigned int
efx_txq_nbufs(
__in const efx_nic_t *enp,
#define EFX_TXQ_CKSUM_INNER_IPV4 0x0008
#define EFX_TXQ_CKSUM_INNER_TCPUDP 0x0010
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tx_qcreate(
__in efx_nic_t *enp,
__deref_out efx_txq_t **etpp,
__out unsigned int *addedp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tx_qpost(
__in efx_txq_t *etp,
__in unsigned int completed,
__inout unsigned int *addedp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tx_qpace(
__in efx_txq_t *etp,
__in unsigned int ns);
+LIBEFX_API
extern void
efx_tx_qpush(
__in efx_txq_t *etp,
__in unsigned int added,
__in unsigned int pushed);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tx_qflush(
__in efx_txq_t *etp);
+LIBEFX_API
extern void
efx_tx_qenable(
__in efx_txq_t *etp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tx_qpio_enable(
__in efx_txq_t *etp);
+LIBEFX_API
extern void
efx_tx_qpio_disable(
__in efx_txq_t *etp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tx_qpio_write(
__in efx_txq_t *etp,
__in size_t buf_length,
__in size_t pio_buf_offset);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tx_qpio_post(
__in efx_txq_t *etp,
__in unsigned int completed,
__inout unsigned int *addedp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tx_qdesc_post(
__in efx_txq_t *etp,
__in unsigned int completed,
__inout unsigned int *addedp);
+LIBEFX_API
extern void
efx_tx_qdesc_dma_create(
__in efx_txq_t *etp,
__in boolean_t eop,
__out efx_desc_t *edp);
+LIBEFX_API
extern void
efx_tx_qdesc_tso_create(
__in efx_txq_t *etp,
/* Maximum number of DMA segments per TSO packet (not superframe) */
#define EFX_TX_FATSOV2_DMA_SEGS_PER_PKT_MAX 24
+LIBEFX_API
extern void
efx_tx_qdesc_tso2_create(
__in efx_txq_t *etp,
__out_ecount(count) efx_desc_t *edp,
__in int count);
+LIBEFX_API
extern void
efx_tx_qdesc_vlantci_create(
__in efx_txq_t *etp,
__in uint16_t tci,
__out efx_desc_t *edp);
+LIBEFX_API
extern void
efx_tx_qdesc_checksum_create(
__in efx_txq_t *etp,
#if EFSYS_OPT_NAMES
+LIBEFX_API
extern const char *
efx_tx_qstat_name(
__in efx_nic_t *etp,
#endif /* EFSYS_OPT_NAMES */
+LIBEFX_API
extern void
efx_tx_qstats_update(
__in efx_txq_t *etp,
#endif /* EFSYS_OPT_QSTATS */
+LIBEFX_API
extern void
efx_tx_qdestroy(
__in efx_txq_t *etp);
#define EFX_FILTER_SPEC_RX_DMAQ_ID_DROP 0xfff
#define EFX_FILTER_SPEC_VID_UNSPEC 0xffff
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_init(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_filter_fini(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_insert(
__in efx_nic_t *enp,
__inout efx_filter_spec_t *spec);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_remove(
__in efx_nic_t *enp,
__inout efx_filter_spec_t *spec);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_restore(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_supported_filters(
__in efx_nic_t *enp,
__in size_t buffer_length,
__out size_t *list_lengthp);
+LIBEFX_API
extern void
efx_filter_spec_init_rx(
__out efx_filter_spec_t *spec,
__in efx_filter_flags_t flags,
__in efx_rxq_t *erp);
+LIBEFX_API
extern void
efx_filter_spec_init_tx(
__out efx_filter_spec_t *spec,
__in efx_txq_t *etp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_spec_set_ipv4_local(
__inout efx_filter_spec_t *spec,
__in uint32_t host,
__in uint16_t port);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_spec_set_ipv4_full(
__inout efx_filter_spec_t *spec,
__in uint32_t rhost,
__in uint16_t rport);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_spec_set_eth_local(
__inout efx_filter_spec_t *spec,
__in uint16_t vid,
__in const uint8_t *addr);
+LIBEFX_API
extern void
efx_filter_spec_set_ether_type(
__inout efx_filter_spec_t *spec,
__in uint16_t ether_type);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_spec_set_uc_def(
__inout efx_filter_spec_t *spec);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_spec_set_mc_def(
__inout efx_filter_spec_t *spec);
EFX_FILTER_INNER_FRAME_MATCH_UNKNOWN_UCAST_DST
} efx_filter_inner_frame_match_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_spec_set_encap_type(
__inout efx_filter_spec_t *spec,
__in efx_tunnel_protocol_t encap_type,
__in efx_filter_inner_frame_match_t inner_frame_match);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_spec_set_vxlan(
__inout efx_filter_spec_t *spec,
__in const uint8_t *inner_addr,
__in const uint8_t *outer_addr);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_spec_set_geneve(
__inout efx_filter_spec_t *spec,
__in const uint8_t *inner_addr,
__in const uint8_t *outer_addr);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_spec_set_nvgre(
__inout efx_filter_spec_t *spec,
__in const uint8_t *outer_addr);
#if EFSYS_OPT_RX_SCALE
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_filter_spec_set_rss_context(
__inout efx_filter_spec_t *spec,
/* HASH */
+LIBEFX_API
extern __checkReturn uint32_t
efx_hash_dwords(
__in_ecount(count) uint32_t const *input,
__in size_t count,
__in uint32_t init);
+LIBEFX_API
extern __checkReturn uint32_t
efx_hash_bytes(
__in_ecount(length) uint8_t const *input,
uint32_t eks_licensed_features_hi;
} efx_key_stats_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_lic_init(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_lic_fini(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn boolean_t
efx_lic_check_support(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_lic_update_licenses(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_lic_get_key_stats(
__in efx_nic_t *enp,
__out efx_key_stats_t *ksp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_lic_app_state(
__in efx_nic_t *enp,
__in uint64_t app_id,
__out boolean_t *licensedp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_lic_get_id(
__in efx_nic_t *enp,
__out_opt uint8_t *bufferp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_lic_find_start(
__in efx_nic_t *enp,
__in size_t buffer_size,
__out uint32_t *startp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_lic_find_end(
__in efx_nic_t *enp,
__in uint32_t offset,
__out uint32_t *endp);
+LIBEFX_API
extern __checkReturn __success(return != B_FALSE) boolean_t
efx_lic_find_key(
__in efx_nic_t *enp,
__out uint32_t *startp,
__out uint32_t *lengthp);
+LIBEFX_API
extern __checkReturn __success(return != B_FALSE) boolean_t
efx_lic_validate_key(
__in efx_nic_t *enp,
__in_bcount(length) caddr_t keyp,
__in uint32_t length);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_lic_read_key(
__in efx_nic_t *enp,
__in size_t key_max_size,
__out uint32_t *lengthp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_lic_write_key(
__in efx_nic_t *enp,
__in uint32_t length,
__out uint32_t *lengthp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_lic_delete_key(
__in efx_nic_t *enp,
__in uint32_t end,
__out uint32_t *deltap);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_lic_create_partition(
__in efx_nic_t *enp,
#if EFSYS_OPT_TUNNEL
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tunnel_init(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_tunnel_fini(
__in efx_nic_t *enp);
* The UDP port/protocol list is global.
*/
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tunnel_config_udp_add(
__in efx_nic_t *enp,
__in uint16_t port /* host/cpu-endian */,
__in efx_tunnel_protocol_t protocol);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tunnel_config_udp_remove(
__in efx_nic_t *enp,
__in uint16_t port /* host/cpu-endian */,
__in efx_tunnel_protocol_t protocol);
+LIBEFX_API
extern void
efx_tunnel_config_clear(
__in efx_nic_t *enp);
* EAGAIN is returned if hardware will be reset (datapath and managment CPU
* reboot).
*/
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_tunnel_reconfigure(
__in efx_nic_t *enp);
EFX_NIC_FW_SUBVARIANT_NTYPES
} efx_nic_fw_subvariant_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_get_fw_subvariant(
__in efx_nic_t *enp,
__out efx_nic_fw_subvariant_t *subvariantp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_nic_set_fw_subvariant(
__in efx_nic_t *enp,
EFX_PHY_FEC_RS
} efx_phy_fec_type_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_phy_fec_type_get(
__in efx_nic_t *enp,
efx_link_mode_t epls_link_mode;
} efx_phy_link_state_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_phy_link_state_get(
__in efx_nic_t *enp,
typedef struct efx_vswitch_s efx_vswitch_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_evb_init(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_evb_fini(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_evb_vswitch_create(
__in efx_nic_t *enp,
__inout_ecount(num_vports) efx_vport_config_t *vport_configp,
__deref_out efx_vswitch_t **evpp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_evb_vswitch_destroy(
__in efx_nic_t *enp,
__in efx_vswitch_t *evp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_evb_vport_mac_set(
__in efx_nic_t *enp,
__in efx_vport_id_t vport_id,
__in_bcount(EFX_MAC_ADDR_LEN) uint8_t *addrp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_evb_vport_vlan_set(
__in efx_nic_t *enp,
__in efx_vport_id_t vport_id,
__in uint16_t vid);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_evb_vport_reset(
__in efx_nic_t *enp,
__in uint16_t vid,
__out boolean_t *is_fn_resetp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_evb_vport_stats(
__in efx_nic_t *enp,
size_t *response_size_actualp;
} efx_proxy_cmd_params_t;
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_proxy_auth_init(
__in efx_nic_t *enp);
+LIBEFX_API
extern void
efx_proxy_auth_fini(
__in efx_nic_t *enp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_proxy_auth_configure(
__in efx_nic_t *enp,
__in efx_proxy_auth_config_t *configp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_proxy_auth_destroy(
__in efx_nic_t *enp,
__in uint32_t handled_privileges);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_proxy_auth_complete_request(
__in efx_nic_t *enp,
__in uint32_t proxy_result,
__in uint32_t handle);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_proxy_auth_exec_cmd(
__in efx_nic_t *enp,
__inout efx_proxy_cmd_params_t *paramsp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_proxy_auth_set_privilege_mask(
__in efx_nic_t *enp,
__in uint32_t mask,
__in uint32_t value);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_proxy_auth_privilege_mask_get(
__in efx_nic_t *enp,
__in uint32_t vf_index,
__out uint32_t *maskp);
+LIBEFX_API
extern __checkReturn efx_rc_t
efx_proxy_auth_privilege_modify(
__in efx_nic_t *enp,