nss-drv: clean up hotplug script

Cleaned up formatting and changed the way console messages are printed.

The message will now properly show up in dmesg output with color, and
date formatting rather than a non descriptive message like the following:

Before:
```
/lib/firmware/qca-nss0-retail.bin 33
/lib/firmware/qca-nss1-retail.bin 33
```

After:
```
[Mon Jul  8 07:21:12 2024] hotplug: symlinking /lib/firmware/qca-nss0.bin to /lib/firmware/qca-nss0-retail.bin
[Mon Jul  8 07:21:12 2024] hotplug: symlinking /lib/firmware/qca-nss1.bin to /lib/firmware/qca-nss1-retail.bin
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
Sean Khan 2024-07-08 10:52:53 -04:00
parent bacbac33cb
commit b290b88fc0

View File

@ -1,4 +1,5 @@
#!/bin/sh #!/bin/sh
# shellcheck disable=2012
# #
# Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. # Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
# #
@ -15,56 +16,55 @@
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# #
KERNEL=`uname -r` KERNEL=$(uname -r)
case "${KERNEL}" in case "${KERNEL}" in
3.4*) 3.4*)
select_or_load=load_nss_fw select_or_load=load_nss_fw
;; ;;
*) *)
select_or_load=select_nss_fw select_or_load=select_nss_fw
;; ;;
esac esac
load_nss_fw () { load_nss_fw() {
ls -l $1 | awk ' { print $9,$5 } '> /dev/console ls -l "$1" | awk ' { print $9,$5 } ' > /dev/console
echo 1 > /sys/class/firmware/$DEVICENAME/loading echo 1 > /sys/class/firmware/"$DEVICENAME"/loading
cat $1 > /sys/class/firmware/$DEVICENAME/data cat "$1" > /sys/class/firmware/"$DEVICENAME"/data
echo 0 > /sys/class/firmware/$DEVICENAME/loading echo 0 > /sys/class/firmware/"$DEVICENAME"/loading
} }
select_nss_fw () { select_nss_fw() {
rm -f /lib/firmware/$DEVICENAME rm -f /lib/firmware/"$DEVICENAME"
ln -s $1 /lib/firmware/$DEVICENAME ln -s "$1" /lib/firmware/"$DEVICENAME"
ls -l /lib/firmware/$DEVICENAME | awk ' { print $9,$5 } '> /dev/console echo '<5>hotplug: symlinking' /lib/firmware/"$DEVICENAME" ' to '"$1" > /dev/kmsg
} }
[ "$ACTION" != "add" ] && exit [ "$ACTION" != "add" ] && exit
# dev name for UCI, since it doesn't let you use . or - # dev name for UCI, since it doesn't let you use . or -
SDEVNAME=$(echo ${DEVICENAME} | sed s/[.-]/_/g) SDEVNAME=$(echo "${DEVICENAME}" | sed s/[.-]/_/g)
SELECTED_FW=$(uci get nss.${SDEVNAME}.firmware 2>/dev/null) SELECTED_FW=$(uci get nss."${SDEVNAME}".firmware 2> /dev/null)
[ -e "${SELECTED_FW}" ] && { [ -e "${SELECTED_FW}" ] && {
$select_or_load ${SELECTED_FW} $select_or_load "${SELECTED_FW}"
exit exit
} }
case $DEVICENAME in case $DEVICENAME in
qca-nss0* | qca-nss.0*) qca-nss0* | qca-nss.0*)
if [ -e /lib/firmware/qca-nss0-enterprise.bin ] ; then if [ -e /lib/firmware/qca-nss0-enterprise.bin ]; then
$select_or_load /lib/firmware/qca-nss0-enterprise.bin $select_or_load /lib/firmware/qca-nss0-enterprise.bin
else else
$select_or_load /lib/firmware/qca-nss0-retail.bin $select_or_load /lib/firmware/qca-nss0-retail.bin
fi fi
exit exit
;; ;;
qca-nss1* | qca-nss.1*) qca-nss1* | qca-nss.1*)
if [ -e /lib/firmware/qca-nss1-enterprise.bin ] ; then if [ -e /lib/firmware/qca-nss1-enterprise.bin ]; then
$select_or_load /lib/firmware/qca-nss1-enterprise.bin $select_or_load /lib/firmware/qca-nss1-enterprise.bin
else else
$select_or_load /lib/firmware/qca-nss1-retail.bin $select_or_load /lib/firmware/qca-nss1-retail.bin
fi fi
exit exit
;; ;;
esac esac