DPDK  20.11.2
rte_ethdev_driver.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2017 Intel Corporation
3  */
4 
5 #ifndef _RTE_ETHDEV_DRIVER_H_
6 #define _RTE_ETHDEV_DRIVER_H_
7 
18 #include <rte_ethdev.h>
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
25 struct rte_hairpin_peer_info;
26 
27 /*
28  * Definitions of all functions exported by an Ethernet driver through the
29  * generic structure of type *eth_dev_ops* supplied in the *rte_eth_dev*
30  * structure associated with an Ethernet device.
31  */
32 
33 typedef int (*eth_dev_configure_t)(struct rte_eth_dev *dev);
36 typedef int (*eth_dev_start_t)(struct rte_eth_dev *dev);
39 typedef int (*eth_dev_stop_t)(struct rte_eth_dev *dev);
42 typedef int (*eth_dev_set_link_up_t)(struct rte_eth_dev *dev);
45 typedef int (*eth_dev_set_link_down_t)(struct rte_eth_dev *dev);
48 typedef int (*eth_dev_close_t)(struct rte_eth_dev *dev);
51 typedef int (*eth_dev_reset_t)(struct rte_eth_dev *dev);
54 typedef int (*eth_is_removed_t)(struct rte_eth_dev *dev);
80 typedef int (*eth_promiscuous_enable_t)(struct rte_eth_dev *dev);
81 
105 typedef int (*eth_promiscuous_disable_t)(struct rte_eth_dev *dev);
106 
130 typedef int (*eth_allmulticast_enable_t)(struct rte_eth_dev *dev);
131 
155 typedef int (*eth_allmulticast_disable_t)(struct rte_eth_dev *dev);
156 
157 typedef int (*eth_link_update_t)(struct rte_eth_dev *dev,
158  int wait_to_complete);
161 typedef int (*eth_stats_get_t)(struct rte_eth_dev *dev,
162  struct rte_eth_stats *igb_stats);
184 typedef int (*eth_stats_reset_t)(struct rte_eth_dev *dev);
185 
186 typedef int (*eth_xstats_get_t)(struct rte_eth_dev *dev,
187  struct rte_eth_xstat *stats, unsigned int n);
190 typedef int (*eth_xstats_get_by_id_t)(struct rte_eth_dev *dev,
191  const uint64_t *ids,
192  uint64_t *values,
193  unsigned int n);
215 typedef int (*eth_xstats_reset_t)(struct rte_eth_dev *dev);
216 
217 typedef int (*eth_xstats_get_names_t)(struct rte_eth_dev *dev,
218  struct rte_eth_xstat_name *xstats_names, unsigned int size);
221 typedef int (*eth_xstats_get_names_by_id_t)(struct rte_eth_dev *dev,
222  struct rte_eth_xstat_name *xstats_names, const uint64_t *ids,
223  unsigned int size);
226 typedef int (*eth_queue_stats_mapping_set_t)(struct rte_eth_dev *dev,
227  uint16_t queue_id,
228  uint8_t stat_idx,
229  uint8_t is_rx);
232 typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
233  struct rte_eth_dev_info *dev_info);
236 typedef const uint32_t *(*eth_dev_supported_ptypes_get_t)(struct rte_eth_dev *dev);
251 typedef int (*eth_dev_ptypes_set_t)(struct rte_eth_dev *dev,
252  uint32_t ptype_mask);
253 
254 typedef int (*eth_queue_start_t)(struct rte_eth_dev *dev,
255  uint16_t queue_id);
258 typedef int (*eth_queue_stop_t)(struct rte_eth_dev *dev,
259  uint16_t queue_id);
262 typedef int (*eth_rx_queue_setup_t)(struct rte_eth_dev *dev,
263  uint16_t rx_queue_id,
264  uint16_t nb_rx_desc,
265  unsigned int socket_id,
266  const struct rte_eth_rxconf *rx_conf,
267  struct rte_mempool *mb_pool);
270 typedef int (*eth_tx_queue_setup_t)(struct rte_eth_dev *dev,
271  uint16_t tx_queue_id,
272  uint16_t nb_tx_desc,
273  unsigned int socket_id,
274  const struct rte_eth_txconf *tx_conf);
277 typedef int (*eth_rx_enable_intr_t)(struct rte_eth_dev *dev,
278  uint16_t rx_queue_id);
281 typedef int (*eth_rx_disable_intr_t)(struct rte_eth_dev *dev,
282  uint16_t rx_queue_id);
285 typedef void (*eth_queue_release_t)(void *queue);
288 typedef int (*eth_fw_version_get_t)(struct rte_eth_dev *dev,
289  char *fw_version, size_t fw_size);
292 typedef int (*eth_tx_done_cleanup_t)(void *txq, uint32_t free_cnt);
295 typedef void (*eth_rxq_info_get_t)(struct rte_eth_dev *dev,
296  uint16_t rx_queue_id, struct rte_eth_rxq_info *qinfo);
297 
298 typedef void (*eth_txq_info_get_t)(struct rte_eth_dev *dev,
299  uint16_t tx_queue_id, struct rte_eth_txq_info *qinfo);
300 
301 typedef int (*eth_burst_mode_get_t)(struct rte_eth_dev *dev,
302  uint16_t queue_id, struct rte_eth_burst_mode *mode);
303 
304 typedef int (*mtu_set_t)(struct rte_eth_dev *dev, uint16_t mtu);
307 typedef int (*vlan_filter_set_t)(struct rte_eth_dev *dev,
308  uint16_t vlan_id,
309  int on);
312 typedef int (*vlan_tpid_set_t)(struct rte_eth_dev *dev,
313  enum rte_vlan_type type, uint16_t tpid);
316 typedef int (*vlan_offload_set_t)(struct rte_eth_dev *dev, int mask);
319 typedef int (*vlan_pvid_set_t)(struct rte_eth_dev *dev,
320  uint16_t vlan_id,
321  int on);
324 typedef void (*vlan_strip_queue_set_t)(struct rte_eth_dev *dev,
325  uint16_t rx_queue_id,
326  int on);
329 typedef int (*flow_ctrl_get_t)(struct rte_eth_dev *dev,
330  struct rte_eth_fc_conf *fc_conf);
333 typedef int (*flow_ctrl_set_t)(struct rte_eth_dev *dev,
334  struct rte_eth_fc_conf *fc_conf);
337 typedef int (*priority_flow_ctrl_set_t)(struct rte_eth_dev *dev,
338  struct rte_eth_pfc_conf *pfc_conf);
341 typedef int (*reta_update_t)(struct rte_eth_dev *dev,
342  struct rte_eth_rss_reta_entry64 *reta_conf,
343  uint16_t reta_size);
346 typedef int (*reta_query_t)(struct rte_eth_dev *dev,
347  struct rte_eth_rss_reta_entry64 *reta_conf,
348  uint16_t reta_size);
351 typedef int (*rss_hash_update_t)(struct rte_eth_dev *dev,
352  struct rte_eth_rss_conf *rss_conf);
355 typedef int (*rss_hash_conf_get_t)(struct rte_eth_dev *dev,
356  struct rte_eth_rss_conf *rss_conf);
359 typedef int (*eth_dev_led_on_t)(struct rte_eth_dev *dev);
362 typedef int (*eth_dev_led_off_t)(struct rte_eth_dev *dev);
365 typedef void (*eth_mac_addr_remove_t)(struct rte_eth_dev *dev, uint32_t index);
368 typedef int (*eth_mac_addr_add_t)(struct rte_eth_dev *dev,
369  struct rte_ether_addr *mac_addr,
370  uint32_t index,
371  uint32_t vmdq);
374 typedef int (*eth_mac_addr_set_t)(struct rte_eth_dev *dev,
375  struct rte_ether_addr *mac_addr);
378 typedef int (*eth_uc_hash_table_set_t)(struct rte_eth_dev *dev,
379  struct rte_ether_addr *mac_addr,
380  uint8_t on);
383 typedef int (*eth_uc_all_hash_table_set_t)(struct rte_eth_dev *dev,
384  uint8_t on);
387 typedef int (*eth_set_queue_rate_limit_t)(struct rte_eth_dev *dev,
388  uint16_t queue_idx,
389  uint16_t tx_rate);
392 typedef int (*eth_mirror_rule_set_t)(struct rte_eth_dev *dev,
393  struct rte_eth_mirror_conf *mirror_conf,
394  uint8_t rule_id,
395  uint8_t on);
398 typedef int (*eth_mirror_rule_reset_t)(struct rte_eth_dev *dev,
399  uint8_t rule_id);
402 typedef int (*eth_udp_tunnel_port_add_t)(struct rte_eth_dev *dev,
403  struct rte_eth_udp_tunnel *tunnel_udp);
406 typedef int (*eth_udp_tunnel_port_del_t)(struct rte_eth_dev *dev,
407  struct rte_eth_udp_tunnel *tunnel_udp);
410 typedef int (*eth_set_mc_addr_list_t)(struct rte_eth_dev *dev,
411  struct rte_ether_addr *mc_addr_set,
412  uint32_t nb_mc_addr);
415 typedef int (*eth_timesync_enable_t)(struct rte_eth_dev *dev);
418 typedef int (*eth_timesync_disable_t)(struct rte_eth_dev *dev);
421 typedef int (*eth_timesync_read_rx_timestamp_t)(struct rte_eth_dev *dev,
422  struct timespec *timestamp,
423  uint32_t flags);
426 typedef int (*eth_timesync_read_tx_timestamp_t)(struct rte_eth_dev *dev,
427  struct timespec *timestamp);
430 typedef int (*eth_timesync_adjust_time)(struct rte_eth_dev *dev, int64_t);
433 typedef int (*eth_timesync_read_time)(struct rte_eth_dev *dev,
434  struct timespec *timestamp);
437 typedef int (*eth_timesync_write_time)(struct rte_eth_dev *dev,
438  const struct timespec *timestamp);
441 typedef int (*eth_read_clock)(struct rte_eth_dev *dev,
442  uint64_t *timestamp);
445 typedef int (*eth_get_reg_t)(struct rte_eth_dev *dev,
446  struct rte_dev_reg_info *info);
449 typedef int (*eth_get_eeprom_length_t)(struct rte_eth_dev *dev);
452 typedef int (*eth_get_eeprom_t)(struct rte_eth_dev *dev,
453  struct rte_dev_eeprom_info *info);
456 typedef int (*eth_set_eeprom_t)(struct rte_eth_dev *dev,
457  struct rte_dev_eeprom_info *info);
460 typedef int (*eth_get_module_info_t)(struct rte_eth_dev *dev,
461  struct rte_eth_dev_module_info *modinfo);
464 typedef int (*eth_get_module_eeprom_t)(struct rte_eth_dev *dev,
465  struct rte_dev_eeprom_info *info);
472  RTE_ETH_FILTER_NONE = 0,
473  RTE_ETH_FILTER_ETHERTYPE,
474  RTE_ETH_FILTER_FLEXIBLE,
475  RTE_ETH_FILTER_SYN,
476  RTE_ETH_FILTER_NTUPLE,
477  RTE_ETH_FILTER_TUNNEL,
478  RTE_ETH_FILTER_FDIR,
479  RTE_ETH_FILTER_HASH,
480  RTE_ETH_FILTER_L2_TUNNEL,
481  RTE_ETH_FILTER_GENERIC,
482 };
483 
489 };
490 
491 typedef int (*eth_filter_ctrl_t)(struct rte_eth_dev *dev,
492  enum rte_filter_type filter_type,
493  enum rte_filter_op filter_op,
494  void *arg);
497 typedef int (*eth_tm_ops_get_t)(struct rte_eth_dev *dev, void *ops);
500 typedef int (*eth_mtr_ops_get_t)(struct rte_eth_dev *dev, void *ops);
503 typedef int (*eth_get_dcb_info)(struct rte_eth_dev *dev,
504  struct rte_eth_dcb_info *dcb_info);
507 typedef int (*eth_pool_ops_supported_t)(struct rte_eth_dev *dev,
508  const char *pool);
528 typedef int (*eth_hairpin_cap_get_t)(struct rte_eth_dev *dev,
529  struct rte_eth_hairpin_cap *cap);
530 
556 typedef int (*eth_rx_hairpin_queue_setup_t)
557  (struct rte_eth_dev *dev, uint16_t rx_queue_id,
558  uint16_t nb_rx_desc,
559  const struct rte_eth_hairpin_conf *conf);
560 
586 typedef int (*eth_tx_hairpin_queue_setup_t)
587  (struct rte_eth_dev *dev, uint16_t tx_queue_id,
588  uint16_t nb_tx_desc,
589  const struct rte_eth_hairpin_conf *hairpin_conf);
590 
619 typedef int (*eth_fec_get_capability_t)(struct rte_eth_dev *dev,
620  struct rte_eth_fec_capa *speed_fec_capa, unsigned int num);
621 
644 typedef int (*eth_fec_get_t)(struct rte_eth_dev *dev,
645  uint32_t *fec_capa);
646 
670 typedef int (*eth_fec_set_t)(struct rte_eth_dev *dev, uint32_t fec_capa);
671 
699 typedef int (*hairpin_get_peer_ports_t)(struct rte_eth_dev *dev,
700  uint16_t *peer_ports, size_t len,
701  uint32_t direction);
702 
724 typedef int (*eth_hairpin_bind_t)(struct rte_eth_dev *dev,
725  uint16_t rx_port);
726 
748 typedef int (*eth_hairpin_unbind_t)(struct rte_eth_dev *dev,
749  uint16_t rx_port);
750 
751 typedef int (*eth_hairpin_queue_peer_update_t)
752  (struct rte_eth_dev *dev, uint16_t peer_queue,
753  struct rte_hairpin_peer_info *current_info,
754  struct rte_hairpin_peer_info *peer_info, uint32_t direction);
757 typedef int (*eth_hairpin_queue_peer_bind_t)
758  (struct rte_eth_dev *dev, uint16_t cur_queue,
759  struct rte_hairpin_peer_info *peer_info, uint32_t direction);
762 typedef int (*eth_hairpin_queue_peer_unbind_t)
763  (struct rte_eth_dev *dev, uint16_t cur_queue, uint32_t direction);
769 struct eth_dev_ops {
770  eth_dev_configure_t dev_configure;
771  eth_dev_start_t dev_start;
772  eth_dev_stop_t dev_stop;
773  eth_dev_set_link_up_t dev_set_link_up;
774  eth_dev_set_link_down_t dev_set_link_down;
775  eth_dev_close_t dev_close;
776  eth_dev_reset_t dev_reset;
777  eth_link_update_t link_update;
778  eth_is_removed_t is_removed;
781  eth_promiscuous_enable_t promiscuous_enable;
782  eth_promiscuous_disable_t promiscuous_disable;
783  eth_allmulticast_enable_t allmulticast_enable;
784  eth_allmulticast_disable_t allmulticast_disable;
785  eth_mac_addr_remove_t mac_addr_remove;
786  eth_mac_addr_add_t mac_addr_add;
787  eth_mac_addr_set_t mac_addr_set;
788  eth_set_mc_addr_list_t set_mc_addr_list;
789  mtu_set_t mtu_set;
791  eth_stats_get_t stats_get;
792  eth_stats_reset_t stats_reset;
793  eth_xstats_get_t xstats_get;
794  eth_xstats_reset_t xstats_reset;
795  eth_xstats_get_names_t xstats_get_names;
797  eth_queue_stats_mapping_set_t queue_stats_mapping_set;
800  eth_dev_infos_get_t dev_infos_get;
801  eth_rxq_info_get_t rxq_info_get;
802  eth_txq_info_get_t txq_info_get;
803  eth_burst_mode_get_t rx_burst_mode_get;
804  eth_burst_mode_get_t tx_burst_mode_get;
805  eth_fw_version_get_t fw_version_get;
806  eth_dev_supported_ptypes_get_t dev_supported_ptypes_get;
808  eth_dev_ptypes_set_t dev_ptypes_set;
811  vlan_filter_set_t vlan_filter_set;
812  vlan_tpid_set_t vlan_tpid_set;
813  vlan_strip_queue_set_t vlan_strip_queue_set;
814  vlan_offload_set_t vlan_offload_set;
815  vlan_pvid_set_t vlan_pvid_set;
817  eth_queue_start_t rx_queue_start;
818  eth_queue_stop_t rx_queue_stop;
819  eth_queue_start_t tx_queue_start;
820  eth_queue_stop_t tx_queue_stop;
821  eth_rx_queue_setup_t rx_queue_setup;
822  eth_queue_release_t rx_queue_release;
824  eth_rx_enable_intr_t rx_queue_intr_enable;
825  eth_rx_disable_intr_t rx_queue_intr_disable;
826  eth_tx_queue_setup_t tx_queue_setup;
827  eth_queue_release_t tx_queue_release;
828  eth_tx_done_cleanup_t tx_done_cleanup;
830  eth_dev_led_on_t dev_led_on;
831  eth_dev_led_off_t dev_led_off;
833  flow_ctrl_get_t flow_ctrl_get;
834  flow_ctrl_set_t flow_ctrl_set;
835  priority_flow_ctrl_set_t priority_flow_ctrl_set;
837  eth_uc_hash_table_set_t uc_hash_table_set;
838  eth_uc_all_hash_table_set_t uc_all_hash_table_set;
840  eth_mirror_rule_set_t mirror_rule_set;
841  eth_mirror_rule_reset_t mirror_rule_reset;
843  eth_udp_tunnel_port_add_t udp_tunnel_port_add;
844  eth_udp_tunnel_port_del_t udp_tunnel_port_del;
846  eth_set_queue_rate_limit_t set_queue_rate_limit;
848  rss_hash_update_t rss_hash_update;
849  rss_hash_conf_get_t rss_hash_conf_get;
850  reta_update_t reta_update;
851  reta_query_t reta_query;
853  eth_get_reg_t get_reg;
854  eth_get_eeprom_length_t get_eeprom_length;
855  eth_get_eeprom_t get_eeprom;
856  eth_set_eeprom_t set_eeprom;
858  eth_get_module_info_t get_module_info;
860  eth_get_module_eeprom_t get_module_eeprom;
863  eth_filter_ctrl_t filter_ctrl;
865  eth_get_dcb_info get_dcb_info;
867  eth_timesync_enable_t timesync_enable;
869  eth_timesync_disable_t timesync_disable;
871  eth_timesync_read_rx_timestamp_t timesync_read_rx_timestamp;
873  eth_timesync_read_tx_timestamp_t timesync_read_tx_timestamp;
875  eth_timesync_adjust_time timesync_adjust_time;
876  eth_timesync_read_time timesync_read_time;
877  eth_timesync_write_time timesync_write_time;
879  eth_read_clock read_clock;
880 
881  eth_xstats_get_by_id_t xstats_get_by_id;
883  eth_xstats_get_names_by_id_t xstats_get_names_by_id;
886  eth_tm_ops_get_t tm_ops_get;
889  eth_mtr_ops_get_t mtr_ops_get;
892  eth_pool_ops_supported_t pool_ops_supported;
895  eth_hairpin_cap_get_t hairpin_cap_get;
897  eth_rx_hairpin_queue_setup_t rx_hairpin_queue_setup;
899  eth_tx_hairpin_queue_setup_t tx_hairpin_queue_setup;
902  eth_fec_get_capability_t fec_get_capability;
904  eth_fec_get_t fec_get;
906  eth_fec_set_t fec_set;
908  hairpin_get_peer_ports_t hairpin_get_peer_ports;
910  eth_hairpin_bind_t hairpin_bind;
912  eth_hairpin_unbind_t hairpin_unbind;
914  eth_hairpin_queue_peer_update_t hairpin_queue_peer_update;
916  eth_hairpin_queue_peer_bind_t hairpin_queue_peer_bind;
918  eth_hairpin_queue_peer_unbind_t hairpin_queue_peer_unbind;
920 };
921 
925 #define RTE_ETH_QUEUE_STATE_STOPPED 0
926 #define RTE_ETH_QUEUE_STATE_STARTED 1
927 #define RTE_ETH_QUEUE_STATE_HAIRPIN 2
928 
941 __rte_internal
942 int rte_eth_dev_is_rx_hairpin_queue(struct rte_eth_dev *dev, uint16_t queue_id);
943 
956 __rte_internal
957 int rte_eth_dev_is_tx_hairpin_queue(struct rte_eth_dev *dev, uint16_t queue_id);
958 
968 __rte_internal
969 struct rte_eth_dev *rte_eth_dev_allocated(const char *name);
970 
980 __rte_internal
981 struct rte_eth_dev *rte_eth_dev_allocate(const char *name);
982 
994 __rte_internal
995 struct rte_eth_dev *rte_eth_dev_attach_secondary(const char *name);
996 
1013 __rte_internal
1014 int rte_eth_dev_release_port(struct rte_eth_dev *eth_dev);
1015 
1027 __rte_internal
1028 void rte_eth_dev_internal_reset(struct rte_eth_dev *dev);
1029 
1047 __rte_internal
1048 int rte_eth_dev_callback_process(struct rte_eth_dev *dev,
1049  enum rte_eth_event_type event, void *ret_param);
1050 
1063 __rte_internal
1064 void rte_eth_dev_probing_finish(struct rte_eth_dev *dev);
1065 
1085 __rte_internal
1086 const struct rte_memzone *
1087 rte_eth_dma_zone_reserve(const struct rte_eth_dev *eth_dev, const char *name,
1088  uint16_t queue_id, size_t size,
1089  unsigned align, int socket_id);
1090 
1103 __rte_internal
1104 int
1105 rte_eth_dma_zone_free(const struct rte_eth_dev *eth_dev, const char *name,
1106  uint16_t queue_id);
1107 
1123 static inline int
1124 rte_eth_linkstatus_set(struct rte_eth_dev *dev,
1125  const struct rte_eth_link *new_link)
1126 {
1127  uint64_t *dev_link = (uint64_t *)&(dev->data->dev_link);
1128  union {
1129  uint64_t val64;
1130  struct rte_eth_link link;
1131  } orig;
1132 
1133  RTE_BUILD_BUG_ON(sizeof(*new_link) != sizeof(uint64_t));
1134 
1135  orig.val64 = __atomic_exchange_n(dev_link, *(const uint64_t *)new_link,
1136  __ATOMIC_SEQ_CST);
1137 
1138  return (orig.link.link_status == new_link->link_status) ? -1 : 0;
1139 }
1140 
1150 static inline void
1151 rte_eth_linkstatus_get(const struct rte_eth_dev *dev,
1152  struct rte_eth_link *link)
1153 {
1154  uint64_t *src = (uint64_t *)&(dev->data->dev_link);
1155  uint64_t *dst = (uint64_t *)link;
1156 
1157  RTE_BUILD_BUG_ON(sizeof(*link) != sizeof(uint64_t));
1158 
1159  *dst = __atomic_load_n(src, __ATOMIC_SEQ_CST);
1160 }
1161 
1176 __rte_internal
1177 int
1178 rte_eth_switch_domain_alloc(uint16_t *domain_id);
1179 
1192 __rte_internal
1193 int
1194 rte_eth_switch_domain_free(uint16_t domain_id);
1195 
1198  uint16_t ports[RTE_MAX_ETHPORTS];
1200  uint16_t nb_ports;
1202  uint16_t representor_ports[RTE_MAX_ETHPORTS];
1206 };
1207 
1219 __rte_internal
1220 int
1221 rte_eth_devargs_parse(const char *devargs, struct rte_eth_devargs *eth_devargs);
1222 
1223 
1224 typedef int (*ethdev_init_t)(struct rte_eth_dev *ethdev, void *init_params);
1225 typedef int (*ethdev_bus_specific_init)(struct rte_eth_dev *ethdev,
1226  void *bus_specific_init_params);
1227 
1249 __rte_internal
1250 int
1251 rte_eth_dev_create(struct rte_device *device, const char *name,
1252  size_t priv_data_size,
1253  ethdev_bus_specific_init bus_specific_init, void *bus_init_params,
1254  ethdev_init_t ethdev_init, void *init_params);
1255 
1256 
1257 typedef int (*ethdev_uninit_t)(struct rte_eth_dev *ethdev);
1258 
1271 __rte_internal
1272 int
1273 rte_eth_dev_destroy(struct rte_eth_dev *ethdev, ethdev_uninit_t ethdev_uninit);
1274 
1296 __rte_internal
1297 int
1298 rte_eth_hairpin_queue_peer_update(uint16_t peer_port, uint16_t peer_queue,
1299  struct rte_hairpin_peer_info *cur_info,
1300  struct rte_hairpin_peer_info *peer_info,
1301  uint32_t direction);
1302 
1323 __rte_internal
1324 int
1325 rte_eth_hairpin_queue_peer_bind(uint16_t cur_port, uint16_t cur_queue,
1326  struct rte_hairpin_peer_info *peer_info,
1327  uint32_t direction);
1328 
1347 __rte_internal
1348 int
1349 rte_eth_hairpin_queue_peer_unbind(uint16_t cur_port, uint16_t cur_queue,
1350  uint32_t direction);
1351 
1352 
1353 /*
1354  * Legacy ethdev API used internally by drivers.
1355  */
1356 
1361 #define RTE_ETHTYPE_FLAGS_MAC 0x0001
1362 #define RTE_ETHTYPE_FLAGS_DROP 0x0002
1368 struct rte_eth_ethertype_filter {
1369  struct rte_ether_addr mac_addr;
1370  uint16_t ether_type;
1371  uint16_t flags;
1372  uint16_t queue;
1373 };
1374 
1381  uint8_t hig_pri;
1382  uint16_t queue;
1383 };
1384 
1388 #define ETH_TUNNEL_FILTER_OMAC 0x01
1389 #define ETH_TUNNEL_FILTER_OIP 0x02
1390 #define ETH_TUNNEL_FILTER_TENID 0x04
1391 #define ETH_TUNNEL_FILTER_IMAC 0x08
1392 #define ETH_TUNNEL_FILTER_IVLAN 0x10
1393 #define ETH_TUNNEL_FILTER_IIP 0x20
1395 #define RTE_TUNNEL_FILTER_IMAC_IVLAN (ETH_TUNNEL_FILTER_IMAC | \
1396  ETH_TUNNEL_FILTER_IVLAN)
1397 #define RTE_TUNNEL_FILTER_IMAC_IVLAN_TENID (ETH_TUNNEL_FILTER_IMAC | \
1398  ETH_TUNNEL_FILTER_IVLAN | \
1399  ETH_TUNNEL_FILTER_TENID)
1400 #define RTE_TUNNEL_FILTER_IMAC_TENID (ETH_TUNNEL_FILTER_IMAC | \
1401  ETH_TUNNEL_FILTER_TENID)
1402 #define RTE_TUNNEL_FILTER_OMAC_TENID_IMAC (ETH_TUNNEL_FILTER_OMAC | \
1403  ETH_TUNNEL_FILTER_TENID | \
1404  ETH_TUNNEL_FILTER_IMAC)
1405 
1412 };
1413 
1420  uint16_t inner_vlan;
1427  union {
1428  uint32_t ipv4_addr;
1429  uint32_t ipv6_addr[4];
1430  } ip_addr;
1432  uint16_t filter_type;
1434  uint32_t tenant_id;
1435  uint16_t queue_id;
1436 };
1437 
1438 #ifdef __cplusplus
1439 }
1440 #endif
1441 
1442 #endif /* _RTE_ETHDEV_DRIVER_H_ */
__rte_internal int rte_eth_switch_domain_free(uint16_t domain_id)
rte_tunnel_iptype
uint16_t nb_representor_ports
__rte_internal int rte_eth_dev_create(struct rte_device *device, const char *name, size_t priv_data_size, ethdev_bus_specific_init bus_specific_init, void *bus_init_params, ethdev_init_t ethdev_init, void *init_params)
union rte_eth_tunnel_filter_conf::@158 ip_addr
__rte_internal int rte_eth_switch_domain_alloc(uint16_t *domain_id)
struct rte_ether_addr outer_mac
#define RTE_BUILD_BUG_ON(condition)
Definition: rte_common.h:375
struct rte_ether_addr inner_mac
__rte_internal const struct rte_memzone * rte_eth_dma_zone_reserve(const struct rte_eth_dev *eth_dev, const char *name, uint16_t queue_id, size_t size, unsigned align, int socket_id)
__rte_internal int rte_eth_devargs_parse(const char *devargs, struct rte_eth_devargs *eth_devargs)
__rte_internal int rte_eth_dma_zone_free(const struct rte_eth_dev *eth_dev, const char *name, uint16_t queue_id)
int(* eth_is_removed_t)(struct rte_eth_dev *dev)
__rte_internal int rte_eth_dev_destroy(struct rte_eth_dev *ethdev, ethdev_uninit_t ethdev_uninit)
rte_vlan_type
Definition: rte_ethdev.h:422
enum rte_eth_tunnel_type tunnel_type
int32_t socket_id
Definition: rte_memzone.h:65
rte_filter_type
rte_filter_op
rte_eth_tunnel_type
Definition: rte_ethdev.h:1213
char name[RTE_MEMZONE_NAMESIZE]
Definition: rte_memzone.h:53
enum rte_tunnel_iptype ip_type
uint16_t representor_ports[RTE_MAX_ETHPORTS]
rte_eth_event_type
Definition: rte_ethdev.h:3454