iwconfig doesn't return values for "Link Quality" if the interface is disconnected, causing a division by zero error. If there are odd values, the resulting percentage may contain many decimal places.
This patch makes wifi_get_link_quality return zero instead of failing and rounds the percentage to a more meaningful integer.
Signed-off-by: Leo-Andres Hofmann hofmann@leo-andres.de --- config/cfgroot/network-functions.pl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/config/cfgroot/network-functions.pl b/config/cfgroot/network-functions.pl index b7a840559..c0abc76b5 100644 --- a/config/cfgroot/network-functions.pl +++ b/config/cfgroot/network-functions.pl @@ -403,7 +403,11 @@ sub wifi_get_link_quality($) {
my ($cur, $max) = $status =~ /Link Quality=(\d+)/(\d+)/;
- return $cur * 100 / $max; + if($max > 0) { + return sprintf('%.0f', ($cur * 100) / $max); + } + + return 0; }
sub wifi_get_signal_level($) {
Hello,
Good catch :)
Reviewed-by: Michael Tremer michael.tremer@ipfire.org
-Michael
On 23 Jul 2021, at 13:09, Leo-Andres Hofmann hofmann@leo-andres.de wrote:
iwconfig doesn't return values for "Link Quality" if the interface is disconnected, causing a division by zero error. If there are odd values, the resulting percentage may contain many decimal places.
This patch makes wifi_get_link_quality return zero instead of failing and rounds the percentage to a more meaningful integer.
Signed-off-by: Leo-Andres Hofmann hofmann@leo-andres.de
config/cfgroot/network-functions.pl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/config/cfgroot/network-functions.pl b/config/cfgroot/network-functions.pl index b7a840559..c0abc76b5 100644 --- a/config/cfgroot/network-functions.pl +++ b/config/cfgroot/network-functions.pl @@ -403,7 +403,11 @@ sub wifi_get_link_quality($) {
my ($cur, $max) = $status =~ /Link Quality=(\d+)/(\d+)/;
- return $cur * 100 / $max;
- if($max > 0) {
return sprintf('%.0f', ($cur * 100) / $max);
- }
- return 0;
}
sub wifi_get_signal_level($) {
2.27.0.windows.1