rte_pmd_i40e.h(3)
Okay so bestie, we're reading rte_pmd_i40e.h(3) β buckle up, it's straight out of the Library Functions Manual β¨ and it's the whole header for the i40e PMD-specific API. It's long fr, so we're doing this in parts. Part 1, let's go π
πΈ NAME πΈ
rte_pmd_i40e.h β the header where literally all the i40e PMD-specific functions live π
π SYNOPSIS π
#include <rte_compat.h>
#include <rte_ethdev.h>
#include <rte_ether.h>
π¦ Data Structures π¦
So many structs, and they're all giving main character energy:
struct rte_pmd_i40e_mb_event_paramstruct rte_pmd_i40e_ddp_versionstruct rte_pmd_i40e_ddp_device_idstruct rte_pmd_i40e_profile_infostruct rte_pmd_i40e_profile_liststruct rte_pmd_i40e_proto_infostruct rte_pmd_i40e_ptype_infostruct rte_pmd_i40e_queue_region_confstruct rte_pmd_i40e_pkt_template_actionstruct rte_pmd_i40e_pkt_template_inputstruct rte_pmd_i40e_pkt_template_conf
β Macros β
One (1) macro, and she's iconic:
#define RTE_PMD_I40E_PTYPE_USER_DEFINE_MASK 0x80000000
π Enumerations π
enum rte_pmd_i40e_mb_event_rsp { RTE_PMD_I40E_MB_EVENT_NOOP_ACK, RTE_PMD_I40E_MB_EVENT_NOOP_NACK, RTE_PMD_I40E_MB_EVENT_PROCEED, RTE_PMD_I40E_MB_EVENT_MAX }enum rte_pmd_i40e_package_op { }enum rte_pmd_i40e_package_infoenum rte_pmd_i40e_queue_region_op { }enum rte_pmd_i40e_pkt_template_behaviorenum rte_pmd_i40e_pkt_template_status { RTE_PMD_I40E_PKT_TEMPLATE_NO_REPORT_STATUS, RTE_PMD_I40E_PKT_TEMPLATE_REPORT_ID, RTE_PMD_I40E_PKT_TEMPLATE_REPORT_ID_FLEX_4, RTE_PMD_I40E_PKT_TEMPLATE_REPORT_FLEX_8 }
π Functions π
A whole personality of prototypes, verbatim, no cap:
int rte_pmd_i40e_flow_add_del_packet_template (uint16_t port, const struct rte_pmd_i40e_pkt_template_conf *conf, uint8_t add)
int rte_pmd_i40e_ping_vfs (uint16_t port, uint16_t vf)
int rte_pmd_i40e_set_vf_mac_anti_spoof (uint16_t port, uint16_t vf_id, uint8_t on)
int rte_pmd_i40e_set_vf_vlan_anti_spoof (uint16_t port, uint16_t vf_id, uint8_t on)
int rte_pmd_i40e_set_tx_loopback (uint16_t port, uint8_t on)
int rte_pmd_i40e_set_vf_unicast_promisc (uint16_t port, uint16_t vf_id, uint8_t on)
int rte_pmd_i40e_set_vf_multicast_promisc (uint16_t port, uint16_t vf_id, uint8_t on)
int rte_pmd_i40e_set_vf_mac_addr (uint16_t port, uint16_t vf_id, struct rte_ether_addr *mac_addr)
int rte_pmd_i40e_remove_vf_mac_addr (uint16_t port, uint16_t vf_id, struct rte_ether_addr *mac_addr)
int rte_pmd_i40e_set_vf_vlan_stripq (uint16_t port, uint16_t vf, uint8_t on)
int rte_pmd_i40e_set_vf_vlan_insert (uint16_t port, uint16_t vf_id, uint16_t vlan_id)
int rte_pmd_i40e_set_vf_broadcast (uint16_t port, uint16_t vf_id, uint8_t on)
int rte_pmd_i40e_set_vf_vlan_tag (uint16_t port, uint16_t vf_id, uint8_t on)
int rte_pmd_i40e_set_vf_vlan_filter (uint16_t port, uint16_t vlan_id, uint64_t vf_mask, uint8_t on)
int rte_pmd_i40e_get_vf_stats (uint16_t port, uint16_t vf_id, struct rte_eth_stats *stats)
int rte_pmd_i40e_reset_vf_stats (uint16_t port, uint16_t vf_id)
int rte_pmd_i40e_set_vf_max_bw (uint16_t port, uint16_t vf_id, uint32_t bw)
int rte_pmd_i40e_set_vf_tc_bw_alloc (uint16_t port, uint16_t vf_id, uint8_t tc_num, uint8_t *bw_weight)
int rte_pmd_i40e_set_vf_tc_max_bw (uint16_t port, uint16_t vf_id, uint8_t tc_no, uint32_t bw)
int rte_pmd_i40e_set_tc_strict_prio (uint16_t port, uint8_t tc_map)
int rte_pmd_i40e_process_ddp_package (uint16_t port, uint8_t *buff, uint32_t size, enum rte_pmd_i40e_package_op op)
int rte_pmd_i40e_get_ddp_info (uint8_t *pkg, uint32_t pkg_size, uint8_t *info, uint32_t size, enum rte_pmd_i40e_package_info type)
int rte_pmd_i40e_get_ddp_list (uint16_t port, uint8_t *buff, uint32_t size)
int rte_pmd_i40e_ptype_mapping_update (uint16_t port, struct rte_pmd_i40e_ptype_mapping *mapping_items, uint16_t count, uint8_t exclusive)
int rte_pmd_i40e_ptype_mapping_reset (uint16_t port)
int rte_pmd_i40e_ptype_mapping_get (uint16_t port, struct rte_pmd_i40e_ptype_mapping *mapping_items, uint16_t size, uint16_t *count, uint8_t valid_only)
int rte_pmd_i40e_ptype_mapping_replace (uint16_t port, uint32_t target, uint8_t mask, uint32_t pkt_type)
int rte_pmd_i40e_add_vf_mac_addr (uint16_t port, uint16_t vf_id, struct rte_ether_addr *mac_addr)
int rte_pmd_i40e_flow_type_mapping_update (uint16_t port, struct rte_pmd_i40e_flow_type_mapping *mapping_items, uint16_t count, uint8_t exclusive)
int rte_pmd_i40e_flow_type_mapping_get (uint16_t port, struct rte_pmd_i40e_flow_type_mapping *mapping_items)
int rte_pmd_i40e_flow_type_mapping_reset (uint16_t port)
int rte_pmd_i40e_query_vfid_by_mac (uint16_t port, const struct rte_ether_addr *vf_mac)
int rte_pmd_i40e_rss_queue_region_conf (uint16_t port_id, enum rte_pmd_i40e_queue_region_op op_type, void *arg)
int rte_pmd_i40e_inset_get (uint16_t port, uint8_t pctype, struct rte_pmd_i40e_inset *inset, enum rte_pmd_i40e_inset_type inset_type)
int rte_pmd_i40e_inset_set (uint16_t port, uint8_t pctype, struct rte_pmd_i40e_inset *inset, enum rte_pmd_i40e_inset_type inset_type)
static int rte_pmd_i40e_inset_field_get (uint64_t inset, uint8_t field_idx)
static int rte_pmd_i40e_inset_field_set (uint64_t *inset, uint8_t field_idx)
static int rte_pmd_i40e_inset_field_clear (uint64_t *inset, uint8_t field_idx)
__rte_experimental int rte_pmd_i40e_get_fdir_info (uint16_t port, struct rte_eth_fdir_info *fdir_info)
__rte_experimental int rte_pmd_i40e_get_fdir_stats (uint16_t port, struct rte_eth_fdir_stats *fdir_stat)
__rte_experimental int rte_pmd_i40e_set_gre_key_len (uint16_t port, uint8_t len)
__rte_experimental int rte_pmd_i40e_set_switch_dev (uint16_t port_id, struct rte_eth_dev *switch_dev)
__rte_experimental int rte_pmd_i40e_set_pf_src_prune (uint16_t port, uint8_t on)
π Detailed Description π
i40e PMD specific functions. That's the whole vibe πΈ
β οΈ EXPERIMENTAL: this API may change, or be removed, without prior notice. Bestie. It can literally ghost you. Do not build your whole life on it ok π
Definition in file rte_pmd_i40e.h.
π Macro Definition Documentation π
#define RTE_PMD_I40E_PTYPE_USER_DEFINE_MASK 0x80000000
So the ptype mapping table only accepts RTE_PTYPE_XXX or "user defined" ptype. Any ptype with the MSB set gets treated as a user defined ptype, and this macro right here is the girl who helps you create one π
Definition at line 176 of file rte_pmd_i40e.h.
π₯ Enumeration Type Documentation π₯
enum rte_pmd_i40e_mb_event_rsp
The response sent back to the i40e driver from the user app after the callback. She answers the phone π
Enumerator
RTE_PMD_I40E_MB_EVENT_NOOP_ACKβ skip mbox request and ACKRTE_PMD_I40E_MB_EVENT_NOOP_NACKβ skip mbox request and NACKRTE_PMD_I40E_MB_EVENT_PROCEEDβ proceed with mbox requestRTE_PMD_I40E_MB_EVENT_MAXβ max value of this enum
Definition at line 28 of file rte_pmd_i40e.h.
enum rte_pmd_i40e_package_op
Option of package processing. Choose your fighter β¨
Enumerator
RTE_PMD_I40E_PKG_OP_WR_ADDβ load package and add to info listRTE_PMD_I40E_PKG_OP_WR_DELβ load package and delete from info listRTE_PMD_I40E_PKG_OP_WR_ONLYβ load package without modifying info list
Definition at line 49 of file rte_pmd_i40e.h.
enum rte_pmd_i40e_package_info
Types of package information. That's the tea π΅
Definition at line 60 of file rte_pmd_i40e.h.
enum rte_pmd_i40e_queue_region_op
Option types of queue region. Pick your op, queen π
Enumerator
RTE_PMD_I40E_RSS_QUEUE_REGION_SETβ add queue region setRTE_PMD_I40E_RSS_QUEUE_REGION_FLOWTYPE_SETβ add PF region pctype setRTE_PMD_I40E_RSS_QUEUE_REGION_USER_PRIORITY_SETβ add queue region user priority setRTE_PMD_I40E_RSS_QUEUE_REGION_ALL_FLUSH_ONβ ALL configuration about queue region from up layer at first will only keep in DPDK software stored in driver, only after "FLUSH_ON", it commit all configuration to HW. Because PMD had to set hardware configuration at a time, so it will record all up layer command at first.RTE_PMD_I40E_RSS_QUEUE_REGION_ALL_FLUSH_OFFβ "FLUSH_OFF" is just clean all configuration about queue region just now, and restore all to DPDK i40e driver default config when start up.
Definition at line 81 of file rte_pmd_i40e.h.
enum rte_pmd_i40e_pkt_template_behavior
Behavior will be taken if raw packet template is matched. Like, what are we doing about it bestie π€
Definition at line 234 of file rte_pmd_i40e.h.
enum rte_pmd_i40e_pkt_template_status
Flow director report status. It defines what will be reported if raw packet template is matched. Snitching level: selectable π«Ά
Enumerator
RTE_PMD_I40E_PKT_TEMPLATE_NO_REPORT_STATUSβ report nothingRTE_PMD_I40E_PKT_TEMPLATE_REPORT_IDβ only report FD IDRTE_PMD_I40E_PKT_TEMPLATE_REPORT_ID_FLEX_4β report FD ID and 4 flex bytesRTE_PMD_I40E_PKT_TEMPLATE_REPORT_FLEX_8β report 8 flex bytes
Definition at line 244 of file rte_pmd_i40e.h.
π Function Documentation π
int rte_pmd_i40e_flow_add_del_packet_template (uint16_t port, const struct rte_pmd_i40e_pkt_template_conf * conf, uint8_t add)
Add or remove raw packet template filter to Flow Director. Adding AND removing in one function, she's versatile β¨
Parameters
- port β the port identifier of the Ethernet device.
- conf β specifies configuration parameters of raw packet template filter.
- add β specifies an action to be taken - add or remove raw packet template filter.
Returns
- (0) if successful.
- (-ENODEV) if port invalid.
- (-EINVAL) if conf invalid.
- (-ENOTSUP) not supported by firmware.
int rte_pmd_i40e_ping_vfs (uint16_t port, uint16_t vf)
Notify VF when PF link status changes. Just a lil ping, a lil heads up π£
Parameters
- port β the port identifier of the Ethernet device.
- vf β VF id.
Returns
- (0) if successful.
- (-ENODEV) if port invalid.
- (-EINVAL) if vf invalid.
int rte_pmd_i40e_set_vf_mac_anti_spoof (uint16_t port, uint16_t vf_id, uint8_t on)
Enable/Disable VF MAC anti spoofing. Protecting the MAC from fakes π
Parameters
- port β the port identifier of the Ethernet device.
- vf_id β VF on which to set MAC anti spoofing.
- on β 1 - Enable VFs MAC anti spoofing. 0 - Disable VFs MAC anti spoofing.
Returns
- (0) if successful.
- (-ENODEV) if port invalid.
- (-EINVAL) if bad parameter.
int rte_pmd_i40e_set_vf_vlan_anti_spoof (uint16_t port, uint16_t vf_id, uint8_t on)
Enable/Disable VF VLAN anti spoofing. Same energy, different tag π·οΈ
Parameters
- port β the port identifier of the Ethernet device.
- vf_id β VF on which to set VLAN anti spoofing.
- on β 1 - Enable VFs VLAN anti spoofing. 0 - Disable VFs VLAN anti spoofing.
Returns
- (0) if successful.
- (-ENODEV) if port invalid.
- (-EINVAL) if bad parameter.
int rte_pmd_i40e_set_tx_loopback (uint16_t port, uint8_t on)
Enable/Disable TX loopback on all the PF and VFs. Everyone gets the loopback, no one is left out π
Parameters
- port β the port identifier of the Ethernet device.
- on β 1 - Enable TX loopback. 0 - Disable TX loopback.
Returns
- (0) if successful.
- (-ENODEV) if port invalid.
int rte_pmd_i40e_set_vf_unicast_promisc (uint16_t port, uint16_t vf_id, uint8_t on)
int rte_pmd_i40e_set_vf_unicast_promisc (uint16_t port, uint16_t vf_id,
uint8_t on)
okay bestie, this one flips VF unicast promiscuous mode on or off π
Parameters
portβ the port identifier of the Ethernet device πvf_idβ the VF on which to set itonβ1means Enable,0means Disable
Returns
(0)if it slayed (successful) β¨(-ENODEV)if the port is invalid π(-EINVAL)if the parameter is bad
int rte_pmd_i40e_set_vf_multicast_promisc (uint16_t port, uint16_t vf_id, uint8_t on)
int rte_pmd_i40e_set_vf_multicast_promisc (uint16_t port, uint16_t vf_id,
uint8_t on)
same energy as above but for multicast promiscuous mode, no cap π
Parameters
portβ the port identifier of the Ethernet device π¦vf_idβ the VF on which to set itonβ1means Enable,0means Disable
Returns
(0)if successful πΈ(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad
int rte_pmd_i40e_set_vf_mac_addr (uint16_t port, uint16_t vf_id, struct rte_ether_addr * mac_addr)
int rte_pmd_i40e_set_vf_mac_addr (uint16_t port, uint16_t vf_id, struct
rte_ether_addr * mac_addr)
set the VF's MAC address, periodt π
fr fr, the PF should set the MAC address before the VF is initialized. If the PF sets the MAC address after the VF is already initialized, the new MAC address won't be effective until the VF gets reinitialized. not me learning this the hard way π
also heads up: this will remove all existing MAC filters. so like... be aware π
Parameters
portβ the port identifier of the Ethernet devicevf_idβ VF id πmac_addrβ VF MAC address
Returns
(0)if successful β¨(-ENODEV)if the port is invalid(-EINVAL)ifvformac_addris invalid π
int rte_pmd_i40e_remove_vf_mac_addr (uint16_t port, uint16_t vf_id, struct rte_ether_addr * mac_addr)
int rte_pmd_i40e_remove_vf_mac_addr (uint16_t port, uint16_t vf_id, struct
rte_ether_addr * mac_addr)
remove the VF MAC address π the reverse of the lil glow-up above
Parameters
portβ the port identifier of the Ethernet devicevf_idβ VF idmac_addrβ VF MAC address
Returns
(0)if successful π(-ENODEV)if the port is invalid(-EINVAL)ifvformac_addris invalid
int rte_pmd_i40e_set_vf_vlan_stripq (uint16_t port, uint16_t vf, uint8_t on)
int rte_pmd_i40e_set_vf_vlan_stripq (uint16_t port, uint16_t vf, uint8_t on)
Enable/Disable vf vlan strip for all queues in a pool β¨
Parameters
portβ the port identifier of the Ethernet devicevfβ ID specifying VFonβ1means Enable VF's vlan strip on RX queues.0means Disable VF's vlan strip on RX queues π
Returns
(0)if successful π«Ά(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad
int rte_pmd_i40e_set_vf_vlan_insert (uint16_t port, uint16_t vf_id, uint16_t vlan_id)
int rte_pmd_i40e_set_vf_vlan_insert (uint16_t port, uint16_t vf_id, uint16_t
vlan_id)
Enable/Disable vf vlan insert π
Parameters
portβ the port identifier of the Ethernet devicevf_idβ ID specifying VFvlan_idβ0means Disable VF's vlan insert.nmeans Enable;nis inserted as the vlan id πΈ
Returns
(0)if successful(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad
int rte_pmd_i40e_set_vf_broadcast (uint16_t port, uint16_t vf_id, uint8_t on)
int rte_pmd_i40e_set_vf_broadcast (uint16_t port, uint16_t vf_id, uint8_t
on)
Enable/Disable vf broadcast mode π’ iconic lil toggle
Parameters
portβ the port identifier of the Ethernet devicevf_idβ ID specifying VFonβ0means Disable broadcast.1means Enable broadcast π¦
Returns
(0)if successful β¨(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad
int rte_pmd_i40e_set_vf_vlan_tag (uint16_t port, uint16_t vf_id, uint8_t on)
int rte_pmd_i40e_set_vf_vlan_tag (uint16_t port, uint16_t vf_id, uint8_t on)
Enable/Disable vf vlan tag π
Parameters
portβ the port identifier of the Ethernet devicevf_idβ ID specifying VFonβ0means Disable VF's vlan tag.nmeans Enable VF's vlan tag π
Returns
(0)if successful(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad
int rte_pmd_i40e_set_vf_vlan_filter (uint16_t port, uint16_t vlan_id, uint64_t vf_mask, uint8_t on)
int rte_pmd_i40e_set_vf_vlan_filter (uint16_t port, uint16_t vlan_id,
uint64_t vf_mask, uint8_t on)
Enable/Disable VF VLAN filter π
Parameters
portβ the port identifier of the Ethernet devicevlan_idβ ID specifying VLANvf_maskβ Mask to filter VF'sonβ0means Disable VF's VLAN filter.1means Enable VF's VLAN filter π
Returns
(0)if successful π(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad(-ENOTSUP)not supported by firmware π
int rte_pmd_i40e_get_vf_stats (uint16_t port, uint16_t vf_id, struct rte_eth_stats * stats)
int rte_pmd_i40e_get_vf_stats (uint16_t port, uint16_t vf_id, struct
rte_eth_stats * stats)
get the VF's statistics, the receipts bestie π
Parameters
portβ the port identifier of the Ethernet devicevf_idβ VF on which to getstatsβ a pointer to a structure of typerte_eth_statsto be filled with the values of device counters for this exact set of statistics β¨ipacketswith the total of successfully received packetsopacketswith the total of successfully transmitted packetsibyteswith the total of successfully received bytesobyteswith the total of successfully transmitted bytesierrorswith the total of erroneous received packetsoerrorswith the total of failed transmitted packets
Returns
(0)if successful π«Ά(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad
int rte_pmd_i40e_reset_vf_stats (uint16_t port, uint16_t vf_id)
int rte_pmd_i40e_reset_vf_stats (uint16_t port, uint16_t vf_id)
Clear the VF's statistics π§Ήπ
Parameters
portβ the port identifier of the Ethernet devicevf_idβ VF on which to get
Returns
(0)if successful πΈ(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad
int rte_pmd_i40e_set_vf_max_bw (uint16_t port, uint16_t vf_id, uint32_t bw)
int rte_pmd_i40e_set_vf_max_bw (uint16_t port, uint16_t vf_id, uint32_t bw)
set the VF's max bandwidth, like a vibe check on how much it's allowed to eat π₯
β οΈ Per-VF bandwidth limitation and per-TC bandwidth limitation cannot be enabled in parallel. If per-TC bandwidth is enabled, this function will disable it. so like, they're mutually exclusive bestie, pick a lane π
Parameters
portβ the port identifier of the Ethernet devicevf_idβ ID specifying VFbwβ Bandwidth for this VF. The value should be an absolute bandwidth in Mbps. The bandwidth is a L2 bandwidth counting the bytes of ethernet packets. It does not count the bytes added by the physical layer π
Returns
(0)if successful β¨(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad(-ENOTSUP)not supported by firmware π
int rte_pmd_i40e_set_vf_tc_bw_alloc (uint16_t port, uint16_t vf_id, uint8_t tc_num, uint8_t * bw_weight)
int rte_pmd_i40e_set_vf_tc_bw_alloc (uint16_t port, uint16_t vf_id, uint8_t
tc_num, uint8_t * bw_weight)
Set all the TCs' bandwidth weight on a specific VF π
The bw_weight means the percentage occupied by the TC. You can take it as the relative min bandwidth setting π
Parameters
portβ the port identifier of the Ethernet devicevf_idβ ID specifying VFtc_numβ Number of TCsbw_weightβ an array of relative bandwidth weight for all the TCs. The summary of thebw_weightshould be100π
Returns
(0)if successful(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad(-ENOTSUP)not supported by firmware
int rte_pmd_i40e_set_vf_tc_max_bw (uint16_t port, uint16_t vf_id, uint8_t tc_no, uint32_t bw)
int rte_pmd_i40e_set_vf_tc_max_bw (uint16_t port, uint16_t vf_id, uint8_t
tc_no, uint32_t bw)
set a specific TC's max bandwidth on a specific VF β¨
Parameters
portβ the port identifier of the Ethernet devicevf_idβ ID specifying VFtc_noβ Number specifying TCbwβ Max bandwidth for this TC. The value should be an absolute bandwidth in Mbps. The bandwidth is a L2 bandwidth counting the bytes of ethernet packets. It does not count the bytes added by the physical layer π
Returns
(0)if successful π¦(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad(-ENOTSUP)not supported by firmware
int rte_pmd_i40e_set_tc_strict_prio (uint16_t port, uint8_t tc_map)
int rte_pmd_i40e_set_tc_strict_prio (uint16_t port, uint8_t tc_map)
set some TCs to strict priority mode on a physical port, main character energy only ππ
Parameters
portβ the port identifier of the Ethernet devicetc_mapβ A bit map for the TCs π
Returns
(0)if successful(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad(-ENOTSUP)not supported by firmware
int rte_pmd_i40e_process_ddp_package (uint16_t port, uint8_t * buff, uint32_t size, enum rte_pmd_i40e_package_op op)
int rte_pmd_i40e_process_ddp_package (uint16_t port, uint8_t * buff,
uint32_t size, enum rte_pmd_i40e_package_op op)
Load/Unload a ddp package π¦β¨
Parameters
portβ the port identifier of the Ethernet devicebuffβ buffer of packagesizeβ size of bufferopβ Operation of package processing
Returns
(0)if successful πΈ(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad(-EEXIST)if profile exists(-EACCES)if profile does not exist(-ENOTSUP)if operation not supported π
int rte_pmd_i40e_get_ddp_info (uint8_t * pkg, uint32_t pkg_size, uint8_t * info, uint32_t size, enum rte_pmd_i40e_package_info type)
int rte_pmd_i40e_get_ddp_info (uint8_t * pkg, uint32_t pkg_size, uint8_t *
info, uint32_t size, enum rte_pmd_i40e_package_info type)
rte_pmd_i40e_get_ddp_info β Get profile's info ππ
Parameters
pkgβ buffer of packagepkg_sizeβ package buffer sizeinfoβ buffer for responsesizeβ response buffer sizetypeβ type of information requested
Returns
(0)if successful β¨(-ENOTSUP)if information type not supported by the profile(-EINVAL)if the parameter is bad
int rte_pmd_i40e_get_ddp_list (uint16_t port, uint8_t * buff, uint32_t size)
int rte_pmd_i40e_get_ddp_list (uint16_t port, uint8_t * buff, uint32_t size)
rte_pmd_i40e_get_ddp_list β Get loaded profile list ππ
Parameters
portβ port idbuffβ buffer for responsesizeβ buffer size
Returns
(0)if successful π«Ά(-ENODEV)if the port is invalid(-EINVAL)if the parameter is bad
int rte_pmd_i40e_ptype_mapping_update (uint16_t port, struct rte_pmd_i40e_ptype_mapping * mapping_items, uint16_t count, uint8_t exclusive)
int rte_pmd_i40e_ptype_mapping_update (uint16_t port, struct
rte_pmd_i40e_ptype_mapping * mapping_items, uint16_t count, uint8_t
exclusive)
update the hardware-defined ptype β software-defined packet type mapping table πβ¨
Parameters
portβ pointer to port identifier of the devicemapping_itemsβ the base address of the mapping items arraycountβ number of mapping itemsexclusiveβ the flag indicating the different ptype mapping update method π-(0)only overwrite the referred PTYPE mapping, keep other PTYPEs mapping unchanged-(!0)overwrite the referred PTYPE mapping, set other PTYPEs maps toPTYPE_UNKNOWN
int rte_pmd_i40e_ptype_mapping_reset (uint16_t port)
int rte_pmd_i40e_ptype_mapping_reset (uint16_t port)
reset the hardware-defined ptype β software-defined ptype mapping table back to default π§Ήπ
Parameters
portβ pointer to port identifier of the device
int rte_pmd_i40e_ptype_mapping_get (uint16_t port, struct rte_pmd_i40e_ptype_mapping * mapping_items, uint16_t size, uint16_t * count, uint8_t valid_only)
int rte_pmd_i40e_ptype_mapping_get (uint16_t port, struct
rte_pmd_i40e_ptype_mapping * mapping_items, uint16_t size, uint16_t *
count, uint8_t valid_only)
get the hardware-defined ptype β software-defined ptype mapping items ππ
Parameters
portβ pointer to port identifier of the devicemapping_itemsβ the base address of the array to store returned itemssizeβ the size of the input arraycountβ the place to store the number of returned itemsvalid_onlyβ π-(0)return full mapping table-(!0)only return mapping items whichpacket_type != RTE_PTYPE_UNKNOWN
int rte_pmd_i40e_ptype_mapping_replace (uint16_t port, uint32_t target, uint8_t mask, uint32_t pkt_type)
int rte_pmd_i40e_ptype_mapping_replace (uint16_t port, uint32_t target,
uint8_t mask, uint32_t pkt_type)
replace a specific β or a whole lil group of β software-defined ptypes with a new one ππ
β¦and the params for that one π«Ά:
portβ pointer to port identifier of the devicetargetβ the packet type to be replacedmaskβ-(0)target represent a specific software defined ptype.-(!0)target is a mask to represent a group of software defined ptypes.pkt_typeβ the new packet type to overwrite
πΈ rte_pmd_i40e_add_vf_mac_addr
int rte_pmd_i40e_add_vf_mac_addr (uint16_t port, uint16_t vf_id, struct rte_ether_addr * mac_addr)
Okay so this one adds a VF MAC address π β and like, you can add more MAC addresses for a VF, not just one. The existing MAC addresses stay effective, they're not getting replaced or anything. Everyone stays on the guest list π.
Parameters
portβ The port identifier of the Ethernet device.vf_idβ VF id.mac_addrβ VF MAC address.
Returns
(0)if successful.(-ENODEV)if port invalid.(-EINVAL)if vf or mac_addr is invalid.
π¦ rte_pmd_i40e_flow_type_mapping_update
int rte_pmd_i40e_flow_type_mapping_update (uint16_t port, struct rte_pmd_i40e_flow_type_mapping * mapping_items, uint16_t count, uint8_t exclusive)
Update the hardware defined pctype β software defined flow type mapping table β¨ this is the glow-up for your mapping table, no cap.
Parameters
portβ pointer to port identifier of the device.mapping_itemsβ the base address of the mapping items array.countβ number of mapping items.exclusiveβ the flag indicate different pctype mapping update method.-(0)only overwrite referred PCTYPE mapping, keep other PCTYPEs mapping unchanged.-(!0)overwrite referred PCTYPE mapping, set other PCTYPEs maps toPCTYPE_INVALID.
π rte_pmd_i40e_flow_type_mapping_get
int rte_pmd_i40e_flow_type_mapping_get (uint16_t port, struct rte_pmd_i40e_flow_type_mapping * mapping_items)
Get the software defined flow type β hardware defined pctype mapping items π it's giving "read back what you wrote".
Parameters
portβ pointer to port identifier of the device.mapping_itemsβ the base address of the array to store returned items. array should be allocated by caller with minimum size ofRTE_PMD_I40E_FLOW_TYPE_MAXitems
bestie. allocate the array yourself first. minimum RTE_PMD_I40E_FLOW_TYPE_MAX items. don't show up empty-handed π
π rte_pmd_i40e_flow_type_mapping_reset
int rte_pmd_i40e_flow_type_mapping_reset (uint16_t port)
Reset the hardware defined pctype β software defined flow type mapping table back to default πΈ the "never mind, factory settings" button.
Parameters
portβ pointer to port identifier of the device
β¨ rte_pmd_i40e_query_vfid_by_mac
int rte_pmd_i40e_query_vfid_by_mac (uint16_t port, const struct rte_ether_addr * vf_mac)
On the PF, find the VF index based on the VF MAC address π you bring me a MAC, I give you the index. iykyk.
Parameters
portβ pointer to port identifier of the devicevf_macβ the mac address of the vf to determine index of
Returns
The index of vfid If successful. -EINVAL: vf mac address does not exist for this port. -ENOTSUP: i40e not supported for this port.
π rte_pmd_i40e_rss_queue_region_conf
int rte_pmd_i40e_rss_queue_region_conf (uint16_t port_id, enum rte_pmd_i40e_queue_region_op op_type, void * arg)
Do RSS queue region configuration for that port as the command option type π―
Parameters
port_idβ The port identifier of the Ethernet device.op_typeβ Queue region operation typeargβ Queue region operation type specific data
π§ rte_pmd_i40e_inset_get
int rte_pmd_i40e_inset_get (uint16_t port, uint8_t pctype, struct rte_pmd_i40e_inset * inset, enum rte_pmd_i40e_inset_type inset_type)
Get input set π
Parameters
portβ The port identifier of the Ethernet device.pctypeβ HW pctype.insetβ Buffer for input set info.inset_typeβ Type of input set.
Returns
(0)if successful.(-ENODEV)if port invalid.(-EINVAL)if bad parameter.(-ENOTSUP)if operation not supported.
π«Ά rte_pmd_i40e_inset_set
int rte_pmd_i40e_inset_set (uint16_t port, uint8_t pctype, struct rte_pmd_i40e_inset * inset, enum rte_pmd_i40e_inset_type inset_type)
Set input set β¨ (yes, the twin of the one above, and their return codes are literally identical β slay, consistency).
Parameters
portβ The port identifier of the Ethernet device.pctypeβ HW pctype.insetβ Input set info.inset_typeβ Type of input set.
Returns
(0)if successful.(-ENODEV)if port invalid.(-EINVAL)if bad parameter.(-ENOTSUP)if operation not supported.
π rte_pmd_i40e_inset_field_get
int rte_pmd_i40e_inset_field_get (uint64_t inset, uint8_t field_idx)
[inline], [static] πΈ Get bit value for some field index
Parameters
insetβ Input set value.field_idxβ Field index for input set.
Returns
(1)if set.(0)if cleared.
Definition at line 1006 of file rte_pmd_i40e.h.
π rte_pmd_i40e_inset_field_set
int rte_pmd_i40e_inset_field_set (uint64_t * inset, uint8_t field_idx)
[inline], [static] π Set bit value for some field index
Parameters
insetβ Input set value.field_idxβ Field index for input set.
Returns
(-1)if failed.(0)if success.
Definition at line 1032 of file rte_pmd_i40e.h.
πΈ rte_pmd_i40e_inset_field_clear
int rte_pmd_i40e_inset_field_clear (uint64_t * inset, uint8_t field_idx)
[inline], [static] π
Clear bit value for some field index
Parameters
insetβ Input set value.field_idxβ Field index for input set.
Returns
(-1)if failed.(0)if success.
Definition at line 1057 of file rte_pmd_i40e.h.
heads up bestie, everything from here down is tagged __rte_experimental β that's literally in the signature, don't say I didn't warn you β¨
π₯ rte_pmd_i40e_get_fdir_info
__rte_experimental int rte_pmd_i40e_get_fdir_info (uint16_t port, struct rte_eth_fdir_info * fdir_info)
Get port fdir info π
Parameters
portβ The port identifier of the Ethernet device.fdir_infoβ The fdir info of the port
Returns
(0)if successful.(-ENODEV)if port invalid.(-ENOTSUP)if operation not supported.
β rte_pmd_i40e_get_fdir_stats
__rte_experimental int rte_pmd_i40e_get_fdir_stats (uint16_t port, struct rte_eth_fdir_stats * fdir_stat)
Get port fdir status π
Parameters
portβ The port identifier of the Ethernet device.fdir_statβ The fdir status of the port
Returns
(0)if successful.(-ENODEV)if port invalid.(-ENOTSUP)if operation not supported.
π¦ rte_pmd_i40e_set_gre_key_len
__rte_experimental int rte_pmd_i40e_set_gre_key_len (uint16_t port, uint8_t len)
Set GRE key length π
Parameters
portβ The port identifier of the Ethernet device.lenβ Length of gre-key
Returns
(0)if successful.(-ENODEV)if port invalid.(-ENOTSUP)if operation not supported.
π rte_pmd_i40e_set_switch_dev
__rte_experimental int rte_pmd_i40e_set_switch_dev (uint16_t port_id, struct rte_eth_dev * switch_dev)
okay so this one's a whole lore drop π«Ά For ipn3ke, i40e works with FPGA. In this situation, i40e get link status from fpga, fpga works as switch_dev for i40e. This function set switch_dev for i40e.
Parameters
port_idβ port_id of i40e device to be set switch device.switch_devβ target switch device from which i40e device to get link status from.
Returns
(less than 0)if failed.(0)if success.
π rte_pmd_i40e_set_pf_src_prune
__rte_experimental int rte_pmd_i40e_set_pf_src_prune (uint16_t port, uint8_t on)
Enable/Disable source prune on all the PF π
Parameters
portβ The port identifier of the Ethernet device.onβ 1 - Enable source prune. 0 - Disable source prune.
Returns
(0)if successful.(-ENODEV)if port invalid.(-EINVAL)if bad parameter.
π Author
Generated automatically by Doxygen for DPDK from the source code.
and that's a wrap on rte_pmd_i40e.h bestie!! ππ this whole page is DPDK, Version 25.11.3, and it's the man page for rte_pmd_i40e.h(3) β go forth and configure your i40e NIC like the main character you are π no cap, fr fr, slay π
β¨
π¦ where this page comes from
- ubuntu resolute: dpdk-doc 25.11.3-0ubuntu0.26.04.1 Β· BSD-3-Clause
- ubuntu stonking: dpdk-doc 25.11.3-1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms