xref: /linux/tools/testing/selftests/drivers/net/netdevsim/ethtool-common.sh (revision be239684b18e1cdcafcf8c7face4a2f562c745ad)
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0-only
3
4NSIM_ID=$((RANDOM % 1024))
5NSIM_DEV_SYS=/sys/bus/netdevsim/devices/netdevsim$NSIM_ID
6NSIM_DEV_DFS=/sys/kernel/debug/netdevsim/netdevsim$NSIM_ID/ports/0
7NSIM_NETDEV=
8num_passes=0
9num_errors=0
10
11function cleanup_nsim {
12    if [ -e $NSIM_DEV_SYS ]; then
13	echo $NSIM_ID > /sys/bus/netdevsim/del_device
14    fi
15}
16
17function cleanup {
18    cleanup_nsim
19}
20
21trap cleanup EXIT
22
23function check {
24    local code=$1
25    local str=$2
26    local exp_str=$3
27    local exp_fail=$4
28
29    [ -z "$exp_fail" ] && cop="-ne" || cop="-eq"
30
31    if [ $code $cop 0 ]; then
32	((num_errors++))
33	return
34    fi
35
36    if [ "$str" != "$exp_str"  ]; then
37	echo -e "Expected: '$exp_str', got '$str'"
38	((num_errors++))
39	return
40    fi
41
42    ((num_passes++))
43}
44
45function make_netdev {
46    # Make a netdevsim
47    old_netdevs=$(ls /sys/class/net)
48
49    if ! $(lsmod | grep -q netdevsim); then
50	modprobe netdevsim
51    fi
52
53    echo $NSIM_ID $@ > /sys/bus/netdevsim/new_device
54    udevadm settle
55    # get new device name
56    ls /sys/bus/netdevsim/devices/netdevsim${NSIM_ID}/net/
57}
58