Changeset 11925


Ignore:
Timestamp:
2008-07-26T00:36:18+02:00 (8 years ago)
Author:
nbd
Message:

madwifi: reduce the packet loss impact of forced background scans triggered by the configured threshold

Location:
trunk/package/madwifi/patches
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/madwifi/patches/357-bgscan_thresh.patch

    r11794 r11925  
    2626 #define IEEE80211_REGCLASSIDS_MAX      10      /* max regclass id list */ 
    2727  
    28 @@ -219,6 +221,9 @@ 
     28@@ -219,6 +221,10 @@ 
    2929        u_int8_t iv_nickname[IEEE80211_NWID_LEN]; 
    3030        u_int iv_bgscanidle;                            /* bg scan idle threshold */ 
     
    3333+       u_int iv_bgscantrintvl;                         /* bg scan trigger interval */ 
    3434+       unsigned long iv_bgscanthr_next;                /* last trigger for bgscan */ 
     35+       unsigned long iv_lastconnect;   /* time of last connect attempt */ 
    3536        u_int iv_scanvalid;                             /* scan cache valid threshold */ 
    3637        struct ieee80211_roam iv_roam;                  /* sta-mode roaming state */ 
    3738  
    38 @@ -608,6 +613,7 @@ 
     39@@ -608,6 +614,7 @@ 
    3940 #define IEEE80211_FEXT_SWBMISS         0x00000400      /* CONF: use software beacon timer */ 
    4041 #define IEEE80211_FEXT_DROPUNENC_EAPOL 0x00000800      /* CONF: drop unencrypted eapol frames */ 
     
    9192  
    9293 static __inline int 
    93 @@ -3258,6 +3260,23 @@ 
     94@@ -3258,6 +3260,25 @@ 
    9495                        /* record tsf of last beacon */ 
    9596                        memcpy(ni->ni_tstamp.data, scan.tstamp, 
     
    9899+                       /* When rssi is low, start doing bgscans more frequently to allow 
    99100+                        * the supplicant to make a better switching decision */ 
    100 +                       if ((rssi < vap->iv_bgscanthr) && 
     101+                       if (!(ic->ic_flags & IEEE80211_F_SCAN) && (rssi < vap->iv_bgscanthr) && 
    101102+                                       (!vap->iv_bgscanthr_next || 
    102103+                                               !time_before(jiffies, vap->iv_bgscanthr_next)) && 
    103 +                                       !(ic->ic_flags & IEEE80211_F_SCAN)) { 
     104+                                       (vap->iv_state == IEEE80211_S_RUN) && 
     105+                                       time_after(jiffies, vap->iv_lastconnect + 
     106+                                               msecs_to_jiffies(IEEE80211_BGSCAN_INTVAL_MIN * 1000))) { 
    104107+                               int ret; 
    105108+ 
     
    117120--- a/net80211/ieee80211_scan.c 
    118121+++ b/net80211/ieee80211_scan.c 
    119 @@ -782,7 +782,7 @@ 
     122@@ -616,6 +616,7 @@ 
     123  
     124                /* clear bg scan NOPICK and mark cancel request */ 
     125                ss->ss_flags &= ~IEEE80211_SCAN_NOPICK; 
     126+               ic->ic_flags_ext &= ~IEEE80211_FEXT_BGSCAN_THR; 
     127                SCAN_PRIVATE(ss)->ss_iflags |= ISCAN_CANCEL; 
     128                ss->ss_ops->scan_cancel(ss, vap); 
     129                /* force it to fire asap */ 
     130@@ -782,7 +783,7 @@ 
    120131                                ieee80211_sta_pwrsave(vap, 0); 
    121132                                if (ss->ss_next >= ss->ss_last) { 
     
    126137                        } 
    127138                        SCAN_PRIVATE(ss)->ss_iflags &= ~ISCAN_CANCEL; 
     139--- a/net80211/ieee80211_proto.c 
     140+++ b/net80211/ieee80211_proto.c 
     141@@ -1450,6 +1450,7 @@ 
     142                } 
     143                break; 
     144        case IEEE80211_S_AUTH: 
     145+               vap->iv_lastconnect = jiffies; 
     146                /* auth frames are possible between IBSS nodes,  
     147                 * see 802.11-1999, chapter 5.7.6 */ 
     148                KASSERT(vap->iv_opmode == IEEE80211_M_STA ||  
     149--- a/net80211/ieee80211_output.c 
     150+++ b/net80211/ieee80211_output.c 
     151@@ -238,7 +238,8 @@ 
     152        } 
     153         
     154        /* Cancel any running BG scan */ 
     155-       ieee80211_cancel_scan(vap); 
     156+       if (!(ic->ic_flags_ext & IEEE80211_FEXT_BGSCAN_THR) && (vap->iv_state == IEEE80211_S_RUN)) 
     157+               ieee80211_cancel_scan(vap); 
     158  
     159        /*  
     160         * Find the node for the destination so we can do 
  • trunk/package/madwifi/patches/362-rssithr.patch

    r11799 r11925  
    6060--- a/net80211/ieee80211_input.c 
    6161+++ b/net80211/ieee80211_input.c 
    62 @@ -3263,6 +3263,17 @@ 
     62@@ -3261,6 +3261,19 @@ 
     63                        memcpy(ni->ni_tstamp.data, scan.tstamp, 
     64                                sizeof(ni->ni_tstamp)); 
    6365  
    64                         /* When rssi is low, start doing bgscans more frequently to allow 
    65                          * the supplicant to make a better switching decision */ 
     66+                       /* when rssi falls below the disconnection threshold, drop the connection */ 
    6667+                       if ((vap->iv_rssi_dis_thr > 0) && (vap->iv_rssi_dis_max > 0)) { 
    6768+                               if ((rssi > 0) && (rssi < vap->iv_rssi_dis_thr)) { 
     
    7576+                               } 
    7677+                       } 
    77                         if ((rssi < vap->iv_bgscanthr) && 
    78                                         (!vap->iv_bgscanthr_next || 
    79                                                 !time_before(jiffies, vap->iv_bgscanthr_next)) && 
     78+ 
     79                        /* When rssi is low, start doing bgscans more frequently to allow 
     80                         * the supplicant to make a better switching decision */ 
     81                        if (!(ic->ic_flags & IEEE80211_F_SCAN) && (rssi < vap->iv_bgscanthr) && 
    8082--- a/net80211/ieee80211_var.h 
    8183+++ b/net80211/ieee80211_var.h 
     
    8890+       u_int iv_rssi_dis_trig;                         /* rssi disassoc trigger count */ 
    8991        unsigned long iv_bgscanthr_next;                /* last trigger for bgscan */ 
     92        unsigned long iv_lastconnect;   /* time of last connect attempt */ 
    9093        u_int iv_scanvalid;                             /* scan cache valid threshold */ 
    91         struct ieee80211_roam iv_roam;                  /* sta-mode roaming state */ 
Note: See TracChangeset for help on using the changeset viewer.