aboutsummaryrefslogtreecommitdiff
path: root/net/wireless
AgeCommit message (Collapse)AuthorFilesLines
2013-05-25regulatory: use RCU in regulatory_hint_11d()Johannes Berg1-14/+16
Since it just does a quick check of the last regulatory request, the function doesn't have to hold the reg mutex but can use RCU instead. Signed-off-by: Johannes Berg <[email protected]>
2013-05-25cfg80211: simplify and correct P2P-Device scan checkJohannes Berg1-10/+7
If the driver for some reason successfully finishes scanning while in p2p_stop_device(), cfg80211 will still set it to aborted. Simplify this code using the new 'notified' value and only mark it aborted in case the driver didn't notify cfg80211 at all (in which case we also leak the request to not crash, this is a driver bug.) Signed-off-by: Johannes Berg <[email protected]>
2013-05-25cfg80211/mac80211: use cfg80211 wdev mutex in mac80211Johannes Berg2-42/+10
Using separate locks in cfg80211 and mac80211 has always caused issues, for example having to unlock in places in mac80211 to call cfg80211, which even needed a framework to make cfg80211 calls after some functions returned etc. Additionally, I suspect some issues people have reported with the cfg80211 state getting confused could be due to such issues, when cfg80211 is asking mac80211 to change state but mac80211 is in the process of telling cfg80211 that the state changed (in another way.) Signed-off-by: Johannes Berg <[email protected]>
2013-05-25cfg80211: vastly simplify lockingJohannes Berg13-444/+115
Virtually all code paths in cfg80211 already (need to) hold the RTNL. As such, there's little point in having another four mutexes for various parts of the code, they just cause lock ordering issues (and much of the time, the RTNL and a few of the others need thus be held.) Simplify all this by getting rid of the extra four mutexes and just use the RTNL throughout. Only a few code changes were needed to do this and we can get rid of a work struct for bonus points. Signed-off-by: Johannes Berg <[email protected]>
2013-05-25cfg80211: use atomic_t for wiphy counterJohannes Berg1-8/+3
There's no need to lock, we can just use an atomic_t. Signed-off-by: Johannes Berg <[email protected]>
2013-05-25cfg80211: move cfg80211_get_dev_from_ifindex under wextJohannes Berg3-25/+21
The function is only used and needed by the wext code for scanning, so move it there. Signed-off-by: Johannes Berg <[email protected]>
2013-05-25Merge remote-tracking branch 'mac80211/master' into mac80211-nextJohannes Berg4-19/+33
2013-05-24{cfg,mac}80211: move mandatory rates calculation to cfg80211Ashok Nagarajan1-0/+23
Move mandatory rates calculation to cfg80211, shared with non mac80211 drivers. Signed-off-by: Ashok Nagarajan <[email protected]> [extend documentation] Signed-off-by: Johannes Berg <[email protected]>
2013-05-24cfg80211: Allow TDLS peer AID to be configured for VHTJouni Malinen1-2/+9
VHT uses peer AID in the PARTIAL_AID field in TDLS frames. The current design for TDLS is to first add a dummy STA entry before completing TDLS Setup and then update information on this STA entry based on what was received from the peer during the setup exchange. In theory, this could use NL80211_ATTR_STA_AID to set the peer AID just like this is used in AP mode to set the AID of an association station. However, existing cfg80211 validation rules prevent this attribute from being used with set_station operation. To avoid interoperability issues between different kernel and user space version combinations, introduce a new nl80211 attribute for the purpose of setting TDLS peer AID. This attribute can be used in both the new_station and set_station operations. It is not supposed to be allowed to change the AID value during the lifetime of the STA entry, but that validation is left for drivers to do in the change_station callback. Signed-off-by: Jouni Malinen <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-05-23cfg80211: fix reporting 64-bit station info tx bytesFelix Fietkau1-1/+1
Copy & paste mistake - STATION_INFO_TX_BYTES64 is the name of the flag, not NL80211_STA_INFO_TX_BYTES64. Signed-off-by: Felix Fietkau <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-05-23cfg80211: check wdev->netdev in connection workJohannes Berg1-0/+3
If a P2P-Device is present and another virtual interface triggers the connection work, the system crash because it tries to check if the P2P-Device's netdev (which doesn't exist) is up. Skip any wdevs that have no netdev to fix this. Cc: [email protected] Reported-by: YanBo <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-05-16cfg80211: Userspace may inform kernel of mesh auth method.Colleen Twitty2-0/+9
Authentication takes place in userspace, but the beacon is generated in the kernel. Allow userspace to inform the kernel of the authentication method so the appropriate mesh config IE can be set prior to beacon generation when joining the MBSS. Signed-off-by: Colleen Twitty <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-05-16cfg80211: use C99 initialisers to simplify code a bitJohannes Berg1-24/+20
Use C99 initialisers for the auth, deauth and disassoc requests to simplify the code. Signed-off-by: Johannes Berg <[email protected]>
2013-05-16nl80211: Add generic netlink module alias for cfg80211/nl80211Marcel Holtmann2-4/+5
To support auto-loading of wireless modules from netlink users, add module alias for nl80211 family. This also adds NL80211_GENL_NAME constant to define the "nl80211" netlink family name as part of uapi. Signed-off-by: Marcel Holtmann <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-05-16cfg80211: add 60GHz regulatory classVladimir Kondratiev1-0/+3
Add regulatory class for 60GHz band, according to the last specification. Signed-off-by: Vladimir Kondratiev <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-05-16cfg80211: add support for per-chain signal strength reportingFelix Fietkau1-0/+38
Signed-off-by: Felix Fietkau <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-05-16cfg80211: fix sending WoWLAN TCP wakeup settingsJohannes Berg1-0/+2
The code sending the current WoWLAN TCP wakeup settings in nl80211_send_wowlan_tcp() is not closing the nested attribute, thus causing the parser to get confused on the receiver side in userspace (iw). Fix this. Cc: [email protected] [3.9] Reported-by: Deepak Arora <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-05-16cfg80211: fix interface down/disconnect state handlingJohannes Berg2-2/+2
When the interface goes down, there's no need to call cfg80211_mlme_down() after __cfg80211_disconnect() as the latter will call the former (if appropriate.) Also, in __cfg80211_disconnect(), if the cfg80211 SME isn't used, __cfg80211_disconnected() may still need to be called (depending on the current state) so that the SME state gets cleared. Signed-off-by: Johannes Berg <[email protected]>
2013-05-16nl80211: Add wdev identifier to some nl80211 notificationsIlan Peer1-0/+2
Adding the attributes fixes an issue with P2P Device not working properly for management frame TX. Signed-off-by: Ilan Peer <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-05-16cfg80211: fix WoWLAN wakeup tracingJohannes Berg1-10/+13
If the device reports a non-wireless wakeup reason, the tracing code crashes trying to dereference a NULL pointer. Fix this by checking the pointer on all accesses and also add a non_wireless tag to the event. Cc: [email protected] Signed-off-by: Johannes Berg <[email protected]>
2013-05-16cfg80211: fix wiphy_register error pathJohannes Berg1-6/+10
If rfkill_register() fails in wiphy_register() the struct device is unregistered but everything else isn't (regulatory, debugfs) and we even leave the wiphy instance on all internal lists even though it will likely be freed soon, which is clearly a problem. Fix this by cleaning up properly. Cc: [email protected] Signed-off-by: Johannes Berg <[email protected]>
2013-05-01Merge branch 'for-linus' of ↵Linus Torvalds3-40/+38
git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs Pull VFS updates from Al Viro, Misc cleanups all over the place, mainly wrt /proc interfaces (switch create_proc_entry to proc_create(), get rid of the deprecated create_proc_read_entry() in favor of using proc_create_data() and seq_file etc). 7kloc removed. * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (204 commits) don't bother with deferred freeing of fdtables proc: Move non-public stuff from linux/proc_fs.h to fs/proc/internal.h proc: Make the PROC_I() and PDE() macros internal to procfs proc: Supply a function to remove a proc entry by PDE take cgroup_open() and cpuset_open() to fs/proc/base.c ppc: Clean up scanlog ppc: Clean up rtas_flash driver somewhat hostap: proc: Use remove_proc_subtree() drm: proc: Use remove_proc_subtree() drm: proc: Use minor->index to label things, not PDE->name drm: Constify drm_proc_list[] zoran: Don't print proc_dir_entry data in debug reiserfs: Don't access the proc_dir_entry in r_open(), r_start() r_show() proc: Supply an accessor for getting the data from a PDE's parent airo: Use remove_proc_subtree() rtl8192u: Don't need to save device proc dir PDE rtl8187se: Use a dir under /proc/net/r8180/ proc: Add proc_mkdir_data() proc: Move some bits from linux/proc_fs.h to linux/{of.h,signal.h,tty.h} proc: Move PDE_NET() to fs/proc/proc_net.c ...
2013-04-29hostap: Don't use create_proc_read_entry()David Howells3-40/+38
Don't use create_proc_read_entry() as that is deprecated, but rather use proc_create_data() and seq_file instead. Signed-off-by: David Howells <[email protected]> Acked-by: Greg Kroah-Hartman <[email protected]> cc: Jouni Malinen <[email protected]> cc: John W. Linville <[email protected]> cc: Johannes Berg <[email protected]> cc: [email protected] cc: [email protected] cc: [email protected] Signed-off-by: Al Viro <[email protected]>
2013-04-24Merge branch 'master' of ↵John W. Linville7-81/+301
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
2013-04-22cfg80211: introduce critical protocol indication from user-spaceArend van Spriel5-1/+183
Some protocols need a more reliable connection to complete successful in reasonable time. This patch adds a user-space API to indicate the wireless driver that a critical protocol is about to commence and when it is done, using nl80211 primitives NL80211_CMD_CRIT_PROTOCOL_START and NL80211_CRIT_PROTOCOL_STOP. There can be only on critical protocol session started per registered cfg80211 device. The driver can support this by implementing the cfg80211 callbacks .crit_proto_start() and .crit_proto_stop(). Examples of protocols that can benefit from this are DHCP, EAPOL, APIPA. Exactly how the link can/should be made more reliable is up to the driver. Things to consider are avoid scanning, no multi-channel operations, and alter coexistence schemes. Reviewed-by: Pieter-Paul Giesberts <[email protected]> Reviewed-by: Franky (Zhenhui) Lin <[email protected]> Signed-off-by: Arend van Spriel <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-04-22cfg80211: invert P2P-Device vs. netdev check orderingJohannes Berg1-4/+4
In cfg80211_can_use_iftype_chan(), check for P2P Device first, and then for netdevs. This doesn't really change anything but makes the code a bit easier to read since it may not be obvious for everyone at first that a P2P device has no netdev. Signed-off-by: Johannes Berg <[email protected]>
2013-04-22cfg80211: fix P2P-Device stop lockingJohannes Berg1-0/+2
cfg80211_stop_p2p_device() requires the devlist_mtx to be held, but nl80211_stop_p2p_device() doesn't acquire it which is a locking error and causes a warning (when lockdep is enabled). Fix this. Signed-off-by: Johannes Berg <[email protected]>
2013-04-22Merge remote-tracking branch 'wireless-next/master' into mac80211-nextJohannes Berg7-54/+108
2013-04-19nl80211: allow using wdev identifiers to get scan resultsJohannes Berg1-75/+91
Most dump callbacks, including the scan results one, use the netdev to identify what to do, which is incorrect for the P2P_DEVICE support, it needs to be able to get the scan result from the wdev. Change all dumps to unify the code, but ones other than scan don't really support being executed on a wdev that has no netdev. Signed-off-by: Johannes Berg <[email protected]>
2013-04-16cfg80211: add ieee80211_operating_class_to_bandJohannes Berg1-0/+20
This function converts a (global only!) operating class to an internal band identifier. This will be needed for extended channel switch support. Signed-off-by: Johannes Berg <[email protected]>
2013-04-16wireless: regulatory: fix channel disabling race conditionJohannes Berg1-1/+1
When a full scan 2.4 and 5 GHz scan is scheduled, but then the 2.4 GHz part of the scan disables a 5.2 GHz channel due to, e.g. receiving country or frequency information, that 5.2 GHz channel might already be in the list of channels to scan next. Then, when the driver checks if it should do a passive scan, that will return false and attempt an active scan. This is not only wrong but can also lead to the iwlwifi device firmware crashing since it checks regulatory as well. Fix this by not setting the channel flags to just disabled but rather OR'ing in the disabled flag. That way, even if the race happens, the channel will be scanned passively which is still (mostly) correct. Cc: [email protected] Signed-off-by: Johannes Berg <[email protected]>
2013-04-10Merge branch 'master' of ↵John W. Linville3-4/+6
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem Conflicts: drivers/net/wireless/rt2x00/rt2x00pci.c net/mac80211/sta_info.c net/wireless/core.h
2013-04-10Merge branch 'master' of ↵John W. Linville1-0/+2
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless Conflicts: drivers/net/wireless/rt2x00/rt2x00pci.c
2013-04-03Merge branch 'for-john' of ↵John W. Linville1-0/+2
git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
2013-04-01Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/netDavid S. Miller7-54/+108
Conflicts: net/mac80211/sta_info.c net/wireless/core.h Two minor conflicts in wireless. Overlapping additions of extern declarations in net/wireless/core.h and a bug fix overlapping with the addition of a boolean parameter to __ieee80211_key_free(). Signed-off-by: David S. Miller <[email protected]>
2013-03-30cfg80211: sched_scan_mtx lock in cfg80211_conn_work()Artem Savkov1-0/+2
Introduced in f9f475292dbb0e7035fb6661d1524761ea0888d9 ("cfg80211: always check for scan end on P2P device") cfg80211_conn_scan() which requires sched_scan_mtx to be held can be called from cfg80211_conn_work(). Without this we are hitting multiple warnings like the following: WARNING: at net/wireless/sme.c:88 cfg80211_conn_scan+0x1dc/0x3a0 [cfg80211]() Hardware name: 0578A21 Modules linked in: ... Pid: 620, comm: kworker/3:1 Not tainted 3.9.0-rc4-next-20130328+ #326 Call Trace: [<c1036992>] warn_slowpath_common+0x72/0xa0 [<c10369e2>] warn_slowpath_null+0x22/0x30 [<faa4b0ec>] cfg80211_conn_scan+0x1dc/0x3a0 [cfg80211] [<faa4b344>] cfg80211_conn_do_work+0x94/0x380 [cfg80211] [<faa4c3b2>] cfg80211_conn_work+0xa2/0x130 [cfg80211] [<c1051858>] process_one_work+0x198/0x450 Signed-off-by: Artem Savkov <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-03-29Merge branch 'master' of ↵John W. Linville7-54/+106
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless Conflicts: net/mac80211/sta_info.c net/wireless/core.h
2013-03-28net: add ETH_P_802_3_MINSimon Horman1-1/+1
Add a new constant ETH_P_802_3_MIN, the minimum ethernet type for an 802.3 frame. Frames with a lower value in the ethernet type field are Ethernet II. Also update all the users of this value that David Miller and I could find to use the new constant. Also correct a bug in util.c. The comparison with ETH_P_802_3_MIN should be >= not >. As suggested by Jesse Gross. Compile tested only. Cc: David Miller <[email protected]> Cc: Jesse Gross <[email protected]> Cc: Karsten Keil <[email protected]> Cc: John W. Linville <[email protected]> Cc: Johannes Berg <[email protected]> Cc: Bart De Schuymer <[email protected]> Cc: Stephen Hemminger <[email protected]> Cc: Patrick McHardy <[email protected]> Cc: Marcel Holtmann <[email protected]> Cc: Gustavo Padovan <[email protected]> Cc: Johan Hedberg <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Acked-by: Mauro Carvalho Chehab <[email protected]> Acked-by: Stefan Richter <[email protected]> Signed-off-by: Simon Horman <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2013-03-25Merge branch 'for-john' of ↵John W. Linville7-54/+106
git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
2013-03-24cfg80211: always check for scan end on P2P deviceJohannes Berg6-47/+92
If a P2P device wdev is removed while it has a scan, then the scan completion might crash later as it is already freed by that time. To avoid the crash always check the scan completion when the P2P device is being removed for some reason. If the driver already canceled it, don't want and free it, otherwise warn and leak it to avoid later crashes. In order to do this, locking needs to be changed away from the rdev mutex (which can't always be guaranteed). For now, use the sched_scan_mtx instead, I'll rename it to just scan_mtx in a later patch. Signed-off-by: Johannes Berg <[email protected]>
2013-03-20cfg80211: fix wdev tracing crashJohannes Berg1-1/+2
Arend reported a crash in tracing if the driver returns an ERR_PTR() value from the add_virtual_intf() callback. This is due to the tracing then still attempting to dereference the "pointer", fix this by using IS_ERR_OR_NULL(). Reported-by: Arend van Spriel <[email protected]> Tested-by: Arend van Spriel <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-03-20cfg80211: fix error return code in cfg80211_init()Wei Yongjun1-1/+3
Fix to return a negative error code from the error handling case instead of 0, as returned elsewhere in this function. Signed-off-by: Wei Yongjun <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-03-20cfg80211: fix potential connection work crashJohannes Berg1-1/+1
If wpa_supplicant and iw/iwconfig are used together, very rarely the system crashes. It seems to be related to the connection parameters not being set up, but it's not all clear to me how this happens. In any case, checking that the conn pointer exists here is probably a good idea. Signed-off-by: Johannes Berg <[email protected]>
2013-03-07cfg80211: fix potential BSS memory leak and updateJohannes Berg1-5/+11
In the odd case that while updating information from a beacon, a BSS was found that is part of a hidden group, we drop the new information. In this case, however, we leak the IE buffer from the update, and erroneously update the entry's timestamp so it will never time out. Fix both these issues. Cc: Larry Finger <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-03-07cfg80211: fix inconsistency in trace for rdev_set_mac_aclVladimir Kondratiev1-1/+1
There is NETDEV_ENTRY that was incorrectly assigned as WIPHY_ASSIGN, fix it. Signed-off-by: Vladimir Kondratiev <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-03-06nl80211: user_mpm overrides auto_open_plinksThomas Pedersen1-0/+3
If the user requested a userspace MPM, automatically disable auto_open_plinks to fully disable the kernel MPM. Signed-off-by: Thomas Pedersen <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-03-06cfg80211: rename mesh station typesThomas Pedersen1-4/+4
The mesh station types used to refer to whether the station was secure or nonsecure. Really the salient information is whether it is managed by the kernel or userspace Signed-off-by: Thomas Pedersen <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-03-06nl80211: explicit userspace MPMThomas Pedersen2-0/+9
Secure mesh had the implicit requirement that the Mesh Peering Management entity be in userspace. However userspace might want to implement an open MPM as well, so specify a mesh setup parameter to indicate this. Signed-off-by: Thomas Pedersen <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-03-06regulatory: allow VHT channels in world roamingJohannes Berg1-3/+3
For VHT, the wider bandwidths (up to 160 MHz) need to be allowed. Since world roaming only covers the case of connecting to an AP, it can be opened up there, we will rely on the AP to know the local regulations. Acked-by: Luis R. Rodriguez <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
2013-03-06cfg80211: enable TDLS on P2P client interfacesJohannes Berg1-0/+1
There's no reason TDLS should be prevented on P2P client interfaces, and most of the code already handles it, so allow adding stations for it. Reported-by: Jouni Malinen <[email protected]> Signed-off-by: Johannes Berg <[email protected]>