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:[email protected]]
Sent: Sunday, December 17, 2017 10:44 AM
To: Roberts, Lee A. <[email protected]>
Cc: [email protected]
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. <[email protected]> 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
> [email protected]
> https://lists.fd.io/mailman/listinfo/vpp-dev
_______________________________________________
vpp-dev mailing list
[email protected]
https://lists.fd.io/mailman/listinfo/vpp-dev