1981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*
2981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * connIbss.c
3981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *
4981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
5981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * All rights reserved.
6981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *
7981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Redistribution and use in source and binary forms, with or without
8981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * modification, are permitted provided that the following conditions
9981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * are met:
10981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *
11981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *  * Redistributions of source code must retain the above copyright
12981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *    notice, this list of conditions and the following disclaimer.
13981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *  * Redistributions in binary form must reproduce the above copyright
14981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *    notice, this list of conditions and the following disclaimer in
15981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *    the documentation and/or other materials provided with the
16981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *    distribution.
17981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *  * Neither the name Texas Instruments nor the names of its
18981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *    contributors may be used to endorse or promote products derived
19981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *    from this software without specific prior written permission.
20981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *
21981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */
33981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
34981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/** \file connIbss.c
35981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *  \brief IBSS connection implementation
36981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *
37981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *  \see connIbss.h
38981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */
39981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
40981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***************************************************************************/
41981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*                                                                                                  */
42981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*      MODULE: connIbss.c                                                              */
43981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*    PURPOSE:  IBSS connection implementation                                          */
44981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*                                                                                                  */
45981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***************************************************************************/
46981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
47981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define __FILE_ID__  FILE_ID_26
48981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "tidef.h"
49981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "report.h"
50981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "osApi.h"
51981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "conn.h"
52981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "connIbss.h"
53981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "timer.h"
54981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "fsm.h"
55981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "siteMgrApi.h"
56981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "sme.h"
57981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "rsnApi.h"
58981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "DataCtrl_Api.h"
59981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "paramOut.h"
60981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "connApi.h"
61981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "EvHandler.h"
62981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "currBss.h"
63981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "TrafficMonitorAPI.h"
64981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "healthMonitor.h"
65981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "TWDriver.h"
66981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
67981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
68981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Local functions prototypes */
69981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Local functions prototypes */
70981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS waitDisconnToCmplt_to_idle (void *pData);
71981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS idle_to_selfWait(void *pData);
72981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
73981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS idle_to_rsnWait(void *pData);
74981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
75981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS selfWait_to_waitToDisconnCmplt(void *pData);
76981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS rsnWait_to_waitToDisconnCmplt(void *pData);
77981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS connected_to_waitToDisconnCmplt(void *pData);
78981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS selfWait_to_rsnWait(void *pData);
79981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS rsnWait_to_connected(void *pData);
80981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS actionUnexpected(void *pData);
81981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS actionNop(void *pData);
82981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS selfw_merge_rsnw(void *pData);
83981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS rsnw_merge_rsnw(void *pData);
84981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS conn_merge_conn(void *pData);
85981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
86981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/********************************************/
87981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*      Functions Implementations           */
88981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/********************************************/
89981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
90981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***********************************************************************
91981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *                        conn_ibssConfig
92981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ***********************************************************************
93981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: IBSS Connection configuration function, called by the conection set param function
94981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt                in the selection phase. Configures the connection state machine to IBSS connection mode
95981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
96981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT:      hConn   -   Connection handle.
97981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
98981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT:
99981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
100981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
101981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
102981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/
103981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS conn_ibssConfig(conn_t *pConn)
104981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
105981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
106981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    fsm_actionCell_t    smMatrix[CONN_IBSS_NUM_STATES][CONN_IBSS_NUM_EVENTS] =
107981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    {
108981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
109981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        /* next state and actions for IDLE state */
110981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        {   {STATE_CONN_IBSS_SELF_WAIT, idle_to_selfWait    },  /* CONN_IBSS_CREATE */
111981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_RSN_WAIT,  idle_to_rsnWait     },  /* CONN_IBSS_CONNECT    */
112981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_IDLE,      actionNop           },   /* CONN_IBSS_DISCONNECT */
113981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_IDLE,      actionUnexpected    },   /* CONN_IBSS_RSN_SUCC */
114981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_IDLE,      actionUnexpected    },   /* CONN_IBSS_STA_JOINED */
115981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_IDLE,      actionUnexpected    },   /* CONN_IBSS_MERGE */
116981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_IDLE,      actionUnexpected    }    /* CONN_IBSS_DISCONN_COMPLETE */
117981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        },
118981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
119981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        /* next state and actions for SELF_WAIT state */
120981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        {   {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected    							},  /* CONN_IBSS_CREATE */
121981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected    							},  /* CONN_IBSS_CONNECT    */
122981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT,  selfWait_to_waitToDisconnCmplt 		},  /* CONN_IBSS_DISCONNECT */
123981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected    							},  /* CONN_IBSS_RSN_SUCC */
124981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_RSN_WAIT,  selfWait_to_rsnWait 							},  /* CONN_IBSS_STA_JOINED */
125981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_RSN_WAIT,  selfw_merge_rsnw    							},  /* CONN_IBSS_MERGE */
126981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_SELF_WAIT, actionUnexpected    							}   /* CONN_IBSS_DISCONN_COMPLETE */
127981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        },
128981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
129981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        /* next state and actions for RSN_WAIT state */
130981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        {   {STATE_CONN_IBSS_RSN_WAIT,  actionUnexpected    							},  /* CONN_IBSS_CREATE */
131981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_RSN_WAIT,  actionUnexpected    							},  /* CONN_IBSS_CONNECT    */
132981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, rsnWait_to_waitToDisconnCmplt    		},  /* CONN_IBSS_DISCONNECT */
133981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_CONNECTED, rsnWait_to_connected							},  /* CONN_IBSS_RSN_SUCC */
134981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_RSN_WAIT,  actionUnexpected								}, 	/* CONN_IBSS_STA_JOINED */
135981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_RSN_WAIT,  rsnw_merge_rsnw     							},  /* CONN_IBSS_MERGE */
136981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_RSN_WAIT, actionUnexpected    								}   /* CONN_IBSS_DISCONN_COMPLETE */
137981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        },
138981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
139981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        /* next state and actions for CONNECTED state */
140981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        {   {STATE_CONN_IBSS_CONNECTED, actionUnexpected    							},  /* CONN_IBSS_CREATE */
141981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_CONNECTED, actionUnexpected    							},  /* CONN_IBSS_CONNECT    */
142981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, connected_to_waitToDisconnCmplt  		},  /* CONN_IBSS_DISCONNECT */
143981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_CONNECTED, actionUnexpected    							},  /* CONN_IBSS_RSN_SUCC */
144981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_CONNECTED, actionUnexpected    							},  /* CONN_IBSS_STA_JOINED */
145981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_CONNECTED,  conn_merge_conn    							},  /* CONN_IBSS_MERGE */
146981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_CONNECTED, actionUnexpected    						   	}   /* CONN_IBSS_DISCONN_COMPLETE */
147981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        },
148981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
149981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt		 /* next state and actions for STATE_CONN_IBSS_WAIT_DISCONN_CMPLT state */
150981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        {   {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected    		},  		/* CONN_IBSS_CREATE */
151981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected    		},  		/* CONN_IBSS_CONNECT    */
152981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected   		},  		/* CONN_IBSS_DISCONNECT */
153981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected    		},  		/* CONN_IBSS_RSN_SUCC */
154981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected    		},  		/* CONN_IBSS_STA_JOINED */
155981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected     		},  		/* CONN_IBSS_MERGE */
156981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt			{STATE_CONN_IBSS_IDLE, 				 waitDisconnToCmplt_to_idle } 			/* CONN_IBSS_DISCONN_COMPLETE */
157981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        }
158981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
159981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    };
160981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
161981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    return fsm_Config(pConn->ibss_pFsm, (fsm_Matrix_t)smMatrix, CONN_IBSS_NUM_STATES, CONN_IBSS_NUM_EVENTS, conn_ibssSMEvent, pConn->hOs);
162981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
163981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
164981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
165981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***********************************************************************
166981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *                        conn_ibssSMEvent
167981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ***********************************************************************
168981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: IBSS Connection SM event processing function, called by the connection API
169981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt                Perform the following:
170981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt                -   Print the state movement as a result from the event
171981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt                -   Calls the generic state machine event processing function which preform the following:
172981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt                    -   Calls the correspoding callback function
173981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt                    -   Move to next state
174981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
175981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT:      currentState    -   Pointer to the connection current state.
176981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            event   -   Received event
177981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt            pConn   -   Connection handle
178981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
179981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT:
180981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
181981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
182981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
183981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/
184981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS conn_ibssSMEvent(TI_UINT8 *currentState, TI_UINT8 event, TI_HANDLE hConn)
185981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
186981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt   conn_t *pConn = (conn_t *)hConn;
187981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    TI_STATUS       status;
188981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    TI_UINT8       nextState;
189981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
190981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    status = fsm_GetNextState(pConn->ibss_pFsm, *currentState, event, &nextState);
191981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    if (status != TI_OK)
192981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    {
193981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        TRACE0(pConn->hReport, REPORT_SEVERITY_SM, "IBSS State machine error, failed getting next state\n");
194981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt        return(TI_NOK);
195981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    }
196981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
197981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	TRACE3( pConn->hReport, REPORT_SEVERITY_INFORMATION, "conn_ibssSMEvent: <currentState = %d, event = %d> --> nextState = %d\n", *currentState, event, nextState);
198981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    status = fsm_Event(pConn->ibss_pFsm, currentState, event, (void *)pConn);
199981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
200981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    return status;
201981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
202981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
203981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
204981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid connIbss_DisconnectComplete (conn_t *pConn, TI_UINT8  *data, TI_UINT8   dataLength)
205981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
206981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /* send an DISCONNECT COMPLETE event to the SM */
207981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    conn_ibssSMEvent(&pConn->state, CONN_IBSS_DISCONN_COMPLETE, (TI_HANDLE) pConn);
208981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
209981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
210981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/************************************************************************************************************/
211981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*      In the following section are listed the callback function used by the IBSS connection state machine */
212981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/************************************************************************************************************/
213981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
214981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***********************************************************************
215981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *                        selfWait_to_rsnWait
216981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ***********************************************************************
217981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION:
218981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
219981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
220981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT:
221981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
222981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT:
223981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
224981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
225981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
226981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/
227981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS selfWait_to_rsnWait (void *pData)
228981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
229981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	conn_t      *pConn = (conn_t *)pData;
230981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    paramInfo_t  param;
231981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
232981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    tmr_StopTimer (pConn->hConnTimer);
233981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
234981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    param.paramType = RX_DATA_PORT_STATUS_PARAM;
235981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    param.content.rxDataPortStatus = OPEN_EAPOL;
236981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    rxData_setParam (pConn->hRxData, &param);
237981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
238981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	/* Update TxMgmtQueue SM to enable EAPOL packets. */
239981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_EAPOL);
240981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
241981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /*
242981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt     *  Notify that the driver is associated to the supplicant\IP stack.
243981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt     */
244981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    EvHandlerSendEvent (pConn->hEvHandler, IPC_EVENT_ASSOCIATED, NULL, 0);
245981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
246981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    return rsn_start (pConn->hRsn);
247981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
248981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
249981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
250981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***********************************************************************
251981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *                        rsnWait_to_connected
252981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ***********************************************************************
253981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION:
254981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
255981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
256981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT:
257981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
258981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT:
259981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
260981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
261981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
262981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/
263981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS rsnWait_to_connected(void *pData)
264981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
265981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    paramInfo_t param;
266981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
267981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    conn_t *pConn=(conn_t *)pData;
268981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
269981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    TrafficMonitor_Start( pConn->hTrafficMonitor );
270981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
271981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    healthMonitor_setState(pConn->hHealthMonitor, HEALTH_MONITOR_STATE_CONNECTED);
272981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
273981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    siteMgr_start(pConn->hSiteMgr);
274981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
275981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    param.paramType = RX_DATA_PORT_STATUS_PARAM;
276981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    param.content.rxDataPortStatus = OPEN;
277981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    rxData_setParam(((conn_t *)pData)->hRxData, &param);
278981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
279981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	/* Update TxMgmtQueue SM to open Tx path to all packets. */
280981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_OPEN);
281981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
282981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /* Update current BSS connection type and mode */
283981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    currBSS_updateConnectedState(pConn->hCurrBss, TI_TRUE, BSS_INDEPENDENT);
284981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
285981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	sme_ReportConnStatus(((conn_t *)pData)->hSmeSm, STATUS_SUCCESSFUL, 0);
286981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
287981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    return TI_OK;
288981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
289981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
290981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS selfw_merge_rsnw(void *pData)
291981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
292981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    conn_t *pConn=(conn_t *)pData;
293981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    paramInfo_t param;
294981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
295981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	os_printf("IBSS selfw_merge_rsnw!!!!!!!!!!\n");
296981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
297981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	tmr_StopTimer (pConn->hConnTimer);
298981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	siteMgr_join(pConn->hSiteMgr);
299981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
300981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    param.paramType = RX_DATA_PORT_STATUS_PARAM;
301981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    param.content.rxDataPortStatus = OPEN_EAPOL;
302981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    rxData_setParam (pConn->hRxData, &param);
303981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
304981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	/* Update TxMgmtQueue SM to enable EAPOL packets. */
305981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_EAPOL);
306981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
307981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /*
308981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt     *  Notify that the driver is associated to the supplicant\IP stack.
309981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt     */
310981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    EvHandlerSendEvent (pConn->hEvHandler, IPC_EVENT_ASSOCIATED, NULL, 0);
311981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
312981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    return rsn_start (pConn->hRsn);
313981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
314981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
315981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
316981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
317981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS rsnw_merge_rsnw(void *pData)
318981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
319981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    conn_t *pConn=(conn_t *)pData;
320981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
321981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	os_printf("IBSS rsnw_merge_rsnw!!!!!!!!!!\n");
322981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
323981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	siteMgr_join(pConn->hSiteMgr);
324981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
325981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	return TI_OK;
326981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
327981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
328981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
329981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS conn_merge_conn(void *pData)
330981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
331981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    conn_t *pConn=(conn_t *)pData;
332981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
333981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	os_printf("IBSS conn_merge_conn!!!!!!!!!!\n");
334981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
335981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	siteMgr_join(pConn->hSiteMgr);
336981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
337981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	return TI_OK;
338981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
339981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
340981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS waitDisconnToCmplt_to_idle (void *pData)
341981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
342981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	conn_t      *pConn = (conn_t *)pData;
343981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
344981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	/* Inform the SME about the connection lost */
345981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /* we use this status at SME, if != 0 means that assoc frame sent */
346981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	sme_ReportConnStatus(pConn->hSmeSm, STATUS_UNSPECIFIED, 1);
347981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	return TI_OK;
348981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
349981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
350981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
351981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
352981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***********************************************************************
353981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *                        actionUnexpected
354981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ***********************************************************************
355981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION:
356981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
357981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
358981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT:
359981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
360981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT:
361981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
362981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
363981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
364981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/
365981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS actionUnexpected(void *pData)
366981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
367981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef TI_DBG
368981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    conn_t *pConn = (conn_t *)pData;
369981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
370981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    TRACE0(pConn->hReport, REPORT_SEVERITY_SM, "State machine error, unexpected Event\n\n");
371981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif /*TI_DBG*/
372981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
373981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    return TI_OK;
374981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
375981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
376981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***********************************************************************
377981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *                        actionNop
378981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ***********************************************************************
379981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION:
380981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
381981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
382981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT:
383981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
384981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT:
385981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
386981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
387981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
388981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/
389981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS actionNop(void *pData)
390981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
391981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    return TI_OK;
392981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
393981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
394981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
395981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***********************************************************************
396981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *                        selfWait_to_waitToDisconnCmplt
397981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ***********************************************************************
398981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION:
399981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
400981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
401981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT:
402981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
403981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT:
404981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
405981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
406981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
407981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/
408981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS selfWait_to_waitToDisconnCmplt (void *pData)
409981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
410981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	conn_t      *pConn = (conn_t *)pData;
411981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    paramInfo_t  param;
412981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
413981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    tmr_StopTimer (pConn->hConnTimer);
414981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
415981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    siteMgr_removeSelfSite(pConn->hSiteMgr);
416981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
417981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /* Update current BSS connection type and mode */
418981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    currBSS_updateConnectedState(pConn->hCurrBss, TI_FALSE, BSS_INDEPENDENT);
419981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
420981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /* stop beacon generation  */
421981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    param.paramType = RX_DATA_PORT_STATUS_PARAM;
422981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    param.content.rxDataPortStatus = CLOSE;
423981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    rxData_setParam(pConn->hRxData, &param);
424981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
425981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	/* Update TxMgmtQueue SM to close Tx path. */
426981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_CLOSE);
427981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
428981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    TWD_CmdFwDisconnect (pConn->hTWD, DISCONNECT_IMMEDIATE, STATUS_UNSPECIFIED);
429981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
430981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    return TI_OK;
431981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
432981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
433981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
434981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
435981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***********************************************************************
436981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *                        rsnWait_to_waitToDisconnCmplt
437981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ***********************************************************************
438981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION:
439981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
440981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
441981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT:
442981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
443981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT:
444981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
445981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
446981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
447981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/
448981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS rsnWait_to_waitToDisconnCmplt(void *pData)
449981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
450981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    paramInfo_t     param;
451653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt	TI_STATUS		tStatus;
452981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
453653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt    tStatus = rsn_stop(((conn_t *)pData)->hRsn, TI_FALSE);
454981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
455981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    param.paramType = RX_DATA_PORT_STATUS_PARAM;
456981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    param.content.rxDataPortStatus = CLOSE;
457981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    rxData_setParam(((conn_t *)pData)->hRxData, &param);
458981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
459981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	/* Update TxMgmtQueue SM to close Tx path. */
460981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_CLOSE);
461981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
462981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /* Update current BSS connection type and mode */
463981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    currBSS_updateConnectedState(((conn_t *)pData)->hCurrBss, TI_FALSE, BSS_INDEPENDENT);
464981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
465981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /* Stop beacon generation */
466981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    TWD_CmdFwDisconnect (((conn_t *)pData)->hTWD, DISCONNECT_IMMEDIATE, STATUS_UNSPECIFIED);
467981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
468653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt    return tStatus;
469981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
470981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
471981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
472981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***********************************************************************
473981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *                        connected_to_waitToDisconnCmplt
474981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ***********************************************************************
475981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION:
476981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
477981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
478981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT:
479981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
480981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT:
481981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
482981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
483981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
484981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/
485981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS connected_to_waitToDisconnCmplt(void *pData)
486981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
487981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    conn_t *pConn=(conn_t *)pData;
488981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
489981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    TrafficMonitor_Stop(pConn->hTrafficMonitor);
490981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
491981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    healthMonitor_setState(pConn->hHealthMonitor, HEALTH_MONITOR_STATE_DISCONNECTED);
492981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
493981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /* The logic of this action is identical to rsnWait_to_idle */
494981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    return rsnWait_to_waitToDisconnCmplt(pConn);
495981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
496981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
497981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
498981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
499981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
500981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
501981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***********************************************************************
502981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *                        idle_to_selfWait
503981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ***********************************************************************
504981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION:
505981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
506981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
507981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT:
508981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
509981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT:
510981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
511981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
512981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
513981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/
514981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS idle_to_selfWait (void *pData)
515981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
516981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	conn_t    *pConn = (conn_t *)pData;
517981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    TI_UINT16  randomTime;
518981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
519981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    siteMgr_join (pConn->hSiteMgr);
520981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
521981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /* get a randomTime that is constructed of the lower 13 bits ot the system time to
522981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt       get a MS random time of ~8000 ms */
523981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    randomTime = os_timeStampMs (pConn->hOs) & 0x1FFF;
524981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
525981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /* Update current BSS connection type and mode */
526981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    currBSS_updateConnectedState (pConn->hCurrBss, TI_TRUE, BSS_INDEPENDENT);
527981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
528981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    tmr_StartTimer (pConn->hConnTimer,
529981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt                    conn_timeout,
530981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt                    (TI_HANDLE)pConn,
531981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt                    pConn->timeout + randomTime,
532981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt                    TI_FALSE);
533981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
534981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    return TI_OK;
535981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
536981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
537981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
538981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
539981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***********************************************************************
540981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *                        idle_to_rsnWait
541981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ***********************************************************************
542981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION:
543981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
544981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
545981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT:
546981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
547981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT:
548981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
549981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
550981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
551981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/
552981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS idle_to_rsnWait(void *pData)
553981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{
554981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    paramInfo_t param;
555981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
556981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    siteMgr_join(((conn_t *)pData)->hSiteMgr);
557981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
558981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    param.paramType = RX_DATA_PORT_STATUS_PARAM;
559981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    param.content.rxDataPortStatus = OPEN_EAPOL;
560981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    rxData_setParam(((conn_t *)pData)->hRxData, &param);
561981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
562981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	/* Update TxMgmtQueue SM to enable EAPOL packets. */
563981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt	txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_EAPOL);
564981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
565981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /*
566981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt     *  Notify that the driver is associated to the supplicant\IP stack.
567981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt     */
568981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    EvHandlerSendEvent(((conn_t *)pData)->hEvHandler, IPC_EVENT_ASSOCIATED, NULL,0);
569981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
570981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    /* Update current BSS connection type and mode */
571981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    currBSS_updateConnectedState(((conn_t *)pData)->hCurrBss, TI_TRUE, BSS_INDEPENDENT);
572981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
573981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt    return rsn_start(((conn_t *)pData)->hRsn);
574981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}
575981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt
576