summaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorStephen Hemminger <stephen@networkplumber.org>2018-10-25 14:40:24 -0700
committerDamjan Marion <dmarion@me.com>2018-10-26 23:57:06 +0000
commit5e48bbae26f92fc430d874026d33fca7b371c099 (patch)
tree995142a4925125074d0686025ccc1300f0cfd05c /build
parent557400d778d2fd87e14f3a93f3501f127953c65c (diff)
dpdk: fix mlx5 build on SUSE
Current mlx5 requires libmnl, and SUSE has a bug which installs the header file in incorrect location. Workaround (from upstream) is to use pkg-config. Change-Id: Iadfd2dc0df211876258c31da028af2e8934483b3 Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Diffstat (limited to 'build')
-rw-r--r--build/external/patches/dpdk_18.08/0005-mlx5-use-pkg-config-SUSE-libmnl.patch39
1 files changed, 39 insertions, 0 deletions
diff --git a/build/external/patches/dpdk_18.08/0005-mlx5-use-pkg-config-SUSE-libmnl.patch b/build/external/patches/dpdk_18.08/0005-mlx5-use-pkg-config-SUSE-libmnl.patch
new file mode 100644
index 00000000000..454a85e83d1
--- /dev/null
+++ b/build/external/patches/dpdk_18.08/0005-mlx5-use-pkg-config-SUSE-libmnl.patch
@@ -0,0 +1,39 @@
+From c030dc71ff4069c5b5e5b7889a2926617075f6e3 Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <stephen@networkplumber.org>
+Date: Thu, 25 Oct 2018 10:33:01 -0700
+Subject: [PATCH] mlx5: use pkg-config to handle SUSE libmnl
+
+SUSE decided to install the libmnl include file in a non-standard
+place: /usr/include/libmnl/libmnl/libmnl.h
+
+This was probably a mistake by the SUSE package maintainer,
+but hard to get fixed. Workaround the problem by pkg-config to find
+the necessary include directive for libmnl.
+
+Fixes: 20b71e92ef8e ("net/mlx5: lay groundwork for switch offloads")
+Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
+---
+ drivers/net/mlx5/Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile
+index 1e9c0b42ac16..8497c98ef86e 100644
+--- a/drivers/net/mlx5/Makefile
++++ b/drivers/net/mlx5/Makefile
+@@ -51,6 +51,7 @@ CFLAGS += -D_DEFAULT_SOURCE
+ CFLAGS += -D_XOPEN_SOURCE=600
+ CFLAGS += $(WERROR_FLAGS)
+ CFLAGS += -Wno-strict-prototypes
++CFLAGS += $(shell pkg-config --cflags libmnl)
+ ifeq ($(CONFIG_RTE_LIBRTE_MLX5_DLOPEN_DEPS),y)
+ CFLAGS += -DMLX5_GLUE='"$(LIB_GLUE)"'
+ CFLAGS += -DMLX5_GLUE_VERSION='"$(LIB_GLUE_VERSION)"'
+@@ -57,7 +58,7 @@ LDLIBS += -ldl
+ else
+ LDLIBS += -libverbs -lmlx5
+ endif
+-LDLIBS += -lmnl
++LDLIBS += $(shell pkg-config --libs libmnl)
+ LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
+ LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs
+ LDLIBS += -lrte_bus_pci
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
# Copyright (c) 2020 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2PATCH | BASE | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | eth-l2patch
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
| Test Setup | Setup test | performance
| Test Teardown | Tear down test | performance
|
| Test Template | Local Template
|
| Documentation | *RFC2544: Pkt throughput L2patch test cases*
|
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 patch.
| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 patch\
| ... | DUT1 tested with ${nic_name}.\
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
| ... | Test packets are generated by TG on\
| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
| ... | (flow-group per direction, 254 flows per flow-group) with\
| ... | all packets containing Ethernet header,IPv4 header with static payload.\
| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.

*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so
| ${crypto_type}= | ${None}
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${nic_txq_size}= | 0
| ${nic_pfs}= | 2
| ${nic_vfs}= | 0
| ${osi_layer}= | L2
| ${overhead}= | ${0}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n-ethip4-ip4src254

*** Keywords ***
| Local Template
| | [Documentation]
| | ... | [Cfg] DUT runs L2 patch config with ${phy_cores} phy
| | ... | core(s).
| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
| |
| | ... | *Arguments:*
| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
| | ... | Type: integer, string
| | ... | - phy_cores - Number of physical cores. Type: integer
| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
| |
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply Startup configuration on all VPP DUTs
| | When Initialize layer driver | ${nic_driver}
| | And Initialize layer interface
| | And Initialize L2 patch
| | Then Find NDR and PDR intervals using optimized search

*** Test Cases ***
| 64B-1c-eth-l2patch-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}

| 64B-2c-eth-l2patch-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}

| 64B-4c-eth-l2patch-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}

| 1518B-1c-eth-l2patch-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}

| 1518B-2c-eth-l2patch-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}

| 1518B-4c-eth-l2patch-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}

| 9000B-1c-eth-l2patch-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}

| 9000B-2c-eth-l2patch-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}

| 9000B-4c-eth-l2patch-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}

| IMIX-1c-eth-l2patch-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}

| IMIX-2c-eth-l2patch-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}

| IMIX-4c-eth-l2patch-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}