lkml.org 
[lkml]   [2019]   [Aug]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.2 42/56] bpf: fix XDP vlan selftests test_xdp_vlan.sh
    Date
    From: Jesper Dangaard Brouer <brouer@redhat.com>

    [ Upstream commit 4de9c89a4982431c4a02739743fd360dc5581f22 ]

    Change BPF selftest test_xdp_vlan.sh to (default) use generic XDP.

    This selftest was created together with a fix for generic XDP, in commit
    297249569932 ("net: fix generic XDP to handle if eth header was
    mangled"). And was suppose to catch if generic XDP was broken again.

    The tests are using veth and assumed that veth driver didn't support
    native driver XDP, thus it used the (ip link set) 'xdp' attach that fell
    back to generic-XDP. But veth gained native-XDP support in 948d4f214fde
    ("veth: Add driver XDP"), which caused this test script to use
    native-XDP.

    Fixes: 948d4f214fde ("veth: Add driver XDP")
    Fixes: 97396ff0bc2d ("selftests/bpf: add XDP selftests for modifying and popping VLAN headers")
    Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    tools/testing/selftests/bpf/test_xdp_vlan.sh | 42 +++++++++++++++++++++++----
    1 file changed, 36 insertions(+), 6 deletions(-)

    --- a/tools/testing/selftests/bpf/test_xdp_vlan.sh
    +++ b/tools/testing/selftests/bpf/test_xdp_vlan.sh
    @@ -1,7 +1,12 @@
    #!/bin/bash
    +# SPDX-License-Identifier: GPL-2.0
    +# Author: Jesper Dangaard Brouer <hawk@kernel.org>

    TESTNAME=xdp_vlan

    +# Default XDP mode
    +XDP_MODE=xdpgeneric
    +
    usage() {
    echo "Testing XDP + TC eBPF VLAN manipulations: $TESTNAME"
    echo ""
    @@ -9,9 +14,23 @@ usage() {
    echo " -v | --verbose : Verbose"
    echo " --flush : Flush before starting (e.g. after --interactive)"
    echo " --interactive : Keep netns setup running after test-run"
    + echo " --mode=XXX : Choose XDP mode (xdp | xdpgeneric | xdpdrv)"
    echo ""
    }

    +valid_xdp_mode()
    +{
    + local mode=$1
    +
    + case "$mode" in
    + xdpgeneric | xdpdrv | xdp)
    + return 0
    + ;;
    + *)
    + return 1
    + esac
    +}
    +
    cleanup()
    {
    local status=$?
    @@ -37,7 +56,7 @@ cleanup()

    # Using external program "getopt" to get --long-options
    OPTIONS=$(getopt -o hvfi: \
    - --long verbose,flush,help,interactive,debug -- "$@")
    + --long verbose,flush,help,interactive,debug,mode: -- "$@")
    if (( $? != 0 )); then
    usage
    echo "selftests: $TESTNAME [FAILED] Error calling getopt, unknown option?"
    @@ -60,6 +79,11 @@ while true; do
    cleanup
    shift
    ;;
    + --mode )
    + shift
    + XDP_MODE=$1
    + shift
    + ;;
    -- )
    shift
    break
    @@ -81,8 +105,14 @@ if [ "$EUID" -ne 0 ]; then
    exit 1
    fi

    -ip link set dev lo xdp off 2>/dev/null > /dev/null
    -if [ $? -ne 0 ];then
    +valid_xdp_mode $XDP_MODE
    +if [ $? -ne 0 ]; then
    + echo "selftests: $TESTNAME [FAILED] unknown XDP mode ($XDP_MODE)"
    + exit 1
    +fi
    +
    +ip link set dev lo xdpgeneric off 2>/dev/null > /dev/null
    +if [ $? -ne 0 ]; then
    echo "selftests: $TESTNAME [SKIP] need ip xdp support"
    exit 0
    fi
    @@ -166,7 +196,7 @@ export FILE=test_xdp_vlan.o

    # First test: Remove VLAN by setting VLAN ID 0, using "xdp_vlan_change"
    export XDP_PROG=xdp_vlan_change
    -ip netns exec ns1 ip link set $DEVNS1 xdp object $FILE section $XDP_PROG
    +ip netns exec ns1 ip link set $DEVNS1 $XDP_MODE object $FILE section $XDP_PROG

    # In ns1: egress use TC to add back VLAN tag 4011
    # (del cmd)
    @@ -187,8 +217,8 @@ ip netns exec ns1 ping -W 2 -c 3 $IPADDR
    # ETH_P_8021Q indication, and this cause overwriting of our changes.
    #
    export XDP_PROG=xdp_vlan_remove_outer2
    -ip netns exec ns1 ip link set $DEVNS1 xdp off
    -ip netns exec ns1 ip link set $DEVNS1 xdp object $FILE section $XDP_PROG
    +ip netns exec ns1 ip link set $DEVNS1 $XDP_MODE off
    +ip netns exec ns1 ip link set $DEVNS1 $XDP_MODE object $FILE section $XDP_PROG

    # Now the namespaces should still be able reach each-other, test with ping:
    ip netns exec ns2 ping -W 2 -c 3 $IPADDR1

    \
     
     \ /
      Last update: 2019-08-08 21:15    [W:4.028 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site