Skip to content

Commit 10d5312

Browse files
committed
Ethernet: Added force link speed on eth interface via ethtool
- Add --interface/-i and --speed/-s options - Default link speed to 1000 Mbps when no speed is provided - Force link speed on eth interface via ethtool - Update README to document new CLI Signed-off-by: Vamsee Narapareddi <vnarapar@qti.qualcomm.com>
1 parent 4200679 commit 10d5312

File tree

3 files changed

+62
-4
lines changed

3 files changed

+62
-4
lines changed

Runner/suites/Connectivity/Ethernet/README.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,15 @@ SPDX-License-Identifier: BSD-3-Clause-Clear
77

88
This test case validates the basic functionality of the Ethernet interface (`eth0`) on the device. It checks for:
99

10-
- Interface presence
10+
- Interface detection (auto or user-specified)
1111
- Interface status (UP/DOWN)
1212
- Basic connectivity via ping to `8.8.8.8`
13+
- Optional: forcing Ethernet link speed using ethtool
14+
15+
By default, the script:
16+
17+
Auto-detects available Ethernet interfaces if none is specified
18+
Forces the link speed to 1000 Mbps, full duplex, autoneg off (using ethtool) unless a different speed is provided
1319

1420
## Usage
1521

@@ -29,7 +35,7 @@ scp -r common Runner user@target_device_ip:<Path in device>
2935
ssh user@target_device_ip
3036
cd <Path in device>/Runner && ./run-test.sh Ethernet
3137
# Optional: specify preferred interface (e.g., eth1)
32-
./run.sh [preferred-interface]
38+
./run.sh [--interface <preferred-interface>] [--speed <mbps>]
3339
```
3440

3541
## Prerequisites

Runner/suites/Connectivity/Ethernet/run.sh

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,32 @@ rm -f "$res_file" "$summary_file"
3737
log_info "--------------------------------------------------------------------------"
3838
log_info "-------------------Starting $TESTNAME Testcase----------------------------"
3939

40+
# CLI parsing: --interface/-i, --speed/-s
41+
user_iface=""
42+
speed=""
43+
44+
while [ $# -gt 0 ]; do
45+
case "$1" in
46+
--interface|-i)
47+
user_iface="$2"
48+
shift 2
49+
;;
50+
--speed|-s)
51+
speed="$2"
52+
shift 2
53+
;;
54+
*)
55+
log_warn "Unknown argument: $1 (ignoring)"
56+
shift 1
57+
;;
58+
esac
59+
done
60+
61+
[ -z "$speed" ] && speed=1000
62+
4063
# Check for dependencies
4164
check_dependencies ip ping
4265

43-
# User-specified interface (argument) or all detected
44-
user_iface="$1"
4566
if [ -n "$user_iface" ]; then
4667
ETH_IFACES="$user_iface"
4768
log_info "User specified interface: $user_iface"
@@ -62,6 +83,15 @@ any_tested=0
6283

6384
for iface in $ETH_IFACES; do
6485
log_info "---- Testing interface: $iface ----"
86+
model=$(get_machine_model)
87+
88+
if [ "$model" = "Monaco EVK" ] || [ "$model" = "Lemans EVK" ] || [ "$model" = "Lemans Ride Rev3" ] || [ "$model" = "QCS8300 Ride" ] || [ "$model" = "Robotics RB3gen2" ]; then
89+
log_info "Setting MAC-PHY speed to $speed for $model"
90+
ethtool -s "$iface" speed "$speed" autoneg off duplex full
91+
sleep 5
92+
else
93+
log_info "Skipping force speed; model is '$model'"
94+
fi
6595

6696
if ! is_interface_up "$iface"; then
6797
log_warn "$iface is DOWN, skipping"

Runner/utils/functestlib.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3566,4 +3566,26 @@ get_pid() {
35663566
log_info "Process '$process_name' not found."
35673567
return 1
35683568
fi
3569+
}
3570+
3571+
get_machine_model() {
3572+
if [ -r /sys/firmware/devicetree/base/model ]; then
3573+
raw=`cat /sys/firmware/devicetree/base/model`
3574+
else
3575+
log_info "Model not found"
3576+
return 0
3577+
fi
3578+
3579+
# Strip leading "Qualcomm Technologies, Inc. " if present
3580+
case "$raw" in
3581+
"Qualcomm Technologies, Inc. "*)
3582+
model=`printf '%s\n' "$raw" | sed 's/^Qualcomm Technologies, Inc. //'`
3583+
;;
3584+
*)
3585+
model="$raw"
3586+
;;
3587+
esac
3588+
3589+
printf '%s\n' "$model"
3590+
return 0
35693591
}

0 commit comments

Comments
 (0)