@@ -196,7 +196,7 @@ static void wpa2_rxq_deinit(void)
196196
197197void wpa2_task (void * pvParameters )
198198{
199- ETSEvent * e ;
199+ ETSEvent e ;
200200 struct eap_sm * sm = gEapSm ;
201201 bool task_del = false;
202202
@@ -206,16 +206,16 @@ void wpa2_task(void *pvParameters)
206206
207207 for (;;) {
208208 if (TRUE == os_queue_recv (s_wpa2_queue , & e , OS_BLOCK )) {
209- if (e -> sig < SIG_WPA2_MAX ) {
209+ if (e . sig < SIG_WPA2_MAX ) {
210210 DATA_MUTEX_TAKE ();
211- if (sm -> wpa2_sig_cnt [e -> sig ]) {
212- sm -> wpa2_sig_cnt [e -> sig ]-- ;
211+ if (sm -> wpa2_sig_cnt [e . sig ]) {
212+ sm -> wpa2_sig_cnt [e . sig ]-- ;
213213 } else {
214- wpa_printf (MSG_ERROR , "wpa2_task: invalid sig cnt, sig=%" PRId32 " cnt=%d" , e -> sig , sm -> wpa2_sig_cnt [e -> sig ]);
214+ wpa_printf (MSG_ERROR , "wpa2_task: invalid sig cnt, sig=%" PRId32 " cnt=%d" , e . sig , sm -> wpa2_sig_cnt [e . sig ]);
215215 }
216216 DATA_MUTEX_GIVE ();
217217 }
218- switch (e -> sig ) {
218+ switch (e . sig ) {
219219 case SIG_WPA2_TASK_DEL :
220220 task_del = true;
221221 break ;
@@ -235,12 +235,9 @@ void wpa2_task(void *pvParameters)
235235 default :
236236 break ;
237237 }
238- os_free (e );
239- }
240-
241- if (task_del ) {
242- break ;
243- } else {
238+ if (task_del ) {
239+ break ;
240+ }
244241 if (s_wifi_wpa2_sync_sem ) {
245242 wpa_printf (MSG_DEBUG , "EAP: wifi->EAP api completed" );
246243 os_semphr_give (s_wifi_wpa2_sync_sem );
@@ -268,6 +265,7 @@ void wpa2_task(void *pvParameters)
268265int wpa2_post (uint32_t sig , uint32_t par )
269266{
270267 struct eap_sm * sm = gEapSm ;
268+ ETSEvent evt ;
271269
272270 if (!sm ) {
273271 return ESP_FAIL ;
@@ -277,28 +275,20 @@ int wpa2_post(uint32_t sig, uint32_t par)
277275 if (sm -> wpa2_sig_cnt [sig ]) {
278276 DATA_MUTEX_GIVE ();
279277 return ESP_OK ;
278+ }
279+ sm -> wpa2_sig_cnt [sig ]++ ;
280+ DATA_MUTEX_GIVE ();
281+ evt .sig = sig ;
282+ evt .par = par ;
283+ if (os_queue_send (s_wpa2_queue , & evt , os_task_ms_to_tick (10 )) != TRUE) {
284+ wpa_printf (MSG_ERROR , "EAP: Q S E" );
285+ return ESP_FAIL ;
286+ }
287+ if (s_wifi_wpa2_sync_sem ) {
288+ os_semphr_take (s_wifi_wpa2_sync_sem , OS_BLOCK );
289+ wpa_printf (MSG_DEBUG , "EAP: EAP api return, sm->state(%d)" , sm -> finish_state );
280290 } else {
281- ETSEvent * evt = (ETSEvent * )os_malloc (sizeof (ETSEvent ));
282- if (evt == NULL ) {
283- wpa_printf (MSG_ERROR , "EAP: E N M" );
284- DATA_MUTEX_GIVE ();
285- return ESP_FAIL ;
286- }
287- sm -> wpa2_sig_cnt [sig ]++ ;
288- DATA_MUTEX_GIVE ();
289- evt -> sig = sig ;
290- evt -> par = par ;
291- if (os_queue_send (s_wpa2_queue , & evt , os_task_ms_to_tick (10 )) != TRUE) {
292- wpa_printf (MSG_ERROR , "EAP: Q S E" );
293- return ESP_FAIL ;
294- } else {
295- if (s_wifi_wpa2_sync_sem ) {
296- os_semphr_take (s_wifi_wpa2_sync_sem , OS_BLOCK );
297- wpa_printf (MSG_DEBUG , "EAP: EAP api return, sm->state(%d)" , sm -> finish_state );
298- } else {
299- wpa_printf (MSG_ERROR , "EAP: null wifi->EAP sync sem" );
300- }
301- }
291+ wpa_printf (MSG_ERROR , "EAP: null wifi->EAP sync sem" );
302292 }
303293 return ESP_OK ;
304294}
0 commit comments