@@ -192,6 +192,7 @@ static llc_message_t * llc_message_allocate(uint16_t ie_buffer_size,llc_data_bas
192
192
if (!message ) {
193
193
return NULL ;
194
194
}
195
+ message -> ack_requested = false;
195
196
196
197
//Guarantee
197
198
while (1 ) {
@@ -371,7 +372,33 @@ static void ws_llc_mac_confirm_cb(const mac_api_t* api, const mcps_data_conf_t *
371
372
372
373
uint8_t messsage_type = message -> messsage_type ;
373
374
uint8_t mpx_user_handle = message -> mpx_user_handle ;
375
+ //ETX update
376
+ if (message -> ack_requested && messsage_type == WS_FT_DATA ) {
374
377
378
+ ws_neighbor_class_entry_t * ws_neighbor = NULL ;
379
+ mac_neighbor_table_entry_t * neighbor = NULL ;
380
+ bool success = false;
381
+
382
+ switch (data -> status ) {
383
+ case MLME_SUCCESS :
384
+ case MLME_TX_NO_ACK :
385
+ case MLME_NO_DATA :
386
+ if (data -> status == MLME_SUCCESS ) {
387
+ success = true;
388
+ }
389
+ neighbor = mac_neighbor_table_address_discover (interface -> mac_parameters -> mac_neighbor_table , message -> dst_address , message -> dst_address_type );
390
+ if (neighbor ) {
391
+ ws_neighbor = ws_neighbor_class_entry_get (& interface -> ws_info -> neighbor_storage , neighbor -> index );
392
+ }
393
+ if (ws_neighbor ) {
394
+ etx_transm_attempts_update (interface -> id , 1 + data -> tx_retries , success , neighbor -> index );
395
+ //TODO discover RSL from Enchanced ACK Header IE elements
396
+ }
397
+ break ;
398
+ default :
399
+ break ;
400
+ }
401
+ }
375
402
//Free message
376
403
llc_message_free (message , base );
377
404
@@ -384,34 +411,6 @@ static void ws_llc_mac_confirm_cb(const mac_api_t* api, const mcps_data_conf_t *
384
411
mpx_user_id = MPX_KEY_MANAGEMENT_ENC_USER_ID ;
385
412
}
386
413
387
- //ETX update
388
- if (message -> ack_requested && messsage_type == WS_FT_DATA ) {
389
-
390
- ws_neighbor_class_entry_t * ws_neighbor = NULL ;
391
- mac_neighbor_table_entry_t * neighbor = NULL ;
392
- bool success = false;
393
-
394
- switch (data -> status ) {
395
- case MLME_SUCCESS :
396
- case MLME_TX_NO_ACK :
397
- case MLME_NO_DATA :
398
- if (data -> status == MLME_SUCCESS ) {
399
- success = true;
400
- }
401
- neighbor = mac_neighbor_table_address_discover (interface -> mac_parameters -> mac_neighbor_table , message -> dst_address , message -> dst_address_type );
402
- if (neighbor ) {
403
- ws_neighbor = ws_neighbor_class_entry_get (& interface -> ws_info -> neighbor_storage , neighbor -> index );
404
- }
405
- if (ws_neighbor ) {
406
- etx_transm_attempts_update (interface -> id , 1 + data -> tx_retries , success , neighbor -> index );
407
- //TODO discover RSL from Enchanced ACK Header IE elements
408
- }
409
- break ;
410
- default :
411
- break ;
412
- }
413
- }
414
-
415
414
user_cb = ws_llc_mpx_user_discover (& base -> mpx_data_base , mpx_user_id );
416
415
if (user_cb && user_cb -> data_confirm ) {
417
416
//Call MPX registered call back
0 commit comments