Re: [vpp-dev] VPP support for 25GbE DPDK ports?

2018-01-12 Thread Roberts, Lee A.
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?

2017-12-17 Thread Damjan Marion

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?

2017-12-15 Thread Roberts, Lee A.
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