Skip to content
Snippets Groups Projects
Select Git revision
  • 536c771f3fe56937e516b97c3e233afb02e39b82
  • experimental default protected
  • v2023.2.5-ffs
  • nrb/ex400-remove-wps
  • nrb/airmax-test
  • v2023.2.4-ffs
  • nrb/ar9344-reset-sequence
  • autinerd/experimental-openwrt-24.10
  • v2023.2.3-ffs
  • v2023.2.2-ffs
  • v2023.2-ffs
  • v2023.1-ffs
  • v2022.1.4-ffs
  • feature/addMikrotikwAP
  • v2022.1.3-ffs
  • v2021.1.2-ffs
  • v2022.1.1-ffs
  • master protected
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • experimental-2025-07-04
  • experimental-2025-07-04-base
  • experimental-2025-07-01
  • experimental-2025-07-01-base
  • experimental-2025-06-25
  • experimental-2025-06-25-base
  • experimental-2025-06-24
  • experimental-2025-06-24-base
  • experimental-2025-06-22
  • experimental-2025-06-22-base
  • v2023.2.5-ffs0.1
  • experimental-2025-06-08
  • experimental-2025-06-08-base
  • experimental-2025-06-06
  • experimental-2025-06-06-base
  • experimental-2025-05-27
  • experimental-2025-05-27-base
  • experimental-2025-05-18
  • experimental-2025-05-18-base
  • experimental-2025-05-15
41 results

ath79-generic

Blame
    • Sven Eckelmann's avatar
      536c771f
      ath79-generic: Work around boot hang on Unifi AC-Mesh · 536c771f
      Sven Eckelmann authored
      It looks like boot hangs on an AC-Mesh for unknown reasons. The last
      message seen on the console is:
      
          [    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
      
      But interestingly, it seems like enabling AIO somehow works around this
      problem. Changing any off the following options seem to have the same
      effect at the moment for Linux 5.10.160+5.10.161
      
          # CONFIG_KERNEL_AIO is not set
          # CONFIG_KERNEL_CGROUPS is not set
          # CONFIG_KERNEL_FANOTIFY is not set
          # CONFIG_KERNEL_FHANDLE is not set
          # CONFIG_KERNEL_IO_URING is not set
          # CONFIG_KERNEL_IPV6_MROUTE is not set
          # CONFIG_KERNEL_IPV6_SEG6_LWTUNNEL is not set
          # CONFIG_KERNEL_IP_MROUTE is not set
          CONFIG_KERNEL_PROC_STRIPPED=y
      
      Just enable CONFIG_AIO until the actual problem was fixed.
      
      Link: https://github.com/freifunk-gluon/gluon/issues/2784
      536c771f
      History
      ath79-generic: Work around boot hang on Unifi AC-Mesh
      Sven Eckelmann authored
      It looks like boot hangs on an AC-Mesh for unknown reasons. The last
      message seen on the console is:
      
          [    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
      
      But interestingly, it seems like enabling AIO somehow works around this
      problem. Changing any off the following options seem to have the same
      effect at the moment for Linux 5.10.160+5.10.161
      
          # CONFIG_KERNEL_AIO is not set
          # CONFIG_KERNEL_CGROUPS is not set
          # CONFIG_KERNEL_FANOTIFY is not set
          # CONFIG_KERNEL_FHANDLE is not set
          # CONFIG_KERNEL_IO_URING is not set
          # CONFIG_KERNEL_IPV6_MROUTE is not set
          # CONFIG_KERNEL_IPV6_SEG6_LWTUNNEL is not set
          # CONFIG_KERNEL_IP_MROUTE is not set
          CONFIG_KERNEL_PROC_STRIPPED=y
      
      Just enable CONFIG_AIO until the actual problem was fixed.
      
      Link: https://github.com/freifunk-gluon/gluon/issues/2784
    check_site.lua 2.63 KiB
    need_string(in_site({'site_code'}))
    need_string(in_site({'site_name'}))
    
    -- this_domain() returns nil when multidomain support is disabled
    if this_domain() then
    	need_domain_name(in_site({'default_domain'}))
    
    	need_table(in_domain({'domain_names'}), function(domain)
    		need_alphanumeric_key(domain)
    		need_string(domain)
    	end)
    	need_string(in_domain({'domain_names', this_domain()}))
    end
    
    need_string_match(in_domain({'domain_seed'}), '^' .. ('%x'):rep(64) .. '$')
    
    need_string({'opkg', 'openwrt'}, false)
    obsolete({'opkg', 'lede'}, 'Use opkg.openwrt instead.')
    need_table({'opkg', 'extra'}, function(extra_repo)
    	need_alphanumeric_key(extra_repo)
    	need_string(extra_repo)
    end, false)
    
    need_string(in_site({'hostname_prefix'}), false)
    need_string(in_site({'timezone'}))
    
    need_string_array({'ntp_servers'}, false)
    
    need_string_match(in_domain({'prefix6'}), '^[%x:]+/64$')
    
    local supported_rates = {6000, 9000, 12000, 18000, 24000, 36000, 48000, 54000}
    for _, config in ipairs({'wifi24', 'wifi5'}) do
    	if need_table({config}, nil, false) then
    		need_string(in_site({'regdom'})) -- regdom is only required when wifi24 or wifi5 is configured
    
    		need_number({config, 'channel'})
    		if config == 'wifi5' then
    			need_string_match({config, 'outdoor_chanlist'}, '^[%d%s-]+$', false)
    		end
    
    		obsolete({config, 'supported_rates'}, '802.11b rates are disabled by default.')
    		obsolete({config, 'basic_rate'}, '802.11b rates are disabled by default.')
    
    		if need_table({config, 'ibss'}, nil, false) then
    			need_string_match(in_domain({config, 'ibss', 'ssid'}), '^' .. ('.?'):rep(32) .. '$')
    			need_string_match(in_domain({config, 'ibss', 'bssid'}), '^%x[02468aAcCeE]:%x%x:%x%x:%x%x:%x%x:%x%x$')
    			need_one_of({config, 'ibss', 'mcast_rate'}, supported_rates, false)
    			need_number({config, 'ibss', 'vlan'}, false)
    			need_boolean({config, 'ibss', 'disabled'}, false)
    		end
    
    		if need_table({config, 'mesh'}, nil, false) then
    			need_string_match(in_domain({config, 'mesh', 'id'}), '^' .. ('.?'):rep(32) .. '$')
    			need_one_of({config, 'mesh', 'mcast_rate'}, supported_rates, false)
    			need_boolean({config, 'mesh', 'disabled'}, false)
    		end
    	end
    end
    
    need_boolean(in_site({'poe_passthrough'}), false)
    
    if need_table({'dns'}, nil, false) then
    	need_string_array_match({'dns', 'servers'}, '^[%x:]+$')
    end
    
    need_string_array(in_domain({'next_node', 'name'}), false)
    need_string_match(in_domain({'next_node', 'ip6'}), '^[%x:]+$', false)
    need_string_match(in_domain({'next_node', 'ip4'}), '^%d+.%d+.%d+.%d+$', false)
    
    need_boolean(in_domain({'mesh', 'vxlan'}), false)