Ticket #698: agere-assoc-698.diff

File agere-assoc-698.diff, 2.0 kB (added by kelmo, 6 years ago)

proposed commit

  • net80211/ieee80211.h

    old new  
    667667        IEEE80211_ELEMID_ERP            = 42, 
    668668        IEEE80211_ELEMID_RSN            = 48, 
    669669        IEEE80211_ELEMID_XRATES         = 50, 
     670        /* 128-129 proprietary elements used by Agere chipsets */ 
     671        IEEE80211_ELEMID_AGERE1         = 128, 
     672        IEEE80211_ELEMID_AGERE2         = 129, 
    670673        IEEE80211_ELEMID_TPC            = 150, 
    671674        IEEE80211_ELEMID_CCKM           = 156, 
    672675        IEEE80211_ELEMID_VENDOR         = 221,  /* vendor private */ 
  • net80211/ieee80211_input.c

    old new  
    24262426                scan.chan = scan.bchan; 
    24272427 
    24282428                while (frm < efrm) { 
     2429                        /* Agere element in beacon */ 
     2430                        if ((*frm == IEEE80211_ELEMID_AGERE1) || 
     2431                            (*frm == IEEE80211_ELEMID_AGERE2)) { 
     2432                                frm = efrm; 
     2433                                continue; 
     2434                        } 
     2435 
    24292436                        IEEE80211_VERIFY_LENGTH(efrm - frm, frm[1]); 
    24302437                        switch (*frm) { 
    24312438                        case IEEE80211_ELEMID_SSID: 
     
    32033210 
    32043211                rates = xrates = wme = NULL; 
    32053212                while (frm < efrm) { 
     3213                        /*  
     3214                         * Do not discard frames containing proprietary Agere 
     3215                         * elements 128 and 129, as the reported element length 
     3216                         * is often wrong. Skip rest of the frame, since we can 
     3217                         * not rely on the given element length making it impossible 
     3218                         * to know where the next element starts. 
     3219                         */ 
     3220                        if ((*frm == IEEE80211_ELEMID_AGERE1) || 
     3221                            (*frm == IEEE80211_ELEMID_AGERE2)) { 
     3222                                frm = efrm; 
     3223                                continue; 
     3224                        } 
     3225 
    32063226                        IEEE80211_VERIFY_LENGTH(efrm - frm, frm[1]); 
    32073227                        switch (*frm) { 
    32083228                        case IEEE80211_ELEMID_RATES: 
  • THANKS

    old new  
    105105Tony Espy 
    106106Joerg Albert 
    107107Oliver Stampfli 
     108Till Wollenberg 
    108109 
    109110Apologies to anyone whose name was unintentionally left off. 
    110111Please let us know if you think your name should be mentioned here!