Please note: This project is no longer active. The website is kept online for historic purposes only.
If you´re looking for a Linux driver for your Atheros WLAN device, you should continue here .

Ticket #241: madwifi-ng-241-new.diff

File madwifi-ng-241-new.diff, 2.3 kB (added by charles, 14 years ago)

new version of madwifi-ng-241.diff. Patch corrects some leftovers from Ticket 132. Please keep in mind, hostapd must support dual IEs (WPA and RSN). Signed-off: Charles Bovy <charles@bovy.nl>

  • madwifi-ng/net80211/ieee80211_ioctl.h

    old new  
    280280struct ieee80211req_wpaie { 
    281281        u_int8_t        wpa_macaddr[IEEE80211_ADDR_LEN]; 
    282282        u_int8_t        wpa_ie[IEEE80211_MAX_OPT_IE]; 
     283        u_int8_t        rsn_ie[IEEE80211_MAX_OPT_IE]; 
    283284}; 
    284285 
    285286/* 
  • madwifi-ng/net80211/ieee80211_wireless.c

    old new  
    32313231                        ielen = sizeof(wpaie.wpa_ie); 
    32323232                memcpy(wpaie.wpa_ie, ni->ni_wpa_ie, ielen); 
    32333233        } 
     3234        if (ni->ni_rsn_ie != NULL) { 
     3235                int ielen = ni->ni_rsn_ie[1] + 2; 
     3236                if (ielen > sizeof(wpaie.rsn_ie)) 
     3237                        ielen = sizeof(wpaie.rsn_ie); 
     3238                memcpy(wpaie.rsn_ie, ni->ni_rsn_ie, ielen); 
     3239        } 
    32343240        ieee80211_free_node(ni); 
    32353241        return (copy_to_user(iwr->u.data.pointer, &wpaie, sizeof(wpaie)) ? 
    32363242                -EFAULT : 0); 
     
    32713277scan_space(const struct ieee80211_scan_entry *se, int *ielen) 
    32723278{ 
    32733279        *ielen = 0; 
     3280        if (se->se_rsn_ie != NULL) 
     3281                *ielen += 2 + se->se_rsn_ie[1]; 
    32743282        if (se->se_wpa_ie != NULL) 
    32753283                *ielen += 2 + se->se_wpa_ie[1]; 
    32763284        if (se->se_wme_ie != NULL) 
     
    33253333        cp = (u_int8_t *)(sr + 1); 
    33263334        memcpy(cp, se->se_ssid + 2, sr->isr_ssid_len); 
    33273335        cp += sr->isr_ssid_len; 
     3336        if (se->se_rsn_ie != NULL) { 
     3337                memcpy(cp, se->se_rsn_ie, 2 + se->se_rsn_ie[1]); 
     3338                cp += 2 + se->se_rsn_ie[1]; 
     3339        } 
    33283340        if (se->se_wpa_ie != NULL) { 
    33293341                memcpy(cp, se->se_wpa_ie, 2 + se->se_wpa_ie[1]); 
    33303342                cp += 2 + se->se_wpa_ie[1]; 
     
    33873399sta_space(const struct ieee80211_node *ni, size_t *ielen) 
    33883400{ 
    33893401        *ielen = 0; 
     3402        if (ni->ni_rsn_ie != NULL) 
     3403                *ielen += 2+ni->ni_rsn_ie[1]; 
    33903404        if (ni->ni_wpa_ie != NULL) 
    33913405                *ielen += 2+ni->ni_wpa_ie[1]; 
    33923406        if (ni->ni_wme_ie != NULL) 
     
    34773491        si->isi_inact = (si->isi_inact - ni->ni_inact) * IEEE80211_INACT_WAIT; 
    34783492 
    34793493        cp = (u_int8_t *)(si+1); 
     3494        if (ni->ni_rsn_ie != NULL) { 
     3495                memcpy(cp, ni->ni_rsn_ie, 2 + ni->ni_rsn_ie[1]); 
     3496                cp += 2 + ni->ni_rsn_ie[1]; 
     3497        } 
    34803498        if (ni->ni_wpa_ie != NULL) { 
    34813499                memcpy(cp, ni->ni_wpa_ie, 2 + ni->ni_wpa_ie[1]); 
    34823500                cp += 2 + ni->ni_wpa_ie[1];