gluon-core: make wifi rates configurable by site.conf
and add documentation
This commit is contained in:
		
							parent
							
								
									669790c5fc
								
							
						
					
					
						commit
						bd4368d784
					
				@ -35,6 +35,14 @@
 | 
			
		||||
    -- Wireless channel.
 | 
			
		||||
    channel = 1,
 | 
			
		||||
 | 
			
		||||
    -- List of supported wifi rates (optional)
 | 
			
		||||
    -- Example removes 802.11b compatibility for better performance
 | 
			
		||||
    supported_rates = {6000, 9000, 12000, 18000, 24000, 36000, 48000, 54000},
 | 
			
		||||
 | 
			
		||||
    -- List of basic wifi rates (optional, required if supported_rates is set)
 | 
			
		||||
    -- Example removes 802.11b compatibility for better performance
 | 
			
		||||
    basic_rate = {6000, 9000, 18000, 36000, 54000},
 | 
			
		||||
 | 
			
		||||
    -- ESSID used for client network.
 | 
			
		||||
    ap = {
 | 
			
		||||
      ssid = 'entenhausen.freifunk.net',
 | 
			
		||||
 | 
			
		||||
@ -98,6 +98,12 @@ wifi24 \: optional
 | 
			
		||||
    This will only affect new installations.
 | 
			
		||||
    Upgrades will not changed the disabled state.
 | 
			
		||||
 | 
			
		||||
    Additionally it is possible to configure the ``supported_rates`` and ``basic_rate``
 | 
			
		||||
    of each radio. Both are optional, by default hostapd/driver dictate the rates.
 | 
			
		||||
    If ``supported_rates`` is set, ``basic_rate`` is required, because ``basic_rate``
 | 
			
		||||
    has to be a subset of ``supported_rates``.
 | 
			
		||||
    The example below disables 802.11b rates.
 | 
			
		||||
 | 
			
		||||
    ``ap`` requires a single parameter, a string, named ``ssid`` which sets the
 | 
			
		||||
    interface's ESSID.
 | 
			
		||||
 | 
			
		||||
@ -112,6 +118,8 @@ wifi24 \: optional
 | 
			
		||||
 | 
			
		||||
       wifi24 = {
 | 
			
		||||
         channel = 11,
 | 
			
		||||
         supported_rates = {6000, 9000, 12000, 18000, 24000, 36000, 48000, 54000},
 | 
			
		||||
         basic_rate = {6000, 9000, 18000, 36000, 54000},
 | 
			
		||||
         ap = {
 | 
			
		||||
           ssid = 'entenhausen.freifunk.net',
 | 
			
		||||
         },
 | 
			
		||||
 | 
			
		||||
@ -28,6 +28,14 @@ for _, config in ipairs({'wifi24', 'wifi5'}) do
 | 
			
		||||
    need_string('regdom') -- regdom is only required when wifi24 or wifi5 is configured
 | 
			
		||||
 | 
			
		||||
    need_number(config .. '.channel')
 | 
			
		||||
 | 
			
		||||
    local rates = {1000, 2000, 5500, 6000, 9000, 11000, 12000, 18000, 24000, 36000, 48000, 54000}
 | 
			
		||||
    local supported_rates = need_array_of(config .. '.supported_rates', rates, false)
 | 
			
		||||
    if supported_rates then
 | 
			
		||||
      need_array_of(config .. '.basic_rate', supported_rates, true)
 | 
			
		||||
    else
 | 
			
		||||
      need_array_of(config .. '.basic_rate', rates, false)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -27,6 +27,18 @@ local function configure_radio(radio, index, config)
 | 
			
		||||
    uci:set('wireless', radio, 'channel', channel)
 | 
			
		||||
    uci:set('wireless', radio, 'htmode', 'HT20')
 | 
			
		||||
    uci:set('wireless', radio, 'country', site.regdom)
 | 
			
		||||
 | 
			
		||||
    if config.supported_rates then
 | 
			
		||||
      uci:set_list('wireless', radio, 'supported_rates', config.supported_rates)
 | 
			
		||||
    else
 | 
			
		||||
      uci:delete('wireless', radio, 'supported_rates')
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    if config.basic_rate then
 | 
			
		||||
      uci:set_list('wireless', radio, 'basic_rate', config.basic_rate)
 | 
			
		||||
    else
 | 
			
		||||
      uci:delete('wireless', radio, 'basic_rate')
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user