Skip to content

Commit f52cb54

Browse files
authored
Merge pull request qualcomm-linux#189 from smuppand/wifi-connectivity
WiFi connectivity: CLI creds for Dynamic/Manual IP + remoteproc firmware fix
2 parents 72cf028 + 9f65291 commit f52cb54

File tree

3 files changed

+131
-22
lines changed

3 files changed

+131
-22
lines changed

Runner/suites/Connectivity/WiFi/WiFi_Dynamic_IP/run.sh

Lines changed: 75 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#!/bin/sh
2-
32
# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
43
# SPDX-License-Identifier: BSD-3-Clause-Clear
54

@@ -33,42 +32,106 @@ TESTNAME="WiFi_Dynamic_IP"
3332
test_path=$(find_test_case_by_name "$TESTNAME")
3433
cd "$test_path" || exit 1
3534

35+
# ---------------- CLI (SSID/PASSWORD) ----------------
36+
SSID=""
37+
PASSWORD=""
38+
39+
while [ $# -gt 0 ]; do
40+
case "$1" in
41+
--ssid)
42+
shift
43+
if [ -n "${1:-}" ]; then
44+
SSID="$1"
45+
fi
46+
;;
47+
--password)
48+
shift
49+
if [ -n "${1:-}" ]; then
50+
PASSWORD="$1"
51+
fi
52+
;;
53+
--help|-h)
54+
echo "Usage: $0 [--ssid SSID] [--password PASS]"
55+
exit 0
56+
;;
57+
*)
58+
log_warn "Unknown argument: $1"
59+
;;
60+
esac
61+
shift
62+
done
63+
3664
log_info "-------------------------------------------------------------"
3765
log_info "------------------- Starting $TESTNAME Test -----------------"
66+
log_info "Host: $(hostname 2>/dev/null || printf 'unknown')"
67+
log_info "Kernel: $(uname -r 2>/dev/null || printf 'unknown')"
68+
log_info "Date: $(date -u 2>/dev/null || printf 'unknown')"
3869

3970
# Credential extraction
40-
creds=$(get_wifi_credentials "$1" "$2") || log_skip_exit "$TESTNAME" "WiFi: SSID and/or password missing. Skipping test." wifi_cleanup ""
71+
creds=$(get_wifi_credentials "$SSID" "$PASSWORD") || \
72+
log_skip_exit "$TESTNAME" "WiFi: SSID and/or password missing. Skipping test." wifi_cleanup ""
73+
4174
SSID=$(echo "$creds" | awk '{print $1}')
4275
PASSWORD=$(echo "$creds" | awk '{print $2}')
76+
4377
log_info "Using SSID='$SSID' and PASSWORD='[hidden]'"
4478

4579
check_dependencies iw ping
4680

4781
# If not a kernel-only/minimal build, systemd is checked, else skipped automatically
48-
check_systemd_services systemd-networkd.service || log_fail_exit "$TESTNAME" "Network services check failed" wifi_cleanup ""
82+
log_info "Checking network service: systemd-networkd.service"
83+
check_systemd_services systemd-networkd.service || \
84+
log_fail_exit "$TESTNAME" "Network services check failed" wifi_cleanup ""
85+
86+
WIFI_IFACE=$(get_wifi_interface) || \
87+
log_fail_exit "$TESTNAME" "No WiFi interface found" wifi_cleanup ""
4988

50-
WIFI_IFACE=$(get_wifi_interface) || log_fail_exit "$TESTNAME" "No WiFi interface found" wifi_cleanup ""
5189
log_info "Using WiFi interface: $WIFI_IFACE"
5290

91+
# Prepare a ping log file for command output (appended across retries)
92+
PING_LOG="./wifi_ping_${WIFI_IFACE}.log"
93+
: > "$PING_LOG"
94+
log_info "Ping output will be logged to: $PING_LOG"
95+
5396
# nmcli with retry
97+
log_info "Attempting connection via nmcli…"
5498
if wifi_connect_nmcli "$WIFI_IFACE" "$SSID" "$PASSWORD"; then
5599
IP=$(wifi_get_ip "$WIFI_IFACE")
56-
[ -z "$IP" ] && log_fail_exit "$TESTNAME" "No IP after nmcli" wifi_cleanup "$WIFI_IFACE"
57-
if retry_command "ping -I \"$WIFI_IFACE\" -c 3 -W 2 8.8.8.8 >/dev/null 2>&1" 3 3; then
58-
log_pass_exit "$TESTNAME" "Internet connectivity verified via ping" wifi_cleanup "$WIFI_IFACE"
100+
101+
if [ -z "$IP" ]; then
102+
log_fail_exit "$TESTNAME" "No IP after nmcli" wifi_cleanup "$WIFI_IFACE"
103+
fi
104+
105+
log_info "Acquired IP via nmcli: $IP"
106+
107+
PING_CMD="ping -I \"$WIFI_IFACE\" -c 3 -W 2 8.8.8.8 2>&1 | tee -a \"$PING_LOG\""
108+
log_info "Connectivity check command: $PING_CMD"
109+
110+
if retry_command "$PING_CMD" 3 3; then
111+
log_pass_exit "$TESTNAME" "Internet connectivity verified via ping (iface=$WIFI_IFACE ip=$IP)" wifi_cleanup "$WIFI_IFACE"
59112
else
60-
log_fail_exit "$TESTNAME" "Ping test failed after nmcli connection" wifi_cleanup "$WIFI_IFACE"
113+
log_fail_exit "$TESTNAME" "Ping test failed after nmcli connection (iface=$WIFI_IFACE ip=$IP). See $PING_LOG" wifi_cleanup "$WIFI_IFACE"
61114
fi
62115
fi
63116

64117
# wpa_supplicant+udhcpc with retry
118+
log_info "Attempting connection via wpa_supplicant + udhcpc…"
65119
if wifi_connect_wpa_supplicant "$WIFI_IFACE" "$SSID" "$PASSWORD"; then
66120
IP=$(wifi_get_ip "$WIFI_IFACE")
67-
[ -z "$IP" ] && log_fail_exit "$TESTNAME" "No IP after wpa_supplicant" wifi_cleanup "$WIFI_IFACE"
68-
if retry_command "ping -I \"$WIFI_IFACE\" -c 3 -W 2 8.8.8.8 >/dev/null 2>&1" 3 3; then
69-
log_pass_exit "$TESTNAME" "Internet connectivity verified via ping" wifi_cleanup "$WIFI_IFACE"
121+
122+
if [ -z "$IP" ]; then
123+
log_fail_exit "$TESTNAME" "No IP after wpa_supplicant" wifi_cleanup "$WIFI_IFACE"
124+
fi
125+
126+
log_info "Acquired IP via wpa_supplicant: $IP"
127+
128+
PING_CMD="ping -I \"$WIFI_IFACE\" -c 3 -W 2 8.8.8.8 2>&1 | tee -a \"$PING_LOG\""
129+
log_info "Connectivity check command: $PING_CMD"
130+
131+
if retry_command "$PING_CMD" 3 3; then
132+
log_pass_exit "$TESTNAME" "Internet connectivity verified via ping (iface=$WIFI_IFACE ip=$IP)" wifi_cleanup "$WIFI_IFACE"
70133
else
71-
log_fail_exit "$TESTNAME" "Ping test failed after wpa_supplicant connection" wifi_cleanup "$WIFI_IFACE"
134+
log_fail_exit "$TESTNAME" "Ping test failed after wpa_supplicant connection (iface=$WIFI_IFACE ip=$IP). See $PING_LOG" wifi_cleanup "$WIFI_IFACE"
72135
fi
73136
fi
74137

Runner/suites/Connectivity/WiFi/WiFi_Manual_IP/run.sh

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,32 +29,65 @@ fi
2929
. "$TOOLS/functestlib.sh"
3030

3131
TESTNAME="WiFi_Manual_IP"
32-
test_path=$(find_test_case_by_name "$TESTNAME")
32+
test_path="$(find_test_case_by_name "$TESTNAME")"
3333
cd "$test_path" || exit 1
3434

3535
log_info "--------------------------------------------------------------------------"
3636
log_info "-------------------Starting $TESTNAME Testcase----------------------------"
3737
log_info "=== Test Initialization ==="
3838

39+
# ---------------- CLI (SSID/PASSWORD) ----------------
40+
SSID=""
41+
PASSWORD=""
42+
43+
while [ $# -gt 0 ]; do
44+
case "$1" in
45+
--ssid)
46+
shift
47+
if [ -n "${1:-}" ]; then
48+
SSID="$1"
49+
fi
50+
;;
51+
--password)
52+
shift
53+
if [ -n "${1:-}" ]; then
54+
PASSWORD="$1"
55+
fi
56+
;;
57+
--help|-h)
58+
echo "Usage: $0 [--ssid SSID] [--password PASS]"
59+
exit 0
60+
;;
61+
*)
62+
log_warn "Unknown argument: $1"
63+
;;
64+
esac
65+
shift
66+
done
67+
3968
# Trap to always restore udhcpc script
4069
trap 'restore_udhcpc_script' EXIT
4170

42-
# Credential extraction (from arguments, env, or ssid_list.txt)
43-
if ! CRED=$(get_wifi_credentials "$1" "$2") || [ -z "$CRED" ]; then
71+
# Credential extraction (from CLI, env, or ssid_list.txt via helper)
72+
if ! CRED="$(get_wifi_credentials "$SSID" "$PASSWORD")" || [ -z "$CRED" ]; then
4473
log_skip_exit "$TESTNAME" "WiFi: SSID and/or password missing. Skipping test."
4574
fi
4675

47-
SSID=$(echo "$CRED" | awk '{print $1}')
48-
PASSWORD=$(echo "$CRED" | awk '{print $2}')
76+
SSID="$(echo "$CRED" | awk '{print $1}')"
77+
PASSWORD="$(echo "$CRED" | awk '{print $2}')"
4978
log_info "Using SSID='$SSID' and PASSWORD='[hidden]'"
5079

5180
check_dependencies iw wpa_supplicant udhcpc ip
5281

53-
WIFI_IF=$(get_wifi_interface)
54-
[ -z "$WIFI_IF" ] && log_fail_exit "$TESTNAME" "No WiFi interface detected."
82+
WIFI_IF="$(get_wifi_interface)"
83+
if [ -z "$WIFI_IF" ]; then
84+
log_fail_exit "$TESTNAME" "No WiFi interface detected."
85+
fi
5586

56-
UDHCPC_SCRIPT=$(ensure_udhcpc_script)
57-
[ ! -x "$UDHCPC_SCRIPT" ] && log_fail_exit "$TESTNAME" "Failed to create udhcpc script."
87+
UDHCPC_SCRIPT="$(ensure_udhcpc_script)"
88+
if [ ! -x "$UDHCPC_SCRIPT" ]; then
89+
log_fail_exit "$TESTNAME" "Failed to create udhcpc script."
90+
fi
5891

5992
wifi_cleanup() {
6093
killall -q wpa_supplicant 2>/dev/null
@@ -76,7 +109,7 @@ sleep 4
76109
udhcpc -i "$WIFI_IF" -s "$UDHCPC_SCRIPT" -n -q &
77110
sleep 8
78111

79-
IP=$(ip addr show "$WIFI_IF" | awk '/inet / {print $2}' | cut -d/ -f1)
112+
IP="$(ip addr show "$WIFI_IF" | awk '/inet / {print $2}' | cut -d/ -f1)"
80113
if [ -n "$IP" ]; then
81114
log_info "WiFi got IP: $IP (manual DHCP via udhcpc)"
82115
if ping -I "$WIFI_IF" -c 3 -W 2 8.8.8.8 >/dev/null 2>&1; then

Runner/utils/functestlib.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1264,6 +1264,19 @@ dt_has_remoteproc_fw() {
12641264
return 1
12651265
}
12661266

1267+
# Find the remoteproc path for a given firmware substring (e.g., "adsp", "cdsp", "gdsp").
1268+
get_remoteproc_path_by_firmware() {
1269+
name="$1"
1270+
idx path
1271+
# List all remoteproc firmware nodes, match name, and return the remoteproc path
1272+
idx=$(cat /sys/class/remoteproc/remoteproc*/firmware 2>/dev/null | grep -n "$name" | cut -d: -f1 | head -n1)
1273+
[ -z "$idx" ] && return 1
1274+
idx=$((idx - 1))
1275+
path="/sys/class/remoteproc/remoteproc${idx}"
1276+
[ -d "$path" ] && echo "$path" && return 0
1277+
return 1
1278+
}
1279+
12671280
# Get remoteproc state
12681281
get_remoteproc_state() {
12691282
rp="$1"

0 commit comments

Comments
 (0)