Changeset 2367

Show
Ignore:
Timestamp:
05/24/07 18:45:07 (2 years ago)
Author:
mentor
Message:

Fix the filling of Atheros XR IEs, as per #1344. The patch has been modified to change the way the OUI type, suybtype and ver fields are assigned.

Signed-off-by: Md Sohail Ahmad <md.ahmad@airtightnetworks.net>

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/net80211/ieee80211.h

    r2256 r2367  
    515515        u_int8_t athAdvCap_len;         /* length in bytes */ 
    516516        u_int8_t athAdvCap_oui[3];      /* 0x00, 0x03, 0x7f */ 
    517         u_int8_t athAdvCap_type;               /* OUI type */ 
     517        u_int8_t athAdvCap_type;        /* OUI type */ 
    518518        u_int8_t athAdvCap_subtype;     /* OUI subtype */ 
    519519        u_int8_t athAdvCap_version;     /* spec revision */ 
     
    663663        u_int16_t wpa_caps;             /* 802.11i capabilities */ 
    664664        u_int16_t wpa_pmkidcnt;         /* 802.11i pmkid count */ 
    665         u_int16_t wpa_pmkids[8];               /* 802.11i pmkids */ 
     665        u_int16_t wpa_pmkids[8];        /* 802.11i pmkids */ 
    666666} __packed; 
    667667 
     
    747747#define ATH_OUI_TYPE            0x01 
    748748#define ATH_OUI_SUBTYPE         0x01 
    749 #define ATH_OUI_VERSION               0x00 
     749#define        ATH_OUI_VERSION                0x00 
    750750#define ATH_OUI_TYPE_XR         0x03 
    751 #define ATH_OUI_VER_XR          0x01 
     751#define ATH_OUI_SUBTYPE_XR      0x01 
     752#define ATH_OUI_VER_XR          0x00 
    752753 
    753754#define WPA_OUI                 0xf25000 
  • trunk/net80211/ieee80211_output.c

    r2357 r2367  
    15881588{ 
    15891589        static const u_int8_t oui[6] = {(ATH_OUI & 0xff), ((ATH_OUI >>8) & 0xff), 
    1590                 ((ATH_OUI >> 16) & 0xff), ATH_OUI_TYPE, 
    1591                 ATH_OUI_SUBTYPE, ATH_OUI_VERSION}; 
     1590                                       ((ATH_OUI >> 16) & 0xff), ATH_OUI_TYPE, 
     1591                                       ATH_OUI_SUBTYPE, ATH_OUI_VERSION}; 
    15921592        struct ieee80211_ie_athAdvCap *ie = (struct ieee80211_ie_athAdvCap *) frm; 
    15931593 
     
    16131613ieee80211_add_xr_param(u_int8_t *frm,struct ieee80211vap *vap) 
    16141614{ 
    1615         static const u_int8_t oui[3] = {(ATH_OUI & 0xff), ((ATH_OUI >>8) & 0xff), 
    1616                 ((ATH_OUI >> 16) & 0xff)}; 
     1615        static const u_int8_t oui[6] = {(ATH_OUI & 0xff), ((ATH_OUI >>8) & 0xff), 
     1616                                        ((ATH_OUI >> 16) & 0xff), ATH_OUI_TYPE_XR, 
     1617                                        ATH_OUI_SUBTYPE_XR, ATH_OUI_VER_XR}; 
    16171618        struct ieee80211_xr_param *ie = (struct ieee80211_xr_param *) frm; 
    16181619 
     
    16211622        memcpy(frm, oui, sizeof(oui));          /* Atheros OUI, type, subtype, and version for adv capabilities */ 
    16221623        frm += sizeof(oui); 
    1623         *frm++ = ATH_OUI_TYPE_XR; 
    1624         *frm++ = ATH_OUI_VER_XR; 
    1625         *frm++ = 0; 
    1626         *frm++ = 0; 
    1627         *frm++ = 0; 
     1624        *frm++ = 0;                             /* XR info */ 
    16281625 
    16291626        /* copy the BSSIDs */ 
    16301627        if (vap->iv_flags & IEEE80211_F_XR) { 
    1631                 IEEE80211_ADDR_COPY(frm, vap->iv_xrvap->iv_bss->ni_bssid); 
     1628                IEEE80211_ADDR_COPY(frm, vap->iv_xrvap->iv_bss->ni_bssid);     /* Base BSSID */ 
    16321629                frm += IEEE80211_ADDR_LEN; 
    1633                 IEEE80211_ADDR_COPY(frm, vap->iv_bss->ni_bssid); 
     1630                IEEE80211_ADDR_COPY(frm, vap->iv_bss->ni_bssid);               /* XR BSSID */ 
    16341631                frm += IEEE80211_ADDR_LEN; 
    1635                 *(__le16 *)frm = htole16(vap->iv_xrvap->iv_bss->ni_intval); 
     1632                *(__le16 *)frm = htole16(vap->iv_bss->ni_intval);              /* XR beacon interval */ 
    16361633                frm += 2; 
    1637                 *(__le16 *)frm = htole16(vap->iv_bss->ni_intval); 
    1638                 frm += 2; 
    1639                 *frm++ = vap->iv_xrvap->iv_ath_cap; 
    1640                 *frm++ = vap->iv_ath_cap;  
     1634                *frm++ = vap->iv_xrvap->iv_ath_cap;                             /* Base mode capability */ 
     1635                *frm++ = vap->iv_ath_cap;                                       /* XR mode capability */ 
    16411636        } else { 
    16421637                IEEE80211_ADDR_COPY(frm, vap->iv_bss->ni_bssid); 
     
    16451640                frm += IEEE80211_ADDR_LEN; 
    16461641                *(__le16 *)frm = htole16(vap->iv_bss->ni_intval); 
    1647                 frm += 2; 
    1648                 *(__le16 *)frm = htole16(vap->iv_xrvap->iv_bss->ni_intval); 
    16491642                frm += 2; 
    16501643                *frm++ = vap->iv_ath_cap;