Skip to content

Commit c207042

Browse files
hpothula-gitjerinjacobk
authored andcommitted
ci: add multiple vf test case
Add test case to verify multiple SDP VFs Signed-off-by: Hanumanth Pothula <hpothula@marvell.com> Change-Id: Ib17dd64a6ccb23d1c74fb9e6aaaf9b4fe85ecb78 Reviewed-on: https://sj1git1.cavium.com/c/IP/SW/dataplane/dpu-offload/+/136154 Tested-by: sa_ip-toolkits-Jenkins <sa_ip-toolkits-jenkins@marvell.com> Reviewed-by: Harman Kalra <hkalra@marvell.com>
1 parent ea98382 commit c207042

File tree

5 files changed

+280
-31
lines changed

5 files changed

+280
-31
lines changed

ci/test/dao-test/common/ep_common_ops.sh

Lines changed: 92 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,13 @@ function ep_common_if_configure()
8888
local vxlan_remote_ip=
8989
local vxlan_local_ip=
9090
local vxlan_vni=
91+
local num_alias=
9192
local vlan_id=
9293
local mtu=
9394

9495
if ! opts=$(getopt \
95-
-l "ip:,pcie-addr:,down,vxlan-remote-ip:,vxlan-local-ip:,vxlan-vni:,vlan-id:,mtu:" \
96-
-- configure_sdp_interface $@); then
96+
-l "ip:,pcie-addr:,down,vxlan-remote-ip:,vxlan-local-ip:,vxlan-vni:,vlan-id:,mtu:,\
97+
alias:" -- configure_sdp_interface $@); then
9798
echo "Failed to parse arguments"
9899
exit 1
99100
fi
@@ -107,6 +108,7 @@ function ep_common_if_configure()
107108
--vxlan-remote-ip) shift; vxlan_remote_ip=$1;;
108109
--vxlan-local-ip) shift; vxlan_local_ip=$1;;
109110
--vlan-id) shift; vlan_id=$1;;
111+
--alias) shift; num_alias=$1;;
110112
--down) down=1;;
111113
--mtu) shift; mtu=$1;;
112114
*) echo "Invalid argument $1"; exit 1;;
@@ -120,10 +122,28 @@ function ep_common_if_configure()
120122
exit
121123
fi
122124

123-
ep_common_cleanup_interfaces $iface_name
125+
if [[ -z $num_alias ]]; then
126+
ep_common_cleanup_interfaces $iface_name
127+
fi
128+
124129

125130
if [[ -z $down ]]; then
126-
if [[ -n $vlan_id ]]; then
131+
if [[ -n $num_alias ]]; then
132+
IFS='.' read -r -a ip_parts <<< "$ip_addr"
133+
for ((i=0; i<$num_alias; i++)); do
134+
ip="${ip_parts[0]}.${ip_parts[1]}.${ip_parts[2]}.${ip_parts[3]}"
135+
if [[ -n $vlan_id ]]; then
136+
vlan_id=$((vlan_id + 1))
137+
ip link add link $iface_name name \
138+
$iface_name.v$vlan_id type vlan id $vlan_id
139+
ip link set dev $iface_name.v$vlan_id up
140+
ip addr add $ip/24 dev $iface_name.v$vlan_id
141+
else
142+
ifconfig $iface_name:$i $ip/24
143+
fi
144+
((ip_parts[3]++))
145+
done
146+
elif [[ -n $vlan_id ]]; then
127147
nmcli dev set $iface_name managed no &> /dev/null || true
128148
ifconfig $iface_name up
129149
ifconfig $iface_name 0
@@ -181,6 +201,31 @@ function ep_common_ping()
181201
fi
182202
}
183203

204+
function ep_common_multiple_pings()
205+
{
206+
local host_ip=$1
207+
local remote_ip=$2
208+
local num_ifs=$3
209+
local remote_if
210+
211+
IFS='.' read -r -a hip <<< "$host_ip"
212+
IFS='.' read -r -a rip <<< "$remote_ip"
213+
214+
for ((i=0; i<$num_ifs; i++)); do
215+
if [[ $(ep_common_ping $host_ip $remote_ip) != "SUCCESS" ]]; then
216+
echo "FAILURE"
217+
exit 1
218+
fi
219+
220+
((hip[3]++))
221+
((rip[3]++))
222+
host_ip="${hip[0]}.${hip[1]}.${hip[2]}.${hip[3]}"
223+
remote_ip="${rip[0]}.${rip[1]}.${rip[2]}.${rip[3]}"
224+
done
225+
226+
echo "SUCCESS"
227+
}
228+
184229
ep_common_cleanup_interfaces()
185230
{
186231
local prefix=$1
@@ -192,10 +237,53 @@ ep_common_cleanup_interfaces()
192237
done
193238
}
194239

240+
ep_host_clean_sdp_host_ifcs()
241+
{
242+
local sdp_vfs="$@"
243+
244+
for vf in $sdp_vfs; do
245+
iface=$(ep_common_if_name_get $vf)
246+
ep_common_cleanup_interfaces $iface
247+
done
248+
}
249+
250+
ep_common_cleanup_alias_ifcs()
251+
{
252+
local pci_addr=$1
253+
local num_alias=$2
254+
local ip=$3
255+
local test_type=$4
256+
local vlan_id=$5
257+
local iface=$(ep_common_if_name_get $pci_addr)
258+
259+
IFS='.' read -r -a ip_parts <<< "$ip"
260+
261+
if [[ $test_type == "vlan" ]]; then
262+
ip link del $iface.v$vlan_id
263+
((vlan_id++))
264+
fi
265+
266+
for ((i=0; i<$num_alias; i++)); do
267+
if [[ $test_type == "plane" ]]; then
268+
ip addr del $ip/24 dev $iface:$i
269+
elif [[ $test_type == "vlan" ]]; then
270+
ip link del $iface.v$vlan_id
271+
((vlan_id++))
272+
fi
273+
((ip_parts[3]++))
274+
ip="${ip_parts[0]}.${ip_parts[1]}.${ip_parts[2]}.${ip_parts[3]}"
275+
done
276+
277+
ep_common_cleanup_interfaces $iface
278+
}
279+
195280
function ep_common_set_numvfs()
196281
{
197282
local dev=$1
198283
local numvfs=$2
284+
local maxvfs=$(cat /sys/bus/pci/devices/$dev/sriov_totalvfs)
285+
286+
numvfs=$((numvfs > maxvfs ? maxvfs : numvfs))
199287

200288
echo 0 > /sys/bus/pci/devices/$dev/sriov_numvfs
201289
sleep 1

ci/test/dao-test/common/ep_host_utils.sh

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,55 @@ function ep_host_shutdown_guest()
342342
sleep 10;
343343
}
344344

345+
function ep_host_sdp_vf_setup()
346+
{
347+
local sdp_pf=$1
348+
local num_vf=$2
349+
local sdp_vfs
350+
351+
set +e # Module may be already loaded
352+
if [[ -n ${EP_HOST_MODULE_DIR:-} ]]; then
353+
insmod $EP_HOST_MODULE_DIR/octeon_ep_vf.ko
354+
else
355+
insmod $EP_DIR/ep_files/octeon_ep_vf.ko
356+
fi
357+
set -e
358+
sleep 2
359+
360+
max_vfs=$(cat /sys/bus/pci/devices/$sdp_pf/sriov_totalvfs)
361+
num_vf=$((num_vf > max_vfs ? max_vfs : num_vf))
362+
363+
echo 0 > /sys/bus/pci/devices/$sdp_pf/sriov_numvfs
364+
sleep 3
365+
echo $num_vf > /sys/bus/pci/devices/$sdp_pf/sriov_numvfs
366+
sleep 10
367+
368+
echo $(ep_common_pcie_addr_get "0xB903" all)
369+
}
370+
371+
function ep_host_sdp_vf_cleanup()
372+
{
373+
local sdp_pf=$1
374+
375+
echo 0 > /sys/bus/pci/devices/$sdp_pf/sriov_numvfs
376+
rmmod octeon_ep_vf
377+
}
378+
379+
function ep_host_sdp_vfs_ip_cnf()
380+
{
381+
local arg1=("$@")
382+
local ip="${!#}"
383+
local sdp_vfs=${arg1[@]:0:${#arg1[@]}-1}
384+
385+
IFS='.' read -r -a ip_parts <<< "$ip"
386+
for vf in $sdp_vfs; do
387+
vf_ip="${ip_parts[0]}.${ip_parts[1]}.${ip_parts[2]}.${ip_parts[3]}"
388+
ep_common_if_configure --pcie-addr $vf --ip $vf_ip
389+
((ip_parts[3]++))
390+
done
391+
}
392+
393+
345394
# If this script is directly invoked from the shell execute the
346395
# op specified
347396
if [[ ${BASH_SOURCE[0]} == ${0} ]]; then

ci/test/dao-test/ovs/meson.build

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ tests = [
1616
['ovs_plain_ping_jumbo_pkt_hw_offload', 'ovs_ping.sh', ''],
1717
['ovs_vlan_ping_jumbo_pkt_hw_offload', 'ovs_ping.sh', ''],
1818
['ovs_vxlan_ping_jumbo_pkt_hw_offload', 'ovs_ping.sh', ''],
19+
['ovs_plain_mul_vf_ping', 'ovs_ping.sh', ''],
20+
['ovs_vlan_mul_vf_ping', 'ovs_ping.sh', ''],
21+
['ovs_plain_mul_vf_ping_hw_offload', 'ovs_ping.sh', ''],
22+
['ovs_vlan_mul_vf_ping_hw_offload', 'ovs_ping.sh', ''],
23+
['ovs_vlan_neg_ping', 'ovs_ping.sh', ''],
24+
['ovs_vlan_neg_ping_hw_offload', 'ovs_ping.sh', ''],
1925
]
2026

2127
test_dir = meson.current_build_dir()

0 commit comments

Comments
 (0)