Re: [vpp-dev] VPP support for 25GbE DPDK ports?
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
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.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 |=
[vpp-dev] VPP support for 25GbE DPDK ports?
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