Hi Nick,

see my inline comment

On 10/19/20 1:56 AM, Nick Lowe wrote:
>  .../network/services/hostapd/files/hostapd.sh | 70 +++++++++++++++----
>  1 file changed, 57 insertions(+), 13 deletions(-)
> 
> diff --git a/package/network/services/hostapd/files/hostapd.sh 
> b/package/network/services/hostapd/files/hostapd.sh
> index b33e8e1edc..2bf67601c5 100644
> --- a/package/network/services/hostapd/files/hostapd.sh
> +++ b/package/network/services/hostapd/files/hostapd.sh
> @@ -98,6 +98,7 @@ hostapd_common_add_device_config() {
>       config_add_int local_pwr_constraint
>       config_add_string require_mode
>       config_add_boolean legacy_rates
> +     config_add_int cell_density
>  
>       config_add_string acs_chan_bias
>       config_add_array hostapd_options
> @@ -113,7 +114,7 @@ hostapd_prepare_device_config() {
>       local base_cfg=
>  
>       json_get_vars country country_ie beacon_int:100 dtim_period:2 doth 
> require_mode legacy_rates \
> -             acs_chan_bias local_pwr_constraint spectrum_mgmt_required 
> airtime_mode
> +             acs_chan_bias local_pwr_constraint spectrum_mgmt_required 
> airtime_mode cell_density
>  
>       hostapd_set_log_options base_cfg
>  
> @@ -122,8 +123,7 @@ hostapd_prepare_device_config() {
>       set_default doth 1
>       set_default legacy_rates 1
>       set_default airtime_mode 0
> -
> -     [ "$hwmode" = "b" ] && legacy_rates=1
> +     set_default cell_density 0
>  
>       [ -n "$country" ] && {
>               append base_cfg "country_code=$country" "$N"
> @@ -144,16 +144,60 @@ hostapd_prepare_device_config() {
>       json_get_values rate_list supported_rates
>  
>       [ -n "$hwmode" ] && append base_cfg "hw_mode=$hwmode" "$N"
> -     [ "$legacy_rates" -eq 0 ] && set_default require_mode g
> -
> -     [ "$hwmode" = "g" ] && {
> -             [ "$legacy_rates" -eq 0 ] && set_default rate_list "6000 9000 
> 12000 18000 24000 36000 48000 54000"
> -             [ -n "$require_mode" ] && set_default basic_rate_list "6000 
> 12000 24000"
> -     }
> -
> -     case "$require_mode" in
> -             n) append base_cfg "require_ht=1" "$N";;
> -             ac) append base_cfg "require_vht=1" "$N";;
> +     if [ "$hwmode" = "g" ] || [ "$hwmode" = "a" ]; then
> +             [ -n "$require_mode" ] && legacy_rates=0
> +             case "$require_mode" in
> +                     n) append base_cfg "require_ht=1" "$N";;
> +                     ac) append base_cfg "require_vht=1" "$N";;
> +             esac
> +     fi
> +     case "$hwmode" in
> +             b)
> +                     if [ "$cell_density" -eq 1 ]; then
> +                             set_default rate_list "5500 11000"
> +                             set_default basic_rate_list "5500 11000"
> +                     elif [ "$cell_density" -ge 2 ]; then
> +                             set_default rate_list "11000"
> +                             set_default basic_rate_list "11000"
> +                     fi
> +             ;;
> +             g)
> +                     if [ "$cell_density" -eq 0 ] && [ "$legacy_rates" -eq 0 
> ]; then
> +                             set_default rate_list "6000 9000 12000 18000 
> 24000 36000 48000 54000"
> +                             set_default basic_rate_list "6000 12000 24000"
> +                     elif [ "$cell_density" -eq 1 ]; then
> +                             if [ "$legacy_rates" -eq 0 ]; then
> +                                     set_default rate_list "6000 9000 12000 
> 18000 24000 36000 48000 54000"
> +                                     set_default basic_rate_list "6000 12000 
> 24000"
> +                             else
> +                                     set_default rate_list "5500 6000 9000 
> 11000 12000 18000 24000 36000 48000 54000"
> +                                     set_default basic_rate_list "5500 11000"
> +                             fi
> +                     elif [ "$cell_density" -eq 2 ] || [ "$legacy_rates" -ne 
> 0 ]; then

This branch will be taken if cell_density is set to 0 and legacy_rates is set 
to 1. This looks wrong to me,
as the condition below will never evaluate to true.

Best wishes
David

> +                             if [ "$legacy_rates" -eq 0 ]; then
> +                                     set_default rate_list "12000 18000 
> 24000 36000 48000 54000"
> +                                     set_default basic_rate_list "12000 
> 24000"
> +                             else
> +                                     set_default rate_list "11000 12000 
> 18000 24000 36000 48000 54000"
> +                                     set_default basic_rate_list "11000"
> +                             fi
> +                     elif [ "$cell_density" -ge 3 ]; then
> +                             set_default rate_list "24000 36000 48000 54000"
> +                             set_default basic_rate_list "24000"
> +                     fi
> +             ;;
> +             a)
> +                     if [ "$cell_density" -eq 1 ]; then
> +                             set_default rate_list "6000 9000 12000 18000 
> 24000 36000 48000 54000"
> +                             set_default basic_rate_list "6000 12000 24000"
> +                     elif [ "$cell_density" -eq 2 ]; then
> +                             set_default rate_list "12000 18000 24000 36000 
> 48000 54000"
> +                             set_default basic_rate_list "12000 24000"
> +                     elif [ "$cell_density" -ge 3 ]; then
> +                             set_default rate_list "24000 36000 48000 54000"
> +                             set_default basic_rate_list "24000"
> +                     fi
> +             ;;
>       esac
>  
>       for r in $rate_list; do
> 

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to