Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/sfxge/common/efx.h
Show First 20 Lines • Show All 2,203 Lines • ▼ Show 20 Lines | typedef enum efx_filter_match_flags_e { | ||||
EFX_FILTER_MATCH_REM_PORT = 0x0008, /* Match by remote TCP/UDP port */ | EFX_FILTER_MATCH_REM_PORT = 0x0008, /* Match by remote TCP/UDP port */ | ||||
EFX_FILTER_MATCH_LOC_MAC = 0x0010, /* Match by remote TCP/UDP port */ | EFX_FILTER_MATCH_LOC_MAC = 0x0010, /* Match by remote TCP/UDP port */ | ||||
EFX_FILTER_MATCH_LOC_PORT = 0x0020, /* Match by local TCP/UDP port */ | EFX_FILTER_MATCH_LOC_PORT = 0x0020, /* Match by local TCP/UDP port */ | ||||
EFX_FILTER_MATCH_ETHER_TYPE = 0x0040, /* Match by Ether-type */ | EFX_FILTER_MATCH_ETHER_TYPE = 0x0040, /* Match by Ether-type */ | ||||
EFX_FILTER_MATCH_INNER_VID = 0x0080, /* Match by inner VLAN ID */ | EFX_FILTER_MATCH_INNER_VID = 0x0080, /* Match by inner VLAN ID */ | ||||
EFX_FILTER_MATCH_OUTER_VID = 0x0100, /* Match by outer VLAN ID */ | EFX_FILTER_MATCH_OUTER_VID = 0x0100, /* Match by outer VLAN ID */ | ||||
EFX_FILTER_MATCH_IP_PROTO = 0x0200, /* Match by IP transport | EFX_FILTER_MATCH_IP_PROTO = 0x0200, /* Match by IP transport | ||||
* protocol */ | * protocol */ | ||||
EFX_FILTER_MATCH_LOC_MAC_IG = 0x0400, /* Match by local MAC address | /* Match otherwise-unmatched multicast and broadcast packets */ | ||||
* I/G bit. Used for RX default | EFX_FILTER_MATCH_UNKNOWN_MCAST_DST = 0x40000000, | ||||
* unicast and multicast/ | /* Match otherwise-unmatched unicast packets */ | ||||
* broadcast filters. */ | EFX_FILTER_MATCH_UNKNOWN_UCAST_DST = 0x80000000, | ||||
} efx_filter_match_flags_t; | } efx_filter_match_flags_t; | ||||
typedef enum efx_filter_priority_s { | typedef enum efx_filter_priority_s { | ||||
EFX_FILTER_PRI_HINT = 0, /* Performance hint */ | EFX_FILTER_PRI_HINT = 0, /* Performance hint */ | ||||
EFX_FILTER_PRI_AUTO, /* Automatic filter based on device | EFX_FILTER_PRI_AUTO, /* Automatic filter based on device | ||||
* address list or hardware | * address list or hardware | ||||
* requirements. This may only be used | * requirements. This may only be used | ||||
* by the filter implementation for | * by the filter implementation for | ||||
* each NIC type. */ | * each NIC type. */ | ||||
EFX_FILTER_PRI_MANUAL, /* Manually configured filter */ | EFX_FILTER_PRI_MANUAL, /* Manually configured filter */ | ||||
EFX_FILTER_PRI_REQUIRED, /* Required for correct behaviour of the | EFX_FILTER_PRI_REQUIRED, /* Required for correct behaviour of the | ||||
* client (e.g. SR-IOV, HyperV VMQ etc.) | * client (e.g. SR-IOV, HyperV VMQ etc.) | ||||
*/ | */ | ||||
} efx_filter_priority_t; | } efx_filter_priority_t; | ||||
/* | /* | ||||
* FIXME: All these fields are assumed to be in little-endian byte order. | * FIXME: All these fields are assumed to be in little-endian byte order. | ||||
* It may be better for some to be big-endian. See bug42804. | * It may be better for some to be big-endian. See bug42804. | ||||
*/ | */ | ||||
typedef struct efx_filter_spec_s { | typedef struct efx_filter_spec_s { | ||||
uint32_t efs_match_flags:12; | uint32_t efs_match_flags; | ||||
uint32_t efs_priority:2; | uint32_t efs_priority:2; | ||||
uint32_t efs_flags:6; | uint32_t efs_flags:6; | ||||
uint32_t efs_dmaq_id:12; | uint32_t efs_dmaq_id:12; | ||||
uint32_t efs_rss_context; | uint32_t efs_rss_context; | ||||
uint16_t efs_outer_vid; | uint16_t efs_outer_vid; | ||||
uint16_t efs_inner_vid; | uint16_t efs_inner_vid; | ||||
uint8_t efs_loc_mac[EFX_MAC_ADDR_LEN]; | uint8_t efs_loc_mac[EFX_MAC_ADDR_LEN]; | ||||
uint8_t efs_rem_mac[EFX_MAC_ADDR_LEN]; | uint8_t efs_rem_mac[EFX_MAC_ADDR_LEN]; | ||||
▲ Show 20 Lines • Show All 252 Lines • Show Last 20 Lines |