Update is_multicast_ether_addr() definition; net/ieee80211.h cleanups.

+11 -39
+1 -1
include/linux/etherdevice.h
··· 65 */ 66 static inline int is_multicast_ether_addr(const u8 *addr) 67 { 68 - return addr[0] & 0x01; 69 } 70 71 /**
··· 65 */ 66 static inline int is_multicast_ether_addr(const u8 *addr) 67 { 68 + return ((addr[0] != 0xff) && (0x01 & addr[0])); 69 } 70 71 /**
+10 -38
include/net/ieee80211.h
··· 94 u16 length; 95 } __attribute__ ((packed)); 96 97 #define IEEE80211_3ADDR_LEN 24 98 #define IEEE80211_4ADDR_LEN 30 99 #define IEEE80211_FCS_LEN 4 ··· 302 #define WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH 9 303 304 305 - /* Information Element IDs */ 306 - #define WLAN_EID_SSID 0 307 - #define WLAN_EID_SUPP_RATES 1 308 - #define WLAN_EID_FH_PARAMS 2 309 - #define WLAN_EID_DS_PARAMS 3 310 - #define WLAN_EID_CF_PARAMS 4 311 - #define WLAN_EID_TIM 5 312 - #define WLAN_EID_IBSS_PARAMS 6 313 - #define WLAN_EID_CHALLENGE 16 314 - #define WLAN_EID_RSN 48 315 - #define WLAN_EID_GENERIC 221 316 - 317 - #define IEEE80211_MGMT_HDR_LEN 24 318 - #define IEEE80211_DATA_HDR3_LEN 24 319 - #define IEEE80211_DATA_HDR4_LEN 30 320 - 321 - 322 #define IEEE80211_STATMASK_SIGNAL (1<<0) 323 #define IEEE80211_STATMASK_RSSI (1<<1) 324 #define IEEE80211_STATMASK_NOISE (1<<2) ··· 426 427 struct ieee80211_device; 428 429 #define SEC_KEY_1 (1<<0) 430 #define SEC_KEY_2 (1<<1) 431 #define SEC_KEY_3 (1<<2) ··· 475 476 */ 477 478 - struct ieee80211_header_data { 479 - u16 frame_ctl; 480 - u16 duration_id; 481 - u8 addr1[6]; 482 - u8 addr2[6]; 483 - u8 addr3[6]; 484 - u16 seq_ctrl; 485 - }; 486 - 487 #define BEACON_PROBE_SSID_ID_POSITION 12 488 489 /* Management Frame Information Element Types */ ··· 519 */ 520 521 struct ieee80211_authentication { 522 - struct ieee80211_header_data header; 523 u16 algorithm; 524 u16 transaction; 525 u16 status; ··· 528 529 530 struct ieee80211_probe_response { 531 - struct ieee80211_header_data header; 532 u32 time_stamp[2]; 533 u16 beacon_interval; 534 u16 capability; ··· 625 #define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" 626 #define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5] 627 628 - 629 - extern inline int is_broadcast_ether_addr(const u8 *addr) 630 - { 631 - return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ 632 - (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); 633 - } 634 635 #define CFG_IEEE80211_RESERVE_FCS (1<<0) 636 #define CFG_IEEE80211_COMPUTE_FCS (1<<1) ··· 759 760 extern inline int ieee80211_get_hdrlen(u16 fc) 761 { 762 - int hdrlen = 24; 763 764 switch (WLAN_FC_GET_TYPE(fc)) { 765 case IEEE80211_FTYPE_DATA: 766 if ((fc & IEEE80211_FCTL_FROMDS) && (fc & IEEE80211_FCTL_TODS)) 767 - hdrlen = 30; /* Addr4 */ 768 break; 769 case IEEE80211_FTYPE_CTL: 770 switch (WLAN_FC_GET_STYPE(fc)) { 771 case IEEE80211_STYPE_CTS: 772 case IEEE80211_STYPE_ACK: 773 - hdrlen = 10; 774 break; 775 default: 776 - hdrlen = 16; 777 break; 778 } 779 break;
··· 94 u16 length; 95 } __attribute__ ((packed)); 96 97 + #define IEEE80211_1ADDR_LEN 10 98 + #define IEEE80211_2ADDR_LEN 16 99 #define IEEE80211_3ADDR_LEN 24 100 #define IEEE80211_4ADDR_LEN 30 101 #define IEEE80211_FCS_LEN 4 ··· 300 #define WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH 9 301 302 303 #define IEEE80211_STATMASK_SIGNAL (1<<0) 304 #define IEEE80211_STATMASK_RSSI (1<<1) 305 #define IEEE80211_STATMASK_NOISE (1<<2) ··· 441 442 struct ieee80211_device; 443 444 + #include "ieee80211_crypt.h" 445 + 446 #define SEC_KEY_1 (1<<0) 447 #define SEC_KEY_2 (1<<1) 448 #define SEC_KEY_3 (1<<2) ··· 488 489 */ 490 491 #define BEACON_PROBE_SSID_ID_POSITION 12 492 493 /* Management Frame Information Element Types */ ··· 541 */ 542 543 struct ieee80211_authentication { 544 + struct ieee80211_hdr_3addr header; 545 u16 algorithm; 546 u16 transaction; 547 u16 status; ··· 550 551 552 struct ieee80211_probe_response { 553 + struct ieee80211_hdr_3addr header; 554 u32 time_stamp[2]; 555 u16 beacon_interval; 556 u16 capability; ··· 647 #define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" 648 #define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5] 649 650 651 #define CFG_IEEE80211_RESERVE_FCS (1<<0) 652 #define CFG_IEEE80211_COMPUTE_FCS (1<<1) ··· 787 788 extern inline int ieee80211_get_hdrlen(u16 fc) 789 { 790 + int hdrlen = IEEE80211_3ADDR_LEN; 791 792 switch (WLAN_FC_GET_TYPE(fc)) { 793 case IEEE80211_FTYPE_DATA: 794 if ((fc & IEEE80211_FCTL_FROMDS) && (fc & IEEE80211_FCTL_TODS)) 795 + hdrlen = IEEE80211_4ADDR_LEN; 796 break; 797 case IEEE80211_FTYPE_CTL: 798 switch (WLAN_FC_GET_STYPE(fc)) { 799 case IEEE80211_STYPE_CTS: 800 case IEEE80211_STYPE_ACK: 801 + hdrlen = IEEE80211_1ADDR_LEN; 802 break; 803 default: 804 + hdrlen = IEEE80211_2ADDR_LEN; 805 break; 806 } 807 break;