22 Sep, 2011

1 commit

  • Conflicts:
    MAINTAINERS
    drivers/net/Kconfig
    drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
    drivers/net/ethernet/broadcom/tg3.c
    drivers/net/wireless/iwlwifi/iwl-pci.c
    drivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c
    drivers/net/wireless/rt2x00/rt2800usb.c
    drivers/net/wireless/wl12xx/main.c

    David S. Miller
     

15 Sep, 2011

1 commit

  • The function wiphy_update_regulatory() uses the static variable
    last_request and thus needs to be called with reg_mutex held.
    This is the case for all users in reg.c, but the function was
    exported for use by wiphy_register(), from where it is called
    without the lock being held.

    Fix this by making wiphy_update_regulatory() private and introducing
    regulatory_update() as a wrapper that acquires and holds the lock.

    Signed-off-by: Sven Neumann
    Cc: John W. Linville
    Cc: Luis R. Rodriguez
    Cc: Daniel Mack
    Cc: linux-wireless@vger.kernel.org
    Acked-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Sven Neumann
     

23 Aug, 2011

1 commit

  • Do not call ->suspend, ->resume methods after we unregister wiphy. Also
    delete sta_clanup timer after we finish wiphy unregister to avoid this:

    WARNING: at lib/debugobjects.c:262 debug_print_object+0x85/0xa0()
    Hardware name: 6369CTO
    ODEBUG: free active (active state 0) object type: timer_list hint: sta_info_cleanup+0x0/0x180 [mac80211]
    Modules linked in: aes_i586 aes_generic fuse bridge stp llc autofs4 sunrpc cpufreq_ondemand acpi_cpufreq mperf ext2 dm_mod uinput thinkpad_acpi hwmon sg arc4 rt2800usb rt2800lib crc_ccitt rt2x00usb rt2x00lib mac80211 cfg80211 i2c_i801 iTCO_wdt iTCO_vendor_support e1000e ext4 mbcache jbd2 sd_mod crc_t10dif sr_mod cdrom yenta_socket ahci libahci pata_acpi ata_generic ata_piix i915 drm_kms_helper drm i2c_algo_bit video [last unloaded: microcode]
    Pid: 5663, comm: pm-hibernate Not tainted 3.1.0-rc1-wl+ #19
    Call Trace:
    [] warn_slowpath_common+0x6d/0xa0
    [] ? debug_print_object+0x85/0xa0
    [] ? debug_print_object+0x85/0xa0
    [] warn_slowpath_fmt+0x2e/0x30
    [] debug_print_object+0x85/0xa0
    [] ? sta_info_alloc+0x1a0/0x1a0 [mac80211]
    [] debug_check_no_obj_freed+0xe2/0x180
    [] kfree+0x8b/0x150
    [] cfg80211_dev_free+0x7e/0x90 [cfg80211]
    [] wiphy_dev_release+0xd/0x10 [cfg80211]
    [] device_release+0x19/0x80
    [] kobject_release+0x7a/0x1c0
    [] ? rtnl_unlock+0x8/0x10
    [] ? wiphy_resume+0x6b/0x80 [cfg80211]
    [] ? kobject_del+0x30/0x30
    [] kref_put+0x2d/0x60
    [] kobject_put+0x1d/0x50
    [] ? mutex_lock+0x14/0x40
    [] put_device+0xf/0x20
    [] dpm_resume+0xca/0x160
    [] hibernation_snapshot+0xcd/0x260
    [] ? freeze_processes+0x3f/0x90
    [] hibernate+0xcb/0x1e0
    [] ? pm_async_store+0x40/0x40
    [] state_store+0xa0/0xb0
    [] ? pm_async_store+0x40/0x40
    [] kobj_attr_store+0x20/0x30
    [] sysfs_write_file+0x94/0xf0
    [] vfs_write+0x9a/0x160
    [] ? sysfs_open_file+0x200/0x200
    [] sys_write+0x3d/0x70
    [] sysenter_do_call+0x12/0x28

    Cc: stable@kernel.org
    Signed-off-by: Stanislaw Gruszka
    Signed-off-by: John W. Linville

    Stanislaw Gruszka
     

21 Jul, 2011

1 commit

  • cfg80211_netdev_notifier_call() is configuring psm in case
    of NL80211_IFTYPE_STATION interface type (on NETDEV_UP).
    do the same for NL80211_IFTYPE_P2P_CLIENT interface type.

    Signed-off-by: Eliad Peller
    Reviewed-by: Johannes Berg
    Signed-off-by: John W. Linville

    Eliad Peller
     

16 Jul, 2011

1 commit

  • Since we now have the necessary API in place to support
    GTK rekeying, applications will need to know whether it
    is supported by a device. Add a pseudo-trigger that is
    used only to advertise that capability. Also, add some
    new triggers that match what iwlagn devices can do.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

06 Jul, 2011

1 commit

  • There was a deadlock when rfkill-blocking a wireless interface,
    because we were locking the rdev mutex on NETDEV_GOING_DOWN to stop
    sched_scans that were eventually running. The rfkill block code was
    already holding a mutex under rdev:

    kernel: =======================================================
    kernel: [ INFO: possible circular locking dependency detected ]
    kernel: 3.0.0-rc1-00049-g1fa7b6a #57
    kernel: -------------------------------------------------------
    kernel: kworker/0:1/4525 is trying to acquire lock:
    kernel: (&rdev->mtx){+.+.+.}, at: [] cfg80211_netdev_notifier_call+0x131/0x5b0
    kernel:
    kernel: but task is already holding lock:
    kernel: (&rdev->devlist_mtx){+.+.+.}, at: [] cfg80211_rfkill_set_block+0x4f/0xa0
    kernel:
    kernel: which lock already depends on the new lock.

    To fix this, add a new mutex specifically for sched_scan, to protect
    the sched_scan_req element in the rdev struct, instead of using the
    global rdev mutex.

    Reported-by: Duane Griffin
    Signed-off-by: Luciano Coelho
    Signed-off-by: John W. Linville

    Luciano Coelho
     

17 May, 2011

1 commit

  • Add the ability to advertise interface combinations in nl80211.
    This allows the driver to indicate what the combinations are
    that it supports. "Combinations" of just a single interface are
    implicit, as previously. Note that cfg80211 will enforce that
    the restrictions are met, but not for all drivers yet (once all
    drivers are updated, we can remove the flag and enforce for all).

    When no combinations are actually supported, an empty list will
    be exported so that userspace can know if the kernel exported
    this info or not (although it isn't clear to me what tools using
    the info should do if the kernel didn't export it).

    Since some interface types are purely virtual/software and don't
    fit the restrictions, those are exposed in a new list of pure SW
    types, not subject to restrictions. This mainly exists to handle
    AP-VLAN and monitor interfaces in mac80211.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

13 May, 2011

2 commits

  • When sched_scan_stopped was called by the driver, mac80211 calls
    cfg80211, which in turn was calling mac80211 back with a flag
    "driver_initiated". This flag was used so that mac80211 would do the
    necessary cleanup but would not call the driver. This was enough to
    prevent the bounce back between the driver and mac80211, but not
    between mac80211 and cfg80211.

    To fix this, we now do the cleanup in mac80211 before calling
    cfg80211. To help with locking issues, the workqueue was moved from
    cfg80211 to mac80211.

    Reported-by: Johannes Berg
    Signed-off-by: Luciano Coelho
    Signed-off-by: John W. Linville

    Luciano Coelho
     
  • Multiple virtual AP interfaces can currently try
    to use different beacon intervals, but that just
    leads to problems since it won't actually be done
    that way by drivers. Return an error in this case
    to make sure it won't be done wrong.

    Also, ignore attempts to change the DTIM period
    or beacon interval during the lifetime of the BSS.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

12 May, 2011

1 commit

  • Implement new functionality for scheduled scan offload. With this feature we
    can scan automatically at certain intervals.

    The idea is that the hardware can perform scan automatically and filter on
    desired results without waking up the host unnecessarily.

    Add NL80211_CMD_START_SCHED_SCAN and NL80211_CMD_STOP_SCHED_SCAN
    commands to the nl80211 interface. When results are available they are
    reported by NL80211_CMD_SCHED_SCAN_RESULTS events. The userspace is
    informed when the scheduled scan has stopped with a
    NL80211_CMD_SCHED_SCAN_STOPPED event, which can be triggered either by
    the driver or by a call to NL80211_CMD_STOP_SCHED_SCAN.

    Signed-off-by: Luciano Coelho
    Signed-off-by: John W. Linville

    Luciano Coelho
     

06 May, 2011

1 commit

  • This is based on (but now quite far from) the
    original work from Luis and Eliad. Add support
    for configuring WoWLAN triggers, and getting
    the configuration out again. Changes from the
    original patchset are too numerous to list,
    but one important change needs highlighting:
    the suspend() callback is passed NULL for the
    trigger configuration if userspace has not
    configured WoWLAN at all.

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: Eliad Peller
    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

26 Apr, 2011

1 commit

  • Currently mac80211 uses ieee80211_disable_40mhz_24ghz module
    parameter to allow disabling 40MHz operation in the 2.4GHz band.
    Move this handling from mac80211 to cfg80211 so that the feature
    will be more generic.

    Signed-off-by: Amitkumar Karwar
    Signed-off-by: Bing Zhao
    Reviewed-by: Johannes Berg
    Signed-off-by: John W. Linville

    Amitkumar Karwar
     

04 Feb, 2011

1 commit

  • Currently cfg80211 only configures the PSM state to the driver upon creation
    of a new virtual interface, but not after interface type change. The mac80211
    on the other hand reinitializes its sdata structure every time the interface
    type is changed, losing the PSM configuration.

    Hence, if the interface type is changed to, say, ad-hoc and then back to
    managed, "iw wlan0 get power_save" will claim that PSM is enabled, when in
    fact on mac80211 level it is not.

    Fix this in cfg80211 by configuring the PSM state to the driver each time
    the interface is brought up instead of just when the interface is created.

    Signed-off-by: Juuso Oikarinen
    Signed-off-by: John W. Linville

    Juuso Oikarinen
     

21 Dec, 2010

1 commit

  • Userspace will now be allowed to toggle between the default path
    selection algorithm (HWMP, implemented in the kernel), and a vendor
    specific alternative. Also in the same patch, allow userspace to add
    information elements to mesh beacons. This is accordance with the
    Extensible Path Selection Framework specified in version 7.0 of the
    802.11s draft.

    Signed-off-by: Javier Cardona
    Signed-off-by: John W. Linville

    Javier Cardona
     

07 Dec, 2010

1 commit

  • Instead of tying mesh activity to interface up,
    add join and leave commands for mesh. Since we
    must be backward compatible, let cfg80211 handle
    joining a mesh if a mesh ID was pre-configured
    when the device goes up.

    Note that this therefore must modify mac80211 as
    well since mac80211 needs to lose the logic to
    start the mesh on interface up.

    We now allow querying mesh parameters before the
    mesh is connected, which simply returns defaults.
    Setting them (internally renamed to "update") is
    only allowed while connected. Specify them with
    the new mesh join command instead where needed.

    In mac80211, beaconing must now also follow the
    mesh enabled/not enabled state, which is done
    by testing the mesh ID.

    Signed-off-by: Javier Cardona
    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

25 Nov, 2010

1 commit


12 Oct, 2010

1 commit

  • This reverts commit 5a254ffe3ffdfa84fe076009bd8e88da412180d2.

    The commit failed to take into account that allocated wireless devices
    (wiphys) are not added into the device list upon allocation, but only
    when they are registered. Therefore, it opened up a race between
    allocating and registering a name, so that if two processes allocate and
    register concurrently ("alloc, alloc, register, register" rather than
    "alloc, register, alloc, register") the code will attempt to use the
    same name twice.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

06 Oct, 2010

1 commit


25 Sep, 2010

1 commit


17 Sep, 2010

2 commits


01 Sep, 2010

1 commit

  • Otherwise lockdep complains...

    https://bugzilla.kernel.org/show_bug.cgi?id=17311

    [ INFO: possible circular locking dependency detected ]
    2.6.36-rc2-git4 #12
    -------------------------------------------------------
    kworker/0:3/3630 is trying to acquire lock:
    (rtnl_mutex){+.+.+.}, at: [] rtnl_lock+0x12/0x14

    but task is already holding lock:
    (rfkill_global_mutex){+.+.+.}, at: []
    rfkill_switch_all+0x24/0x49 [rfkill]

    which lock already depends on the new lock.

    the existing dependency chain (in reverse order) is:

    -> #2 (rfkill_global_mutex){+.+.+.}:
    [] lock_acquire+0x120/0x15b
    [] __mutex_lock_common+0x54/0x52e
    [] mutex_lock_nested+0x34/0x39
    [] rfkill_register+0x2b/0x29c [rfkill]
    [] wiphy_register+0x1ae/0x270 [cfg80211]
    [] ieee80211_register_hw+0x1b4/0x3cf [mac80211]
    [] iwl_ucode_callback+0x9e9/0xae3 [iwlagn]
    [] request_firmware_work_func+0x54/0x6f
    [] kthread+0x8c/0x94
    [] kernel_thread_helper+0x4/0x10

    -> #1 (cfg80211_mutex){+.+.+.}:
    [] lock_acquire+0x120/0x15b
    [] __mutex_lock_common+0x54/0x52e
    [] mutex_lock_nested+0x34/0x39
    [] cfg80211_get_dev_from_ifindex+0x1b/0x7c [cfg80211]
    [] cfg80211_wext_giwscan+0x58/0x990 [cfg80211]
    [] ioctl_standard_iw_point+0x1a8/0x272
    [] ioctl_standard_call+0x91/0xa7
    [] T.723+0xbd/0x12c
    [] wext_handle_ioctl+0x31/0x6d
    [] dev_ioctl+0x63d/0x67a
    [] sock_ioctl+0x48/0x21d
    [] do_vfs_ioctl+0x4ba/0x509
    [] sys_ioctl+0x51/0x74
    [] system_call_fastpath+0x16/0x1b

    -> #0 (rtnl_mutex){+.+.+.}:
    [] __lock_acquire+0xa93/0xd9a
    [] lock_acquire+0x120/0x15b
    [] __mutex_lock_common+0x54/0x52e
    [] mutex_lock_nested+0x34/0x39
    [] rtnl_lock+0x12/0x14
    [] cfg80211_rfkill_set_block+0x1a/0x7b [cfg80211]
    [] rfkill_set_block+0x80/0xd5 [rfkill]
    [] __rfkill_switch_all+0x3f/0x6f [rfkill]
    [] rfkill_switch_all+0x38/0x49 [rfkill]
    [] rfkill_op_handler+0x105/0x136 [rfkill]
    [] process_one_work+0x248/0x403
    [] worker_thread+0x139/0x214
    [] kthread+0x8c/0x94
    [] kernel_thread_helper+0x4/0x10

    Signed-off-by: John W. Linville
    Acked-by: Johannes Berg

    John W. Linville
     

25 Aug, 2010

1 commit

  • Allow userspace to register for more than just
    action frames by giving the frame subtype, and
    make it possible to use this in various modes
    as well.

    With some tweaks and some added functionality
    this will, in the future, also be usable in AP
    mode and be able to replace the cooked monitor
    interface currently used in that case.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

17 Aug, 2010

1 commit

  • Enable using network namespaces with
    wireless devices even when sysfs is
    enabled using the same infrastructure
    that was built for netdevs.

    Signed-off-by: Johannes Berg
    Acked-by: "Eric W. Biederman"
    Signed-off-by: John W. Linville

    Johannes Berg
     

28 Jul, 2010

1 commit

  • Save a few bytes of text

    (allyesconfig)
    $ size drivers/net/wireless/built-in.o*
    text data bss dec hex filename
    3924568 100548 871056 4896172 4ab5ac drivers/net/wireless/built-in.o.new
    3926520 100548 871464 4898532 4abee4 drivers/net/wireless/built-in.o.old

    $ size net/wireless/core.o*
    text data bss dec hex filename
    12843 216 3768 16827 41bb net/wireless/core.o.new
    12328 216 3656 16200 3f48 net/wireless/core.o

    Signed-off-by: Joe Perches
    Signed-off-by: John W. Linville

    Joe Perches
     

22 Jul, 2010

1 commit

  • device_add() is called before adding the phy to the cfg80211 device
    list.

    So if a userspace program uses sysfs uevents to detect new phy
    devices, and queries nl80211 to get phy info, it can get ENODEV even
    though the phy exists in sysfs.

    An easy workaround is to hold the cfg80211 mutex until the phy is
    present in sysfs/cfg80211/debugfs.

    Signed-off-by: Maxime Bizon
    Signed-off-by: John W. Linville

    Maxime Bizon
     

19 Jun, 2010

1 commit


06 May, 2010

1 commit


28 Apr, 2010

1 commit

  • Now that the mac80211 is choosing dynamic ps timeouts based on the ps-qos
    network latency configuration, configure a default value of -1 as the dynamic
    ps timeout in cfg80211. This value allows the mac80211 to determine the value
    to be used.

    Signed-off-by: Juuso Oikarinen
    Signed-off-by: John W. Linville

    Juuso Oikarinen
     

30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

20 Feb, 2010

1 commit

  • The most needed command from nl80211, which Wireless Extensions had,
    is support for power save mode. Add a simple command to make it possible
    to enable and disable power save via nl80211.

    I was also planning about extending the interface, for example adding the
    timeout value, but after thinking more about this I decided not to do it.
    Basically there were three reasons:

    Firstly, the parameters for power save are very much hardware dependent.
    Trying to find a unified interface which would work with all hardware, and
    still make sense to users, will be very difficult.

    Secondly, IEEE 802.11 power save implementation in Linux is still in state
    of flux. We have a long way to still to go and there is no way to predict
    what kind of implementation we will have after few years. And because we
    need to support nl80211 interface a long time, practically forever, adding
    now parameters to nl80211 might create maintenance problems later on.

    Third issue are the users. Power save parameters are mostly used for
    debugging, so debugfs is better, more flexible, interface for this.
    For example, wpa_supplicant currently doesn't configure anything related
    to power save mode. It's better to strive that kernel can automatically
    optimise the power save parameters, like with help of pm qos network
    and other traffic parameters.

    Later on, when we have better understanding of power save, we can extend
    this command with more features, if there's a need for that.

    Signed-off-by: Kalle Valo
    Signed-off-by: John W. Linville

    Kalle Valo
     

16 Feb, 2010

1 commit

  • This implements a new command to register for action frames
    that userspace wants to handle instead of the in-kernel
    rejection. It is then responsible for rejecting ones that
    it decided not to handle. There is no unregistration, but
    the socket can be closed for that.

    Frames that are not registered for will not be forwarded
    to userspace and will be rejected by the kernel, the
    cfg80211 API helps implementing that.

    Additionally, this patch adds a new command that allows
    doing action frame transmission from userspace. It can be
    used either to exchange action frames on the current
    operational channel (e.g., with the AP with which we are
    currently associated) or to exchange off-channel Public
    Action frames with the remain-on-channel command.

    Signed-off-by: Jouni Malinen
    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Jouni Malinen
     

23 Jan, 2010

1 commit

  • If a device has multiple MAC addresses, userspace will
    need to know about that. Similarly, if it allows the
    MAC addresses to vary by a bitmask.

    If a driver exports multiple addresses, it is assumed
    that it will be able to deal with that many different
    addresses, which need not necessarily match the ones
    programmed into the device; if a mask is set then the
    device should deal addresses within that mask based
    on an arbitrary "base address".

    To test it all and show how it is used, add support
    to hwsim even though it can't actually deal with
    addresses different from the default.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

20 Jan, 2010

2 commits


13 Jan, 2010

1 commit

  • The new attribute NL80211_ATTR_WIPHY_COVERAGE_CLASS sets IEEE 802.11
    Coverage Class, which depends on maximum distance of nodes in a
    wireless network. It's required for long distance links (more than a few
    hundred meters).

    The attribute is now ignored by two non-mac80211 drivers, rndis and
    iwmc3200wifi, together with WIPHY_PARAM_RETRY_SHORT and
    WIPHY_PARAM_RETRY_LONG. If it turns out to be a problem, we could split
    set_wiphy_params callback or add new capability bits.

    Signed-off-by: Lukas Turek
    Signed-off-by: John W. Linville

    Lukáš Turek
     

12 Jan, 2010

1 commit


29 Nov, 2009

1 commit

  • This patch moves the works cleanup, scan and events to a cfg80211
    dedicated workqueue.

    Platform driver like eeepc-laptop ought to use works to rfkill (as
    new rfkill does lock in rfkill_unregister and the platform driver is
    called from rfkill_switch_all which also lock the same mutex).
    This raise a new issue in itself that the work scheduled by the platform
    driver to the global worqueue calls wiphy_unregister which flush_work
    scan and event works (which thus flush works on the global workqueue inside
    a work on the global workqueue) and also put on hold the wdev_cleanup_work
    (which prevents the dev_put on netdev thus indefinite Usage count error on
    wifi device).

    Signed-off-by: Johannes Berg
    Signed-off-by: Alban Browaeys
    Signed-off-by: John W. Linville

    Alban Browaeys
     

25 Nov, 2009

1 commit


20 Nov, 2009

1 commit

  • A number of people have tried to add a wireless interface
    (in managed mode) to a bridge and then complained that it
    doesn't work. It cannot work, however, because in 802.11
    networks all packets need to be acknowledged and as such
    need to be sent to the right address. Promiscuous doesn't
    help here. The wireless address format used for these
    links has only space for three addresses, the
    * transmitter, which must be equal to the sender (origin)
    * receiver (on the wireless medium), which is the AP in
    the case of managed mode
    * the recipient (destination), which is on the APs local
    network segment

    In an IBSS, it is similar, but the receiver and recipient
    must match and the third address is used as the BSSID.

    To avoid such mistakes in the future, disallow adding a
    wireless interface to a bridge.

    Felix has recently added a four-address mode to the AP
    and client side that can be used (after negotiating that
    it is possible, which must happen out-of-band by setting
    up both sides) for bridging, so allow that case.

    Signed-off-by: Johannes Berg
    Acked-by: Stephen Hemminger
    Signed-off-by: John W. Linville

    Johannes Berg