lkml.org 
[lkml]   [2012]   [Aug]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subjectpull request: wireless 2012-08-10
    commit 039aafba1b57ed39acb3abc290c11be37402feb2

    Dave,

    Here is a handful of fixes intended for 3.6.

    Daniel Drake offers a cfg80211 fix to consume pending events before
    taking a wireless device down. This prevents a resource leak.

    Stanislaw Gruszka gives us a fix for a NULL pointer dereference in
    rt61pci.

    Johannes Berg provides an iwlwifi patch to disable "greenfield" mode.
    Use of that mode was causing a rate scaling problem in for iwlwifi.

    Please let me know if there are problems!

    Thanks,

    John

    ---

    The following changes since commit 63d02d157ec4124990258d66517b6c11fd6df0cf:

    net: tcp: ipv6_mapped needs sk_rx_dst_set method (2012-08-09 20:56:09 -0700)

    are available in the git repository at:

    git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git for-davem

    for you to fetch changes up to 039aafba1b57ed39acb3abc290c11be37402feb2:

    Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem (2012-08-10 14:05:38 -0400)

    ----------------------------------------------------------------

    Daniel Drake (1):
    cfg80211: process pending events when unregistering net device

    Johannes Berg (1):
    iwlwifi: disable greenfield transmissions as a workaround

    John W. Linville (1):
    Merge branch 'master' of git://git.kernel.org/.../linville/wireless into for-davem

    Stanislaw Gruszka (1):
    rt61pci: fix NULL pointer dereference in config_lna_gain

    drivers/net/wireless/iwlwifi/dvm/rs.c | 13 ++++++++-----
    drivers/net/wireless/rt2x00/rt61pci.c | 3 +--
    net/wireless/core.c | 5 +++++
    net/wireless/core.h | 1 +
    net/wireless/util.c | 2 +-
    5 files changed, 16 insertions(+), 8 deletions(-)

    diff --git a/drivers/net/wireless/iwlwifi/dvm/rs.c b/drivers/net/wireless/iwlwifi/dvm/rs.c
    index 6fddd27..a82f46c 100644
    --- a/drivers/net/wireless/iwlwifi/dvm/rs.c
    +++ b/drivers/net/wireless/iwlwifi/dvm/rs.c
    @@ -707,11 +707,14 @@ static int rs_toggle_antenna(u32 valid_ant, u32 *rate_n_flags,
    */
    static bool rs_use_green(struct ieee80211_sta *sta)
    {
    - struct iwl_station_priv *sta_priv = (void *)sta->drv_priv;
    - struct iwl_rxon_context *ctx = sta_priv->ctx;
    -
    - return (sta->ht_cap.cap & IEEE80211_HT_CAP_GRN_FLD) &&
    - !(ctx->ht.non_gf_sta_present);
    + /*
    + * There's a bug somewhere in this code that causes the
    + * scaling to get stuck because GF+SGI can't be combined
    + * in SISO rates. Until we find that bug, disable GF, it
    + * has only limited benefit and we still interoperate with
    + * GF APs since we can always receive GF transmissions.
    + */
    + return false;
    }

    /**
    diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
    index f322596..3f7bc5c 100644
    --- a/drivers/net/wireless/rt2x00/rt61pci.c
    +++ b/drivers/net/wireless/rt2x00/rt61pci.c
    @@ -2243,8 +2243,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev)

    static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev)
    {
    - struct ieee80211_conf conf = { .flags = 0 };
    - struct rt2x00lib_conf libconf = { .conf = &conf };
    + struct rt2x00lib_conf libconf = { .conf = &rt2x00dev->hw->conf };

    rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS);
    }
    diff --git a/net/wireless/core.c b/net/wireless/core.c
    index 31b40cc..dcd64d5 100644
    --- a/net/wireless/core.c
    +++ b/net/wireless/core.c
    @@ -952,6 +952,11 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
    */
    synchronize_rcu();
    INIT_LIST_HEAD(&wdev->list);
    + /*
    + * Ensure that all events have been processed and
    + * freed.
    + */
    + cfg80211_process_wdev_events(wdev);
    break;
    case NETDEV_PRE_UP:
    if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype)))
    diff --git a/net/wireless/core.h b/net/wireless/core.h
    index 5206c68..bc7430b 100644
    --- a/net/wireless/core.h
    +++ b/net/wireless/core.h
    @@ -426,6 +426,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
    struct net_device *dev, enum nl80211_iftype ntype,
    u32 *flags, struct vif_params *params);
    void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev);
    +void cfg80211_process_wdev_events(struct wireless_dev *wdev);

    int cfg80211_can_use_iftype_chan(struct cfg80211_registered_device *rdev,
    struct wireless_dev *wdev,
    diff --git a/net/wireless/util.c b/net/wireless/util.c
    index 26f8cd3..994e2f0 100644
    --- a/net/wireless/util.c
    +++ b/net/wireless/util.c
    @@ -735,7 +735,7 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev)
    wdev->connect_keys = NULL;
    }

    -static void cfg80211_process_wdev_events(struct wireless_dev *wdev)
    +void cfg80211_process_wdev_events(struct wireless_dev *wdev)
    {
    struct cfg80211_event *ev;
    unsigned long flags;
    --
    John W. Linville Someday the world will need a hero, and you
    linville@tuxdriver.com might be all we have. Be ready.[unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2012-08-10 21:22    [W:0.030 / U:0.096 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site