1 /* SPDX-License-Identifier: Apache-2.0
2 * Copyright(c) 2021 Cisco Systems, Inc.
7 #include <dpdk/device/dpdk.h>
9 static const u32 supported_flow_actions_intel =
10 (VNET_FLOW_ACTION_MARK | VNET_FLOW_ACTION_REDIRECT_TO_NODE |
11 VNET_FLOW_ACTION_REDIRECT_TO_QUEUE | VNET_FLOW_ACTION_BUFFER_ADVANCE |
12 VNET_FLOW_ACTION_COUNT | VNET_FLOW_ACTION_DROP | VNET_FLOW_ACTION_RSS);
14 #define DPDK_DRIVERS(...) \
15 (dpdk_driver_name_t[]) \
20 static dpdk_driver_t dpdk_drivers[] = {
22 .drivers = DPDK_DRIVERS ({ "net_ice", "Intel E810 Family" },
23 { "net_igc", "Intel I225 2.5G Family" },
24 { "net_e1000_igb", "Intel e1000" },
25 { "net_e1000_em", "Intel 82540EM (e1000)" }),
27 .supported_flow_actions = supported_flow_actions_intel,
28 .use_intel_phdr_cksum = 1,
31 .drivers = DPDK_DRIVERS ({ "net_ixgbe", "Intel 82599" }),
33 .supported_flow_actions = supported_flow_actions_intel,
34 .use_intel_phdr_cksum = 1,
37 .drivers = DPDK_DRIVERS ({ "net_i40e", "Intel X710/XL710 Family" }),
39 .supported_flow_actions = supported_flow_actions_intel,
40 .use_intel_phdr_cksum = 1,
44 .drivers = DPDK_DRIVERS ({ "net_liovf", "Cavium Lio VF" },
45 { "net_thunderx", "Cavium ThunderX" }),
46 .interface_name_prefix = "VirtualFunctionEthernet",
49 .drivers = DPDK_DRIVERS ({ "net_iavf", "Intel iAVF" },
50 { "net_i40e_vf", "Intel X710/XL710 Family VF" }),
51 .interface_name_prefix = "VirtualFunctionEthernet",
52 .supported_flow_actions = supported_flow_actions_intel,
53 .use_intel_phdr_cksum = 1,
57 .drivers = DPDK_DRIVERS ({ "net_e1000_igb_vf", "Intel e1000 VF" }),
58 .interface_name_prefix = "VirtualFunctionEthernet",
59 .use_intel_phdr_cksum = 1,
62 .drivers = DPDK_DRIVERS ({ "net_ixgbe_vf", "Intel 82599 VF" }),
63 .interface_name_prefix = "VirtualFunctionEthernet",
64 .use_intel_phdr_cksum = 1,
68 .drivers = DPDK_DRIVERS ({ "net_dpaa2", "NXP DPAA2 Mac" }),
69 .interface_name_prefix = "TenGigabitEthernet",
73 DPDK_DRIVERS ({ "net_fm10k", "Intel FM10000 Family Ethernet Switch" }),
74 .interface_name_prefix = "EthernetSwitch",
77 .drivers = DPDK_DRIVERS ({ "net_cxgbe", "Chelsio T4/T5" }),
78 .interface_number_from_port_id = 1,
81 .drivers = DPDK_DRIVERS ({ "net_mlx4", "Mellanox ConnectX-3 Family" },
82 { "net_qede", "Cavium QLogic FastLinQ QL4xxxx" },
83 { "net_bnxt", "Broadcom NetXtreme E/S-Series" }),
86 .drivers = DPDK_DRIVERS ({ "net_virtio_user", "Virtio User" }),
87 .interface_name_prefix = "VirtioUser",
90 .drivers = DPDK_DRIVERS ({ "net_vhost", "VhostEthernet" }),
91 .interface_name_prefix = "VhostEthernet",
94 .drivers = DPDK_DRIVERS ({ "mlx5_pci", "Mellanox ConnectX-4/5/6 Family" },
95 { "net_enic", "Cisco VIC" }),
96 .use_intel_phdr_cksum = 1,
99 .drivers = DPDK_DRIVERS ({ "net_failsafe", "FailsafeEthernet" }),
100 .interface_name_prefix = "FailsafeEthernet",
104 .drivers = DPDK_DRIVERS ({ "AF_PACKET PMD", "af_packet" }),
105 .interface_name_prefix = "af_packet",
108 .drivers = DPDK_DRIVERS ({ "net_netvsc", "Microsoft Hyper-V Netvsc" }),
109 .interface_name_prefix = "NetVSC",
112 .drivers = DPDK_DRIVERS ({ "net_ena", "AWS ENA VF" }),
113 .interface_name_prefix = "VirtualFunctionEthernet",
117 .drivers = DPDK_DRIVERS ({ "net_vmxnet3", "VMware VMXNET3" }),
118 .interface_name_prefix = "GigabitEthernet",
122 .drivers = DPDK_DRIVERS ({ "net_virtio", "Red Hat Virtio" }),
123 .interface_name_prefix = "GigabitEthernet",
130 .drivers = DPDK_DRIVERS ({ "net_gve", "Google vNIC" }),
131 .interface_name_prefix = "VirtualFunctionEthernet",
136 dpdk_driver_find (const char *name, const char **desc)
138 for (int i = 0; i < ARRAY_LEN (dpdk_drivers); i++)
140 dpdk_driver_t *dr = dpdk_drivers + i;
141 dpdk_driver_name_t *dn = dr->drivers;
145 if (name && !strcmp (name, dn->name))