Commit Graph

65 Commits

Author SHA1 Message Date
Bob Cantor
1b62ad2037 mac80211: print an error if wifi teardown fails
drv_mac80211_teardown fails silently if the device to be torn down is
not defined.  This commit prints an error message.

branches affected: trunk, 21.02

Signed-off-by: Bob Cantor <coxede6557@w3boats.com>
2021-06-29 23:52:33 +08:00
Bob Cantor
639de224bd mac80211: always call wireless_set_data (FS#3784)
When wifi is turned off, drv_mac80211_teardown sometimes fails (silently)
because the device to be torn down is not defined.

This situation arises if drv_mac80211_setup was called twice when
wifi was turned on.

This commit ensures that the device to be torn down is always defined
in drv_mac80211_teardown.

Steps to reproduce:

1) Use /sbin/wifi to turn on wifi.
   uci set wireless.@wifi-iface[0].disabled=0
   uci set wireless.@wifi-device[0].disabled=0
   uci commit
   wifi

2) Use /sbin/wifi to turn off wifi.
   uci set wireless.@wifi-device[0].disabled=1
   uci commit
   wifi

3) Observe that wifi is still up.

branches affected: trunk, 21.02

Signed-off-by: Bob Cantor <coxede6557@w3boats.com>
2021-06-29 23:52:12 +08:00
Bob Cantor
5f9a9e1906 mac80211: fix no_reload logic (FS#3902)
If drv_mac80211_setup is called twice with the same wifi configuration,
then the second call returns early with error HOSTAPD_START_FAILED.
(wifi works nevertheless, despite the fact that setup is incomplete.  But
"ubus call network.wireless status" erroneously reports that radio0 is down.)

The relevant part of drv_mac80211_setup is,

if [ "$no_reload" != "0" ]; then
        add_ap=1
        ubus wait_for hostapd
        local hostapd_res="$(ubus call hostapd config_add "{\"iface\":\"$primary_ap\", \"config\":\"${hostapd_conf_file}\"}")"
        ret="$?"
        [ "$ret" != 0 -o -z "$hostapd_res" ] && {
                wireless_setup_failed HOSTAPD_START_FAILED
                return
        }
        wireless_add_process "$(jsonfilter -s "$hostapd_res" -l 1 -e @.pid)" "/usr/sbin/hostapd" 1 1
fi

This commit sets no_reload = 0 during the second call of drv_mac80211_setup.

It is perhaps worth providing a way to reproduce the situation
where drv_mac80211_setup is called twice.

When /sbin/wifi is used to turn on wifi,
   uci set wireless.@wifi-iface[0].disabled=0
   uci set wireless.@wifi-device[0].disabled=0
   uci commit
   wifi

/sbin/wifi makes the following ubus calls,
   ubus call network reload
   ubus call network.wireless down
   ubus call network.wireless up

The first and third ubus calls both call drv_mac80211_setup,
while the second ubus call triggers wireless_device_setup_cancel.
So the call sequence becomes,

   drv_mac80211_setup
   wireless_device_setup_cancel
   drv_mac80211_setup

In contrast, when LuCI is used to turn on wifi only a single call
is made to drv_mac80211_setup.

branches affected: trunk, 21.02

Signed-off-by: Bob Cantor <coxede6557@w3boats.com>
2021-06-29 23:51:39 +08:00
Felix Fietkau
35b5c41401
mac80211: fix processing HE capabilities (FS#3871)
Use the right argument to fix setting unsupported capabilities to 0

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-06-17 20:53:55 +08:00
Felix Fietkau
151dacaf26 mac80211: rely on iwinfo for phy->path and path->phy lookups
This avoids inconsistencies from having multiple implementations do the same thing

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-06-10 23:12:22 +08:00
Felix Fietkau
79467194c9 mac80211: fix typo
Remove stray parenthesis

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-06-03 12:09:32 +08:00
Felix Fietkau
42318303ea mac80211: do not enable VHT in the default config on 2.4 GHz
Some drivers advertise it, but it's not supported at the moment

Reported-by: John Thomson <git@johnthomson.fastmail.com.au>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-06-02 23:08:26 +08:00
Felix Fietkau
2b1ce908e9 mac80211: fix detecting VHT capabilities when generating the default config
The colon does not directly follow the "VHT Capabilities" string

Reported-by: John Thomson <git@johnthomson.fastmail.com.au>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-06-02 23:08:13 +08:00
Felix Fietkau
427fa52a07 mac80211: add more HE capabilities
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-05-26 23:32:16 +08:00
Felix Fietkau
08fad0e611 mac80211: fix center freq selection for 6 GHz
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-05-26 23:31:52 +08:00
Felix Fietkau
f2b3d91186 mac80211: set hostapd op_class for 6 GHz
This is needed to disambiguate it from 5 GHz channels

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-05-26 23:30:33 +08:00
Felix Fietkau
6cfc35f9ff mac80211: rework default config script
Emit the new band option instead of hwmode
Support 6 GHz band and HE options

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-05-26 23:30:05 +08:00
Felix Fietkau
76a343ab9f mac80211: make use of the new 'band' option
Use it to look up frequencies only in the configured band to better deal
with channel number overlap

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-05-26 23:26:59 +08:00
AmadeusGhost
cc5be40bab mac80211: bump to 5.10.16-1 2021-02-20 18:00:04 +08:00
Paul Fertser
590f6a9038 mac80211: fix MAC address allocations when local bit set on base addr
Testing with hwsim reveals two problems:

1. phyX/addresses has two addresses and mac80211_get_addr keeps
returning the last one when asked for more;

2. The base address has the local bit set and the operation unsets it.

Fix both.

Fixes: 866790fd82
Reported-by: Zero_Chaos
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
2020-12-23 11:29:48 +08:00
Davide Fioravanti
8516cdd2c4
mac80211: select the first available channel for 5GHz interfaces
Some 5GHz wifi interfaces, especially in Tri-band routers, can't use
channel 36. In these cases, the default configuration for 5GHz
interfaces, once enabled, doesn't work.

This patch selects the first non-disabled channel for 5GHz interfaces.

Signed-off-by: Davide Fioravanti <pantanastyle@gmail.com>
2020-12-20 13:52:04 +08:00
AmadeusGhost
5591c36728
Revert "ipq40xx: update ath10k firmware" (#4590)
This reverts commit 2c37fa71f9.
2020-05-12 18:58:46 +08:00
coolsnowwolf
2c37fa71f9 ipq40xx: update ath10k firmware 2020-05-09 14:36:43 +08:00
AmadeusGhost
463b6ac050
mac80211: fixed slow wireless startup (#4420)
* hostapd: reduce to a single instance per service

* mac80211: sync upstream source code

* iw: bump to 5.4
2020-04-23 16:42:46 +08:00
lean
8faac30089 mac80211: Update to version 5.4.27 2020-04-03 23:29:36 +08:00
LEAN-ESX
f0081d8714 mac80211: unify setup of iw htmode for mesh and adhoc 2019-12-01 06:02:59 -08:00
LEAN-ESX
f92be122c9 mac80211: backport 256-QAM for 4.19.85 2019-11-26 05:20:23 -08:00
coolsnowwolf
1debe64956 mac80211: backport 4.19.85-1 stable release 2019-11-26 17:26:00 +08:00
LEAN-ESX
9823711fb4 Revert "mac80211: update to version 5.4-rc8"
This reverts commit 210243ca57.
2019-11-23 18:43:43 -08:00
LEAN-ESX
da4f263bc0 Revert "mac80211: backport 256-QAM"
This reverts commit a1f89a6054.
2019-11-23 18:43:31 -08:00
LEAN-ESX
a1f89a6054 mac80211: backport 256-QAM 2019-11-23 11:01:28 -08:00
LEAN-ESX
210243ca57 mac80211: update to version 5.4-rc8 2019-11-23 10:04:53 -08:00
LEAN-ESX
f8d1fc74ba mac80211/hostapd: add support for 256-QAM 2019-11-22 05:18:02 -08:00
LEAN-ESX
41cdd9a56a mac80211: bump to 5.4-rc2 2019-11-21 08:42:18 -08:00
LEAN-ESX
384e5abd02 mac80211: update upstream patches 2019-11-11 20:28:16 -08:00
LEAN-ESX
eb7626e861 mac80211: bump to 4.19.79 2019-10-24 02:46:10 -07:00
LEAN-ESX
756611ade4 Revert "mac80211: bump to 5.3-rc4-1"
This reverts commit e170f6fbc0.
2019-10-19 03:01:12 -07:00
LEAN-ESX
e170f6fbc0 mac80211: bump to 5.3-rc4-1 2019-10-18 11:50:59 -07:00
LEAN-ESX
fc09656346 mac80211: add config tweak for tx bursting when using VHT 2019-07-25 23:07:12 -07:00
coolsnowwolf
fd6be986db mac80211: set noscan=1 if sta/adhoc/mesh interfaces are present 2019-04-04 11:47:13 +08:00
coolsnowwolf
88beed4c56 mac80211: netifd: Use a mask when using Usage: iw [options] command
Options:
	--debug		enable netlink debugging
	--version	show version (3.4)
Commands:
	help [command]
		Print usage for all or a specific command, e.g.
		"help wowlan" or "help wowlan enable".

	event [-t] [-r] [-f]
		Monitor events from the kernel.
		-t - print timestamp
		-r - print relative timstamp
		-f - print full frame for auth/assoc etc.

	phy
	list
		List all wireless devices and their capabilities.

	phy <phyname> info
		Show capabilities for the specified wireless device.

	dev
		List all network interfaces for wireless hardware.

	dev <devname> info
		Show information for this interface.

	dev <devname> del
		Remove this virtual interface

	dev <devname> interface add <name> type <type> [mesh_id <meshid>] [4addr on|off] [flags <flag>*]
	phy <phyname> interface add <name> type <type> [mesh_id <meshid>] [4addr on|off] [flags <flag>*]
		Add a new virtual interface with the given configuration.
		Valid interface types are: managed, ibss, monitor, mesh, wds.

		The flags are only used for monitor interfaces, valid flags are:
		none:     no special flags
		fcsfail:  show frames with FCS errors
		control:  show control frames
		otherbss: show frames from other BSSes
		cook:     use cooked mode

		The mesh_id is used only for mesh mode.

	dev <devname> ibss join <SSID> <freq in MHz> [HT20|HT40+|HT40-|NOHT] [fixed-freq] [<fixed bssid>] [beacon-interval <TU>] [basic-rates <rate in Mbps,rate2,...>] [mcast-rate <rate in Mbps>] [key d:0:abcde]
		Join the IBSS cell with the given SSID, if it doesn't exist create
		it on the given frequency. When fixed frequency is requested, don't
		join/create a cell on a different frequency. When a fixed BSSID is
		requested use that BSSID and do not adopt another cell's BSSID even
		if it has higher TSF and the same SSID. If an IBSS is created, create
		it with the specified basic-rates, multicast-rate and beacon-interval.

	dev <devname> ibss leave
		Leave the current IBSS cell.

	dev <devname> station dump
		List all stations known, e.g. the AP on managed interfaces

	dev <devname> station set <MAC address> vlan <ifindex>
		Set an AP VLAN for this station.

	dev <devname> station set <MAC address> plink_action <open|block>
		Set mesh peer link action for this station (peer).

	dev <devname> station del <MAC address>
		Remove the given station entry (use with caution!)

	dev <devname> station get <MAC address>
		Get information for a specific station.

	dev <devname> survey dump
		List all gathered channel survey data

	dev <devname> mesh leave
		Leave a mesh.

	dev <devname> mesh join <mesh ID> [mcast-rate <rate in Mbps>] [<param>=<value>]*
		Join a mesh with the given mesh ID with mcast-rate and mesh parameters.

	dev <devname> mpath dump
		List known mesh paths.

	dev <devname> mpath set <destination MAC address> next_hop <next hop MAC address>
		Set an existing mesh path's next hop.

	dev <devname> mpath new <destination MAC address> next_hop <next hop MAC address>
		Create a new mesh path (instead of relying on automatic discovery).

	dev <devname> mpath del <MAC address>
		Remove the mesh path to the given node.

	dev <devname> mpath get <MAC address>
		Get information on mesh path to the given node.

	dev <devname> scan [-u] [freq <freq>*] [ies <hex as 00:11:..>] [ssid <ssid>*|passive]
		Scan on the given frequencies and probe for the given SSIDs
		(or wildcard if not given) unless passive scanning is requested.
		If -u is specified print unknown data in the scan results.
		Specified (vendor) IEs must be well-formed.

	dev <devname> scan trigger [freq <freq>*] [ies <hex as 00:11:..>] [ssid <ssid>*|passive]
		Trigger a scan on the given frequencies with probing for the given
		SSIDs (or wildcard if not given) unless passive scanning is requested.

	dev <devname> scan dump [-u]
		Dump the current scan results. If -u is specified, print unknown
		data in scan results.

	reg get
		Print out the kernel's current regulatory domain information.

	reg set <ISO/IEC 3166-1 alpha2>
		Notify the kernel about the current regulatory domain.

	dev <devname> connect [-w] <SSID> [<freq in MHz>] [<bssid>] [key 0:abcde d:1:6162636465]
		Join the network with the given SSID (and frequency, BSSID).
		With -w, wait for the connect to finish or fail.

	dev <devname> disconnect
		Disconnect from the current network.

	dev <devname> link
		Print information about the current link, if any.

	dev <devname> offchannel <freq> <duration>
		Leave operating channel and go to the given channel for a while.

	dev <devname> cqm rssi <threshold|off> [<hysteresis>]
		Set connection quality monitor RSSI threshold.

	phy <phyname> wowlan show
		Show WoWLAN status.

	phy <phyname> wowlan disable
		Disable WoWLAN.

	phy <phyname> wowlan enable [any] [disconnect] [magic-packet] [gtk-rekey-failure] [eap-identity-request] [4way-handshake] [rfkill-release] [patterns <pattern>*]
		Enable WoWLAN with the given triggers.
		Each pattern is given as a bytestring with '-' in places where any byte
		may be present, e.g. 00:11:22:-:44 will match 00:11:22:33:44 and
		00:11:22:33:ff:44 etc.

	dev <devname> roc start <freq> <time>

	phy <phyname> set antenna <bitmap> | all | <tx bitmap> <rx bitmap>
		Set a bitmap of allowed antennas to use for TX and RX.
		The driver may reject antenna configurations it cannot support.

	dev <devname> set txpower <auto|fixed|limit> [<tx power in mBm>]
		Specify transmit power level and setting type.

	phy <phyname> set txpower <auto|fixed|limit> [<tx power in mBm>]
		Specify transmit power level and setting type.

	phy <phyname> set distance <distance>
		Set appropriate coverage class for given link distance in meters.
		Valid values: 0 - 114750

	phy <phyname> set coverage <coverage class>
		Set coverage class (1 for every 3 usec of air propagation time).
		Valid values: 0 - 255.

	phy <phyname> set netns <pid>
		Put this wireless device into a different network namespace

	phy <phyname> set rts <rts threshold|off>
		Set rts threshold.

	phy <phyname> set frag <fragmentation threshold|off>
		Set fragmentation threshold.

	dev <devname> set channel <channel> [HT20|HT40+|HT40-]
	phy <phyname> set channel <channel> [HT20|HT40+|HT40-]
	dev <devname> set freq <freq> [HT20|HT40+|HT40-]
	phy <phyname> set freq <freq> [HT20|HT40+|HT40-]
		Set frequency/channel the hardware is using, including HT
		configuration.

	phy <phyname> set name <new name>
		Rename this wireless device.

	dev <devname> set peer <MAC address>
		Set interface WDS peer.

	dev <devname> set noack_map <map>
		Set the NoAck map for the TIDs. (0x0009 = BE, 0x0006 = BK, 0x0030 = VI, 0x00C0 = VO)

	dev <devname> set 4addr <on|off>
		Set interface 4addr (WDS) mode.

	dev <devname> set type <type>
		Set interface type/mode.
		Valid interface types are: managed, ibss, monitor, mesh, wds.

	dev <devname> set meshid <meshid>
	dev <devname> set monitor <flag>*
		Set monitor flags. Valid flags are:
		none:     no special flags
		fcsfail:  show frames with FCS errors
		control:  show control frames
		otherbss: show frames from other BSSes
		cook:     use cooked mode

	dev <devname> set mesh_param <param>=<value> [<param>=<value>]*
		Set mesh parameter (run command without any to see available ones).

	dev <devname> set power_save <on|off>
		Set power save state to on or off.

	dev <devname> set bitrates [legacy-<2.4|5> <legacy rate in Mbps>*] [mcs-<2.4|5> <MCS index>*]
		Sets up the specified rate masks.
		Not passing any arguments would clear the existing mask (if any).

	dev <devname> get mesh_param [<param>]
		Retrieve mesh parameter (run command without any to see available ones).

	dev <devname> get power_save <param>
		Retrieve power save state.

You can omit the 'phy' or 'dev' if the identification is unique,
e.g. "iw wlan0 info" or "iw phy0 info". (Don't when scripting.)

Do NOT screenscrape this tool, we don't consider its output stable.
2019-03-20 13:58:58 +08:00
coolsnowwolf
cca8bbc0b1 mac80211: fix ath9k/ath10k mesh mode support 2019-03-01 16:25:19 +08:00
coolsnowwolf
347daa04b2 Merge branch master of https://github.com/coolsnowwolf/lede 2019-01-03 19:29:28 +08:00
coolsnowwolf
b20989af71 update mac80211 script 2018-10-17 15:12:29 +08:00
coolsnowwolf
0ff0ac5cef set wireless noscan by default (force 40Mhz/80Mhz 2018-10-16 11:06:58 +08:00
coolsnowwolf
63004a300d fix BCM brcmfmac wireless issue and add 160Mhz support 2018-09-13 11:21:09 +08:00
coolsnowwolf
806f5db174 sync with OpenWrt trunk 2018-09-07 13:43:55 +08:00
coolsnowwolf
9ba04fd0d7 sync with OpenWrt v18.06.1 stable new R8.1 version 2018-08-23 17:40:23 +08:00
coolsnowwolf
01c2f5afac update ath10k firmware 2018-06-12 21:05:27 +08:00
coolsnowwolf
4218c16a0c enable VHT80 for encrypted mesh 1s 2018-05-15 13:41:28 +08:00
coolsnowwolf
8fe0636b8a Merge branch 'master' of github.com:lede-project/source 2018-04-23 18:50:49 +08:00
aooom
75d75c1722 20180409 2018-04-09 14:06:38 +08:00
coolsnowwolf
12b4eb4d04 migrate kernel package to support 4.14.32 2018-04-08 17:31:55 +08:00
aooom
5efa8647e5 20180113 2018-01-18 18:17:35 +08:00
coolsnowwolf
20f7e75789 update to R7.5.4 2018-01-15 18:26:41 +08:00