| 1 | /* |
| 2 | * Broadcom Event protocol definitions |
| 3 | * |
| 4 | * Copyright 2006, Broadcom Corporation |
| 5 | * All Rights Reserved. |
| 6 | * |
| 7 | * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY |
| 8 | * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM |
| 9 | * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS |
| 10 | * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE. |
| 11 | * |
| 12 | * |
| 13 | * Dependencies: proto/bcmeth.h |
| 14 | * |
| 15 | * |
| 16 | */ |
| 17 | |
| 18 | /* |
| 19 | * Broadcom Ethernet Events protocol defines |
| 20 | * |
| 21 | */ |
| 22 | |
| 23 | #ifndef _BCMEVENT_H_ |
| 24 | #define _BCMEVENT_H_ |
| 25 | |
| 26 | /* enable structure packing */ |
| 27 | #if defined(__GNUC__) |
| 28 | #define PACKED __attribute__((packed)) |
| 29 | #else |
| 30 | #pragma pack(1) |
| 31 | #define PACKED |
| 32 | #endif /* defined(__GNUC__) */ |
| 33 | |
| 34 | #define BCM_EVENT_MSG_VERSION 1 /* wl_event_msg_t struct version */ |
| 35 | #define BCM_MSG_IFNAME_MAX 16 /* max length of interface name */ |
| 36 | |
| 37 | /* flags */ |
| 38 | #define WLC_EVENT_MSG_LINK 0x01 /* link is up */ |
| 39 | #define WLC_EVENT_MSG_FLUSHTXQ 0x02 /* flush tx queue on MIC error */ |
| 40 | #define WLC_EVENT_MSG_GROUP 0x04 /* group MIC error */ |
| 41 | |
| 42 | /* theses fields are stored in network order */ |
| 43 | typedef struct |
| 44 | { |
| 45 | uint16 version; |
| 46 | uint16 flags; /* see flags below */ |
| 47 | uint32 event_type; /* Message (see below) */ |
| 48 | uint32 status; /* Status code (see below) */ |
| 49 | uint32 reason; /* Reason code (if applicable) */ |
| 50 | uint32 auth_type; /* WLC_E_AUTH */ |
| 51 | uint32 datalen; /* data buf */ |
| 52 | struct ether_addr addr; /* Station address (if applicable) */ |
| 53 | char ifname[BCM_MSG_IFNAME_MAX]; /* name of the packet incoming interface */ |
| 54 | } PACKED wl_event_msg_t; |
| 55 | |
| 56 | /* used by driver msgs */ |
| 57 | typedef struct bcm_event { |
| 58 | struct ether_header eth; |
| 59 | bcmeth_hdr_t bcm_hdr; |
| 60 | wl_event_msg_t event; |
| 61 | /* data portion follows */ |
| 62 | } PACKED bcm_event_t; |
| 63 | |
| 64 | #define BCM_MSG_LEN (sizeof(bcm_event_t) - sizeof(bcmeth_hdr_t) - sizeof(struct ether_header)) |
| 65 | |
| 66 | /* Event messages */ |
| 67 | #define WLC_E_SET_SSID 0 /* indicates status of set SSID */ |
| 68 | #define WLC_E_JOIN 1 /* differentiates join IBSS from found (WLC_E_START) IBSS */ |
| 69 | #define WLC_E_START 2 /* STA founded an IBSS or AP started a BSS */ |
| 70 | #define WLC_E_AUTH 3 /* 802.11 AUTH request */ |
| 71 | #define WLC_E_AUTH_IND 4 /* 802.11 AUTH indication */ |
| 72 | #define WLC_E_DEAUTH 5 /* 802.11 DEAUTH request */ |
| 73 | #define WLC_E_DEAUTH_IND 6 /* 802.11 DEAUTH indication */ |
| 74 | #define WLC_E_ASSOC 7 /* 802.11 ASSOC request */ |
| 75 | #define WLC_E_ASSOC_IND 8 /* 802.11 ASSOC indication */ |
| 76 | #define WLC_E_REASSOC 9 /* 802.11 REASSOC request */ |
| 77 | #define WLC_E_REASSOC_IND 10 /* 802.11 REASSOC indication */ |
| 78 | #define WLC_E_DISASSOC 11 /* 802.11 DISASSOC request */ |
| 79 | #define WLC_E_DISASSOC_IND 12 /* 802.11 DISASSOC indication */ |
| 80 | #define WLC_E_QUIET_START 13 /* 802.11h Quiet period started */ |
| 81 | #define WLC_E_QUIET_END 14 /* 802.11h Quiet period ended */ |
| 82 | #define WLC_E_BEACON_RX 15 /* BEACONS received/lost indication */ |
| 83 | #define WLC_E_LINK 16 /* generic link indication */ |
| 84 | #define WLC_E_MIC_ERROR 17 /* TKIP MIC error occurred */ |
| 85 | #define WLC_E_NDIS_LINK 18 /* NDIS style link indication */ |
| 86 | #define WLC_E_ROAM 19 /* roam attempt occurred: indicate status & reason */ |
| 87 | #define WLC_E_TXFAIL 20 /* change in dot11FailedCount (txfail) */ |
| 88 | #define WLC_E_PMKID_CACHE 21 /* WPA2 pmkid cache indication */ |
| 89 | #define WLC_E_RETROGRADE_TSF 22 /* current AP's TSF value went backward */ |
| 90 | #define WLC_E_PRUNE 23 /* AP was pruned from join list for reason */ |
| 91 | #define WLC_E_AUTOAUTH 24 /* report AutoAuth table entry match for join attempt */ |
| 92 | #define WLC_E_EAPOL_MSG 25 /* Event encapsulating an EAPOL message */ |
| 93 | #define WLC_E_SCAN_COMPLETE 26 /* Scan results are ready or scan was aborted */ |
| 94 | #define WLC_E_ADDTS_IND 27 /* indicate to host addts fail/success */ |
| 95 | #define WLC_E_DELTS_IND 28 /* indicate to host delts fail/success */ |
| 96 | #define WLC_E_BCNSENT_IND 29 /* indicate to host of beacon transmit */ |
| 97 | #define WLC_E_BCNRX_MSG 30 /* Send the received beacon up to the host */ |
| 98 | #define WLC_E_LAST 31 /* highest val + 1 for range checking */ |
| 99 | |
| 100 | /* Event status codes */ |
| 101 | #define WLC_E_STATUS_SUCCESS 0 /* operation was successful */ |
| 102 | #define WLC_E_STATUS_FAIL 1 /* operation failed */ |
| 103 | #define WLC_E_STATUS_TIMEOUT 2 /* operation timed out */ |
| 104 | #define WLC_E_STATUS_NO_NETWORKS 3 /* failed due to no matching network found */ |
| 105 | #define WLC_E_STATUS_ABORT 4 /* operation was aborted */ |
| 106 | #define WLC_E_STATUS_NO_ACK 5 /* protocol failure: packet not ack'd */ |
| 107 | #define WLC_E_STATUS_UNSOLICITED 6 /* AUTH or ASSOC packet was unsolicited */ |
| 108 | #define WLC_E_STATUS_ATTEMPT 7 /* attempt to assoc to an auto auth configuration */ |
| 109 | |
| 110 | /* roam reason codes */ |
| 111 | #define WLC_E_REASON_INITIAL_ASSOC 0 /* initial assoc */ |
| 112 | #define WLC_E_REASON_LOW_RSSI 1 /* roamed due to low RSSI */ |
| 113 | #define WLC_E_REASON_DEAUTH 2 /* roamed due to DEAUTH indication */ |
| 114 | #define WLC_E_REASON_DISASSOC 3 /* roamed due to DISASSOC indication */ |
| 115 | #define WLC_E_REASON_BCNS_LOST 4 /* roamed due to lost beacons */ |
| 116 | #define WLC_E_REASON_FAST_ROAM_FAILED 5 /* roamed due to fast roam failure */ |
| 117 | #define WLC_E_REASON_DIRECTED_ROAM 6 /* roamed due to request by AP */ |
| 118 | #define WLC_E_REASON_TSPEC_REJECTED 7 /* roamed due to TSPEC rejection */ |
| 119 | #define WLC_E_REASON_BETTER_AP 8 /* roamed due to finding better AP */ |
| 120 | |
| 121 | /* prune reason codes */ |
| 122 | #define WLC_E_PRUNE_ENCR_MISMATCH 1 /* ecryption mismatch */ |
| 123 | #define WLC_E_PRUNE_BCAST_BSSID 2 /* AP uses a broadcast BSSID */ |
| 124 | #define WLC_E_PRUNE_MAC_DENY 3 /* STA's MAC addr is in AP's MAC deny list */ |
| 125 | #define WLC_E_PRUNE_MAC_NA 4 /* STA's MAC addr is not in AP's MAC allow list */ |
| 126 | #define WLC_E_PRUNE_REG_PASSV 5 /* AP not allowed due to regulatory restriction */ |
| 127 | #define WLC_E_PRUNE_SPCT_MGMT 6 /* AP does not support STA locale spectrum mgmt */ |
| 128 | #define WLC_E_PRUNE_RADAR 7 /* AP is on a radar channel of STA locale */ |
| 129 | #define WLC_E_RSN_MISMATCH 8 /* STA does not support AP's RSN */ |
| 130 | #define WLC_E_PRUNE_NO_COMMON_RATES 9 /* No rates in common with AP */ |
| 131 | #define WLC_E_PRUNE_BASIC_RATES 10 /* STA does not support all basic rates of BSS */ |
| 132 | #define WLC_E_PRUNE_CCXFAST_PREVAP 11 /* CCX FAST ROAM: prune previous AP */ |
| 133 | #define WLC_E_PRUNE_CIPHER_NA 12 /* BSS's cipher not supported */ |
| 134 | #define WLC_E_PRUNE_KNOWN_STA 13 /* AP is already known to us as a STA */ |
| 135 | #define WLC_E_PRUNE_CCXFAST_DROAM 14 /* CCX FAST ROAM: prune unqulified AP */ |
| 136 | #define WLC_E_PRUNE_WDS_PEER 15 /* AP is already known to us as a WDS peer */ |
| 137 | #define WLC_E_PRUNE_QBSS_LOAD 16 /* QBSS LOAD - AAC is too low */ |
| 138 | #define WLC_E_PRUNE_HOME_AP 17 /* prune home AP */ |
| 139 | |
| 140 | /* WLC_SET_CALLBACK data type */ |
| 141 | typedef struct wlc_event_cb { |
| 142 | void (*fn)(void *, bcm_event_t *); /* Callback function */ |
| 143 | void *context; /* Passed to callback function */ |
| 144 | } wlc_event_cb_t; |
| 145 | |
| 146 | #undef PACKED |
| 147 | #if !defined(__GNUC__) |
| 148 | #pragma pack() |
| 149 | #endif /* PACKED */ |
| 150 | |
| 151 | #endif /* _BCMEVENT_H_ */ |
| 152 | |