[Madwifi-cvs] madwifi/net80211 ieee80211_output.c,1.1.4.6,1.1.4.7
Status: Beta
Brought to you by:
otaku
From: Sam L. <sam...@us...> - 2004-07-27 17:38:02
|
Update of /cvsroot/madwifi/madwifi/net80211 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10599 Modified Files: Tag: WPA ieee80211_output.c Log Message: Minor cleanups of beacon frame creation: o allocate max-sized frame o use IEEE80211_ADDR_COPY instead of explicit memcpy's o correct calculation of bo_trailer_len (noop as not yet used) Index: ieee80211_output.c =================================================================== RCS file: /cvsroot/madwifi/madwifi/net80211/Attic/ieee80211_output.c,v retrieving revision 1.1.4.6 retrieving revision 1.1.4.7 diff -C2 -d -r1.1.4.6 -r1.1.4.7 *** ieee80211_output.c 25 Jul 2004 18:22:33 -0000 1.1.4.6 --- ieee80211_output.c 27 Jul 2004 17:37:53 -0000 1.1.4.7 *************** *** 995,1018 **** * [tlv] extended rate phy (ERP) * [tlv] extended supported rates ! * [tlv] WPA/RSN supported rates * XXX WME, etc. * XXX Vendor-specific OIDs (e.g. Atheros) */ rs = &ni->ni_rates; - pktlen = 8 - + sizeof(u_int16_t) - + sizeof(u_int16_t) - + 2 + ni->ni_esslen - + 2 + rs->rs_nrates - + 6; - if (ic->ic_curmode != IEEE80211_MODE_FH) - pktlen += 3; /* DS parameter set */ - if (ic->ic_curmode == IEEE80211_MODE_11G) - pktlen += 3; /* ERP information element */ - if (rs->rs_nrates > IEEE80211_RATE_SIZE) - pktlen += 2; /* extended rate set */ - if (ic->ic_flags & IEEE80211_F_WPA) - pktlen += sizeof(struct ieee80211_ie_wpa); /* XXX may be better to just allocate a max-sized buffer */ skb = ieee80211_getmgtframe(&frm, pktlen); if (skb == NULL) { --- 995,1016 ---- * [tlv] extended rate phy (ERP) * [tlv] extended supported rates ! * [tlv] WPA/RSN parameters * XXX WME, etc. * XXX Vendor-specific OIDs (e.g. Atheros) */ rs = &ni->ni_rates; /* XXX may be better to just allocate a max-sized buffer */ + pktlen = 8 /* time stamp */ + + sizeof(u_int16_t) /* beacon interval */ + + sizeof(u_int16_t) /* capabilities */ + + 2 + ni->ni_esslen /* ssid */ + + 2 + IEEE80211_RATE_SIZE /* supported rates */ + + 2 + 1 /* DS parameters */ + + 2 + 4 /* CF parameters */ + + 2 + 4 /* DTIM/IBSSPARMS */ + + 2 + 1 /* ERP */ + + 2 + (IEEE80211_RATE_MAXSIZE - IEEE80211_RATE_SIZE) + + sizeof(struct ieee80211_ie_wpa) /* WPA */ + ; skb = ieee80211_getmgtframe(&frm, pktlen); if (skb == NULL) { *************** *** 1029,1035 **** wh->i_fc[1] = IEEE80211_FC1_DIR_NODS; *(u_int16_t *)wh->i_dur = 0; ! memcpy(wh->i_addr1, dev->broadcast, IEEE80211_ADDR_LEN); ! memcpy(wh->i_addr2, ic->ic_myaddr, IEEE80211_ADDR_LEN); ! memcpy(wh->i_addr3, ni->ni_bssid, IEEE80211_ADDR_LEN); *(u_int16_t *)wh->i_seq = 0; --- 1027,1033 ---- wh->i_fc[1] = IEEE80211_FC1_DIR_NODS; *(u_int16_t *)wh->i_dur = 0; ! IEEE80211_ADDR_COPY(wh->i_addr1, dev->broadcast); ! IEEE80211_ADDR_COPY(wh->i_addr2, ic->ic_myaddr); ! IEEE80211_ADDR_COPY(wh->i_addr3, ni->ni_bssid); *(u_int16_t *)wh->i_seq = 0; *************** *** 1087,1091 **** frm = ieee80211_add_erp(frm, ic); efrm = ieee80211_add_xrates(frm, rs); ! bo->bo_trailer_len = efrm - frm; skb_trim(skb, efrm - skb->data); return skb; --- 1085,1089 ---- frm = ieee80211_add_erp(frm, ic); efrm = ieee80211_add_xrates(frm, rs); ! bo->bo_trailer_len = efrm - bo->bo_trailer; skb_trim(skb, efrm - skb->data); return skb; |