16 Apr, 2013

1 commit

  • 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: stable@vger.kernel.org
    Signed-off-by: Johannes Berg

    Johannes Berg
     

06 Mar, 2013

1 commit


19 Feb, 2013

1 commit


15 Feb, 2013

2 commits

  • Some drivers might support 80 or 160 MHz only on some
    channels for whatever reason, so allow them to disable
    these channel widths. Also maintain the new flags when
    regulatory bandwidth limitations would disable these
    wide channels.

    Reviewed-by: Luis R. Rodriguez
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • Add new NL80211_CMD_RADAR_DETECT, which starts the Channel
    Availability Check (CAC). This command will also notify the
    usermode about events (CAC finished, CAC aborted, radar
    detected, NOP finished).
    Once radar detection has started it should continuously
    monitor for radars as long as the channel is active.

    This patch enables DFS for AP mode in nl80211/cfg80211.

    Based on original patch by Victor Goldenshtein

    Signed-off-by: Simon Wunderlich
    [remove WIPHY_FLAG_HAS_RADAR_DETECT again -- my mistake]
    Signed-off-by: Johannes Berg

    Simon Wunderlich
     

12 Feb, 2013

1 commit

  • When a driver requests a specific regulatory domain after cfg80211 already
    has one, a struct ieee80211_regdomain is leaked.

    Reported-by: Larry Finger
    Tested-by: Larry Finger
    Signed-off-by: Larry Finger
    Signed-off-by: Johannes Berg

    Larry Finger
     

29 Jan, 2013

1 commit


11 Jan, 2013

1 commit

  • commit 1a9193185f462a51815fe48491f8a6fb6b942551 "regulatory: code cleanup"
    changed is_ht40_allowed without considering that IEEE80211_CHAN_NO_HT40 is
    not just one flag, but two.
    This is causing HT40- to be blocked completely.

    Signed-off-by: Felix Fietkau
    Signed-off-by: Johannes Berg

    Felix Fietkau
     

09 Jan, 2013

2 commits

  • My commit 379b82f4c9dc6e67bf61aa61b096c06a2f320f60
    ("regulatory: pass new regdomain to reset function")
    broke the restore_regulatory_settings() function due
    to a logic change. Consider this change:

    - reset_regdomains(true);
    - cfg80211_regdomain = cfg80211_world_regdom;
    + reset_regdomains(true, cfg80211_world_regdom);

    This looks innocent enough, until you realise that the
    called function (reset_regdomains) also resets the
    cfg80211_world_regdom pointer, so that the old version
    of the code would use the new object it pointed to and
    the new version of the code uses the old object. This
    lead to a double-free of this object.

    Since reset_regdomains() sets it to &world_regdom, use
    that directly.

    Reported-by: Sujith Manoharan
    Tested-by: Sujith Manoharan
    Reported-by: Bob Copeland
    Reported-by: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • The uevent callback doesn't protect its access to
    last_request, which now causes a warning since
    the conversion to get_last_request(). Fix this by
    allowing to use RCU protection for last_request.

    Reported-by: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Johannes Berg
     

03 Jan, 2013

26 commits


22 Dec, 2012

1 commit

  • CONFIG_HOTPLUG is always enabled now, so remove the unused code that was
    trying to be compiled out when this option was disabled, in the
    networking core.

    Cc: Bill Pemberton
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: David S. Miller

    Greg KH
     

07 Dec, 2012

1 commit


30 Nov, 2012

1 commit

  • When a BSS struct is updated, the IEs are currently
    overwritten or freed. This can lead to races if some
    other CPU is accessing the BSS struct and using the
    IEs concurrently.

    Fix this by always allocating the IEs in a new struct
    that holds the data and length and protecting access
    to this new struct with RCU.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

12 Nov, 2012

1 commit