Changeset 15663


Ignore:
Timestamp:
2009-05-07T13:32:43+02:00 (7 years ago)
Author:
nbd
Message:

madwifi: improve mode selection, do not scan channels which do not fit the desired mode

Location:
trunk/package/madwifi/patches
Files:
1 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/madwifi/patches/351-scanlist.patch

    r13096 r15663  
    354354                if (IEEE80211_IS_CHAN_A(c)) 
    355355                        ic->ic_modecaps |= 1 << IEEE80211_MODE_11A; 
     356@@ -1447,10 +1452,6 @@ ieee80211_media_change(struct net_device 
     357                vap->iv_fixed_rate = newrate;           /* fixed TX rate */ 
     358                error = -ENETRESET; 
     359        } 
     360-       if (vap->iv_des_mode != newmode) { 
     361-               vap->iv_des_mode = newmode;             /* desired PHY mode */ 
     362-               error = -ENETRESET; 
     363-       } 
     364        return error; 
     365 } 
     366 EXPORT_SYMBOL(ieee80211_media_change); 
    356367--- a/net80211/_ieee80211.h 
    357368+++ b/net80211/_ieee80211.h 
     
    388399--- a/net80211/ieee80211_scan_ap.c 
    389400+++ b/net80211/ieee80211_scan_ap.c 
    390 @@ -129,131 +129,7 @@ struct ap_state { 
     401@@ -105,11 +105,6 @@ struct scan_entry { 
     402 }; 
     403  
     404 struct ap_state { 
     405-       unsigned int as_vap_desired_mode;       /* Used for channel selection,  
     406-                                                * vap->iv_des_mode */ 
     407-       unsigned int as_required_mode;          /* Used for channel selection,  
     408-                                                * filtered version of  
     409-                                                * as_vap_desired_mode */ 
     410        int as_maxrssi[IEEE80211_CHAN_MAX];     /* Used for channel selection */ 
     411  
     412        /* These fields are just for scan caching for returning responses to 
     413@@ -129,131 +124,7 @@ struct ap_state { 
    391414  
    392415 static int ap_flush(struct ieee80211_scan_state *); 
     
    520543 /* 
    521544  * Attach prior to any scanning work. 
    522 @@ -327,29 +203,6 @@ saveie(u_int8_t **iep, const u_int8_t *i 
     545@@ -327,29 +198,6 @@ saveie(u_int8_t **iep, const u_int8_t *i 
    523546                ieee80211_saveie(iep, ie); 
    524547 } 
     
    550573  * Start an ap scan by populating the channel list. 
    551574  */ 
    552 @@ -358,8 +211,6 @@ ap_start(struct ieee80211_scan_state *ss 
     575@@ -358,90 +206,15 @@ ap_start(struct ieee80211_scan_state *ss 
    553576 { 
    554577        struct ap_state *as         = ss->ss_priv; 
     
    559582        unsigned int mode = 0; 
    560583  
    561 @@ -368,80 +219,8 @@ ap_start(struct ieee80211_scan_state *ss 
     584        SCAN_AP_LOCK_IRQ(as); 
     585        ic = vap->iv_ic; 
    562586        /* Determine mode flags to match, or leave zero for auto mode */ 
    563         as->as_vap_desired_mode = vap->iv_des_mode; 
    564         as->as_required_mode    = 0; 
     587-       as->as_vap_desired_mode = vap->iv_des_mode; 
     588-       as->as_required_mode    = 0; 
    565589-       if (as->as_vap_desired_mode != IEEE80211_MODE_AUTO) { 
    566590-               as->as_required_mode = chanflags[as->as_vap_desired_mode]; 
     
    575599-       } 
    576600- 
    577 -       ss->ss_last = 0; 
     601        ss->ss_last = 0; 
    578602-       /* Use the table of ordered channels to construct the list 
    579603-        * of channels for scanning.  Any channels in the ordered 
     
    610634-               if (IEEE80211_IS_CHAN_TURBO(c) && vap->iv_flags & IEEE80211_F_XR) 
    611635-                       continue; 
    612 +       ieee80211_scan_add_channels(ic, ss, vap->iv_des_mode); 
    613   
     636- 
    614637-               /* Dynamic channels are scanned in base mode */ 
    615638-               if (!as->as_required_mode && !IEEE80211_IS_CHAN_ST(c)) 
     
    631654-               if ((c == NULL) || isclr(ic->ic_chan_active, c->ic_ieee)) 
    632655-                       continue; 
    633 - 
     656+       ieee80211_scan_add_channels(ic, ss, vap->iv_des_mode); 
     657  
    634658-               /* Don't overrun */ 
    635659-               if (ss->ss_last >= IEEE80211_SCAN_MAX) 
     
    641665        /* XXX tunables */ 
    642666        ss->ss_mindwell = msecs_to_jiffies(200);        /* 200ms */ 
    643 @@ -761,13 +540,6 @@ pick_channel(struct ieee80211_scan_state 
     667@@ -761,18 +534,6 @@ pick_channel(struct ieee80211_scan_state 
    644668                if (IEEE80211_IS_CHAN_RADAR(c->chan)) 
    645669                        continue; 
     
    652676-                       continue; 
    653677- 
    654                 /* Verify mode matches any fixed mode specified */ 
    655                 if((c->chan->ic_flags & as->as_required_mode) !=  
    656                                 as->as_required_mode) 
     678-               /* Verify mode matches any fixed mode specified */ 
     679-               if((c->chan->ic_flags & as->as_required_mode) !=  
     680-                               as->as_required_mode) 
     681-                       continue; 
     682- 
     683                if ((ic->ic_bsschan != NULL) && 
     684                        (ic->ic_bsschan != IEEE80211_CHAN_ANYC)) { 
     685  
    657686--- a/net80211/ieee80211_scan.c 
    658687+++ b/net80211/ieee80211_scan.c 
  • trunk/package/madwifi/patches/389-autochannel.patch

    r15029 r15663  
    9696--- a/net80211/ieee80211_scan_ap.c 
    9797+++ b/net80211/ieee80211_scan_ap.c 
    98 @@ -423,6 +423,19 @@ pc_cmp_rssi(struct ap_state *as, struct  
     98@@ -417,6 +417,19 @@ pc_cmp_rssi(struct ap_state *as, struct  
    9999  
    100100 /* This function must be invoked with locks acquired */ 
     
    116116                struct ieee80211_channel *b) 
    117117 { 
    118 @@ -457,6 +470,7 @@ pc_cmp(const void *_a, const void *_b) 
     118@@ -451,6 +464,7 @@ pc_cmp(const void *_a, const void *_b) 
    119119  
    120120        EVALUATE_CRITERION(radar, a, b); 
  • trunk/package/madwifi/patches/411-autochannel_multi.patch

    r14988 r15663  
    279279--- a/net80211/ieee80211_scan_ap.c 
    280280+++ b/net80211/ieee80211_scan_ap.c 
    281 @@ -213,9 +213,15 @@ ap_start(struct ieee80211_scan_state *ss 
     281@@ -208,9 +208,15 @@ ap_start(struct ieee80211_scan_state *ss 
    282282        struct ieee80211com *ic     = NULL; 
    283283        int i; 
     
    293293+ 
    294294        /* Determine mode flags to match, or leave zero for auto mode */ 
    295         as->as_vap_desired_mode = vap->iv_des_mode; 
    296         as->as_required_mode    = 0; 
    297 @@ -429,8 +435,10 @@ pc_cmp_idletime(struct ieee80211_channel 
     295        ss->ss_last = 0; 
     296        ieee80211_scan_add_channels(ic, ss, vap->iv_des_mode); 
     297@@ -423,8 +429,10 @@ pc_cmp_idletime(struct ieee80211_channel 
    298298        if (!a->ic_idletime || !b->ic_idletime) 
    299299                return 0; 
     
    308308  
    309309  
    310 @@ -616,6 +624,7 @@ ap_end(struct ieee80211_scan_state *ss,  
     310@@ -605,6 +613,7 @@ ap_end(struct ieee80211_scan_state *ss,  
    311311        struct ap_state *as = ss->ss_priv; 
    312312        struct ieee80211_channel *bestchan = NULL; 
     
    316316  
    317317        SCAN_AP_LOCK_IRQ(as); 
    318 @@ -624,8 +633,11 @@ ap_end(struct ieee80211_scan_state *ss,  
     318@@ -613,8 +622,11 @@ ap_end(struct ieee80211_scan_state *ss,  
    319319                ("wrong opmode %u", vap->iv_opmode)); 
    320320  
     
    328328                        /* no suitable channel, should not happen */ 
    329329                        printk(KERN_ERR "%s: %s: no suitable channel! " 
    330 @@ -644,6 +656,7 @@ ap_end(struct ieee80211_scan_state *ss,  
     330@@ -633,6 +645,7 @@ ap_end(struct ieee80211_scan_state *ss,  
    331331                                        bestchan->ic_freq, bestchan->ic_flags & 
    332332                                        ~IEEE80211_CHAN_TURBO)) == NULL) { 
     
    336336                                return 0; 
    337337                        } 
    338 @@ -656,6 +669,9 @@ ap_end(struct ieee80211_scan_state *ss,  
     338@@ -645,6 +658,9 @@ ap_end(struct ieee80211_scan_state *ss,  
    339339                        as->as_action = action; 
    340340                as->as_selbss = se; 
  • trunk/package/madwifi/patches/421-channel_handling.patch

    r15658 r15663  
    966966                if (IEEERATE(ic, mode, i) == rate) 
    967967                        return i; 
    968 @@ -1881,11 +1915,6 @@ ieee80211_build_countryie(struct ieee802 
     968@@ -1877,11 +1911,6 @@ ieee80211_build_countryie(struct ieee802 
    969969                        if (ieee80211_chan2mode(c) != curmode_noturbo) 
    970970                                continue; 
     
    978978                                (*cur_runlen)++; 
    979979                                *cur_pow = c->ic_maxregpower; 
    980 @@ -1919,7 +1948,7 @@ void 
     980@@ -1915,7 +1944,7 @@ void 
    981981 ieee80211_build_sc_ie(struct ieee80211com *ic) 
    982982 { 
     
    12691269--- a/net80211/ieee80211_scan_ap.c 
    12701270+++ b/net80211/ieee80211_scan_ap.c 
    1271 @@ -518,12 +518,13 @@ pick_channel(struct ieee80211_scan_state 
     1271@@ -512,12 +512,13 @@ pick_channel(struct ieee80211_scan_state 
    12721272        int ss_last = ss->ss_last; 
    12731273        struct ieee80211_channel *best; 
     
    12841284                chans[i].chan = ss->ss_chans[i]; 
    12851285                chans[i].orig = i; 
    1286 @@ -612,6 +613,7 @@ pick_channel(struct ieee80211_scan_state 
     1286@@ -601,6 +602,7 @@ pick_channel(struct ieee80211_scan_state 
    12871287                                "%s: best: channel %u rssi %d\n", 
    12881288                                __func__, i, as->as_maxrssi[i]); 
     
    12921292 } 
    12931293  
    1294 @@ -647,6 +649,7 @@ ap_end(struct ieee80211_scan_state *ss,  
     1294@@ -636,6 +638,7 @@ ap_end(struct ieee80211_scan_state *ss,  
    12951295                res = 1; /* Do NOT restart scan */ 
    12961296        } else { 
     
    13001300                /* if this is a dynamic turbo frequency , start with normal  
    13011301                 * mode first */ 
    1302 @@ -661,6 +664,11 @@ ap_end(struct ieee80211_scan_state *ss,  
     1302@@ -650,6 +653,11 @@ ap_end(struct ieee80211_scan_state *ss,  
    13031303                                return 0; 
    13041304                        } 
Note: See TracChangeset for help on using the changeset viewer.