[lkml]   [2012]   [Aug]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[ 59/65] cfg80211: fix interface combinations check for ADHOC(IBSS)
    From: Greg KH <>

    3.4-stable review patch. If anyone has any objections, please let me know.


    From: Liang Li <>

    partial of commit 8e8b41f9d8c8e63fc92f899ace8da91a490ac573 upstream.

    As part of commit 463454b5dbd8 ("cfg80211: fix interface
    combinations check"), this extra check was introduced:

    if ((all_iftypes & used_iftypes) != used_iftypes)
    goto cont;

    However, most wireless NIC drivers did not advertise ADHOC in
    wiphy.iface_combinations[i].limits[] and hence we'll get -EBUSY
    when we bring up a ADHOC wlan with commands similar to:

    # iwconfig wlan0 mode ad-hoc && ifconfig wlan0 up

    In commit 8e8b41f9d8c8e ("cfg80211: enforce lack of interface
    combinations"), the change below fixes the issue:

    if (total == 1)
    return 0;

    But it also introduces other dependencies for stable. For example,
    a full cherry pick of 8e8b41f9d8c8e would introduce additional
    regressions unless we also start cherry picking driver specific
    fixes like the following:

    9b4760e ath5k: add possible wiphy interface combinations
    1ae2fc2 mac80211_hwsim: advertise interface combinations
    20c8e8d ath9k: add possible wiphy interface combinations

    And the purpose of the 'if (total == 1)' is to cover the specific
    use case (IBSS, adhoc) that was mentioned above. So we just pick
    the specific part out from 8e8b41f9d8c8e here.

    Doing so gives stable kernels a way to fix the change introduced
    by 463454b5dbd8, without having to make cherry picks specific to
    various NIC drivers.

    Signed-off-by: Liang Li <>
    Signed-off-by: Paul Gortmaker <>
    Signed-off-by: Greg Kroah-Hartman <>

    net/wireless/util.c | 3 +++
    1 file changed, 3 insertions(+)

    --- a/net/wireless/util.c
    +++ b/net/wireless/util.c
    @@ -974,6 +974,9 @@ int cfg80211_can_change_interface(struct

    + if (total == 1)
    + return 0;
    for (i = 0; i < rdev->wiphy.n_iface_combinations; i++) {
    const struct ieee80211_iface_combination *c;
    struct ieee80211_iface_limit *limits;

     \ /
      Last update: 2012-08-14 05:21    [W:0.026 / U:37.060 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site