1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*
2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * connIbss.c
3a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
43bb9a92880f8cda8c242707ad02077f13b009632Dmitry Shmidt * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.
5a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * All rights reserved.
6a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
7a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Redistribution and use in source and binary forms, with or without
8a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * modification, are permitted provided that the following conditions
9a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * are met:
10a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
11a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Redistributions of source code must retain the above copyright
12a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    notice, this list of conditions and the following disclaimer.
13a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Redistributions in binary form must reproduce the above copyright
14a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    notice, this list of conditions and the following disclaimer in
15a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    the documentation and/or other materials provided with the
16a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    distribution.
17a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Neither the name Texas Instruments nor the names of its
18a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    contributors may be used to endorse or promote products derived
19a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    from this software without specific prior written permission.
20a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
21a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
33a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
34a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** \file connIbss.c
35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  \brief IBSS connection implementation
36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  \see connIbss.h
38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************/
41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*                                                                                                  */
42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*      MODULE: connIbss.c                                                              */
43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*    PURPOSE:  IBSS connection implementation                                          */
44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*                                                                                                  */
45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************/
46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define __FILE_ID__  FILE_ID_26
48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "tidef.h"
49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "report.h"
50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "osApi.h"
51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "conn.h"
52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "connIbss.h"
53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "timer.h"
54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "fsm.h"
55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "siteMgrApi.h"
56a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "sme.h"
57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "rsnApi.h"
58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "DataCtrl_Api.h"
59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "paramOut.h"
60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "connApi.h"
61a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "EvHandler.h"
62a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "currBss.h"
63a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "TrafficMonitorAPI.h"
64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "healthMonitor.h"
65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "TWDriver.h"
66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Local functions prototypes */
69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Local functions prototypes */
70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS waitDisconnToCmplt_to_idle (void *pData);
71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS idle_to_selfWait(void *pData);
72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS idle_to_rsnWait(void *pData);
74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS selfWait_to_waitToDisconnCmplt(void *pData);
76a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS rsnWait_to_waitToDisconnCmplt(void *pData);
77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS connected_to_waitToDisconnCmplt(void *pData);
78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS selfWait_to_rsnWait(void *pData);
79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS rsnWait_to_connected(void *pData);
80a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS actionUnexpected(void *pData);
81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS actionNop(void *pData);
82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS selfw_merge_rsnw(void *pData);
83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS rsnw_merge_rsnw(void *pData);
84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS conn_merge_conn(void *pData);
85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/********************************************/
87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*      Functions Implementations           */
88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/********************************************/
89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***********************************************************************
91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                        conn_ibssConfig
92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ***********************************************************************
93a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: IBSS Connection configuration function, called by the conection set param function
94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                in the selection phase. Configures the connection state machine to IBSS connection mode
95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
96a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT:      hConn   -   Connection handle.
97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
98a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT:
99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
100a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/
103a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS conn_ibssConfig(conn_t *pConn)
104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    fsm_actionCell_t    smMatrix[CONN_IBSS_NUM_STATES][CONN_IBSS_NUM_EVENTS] =
107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        /* next state and actions for IDLE state */
110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {   {STATE_CONN_IBSS_SELF_WAIT, idle_to_selfWait    },  /* CONN_IBSS_CREATE */
111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_RSN_WAIT,  idle_to_rsnWait     },  /* CONN_IBSS_CONNECT    */
112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_IDLE,      actionNop           },   /* CONN_IBSS_DISCONNECT */
113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_IDLE,      actionUnexpected    },   /* CONN_IBSS_RSN_SUCC */
114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_IDLE,      actionUnexpected    },   /* CONN_IBSS_STA_JOINED */
115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_IDLE,      actionUnexpected    },   /* CONN_IBSS_MERGE */
116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_IDLE,      actionUnexpected    }    /* CONN_IBSS_DISCONN_COMPLETE */
117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        },
118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        /* next state and actions for SELF_WAIT state */
120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {   {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected    							},  /* CONN_IBSS_CREATE */
121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected    							},  /* CONN_IBSS_CONNECT    */
122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT,  selfWait_to_waitToDisconnCmplt 		},  /* CONN_IBSS_DISCONNECT */
123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected    							},  /* CONN_IBSS_RSN_SUCC */
124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_RSN_WAIT,  selfWait_to_rsnWait 							},  /* CONN_IBSS_STA_JOINED */
125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_RSN_WAIT,  selfw_merge_rsnw    							},  /* CONN_IBSS_MERGE */
126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_SELF_WAIT, actionUnexpected    							}   /* CONN_IBSS_DISCONN_COMPLETE */
127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        },
128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        /* next state and actions for RSN_WAIT state */
130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {   {STATE_CONN_IBSS_RSN_WAIT,  actionUnexpected    							},  /* CONN_IBSS_CREATE */
131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_RSN_WAIT,  actionUnexpected    							},  /* CONN_IBSS_CONNECT    */
132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, rsnWait_to_waitToDisconnCmplt    		},  /* CONN_IBSS_DISCONNECT */
133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_CONNECTED, rsnWait_to_connected							},  /* CONN_IBSS_RSN_SUCC */
134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_RSN_WAIT,  actionUnexpected								}, 	/* CONN_IBSS_STA_JOINED */
135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_RSN_WAIT,  rsnw_merge_rsnw     							},  /* CONN_IBSS_MERGE */
136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_RSN_WAIT, actionUnexpected    								}   /* CONN_IBSS_DISCONN_COMPLETE */
137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        },
138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        /* next state and actions for CONNECTED state */
140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {   {STATE_CONN_IBSS_CONNECTED, actionUnexpected    							},  /* CONN_IBSS_CREATE */
141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_CONNECTED, actionUnexpected    							},  /* CONN_IBSS_CONNECT    */
142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, connected_to_waitToDisconnCmplt  		},  /* CONN_IBSS_DISCONNECT */
143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_CONNECTED, actionUnexpected    							},  /* CONN_IBSS_RSN_SUCC */
144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_CONNECTED, actionUnexpected    							},  /* CONN_IBSS_STA_JOINED */
145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_CONNECTED,  conn_merge_conn    							},  /* CONN_IBSS_MERGE */
146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_CONNECTED, actionUnexpected    						   	}   /* CONN_IBSS_DISCONN_COMPLETE */
147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        },
148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
149a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		 /* next state and actions for STATE_CONN_IBSS_WAIT_DISCONN_CMPLT state */
150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        {   {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected    		},  		/* CONN_IBSS_CREATE */
151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected    		},  		/* CONN_IBSS_CONNECT    */
152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected   		},  		/* CONN_IBSS_DISCONNECT */
153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected    		},  		/* CONN_IBSS_RSN_SUCC */
154a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected    		},  		/* CONN_IBSS_STA_JOINED */
155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected     		},  		/* CONN_IBSS_MERGE */
156a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt			{STATE_CONN_IBSS_IDLE, 				 waitDisconnToCmplt_to_idle } 			/* CONN_IBSS_DISCONN_COMPLETE */
157a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        }
158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
159a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    };
160a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
161a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return fsm_Config(pConn->ibss_pFsm, (fsm_Matrix_t)smMatrix, CONN_IBSS_NUM_STATES, CONN_IBSS_NUM_EVENTS, conn_ibssSMEvent, pConn->hOs);
162a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
163a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
164a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***********************************************************************
166a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                        conn_ibssSMEvent
167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ***********************************************************************
168a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: IBSS Connection SM event processing function, called by the connection API
169a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                Perform the following:
170a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                -   Print the state movement as a result from the event
171a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                -   Calls the generic state machine event processing function which preform the following:
172a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                    -   Calls the correspoding callback function
173a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                    -   Move to next state
174a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
175a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT:      currentState    -   Pointer to the connection current state.
176a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            event   -   Received event
177a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt            pConn   -   Connection handle
178a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
179a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT:
180a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
181a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
182a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
183a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/
184a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS conn_ibssSMEvent(TI_UINT8 *currentState, TI_UINT8 event, TI_HANDLE hConn)
185a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
186a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt   conn_t *pConn = (conn_t *)hConn;
187a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_STATUS       status;
188a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8       nextState;
189a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
190a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    status = fsm_GetNextState(pConn->ibss_pFsm, *currentState, event, &nextState);
191a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    if (status != TI_OK)
192a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    {
193a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        TRACE0(pConn->hReport, REPORT_SEVERITY_SM, "IBSS State machine error, failed getting next state\n");
194a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt        return(TI_NOK);
195a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    }
196a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
197a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TRACE3( pConn->hReport, REPORT_SEVERITY_INFORMATION, "conn_ibssSMEvent: <currentState = %d, event = %d> --> nextState = %d\n", *currentState, event, nextState);
198a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    status = fsm_Event(pConn->ibss_pFsm, currentState, event, (void *)pConn);
199a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
200a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return status;
201a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
202a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
203a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
204a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid connIbss_DisconnectComplete (conn_t *pConn, TI_UINT8  *data, TI_UINT8   dataLength)
205a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
206a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* send an DISCONNECT COMPLETE event to the SM */
207a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    conn_ibssSMEvent(&pConn->state, CONN_IBSS_DISCONN_COMPLETE, (TI_HANDLE) pConn);
208a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
209a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
210a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/************************************************************************************************************/
211a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*      In the following section are listed the callback function used by the IBSS connection state machine */
212a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/************************************************************************************************************/
213a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
214a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***********************************************************************
215a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                        selfWait_to_rsnWait
216a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ***********************************************************************
217a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION:
218a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
219a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
220a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT:
221a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
222a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT:
223a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
224a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
225a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
226a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/
227a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS selfWait_to_rsnWait (void *pData)
228a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
229a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	conn_t      *pConn = (conn_t *)pData;
230a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    paramInfo_t  param;
231a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
232a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tmr_StopTimer (pConn->hConnTimer);
233a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
234a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    param.paramType = RX_DATA_PORT_STATUS_PARAM;
235a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    param.content.rxDataPortStatus = OPEN_EAPOL;
236a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    rxData_setParam (pConn->hRxData, &param);
237a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
238a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* Update TxMgmtQueue SM to enable EAPOL packets. */
239a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_EAPOL);
240a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
241a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return rsn_start (pConn->hRsn);
242a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
243a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
244a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
245a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***********************************************************************
246a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                        rsnWait_to_connected
247a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ***********************************************************************
248a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION:
249a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
250a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
251a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT:
252a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
253a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT:
254a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
255a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
256a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
257a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/
258a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS rsnWait_to_connected(void *pData)
259a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
260a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    paramInfo_t param;
261a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
262a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    conn_t *pConn=(conn_t *)pData;
263a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
264a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TrafficMonitor_Start( pConn->hTrafficMonitor );
265a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
266a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    healthMonitor_setState(pConn->hHealthMonitor, HEALTH_MONITOR_STATE_CONNECTED);
267a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
268a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    siteMgr_start(pConn->hSiteMgr);
269a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
270a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    param.paramType = RX_DATA_PORT_STATUS_PARAM;
271a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    param.content.rxDataPortStatus = OPEN;
272a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    rxData_setParam(((conn_t *)pData)->hRxData, &param);
273a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
274a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* Update TxMgmtQueue SM to open Tx path to all packets. */
275a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_OPEN);
276a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
277a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Update current BSS connection type and mode */
278a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    currBSS_updateConnectedState(pConn->hCurrBss, TI_TRUE, BSS_INDEPENDENT);
279a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
280a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	sme_ReportConnStatus(((conn_t *)pData)->hSmeSm, STATUS_SUCCESSFUL, 0);
281a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
282a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return TI_OK;
283a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
284a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
285a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS selfw_merge_rsnw(void *pData)
286a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
287a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    conn_t *pConn=(conn_t *)pData;
288a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    paramInfo_t param;
289a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
290a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	os_printf("IBSS selfw_merge_rsnw!!!!!!!!!!\n");
291a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
292a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	tmr_StopTimer (pConn->hConnTimer);
293a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	siteMgr_join(pConn->hSiteMgr);
294a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
295a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    param.paramType = RX_DATA_PORT_STATUS_PARAM;
296a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    param.content.rxDataPortStatus = OPEN_EAPOL;
297a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    rxData_setParam (pConn->hRxData, &param);
298a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
299a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* Update TxMgmtQueue SM to enable EAPOL packets. */
300a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_EAPOL);
301a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
302a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return rsn_start (pConn->hRsn);
303a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
304a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
305a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
306a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
307a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS rsnw_merge_rsnw(void *pData)
308a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
309a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    conn_t *pConn=(conn_t *)pData;
310a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
311a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	os_printf("IBSS rsnw_merge_rsnw!!!!!!!!!!\n");
312a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
313a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	siteMgr_join(pConn->hSiteMgr);
314a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
315a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
316a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
317a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
318a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
319a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS conn_merge_conn(void *pData)
320a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
321a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    conn_t *pConn=(conn_t *)pData;
322a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
323a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	os_printf("IBSS conn_merge_conn!!!!!!!!!!\n");
324a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
325a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	siteMgr_join(pConn->hSiteMgr);
326a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
327a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
328a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
329a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
330a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS waitDisconnToCmplt_to_idle (void *pData)
331a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
332a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	conn_t      *pConn = (conn_t *)pData;
333a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
334a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* Inform the SME about the connection lost */
335a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* we use this status at SME, if != 0 means that assoc frame sent */
336a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	sme_ReportConnStatus(pConn->hSmeSm, STATUS_UNSPECIFIED, 1);
337a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
338a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
339a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
340a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
341a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
342a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***********************************************************************
343a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                        actionUnexpected
344a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ***********************************************************************
345a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION:
346a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
347a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
348a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT:
349a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
350a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT:
351a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
352a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
353a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
354a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/
355a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS actionUnexpected(void *pData)
356a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
357a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef TI_DBG
358a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    conn_t *pConn = (conn_t *)pData;
359a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
360a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TRACE0(pConn->hReport, REPORT_SEVERITY_SM, "State machine error, unexpected Event\n\n");
361a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /*TI_DBG*/
362a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
363a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return TI_OK;
364a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
365a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
366a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***********************************************************************
367a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                        actionNop
368a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ***********************************************************************
369a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION:
370a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
371a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
372a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT:
373a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
374a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT:
375a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
376a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
377a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
378a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/
379a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS actionNop(void *pData)
380a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
381a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return TI_OK;
382a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
383a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
384a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
385a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***********************************************************************
386a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                        selfWait_to_waitToDisconnCmplt
387a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ***********************************************************************
388a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION:
389a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
390a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
391a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT:
392a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
393a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT:
394a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
395a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
396a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
397a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/
398a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS selfWait_to_waitToDisconnCmplt (void *pData)
399a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
400a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	conn_t      *pConn = (conn_t *)pData;
401a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    paramInfo_t  param;
402a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
403a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tmr_StopTimer (pConn->hConnTimer);
404a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
405a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    siteMgr_removeSelfSite(pConn->hSiteMgr);
406a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
407a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Update current BSS connection type and mode */
408a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    currBSS_updateConnectedState(pConn->hCurrBss, TI_FALSE, BSS_INDEPENDENT);
409a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
410a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* stop beacon generation  */
411a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    param.paramType = RX_DATA_PORT_STATUS_PARAM;
412a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    param.content.rxDataPortStatus = CLOSE;
413a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    rxData_setParam(pConn->hRxData, &param);
414a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
415a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* Update TxMgmtQueue SM to close Tx path. */
416a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_CLOSE);
417a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
418a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TWD_CmdFwDisconnect (pConn->hTWD, DISCONNECT_IMMEDIATE, STATUS_UNSPECIFIED);
419a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
420a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return TI_OK;
421a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
422a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
423a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
424a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
425a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***********************************************************************
426a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                        rsnWait_to_waitToDisconnCmplt
427a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ***********************************************************************
428a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION:
429a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
430a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
431a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT:
432a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
433a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT:
434a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
435a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
436a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
437a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/
438a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS rsnWait_to_waitToDisconnCmplt(void *pData)
439a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
4403bb9a92880f8cda8c242707ad02077f13b009632Dmitry Shmidt    paramInfo_t     param;
441a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_STATUS		tStatus;
442a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
443a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tStatus = rsn_stop(((conn_t *)pData)->hRsn, TI_FALSE);
444a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
445a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    param.paramType = RX_DATA_PORT_STATUS_PARAM;
446a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    param.content.rxDataPortStatus = CLOSE;
447a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    rxData_setParam(((conn_t *)pData)->hRxData, &param);
448a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
449a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* Update TxMgmtQueue SM to close Tx path. */
450a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_CLOSE);
451a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
452a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Update current BSS connection type and mode */
453a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    currBSS_updateConnectedState(((conn_t *)pData)->hCurrBss, TI_FALSE, BSS_INDEPENDENT);
454a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
455a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Stop beacon generation */
456a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TWD_CmdFwDisconnect (((conn_t *)pData)->hTWD, DISCONNECT_IMMEDIATE, STATUS_UNSPECIFIED);
457a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
458a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return tStatus;
459a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
460a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
461a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
462a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***********************************************************************
463a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                        connected_to_waitToDisconnCmplt
464a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ***********************************************************************
465a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION:
466a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
467a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
468a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT:
469a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
470a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT:
471a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
472a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
473a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
474a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/
475a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS connected_to_waitToDisconnCmplt(void *pData)
476a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
477a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    conn_t *pConn=(conn_t *)pData;
478a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
479a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TrafficMonitor_Stop(pConn->hTrafficMonitor);
480a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
481a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    healthMonitor_setState(pConn->hHealthMonitor, HEALTH_MONITOR_STATE_DISCONNECTED);
482a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
483a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* The logic of this action is identical to rsnWait_to_idle */
484a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return rsnWait_to_waitToDisconnCmplt(pConn);
485a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
486a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
487a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
488a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
489a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
490a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
491a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***********************************************************************
492a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                        idle_to_selfWait
493a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ***********************************************************************
494a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION:
495a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
496a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
497a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT:
498a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
499a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT:
500a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
501a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
502a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
503a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/
504a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS idle_to_selfWait (void *pData)
505a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
506a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	conn_t    *pConn = (conn_t *)pData;
507a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT16  randomTime;
508a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
509a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    siteMgr_join (pConn->hSiteMgr);
510a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
511a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* get a randomTime that is constructed of the lower 13 bits ot the system time to
512a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt       get a MS random time of ~8000 ms */
513a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    randomTime = os_timeStampMs (pConn->hOs) & 0x1FFF;
514a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
515a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Update current BSS connection type and mode */
516a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    currBSS_updateConnectedState (pConn->hCurrBss, TI_TRUE, BSS_INDEPENDENT);
517a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
518a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    tmr_StartTimer (pConn->hConnTimer,
519a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                    conn_timeout,
520a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                    (TI_HANDLE)pConn,
521a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                    pConn->timeout + randomTime,
522a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                    TI_FALSE);
523a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
5243bb9a92880f8cda8c242707ad02077f13b009632Dmitry Shmidt	/*  Notify that the driver is associated to the supplicant\IP stack. */
5253bb9a92880f8cda8c242707ad02077f13b009632Dmitry Shmidt    EvHandlerSendEvent (pConn->hEvHandler, IPC_EVENT_ASSOCIATED, NULL, 0);
5263bb9a92880f8cda8c242707ad02077f13b009632Dmitry Shmidt
527a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return TI_OK;
528a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
529a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
530a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
531a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
532a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***********************************************************************
533a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                        idle_to_rsnWait
534a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ***********************************************************************
535a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION:
536a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
537a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
538a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT:
539a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
540a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT:
541a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
542a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN:     TI_OK on success, TI_NOK otherwise
543a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
544a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/
545a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS idle_to_rsnWait(void *pData)
546a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
547a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    paramInfo_t param;
548a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
549a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    siteMgr_join(((conn_t *)pData)->hSiteMgr);
550a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
551a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    param.paramType = RX_DATA_PORT_STATUS_PARAM;
552a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    param.content.rxDataPortStatus = OPEN_EAPOL;
553a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    rxData_setParam(((conn_t *)pData)->hRxData, &param);
554a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
555a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* Update TxMgmtQueue SM to enable EAPOL packets. */
556a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_EAPOL);
557a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
558a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /*
559a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt     *  Notify that the driver is associated to the supplicant\IP stack.
560a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt     */
561a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    EvHandlerSendEvent(((conn_t *)pData)->hEvHandler, IPC_EVENT_ASSOCIATED, NULL,0);
562a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
563a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* Update current BSS connection type and mode */
564a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    currBSS_updateConnectedState(((conn_t *)pData)->hCurrBss, TI_TRUE, BSS_INDEPENDENT);
565a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
566a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    return rsn_start(((conn_t *)pData)->hRsn);
567a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
568a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
569