2 *************************************************************************
4 * 5F., No.36, Taiyuan St., Jhubei City,
8 * (c) Copyright 2002-2007, Ralink Technology, Inc.
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. *
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. *
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. *
25 *************************************************************************
34 -------- ---------- ----------------------------------------------
35 John 2004-10-1 copy from RT2560
37 #include "../rt_config.h"
40 ==========================================================================
42 authentication state machine init procedure
44 Sm - the state machine
48 ==========================================================================
50 void AuthRspStateMachineInit(IN PRTMP_ADAPTER pAd
,
52 IN STATE_MACHINE_FUNC Trans
[])
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
);
59 StateMachineSetAction(Sm
, AUTH_RSP_IDLE
, MT2_PEER_DEAUTH
,
60 (STATE_MACHINE_FUNC
) PeerDeauthAction
);
63 StateMachineSetAction(Sm
, AUTH_RSP_WAIT_CHAL
, MT2_PEER_DEAUTH
,
64 (STATE_MACHINE_FUNC
) PeerDeauthAction
);
69 ==========================================================================
74 ==========================================================================
76 void PeerAuthSimpleRspGenAndSend(IN PRTMP_ADAPTER pAd
,
77 IN PHEADER_802_11 pHdr80211
,
80 u16 Reason
, u16 Status
)
82 HEADER_802_11 AuthHdr
;
83 unsigned long FrameLen
= 0;
84 u8
*pOutBuffer
= NULL
;
87 if (Reason
!= MLME_SUCCESS
) {
88 DBGPRINT(RT_DEBUG_TRACE
, ("Peer AUTH fail...\n"));
91 /*Get an unused nonpaged memory */
92 NStatus
= MlmeAllocateMemory(pAd
, &pOutBuffer
);
93 if (NStatus
!= NDIS_STATUS_SUCCESS
)
96 DBGPRINT(RT_DEBUG_TRACE
, ("Send AUTH response (seq#2)...\n"));
97 MgtMacHeaderInit(pAd
, &AuthHdr
, SUBTYPE_AUTH
, 0, pHdr80211
->Addr2
,
99 MakeOutgoingFrame(pOutBuffer
, &FrameLen
, sizeof(HEADER_802_11
),
100 &AuthHdr
, 2, &Alg
, 2, &Seq
, 2, &Reason
, END_OF_ARGS
);
101 MiniportMMRequest(pAd
, 0, pOutBuffer
, FrameLen
);
102 MlmeFreeMemory(pAd
, pOutBuffer
);
106 ==========================================================================
109 IRQL = DISPATCH_LEVEL
111 ==========================================================================
113 void PeerDeauthAction(IN PRTMP_ADAPTER pAd
, IN PMLME_QUEUE_ELEM Elem
)
115 u8 Addr2
[MAC_ADDR_LEN
];
118 if (PeerDeauthSanity(pAd
, Elem
->Msg
, Elem
->MsgLen
, Addr2
, &Reason
)) {
120 && MAC_ADDR_EQUAL(Addr2
, pAd
->CommonCfg
.Bssid
)
122 DBGPRINT(RT_DEBUG_TRACE
,
123 ("AUTH_RSP - receive DE-AUTH from our AP (Reason=%d)\n",
126 RtmpOSWrielessEventSend(pAd
, SIOCGIWAP
, -1, NULL
, NULL
,
129 /* send wireless event - for deauthentication */
130 if (pAd
->CommonCfg
.bWirelessEvent
)
131 RTMPSendWirelessEvent(pAd
, IW_DEAUTH_EVENT_FLAG
,
133 Content
[BSSID_WCID
].Addr
,
139 DBGPRINT(RT_DEBUG_TRACE
,
140 ("AUTH_RSP - PeerDeauthAction() sanity check fail\n"));