]> bbs.cooldavid.org Git - net-next-2.6.git/blame - drivers/staging/rt2860/sta/auth_rsp.c
Staging: rt28x0: remove typedefs (part three)
[net-next-2.6.git] / drivers / staging / rt2860 / sta / auth_rsp.c
CommitLineData
91980990
GKH
1/*
2 *************************************************************************
3 * Ralink Tech Inc.
4 * 5F., No.36, Taiyuan St., Jhubei City,
5 * Hsinchu County 302,
6 * Taiwan, R.O.C.
7 *
8 * (c) Copyright 2002-2007, Ralink Technology, Inc.
9 *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 * This program is distributed in the hope that it will be useful, *
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
18 * GNU General Public License for more details. *
19 * *
20 * You should have received a copy of the GNU General Public License *
21 * along with this program; if not, write to the *
22 * Free Software Foundation, Inc., *
23 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
24 * *
25 *************************************************************************
26
27 Module Name:
28 auth_rsp.c
29
30 Abstract:
31
32 Revision History:
33 Who When What
34 -------- ---------- ----------------------------------------------
35 John 2004-10-1 copy from RT2560
36*/
37#include "../rt_config.h"
38
39/*
40 ==========================================================================
41 Description:
42 authentication state machine init procedure
43 Parameters:
44 Sm - the state machine
45
46 IRQL = PASSIVE_LEVEL
47
48 ==========================================================================
49 */
62eb734b
BZ
50void AuthRspStateMachineInit(struct rt_rtmp_adapter *pAd,
51 struct rt_state_machine *Sm,
0f65bec1 52 IN STATE_MACHINE_FUNC Trans[])
91980990 53{
0f65bec1
BZ
54 StateMachineInit(Sm, Trans, MAX_AUTH_RSP_STATE, MAX_AUTH_RSP_MSG,
55 (STATE_MACHINE_FUNC) Drop, AUTH_RSP_IDLE,
56 AUTH_RSP_MACHINE_BASE);
91980990 57
8281958b 58 /* column 1 */
0f65bec1
BZ
59 StateMachineSetAction(Sm, AUTH_RSP_IDLE, MT2_PEER_DEAUTH,
60 (STATE_MACHINE_FUNC) PeerDeauthAction);
91980990 61
8281958b 62 /* column 2 */
0f65bec1
BZ
63 StateMachineSetAction(Sm, AUTH_RSP_WAIT_CHAL, MT2_PEER_DEAUTH,
64 (STATE_MACHINE_FUNC) PeerDeauthAction);
91980990
GKH
65
66}
67
68/*
69 ==========================================================================
70 Description:
71
72 IRQL = DISPATCH_LEVEL
73
74 ==========================================================================
75*/
62eb734b
BZ
76void PeerAuthSimpleRspGenAndSend(struct rt_rtmp_adapter *pAd,
77 struct rt_header_802_11 * pHdr80211,
51126deb
BZ
78 u16 Alg,
79 u16 Seq,
80 u16 Reason, u16 Status)
91980990 81{
62eb734b 82 struct rt_header_802_11 AuthHdr;
51126deb
BZ
83 unsigned long FrameLen = 0;
84 u8 *pOutBuffer = NULL;
85 int NStatus;
0f65bec1
BZ
86
87 if (Reason != MLME_SUCCESS) {
88 DBGPRINT(RT_DEBUG_TRACE, ("Peer AUTH fail...\n"));
89 return;
90 }
8281958b 91 /*Get an unused nonpaged memory */
0f65bec1
BZ
92 NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);
93 if (NStatus != NDIS_STATUS_SUCCESS)
94 return;
95
96 DBGPRINT(RT_DEBUG_TRACE, ("Send AUTH response (seq#2)...\n"));
97 MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, pHdr80211->Addr2,
98 pAd->MlmeAux.Bssid);
62eb734b 99 MakeOutgoingFrame(pOutBuffer, &FrameLen, sizeof(struct rt_header_802_11),
0f65bec1
BZ
100 &AuthHdr, 2, &Alg, 2, &Seq, 2, &Reason, END_OF_ARGS);
101 MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
91980990
GKH
102 MlmeFreeMemory(pAd, pOutBuffer);
103}
104
105/*
106 ==========================================================================
107 Description:
108
109 IRQL = DISPATCH_LEVEL
110
111 ==========================================================================
112*/
62eb734b 113void PeerDeauthAction(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
91980990 114{
51126deb
BZ
115 u8 Addr2[MAC_ADDR_LEN];
116 u16 Reason;
91980990 117
0f65bec1
BZ
118 if (PeerDeauthSanity(pAd, Elem->Msg, Elem->MsgLen, Addr2, &Reason)) {
119 if (INFRA_ON(pAd)
120 && MAC_ADDR_EQUAL(Addr2, pAd->CommonCfg.Bssid)
121 ) {
122 DBGPRINT(RT_DEBUG_TRACE,
123 ("AUTH_RSP - receive DE-AUTH from our AP (Reason=%d)\n",
124 Reason));
ca97b838 125
0f65bec1
BZ
126 RtmpOSWrielessEventSend(pAd, SIOCGIWAP, -1, NULL, NULL,
127 0);
91980990 128
8281958b 129 /* send wireless event - for deauthentication */
91980990 130 if (pAd->CommonCfg.bWirelessEvent)
0f65bec1
BZ
131 RTMPSendWirelessEvent(pAd, IW_DEAUTH_EVENT_FLAG,
132 pAd->MacTab.
133 Content[BSSID_WCID].Addr,
134 BSS0, 0);
135
136 LinkDown(pAd, TRUE);
137 }
138 } else {
139 DBGPRINT(RT_DEBUG_TRACE,
140 ("AUTH_RSP - PeerDeauthAction() sanity check fail\n"));
141 }
91980990 142}