VPP 17.10 gives the following error messages when using XXV710-DA2 cards: Jan 11 15:20:08 tqt100 vnet[30861]: dpdk_update_link_state:1337: unknown link speed 25000 Jan 11 15:20:14 tqt100 vnet[30861]: message repeated 7 times: [ dpdk_update_link_state:1337: unknown link speed 25000] Jan 11 16:15:10 tqt100 vnet[10927]: dpdk_update_link_state:1337: unknown link speed 25000 Jan 11 16:15:10 tqt100 vnet[10927]: message repeated 7 times: [ dpdk_update_link_state:1337: unknown link speed 25000]
- Lee Roberts -----Original Message----- From: Damjan Marion [mailto:dmarion.li...@gmail.com] Sent: Sunday, December 17, 2017 10:44 AM To: Roberts, Lee A. <lee.robe...@hpe.com> Cc: vpp-dev@lists.fd.io Subject: Re: [vpp-dev] VPP support for 25GbE DPDK ports? Please use 17.10 or master.I use XXV710 (2x25G) for perf testing and they work pretty well on the latest master. > On 16 Dec 2017, at 00:22, Roberts, Lee A. <lee.robe...@hpe.com> wrote: > > I'm new to using VPP and encountered problems getting VPP to use DPDK on my > Intel XXV710-DA2 cards. Using a base of v17.07, I get messages about > "unknown link speed 25000": > > Dec 15 10:57:58 tqt100 vpp[5244]: /usr/bin/vpp[5244]: > dpdk_update_link_state:1321: unknown link speed 25000 > Dec 15 10:57:58 tqt100 /usr/bin/vpp[5244]: dpdk_update_link_state:1321: > unknown link speed 25000 > > I've made changes to a number of files to enable the 25GbE ports, plus a few > other > speeds that may be of interest. Might this be of general interest? The > following changes > are relative to the current "master". > > - Lee Roberts > > > diff --git a/src/plugins/dpdk/device/dpdk.h b/src/plugins/dpdk/device/dpdk.h > index 770da6e..745f3b8 100644 > --- a/src/plugins/dpdk/device/dpdk.h > +++ b/src/plugins/dpdk/device/dpdk.h > @@ -94,10 +94,14 @@ typedef enum > typedef enum > { > VNET_DPDK_PORT_TYPE_ETH_1G, > + VNET_DPDK_PORT_TYPE_ETH_2_5G, > + VNET_DPDK_PORT_TYPE_ETH_5G, > VNET_DPDK_PORT_TYPE_ETH_10G, > + VNET_DPDK_PORT_TYPE_ETH_20G, > VNET_DPDK_PORT_TYPE_ETH_25G, > VNET_DPDK_PORT_TYPE_ETH_40G, > VNET_DPDK_PORT_TYPE_ETH_50G, > + VNET_DPDK_PORT_TYPE_ETH_56G, > VNET_DPDK_PORT_TYPE_ETH_100G, > VNET_DPDK_PORT_TYPE_ETH_BOND, > VNET_DPDK_PORT_TYPE_ETH_SWITCH, > diff --git a/src/plugins/dpdk/device/format.c > b/src/plugins/dpdk/device/format.c > index 8ea65c1..ddd6762 100644 > --- a/src/plugins/dpdk/device/format.c > +++ b/src/plugins/dpdk/device/format.c > @@ -180,10 +180,22 @@ format_dpdk_device_name (u8 * s, va_list * args) > device_name = "GigabitEthernet"; > break; > > + case VNET_DPDK_PORT_TYPE_ETH_2_5G: > + device_name = "Two_FiveGigabitEthernet"; > + break; > + > + case VNET_DPDK_PORT_TYPE_ETH_5G: > + device_name = "FiveGigabitEthernet"; > + break; > + > case VNET_DPDK_PORT_TYPE_ETH_10G: > device_name = "TenGigabitEthernet"; > break; > > + case VNET_DPDK_PORT_TYPE_ETH_20G: > + device_name = "TwentyGigabitEthernet"; > + break; > + > case VNET_DPDK_PORT_TYPE_ETH_25G: > device_name = "TwentyFiveGigabitEthernet"; > break; > @@ -196,6 +208,10 @@ format_dpdk_device_name (u8 * s, va_list * args) > device_name = "FiftyGigabitEthernet"; > break; > > + case VNET_DPDK_PORT_TYPE_ETH_56G: > + device_name = "FiftySixGigabitEthernet"; > + break; > + > case VNET_DPDK_PORT_TYPE_ETH_100G: > device_name = "HundredGigabitEthernet"; > break; > diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c > index 6041a3c..5f55c16 100755 > --- a/src/plugins/dpdk/device/init.c > +++ b/src/plugins/dpdk/device/init.c > @@ -62,14 +62,22 @@ port_type_from_speed_capa (struct rte_eth_dev_info > *dev_info) > > if (dev_info->speed_capa & ETH_LINK_SPEED_100G) > return VNET_DPDK_PORT_TYPE_ETH_100G; > + else if (dev_info->speed_capa & ETH_LINK_SPEED_56G) > + return VNET_DPDK_PORT_TYPE_ETH_56G; > else if (dev_info->speed_capa & ETH_LINK_SPEED_50G) > return VNET_DPDK_PORT_TYPE_ETH_50G; > else if (dev_info->speed_capa & ETH_LINK_SPEED_40G) > return VNET_DPDK_PORT_TYPE_ETH_40G; > else if (dev_info->speed_capa & ETH_LINK_SPEED_25G) > return VNET_DPDK_PORT_TYPE_ETH_25G; > + else if (dev_info->speed_capa & ETH_LINK_SPEED_20G) > + return VNET_DPDK_PORT_TYPE_ETH_20G; > else if (dev_info->speed_capa & ETH_LINK_SPEED_10G) > return VNET_DPDK_PORT_TYPE_ETH_10G; > + else if (dev_info->speed_capa & ETH_LINK_SPEED_5G) > + return VNET_DPDK_PORT_TYPE_ETH_5G; > + else if (dev_info->speed_capa & ETH_LINK_SPEED_2_5G) > + return VNET_DPDK_PORT_TYPE_ETH_2_5G; > else if (dev_info->speed_capa & ETH_LINK_SPEED_1G) > return VNET_DPDK_PORT_TYPE_ETH_1G; > > @@ -1364,12 +1372,33 @@ dpdk_update_link_state (dpdk_device_t * xd, f64 now) > case ETH_SPEED_NUM_1G: > hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_1G; > break; > + case ETH_SPEED_NUM_2_5G: > + hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_2_5G; > + break; > + case ETH_SPEED_NUM_5G: > + hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_5G; > + break; > case ETH_SPEED_NUM_10G: > hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_10G; > break; > + case ETH_SPEED_NUM_20G: > + hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_20G; > + break; > + case ETH_SPEED_NUM_25G: > + hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_25G; > + break; > case ETH_SPEED_NUM_40G: > hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_40G; > break; > + case ETH_SPEED_NUM_50G: > + hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_50G; > + break; > + case ETH_SPEED_NUM_56G: > + hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_56G; > + break; > + case ETH_SPEED_NUM_100G: > + hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_100G; > + break; > case 0: > break; > default: > diff --git a/src/vnet/interface.h b/src/vnet/interface.h > index 5ca489d..d0e4d00 100644 > --- a/src/vnet/interface.h > +++ b/src/vnet/interface.h > @@ -405,22 +405,34 @@ typedef struct vnet_hw_interface_t > #define VNET_HW_INTERFACE_FLAG_SPEED_10M (1 << 3) > #define VNET_HW_INTERFACE_FLAG_SPEED_100M (1 << 4) > #define VNET_HW_INTERFACE_FLAG_SPEED_1G (1 << 5) > -#define VNET_HW_INTERFACE_FLAG_SPEED_10G (1 << 6) > -#define VNET_HW_INTERFACE_FLAG_SPEED_40G (1 << 7) > -#define VNET_HW_INTERFACE_FLAG_SPEED_100G (1 << 8) > +#define VNET_HW_INTERFACE_FLAG_SPEED_2_5G (1 << 6) > +#define VNET_HW_INTERFACE_FLAG_SPEED_5G (1 << 7) > +#define VNET_HW_INTERFACE_FLAG_SPEED_10G (1 << 8) > +#define VNET_HW_INTERFACE_FLAG_SPEED_20G (1 << 9) > +#define VNET_HW_INTERFACE_FLAG_SPEED_25G (1 << 10) > +#define VNET_HW_INTERFACE_FLAG_SPEED_40G (1 << 11) > +#define VNET_HW_INTERFACE_FLAG_SPEED_50G (1 << 12) > +#define VNET_HW_INTERFACE_FLAG_SPEED_56G (1 << 13) > +#define VNET_HW_INTERFACE_FLAG_SPEED_100G (1 << 14) > #define VNET_HW_INTERFACE_FLAG_SPEED_MASK \ > (VNET_HW_INTERFACE_FLAG_SPEED_10M | \ > VNET_HW_INTERFACE_FLAG_SPEED_100M | \ > VNET_HW_INTERFACE_FLAG_SPEED_1G | \ > + VNET_HW_INTERFACE_FLAG_SPEED_2_5G | \ > + VNET_HW_INTERFACE_FLAG_SPEED_5G | \ > VNET_HW_INTERFACE_FLAG_SPEED_10G | \ > + VNET_HW_INTERFACE_FLAG_SPEED_20G | \ > + VNET_HW_INTERFACE_FLAG_SPEED_25G | \ > VNET_HW_INTERFACE_FLAG_SPEED_40G | \ > + VNET_HW_INTERFACE_FLAG_SPEED_50G | \ > + VNET_HW_INTERFACE_FLAG_SPEED_56G | \ > VNET_HW_INTERFACE_FLAG_SPEED_100G) > > /* rx mode flags */ > -#define VNET_HW_INTERFACE_FLAG_SUPPORTS_INT_MODE (1 << 10) > +#define VNET_HW_INTERFACE_FLAG_SUPPORTS_INT_MODE (1 << 16) > > /* tx checksum offload */ > -#define VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD (1 << 11) > +#define VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD (1 << 17) > > /* Hardware address as vector. Zero (e.g. zero-length vector) if no > address for this class (e.g. PPP). */ > diff --git a/src/vpp/api/test_client.c b/src/vpp/api/test_client.c > index 52833eb..4aa5821 100644 > --- a/src/vpp/api/test_client.c > +++ b/src/vpp/api/test_client.c > @@ -133,12 +133,30 @@ vl_api_sw_interface_details_t_handler > (vl_api_sw_interface_details_t * mp) > case VNET_HW_INTERFACE_FLAG_SPEED_1G: > speed = "1Gbps"; > break; > + case VNET_HW_INTERFACE_FLAG_SPEED_2_5G: > + speed = "2.5Gbps"; > + break; > + case VNET_HW_INTERFACE_FLAG_SPEED_5G: > + speed = "5Gbps"; > + break; > case VNET_HW_INTERFACE_FLAG_SPEED_10G: > speed = "10Gbps"; > break; > + case VNET_HW_INTERFACE_FLAG_SPEED_20G: > + speed = "20Gbps"; > + break; > + case VNET_HW_INTERFACE_FLAG_SPEED_25G: > + speed = "25Gbps"; > + break; > case VNET_HW_INTERFACE_FLAG_SPEED_40G: > speed = "40Gbps"; > break; > + case VNET_HW_INTERFACE_FLAG_SPEED_50G: > + speed = "50Gbps"; > + break; > + case VNET_HW_INTERFACE_FLAG_SPEED_56G: > + speed = "56Gbps"; > + break; > case VNET_HW_INTERFACE_FLAG_SPEED_100G: > speed = "100Gbps"; > break; > > _______________________________________________ > vpp-dev mailing list > vpp-dev@lists.fd.io > https://lists.fd.io/mailman/listinfo/vpp-dev _______________________________________________ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev