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

Reply via email to