source: branches/8.09/package/madwifi/patches/388-apsta_fix.patch @ 13708

Last change on this file since 13708 was 13708, checked in by nbd, 7 years ago

sync 8.09 with some changes from trunk

File size: 2.1 KB
  • net80211/ieee80211_proto.c

    a b __ieee80211_newstate(struct ieee80211vap 
    14091409        vap->iv_state = nstate;                 /* state transition */ 
    14101410        del_timer(&vap->iv_mgtsend); 
    14111411        if ((vap->iv_opmode != IEEE80211_M_HOSTAP) &&  
    1412                         (ostate != IEEE80211_S_SCAN)) 
     1412                        (ostate != IEEE80211_S_SCAN) && 
     1413                        !(vap->iv_flags_ext & IEEE80211_FEXT_SCAN_PENDING)) 
    14131414                ieee80211_cancel_scan(vap);     /* background scan */ 
    14141415        ni = vap->iv_bss;                       /* NB: no reference held */ 
    14151416        switch (nstate) { 
    __ieee80211_newstate(struct ieee80211vap 
    14511452                        } 
    14521453                        goto reset; 
    14531454                case IEEE80211_S_SCAN: 
    1454                         ieee80211_cancel_scan(vap); 
     1455                        if (!(vap->iv_flags_ext & IEEE80211_FEXT_SCAN_PENDING)) 
     1456                                ieee80211_cancel_scan(vap); 
    14551457                        goto reset; 
    14561458                reset: 
    14571459                        ieee80211_reset_bss(vap); 
    ieee80211_newstate(struct ieee80211vap * 
    19891991                                        } 
    19901992                                } 
    19911993                        } 
    1992                 } else if (dstate == IEEE80211_S_SCAN) { 
     1994                } else if ((dstate == IEEE80211_S_SCAN) || 
     1995                                (dstate == IEEE80211_S_AUTH) || 
     1996                                (dstate == IEEE80211_S_ASSOC)) { 
    19931997                        /* Force to scan pending... someone is scanning */ 
    19941998                        vap->iv_flags_ext |= IEEE80211_FEXT_SCAN_PENDING; 
    19951999                        __ieee80211_newstate(vap, IEEE80211_S_INIT, arg); 
  • net80211/ieee80211_output.c

    a b ieee80211_hardstart(struct sk_buff *skb, 
    238238        } 
    239239         
    240240        /* Cancel any running BG scan */ 
    241         if (!(ic->ic_flags_ext & IEEE80211_FEXT_BGSCAN_THR) && (vap->iv_state == IEEE80211_S_RUN)) 
     241        if (!(ic->ic_flags_ext & IEEE80211_FEXT_BGSCAN_THR) && 
     242                (vap->iv_state == IEEE80211_S_RUN) && 
     243                (ic->ic_flags_ext & IEEE80211_FEXT_BGSCAN)) 
    242244                ieee80211_cancel_scan(vap); 
    243245 
    244246        /*  
  • net80211/ieee80211_wireless.c

    a b ieee80211_ioctl_setparam(struct net_devi 
    27282728                                return -EINVAL; 
    27292729                        vap->iv_flags |= IEEE80211_F_BGSCAN; 
    27302730                } else { 
    2731                         /* XXX racey? */ 
     2731                        if (ic->ic_flags_ext & IEEE80211_FEXT_BGSCAN) 
     2732                                ieee80211_cancel_scan(vap);     /* anything current */ 
    27322733                        vap->iv_flags &= ~IEEE80211_F_BGSCAN; 
    2733                         ieee80211_cancel_scan(vap);     /* anything current */ 
    27342734                } 
    27352735                break; 
    27362736        case IEEE80211_PARAM_BGSCAN_IDLE: 
Note: See TracBrowser for help on using the repository browser.