mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 21:22:37 +01:00
ie: fix ie_parse_data_rates to handle NULL
The code was partially there to handle NULL IEs but not quite. If NULL IEs are passed in base the data rate totally on the basic rate RSSI table.
This commit is contained in:
parent
f3d662db74
commit
7b26a87d7a
19
src/ie.c
19
src/ie.c
@ -1688,14 +1688,16 @@ static int ie_parse_supported_rates(struct ie_tlv_iter *supp_rates_iter,
|
||||
max_rate = map->rate;
|
||||
}
|
||||
|
||||
/* Find highest rate in Supported Rates IE */
|
||||
rates = ie_tlv_iter_get_data(supp_rates_iter);
|
||||
if (supp_rates_iter) {
|
||||
/* Find highest rate in Supported Rates IE */
|
||||
rates = ie_tlv_iter_get_data(supp_rates_iter);
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
uint8_t r = rates[i] & 0x7f;
|
||||
for (i = 0; i < len; i++) {
|
||||
uint8_t r = rates[i] & 0x7f;
|
||||
|
||||
if (r <= max_rate && r > highest)
|
||||
highest = r;
|
||||
if (r <= max_rate && r > highest)
|
||||
highest = r;
|
||||
}
|
||||
}
|
||||
|
||||
/* Find highest rate in Extended Supported Rates IE */
|
||||
@ -1711,7 +1713,10 @@ static int ie_parse_supported_rates(struct ie_tlv_iter *supp_rates_iter,
|
||||
}
|
||||
}
|
||||
|
||||
*data_rate = (highest / 2) * 1000000;
|
||||
if (highest)
|
||||
*data_rate = (highest / 2) * 1000000;
|
||||
else
|
||||
*data_rate = (max_rate / 2) * 1000000;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user