From 70743a1cd865dc91746c95865b045505e664e935 Mon Sep 17 00:00:00 2001 From: Jarkko Paso Date: Fri, 12 Mar 2021 16:46:45 +0200 Subject: [PATCH] MAC stabilisation fixes (#2591) * Do not reset CCA count in "no Ack" * Do not stop TX poll timer --- source/MAC/IEEE802_15_4/mac_pd_sap.c | 1 + source/Service_Libs/fhss/fhss_ws.c | 6 +----- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/source/MAC/IEEE802_15_4/mac_pd_sap.c b/source/MAC/IEEE802_15_4/mac_pd_sap.c index 3076e748758e..08a560423795 100644 --- a/source/MAC/IEEE802_15_4/mac_pd_sap.c +++ b/source/MAC/IEEE802_15_4/mac_pd_sap.c @@ -385,6 +385,7 @@ static void mac_sap_no_ack_cb(protocol_interface_rf_mac_setup_s *rf_ptr) #endif rf_ptr->macRfRadioTxActive = false; if (rf_ptr->mac_tx_retry < rf_ptr->mac_mlme_retry_max) { + rf_ptr->mac_cca_retry = 0; rf_ptr->mac_tx_retry++; //Update retry counter mac_csma_param_init(rf_ptr); // Increase current backoff exponent when retry count grows diff --git a/source/Service_Libs/fhss/fhss_ws.c b/source/Service_Libs/fhss/fhss_ws.c index 1b7576ed1820..7a513a6e4f4c 100644 --- a/source/Service_Libs/fhss/fhss_ws.c +++ b/source/Service_Libs/fhss/fhss_ws.c @@ -1029,9 +1029,7 @@ int fhss_ws_set_parent(fhss_structure_t *fhss_structure, const uint8_t eui64[8], return 0; } platform_enter_critical(); - if (fhss_structure->ws->broadcast_timer_running == false) { - eventOS_callback_timer_stop(fhss_structure->fhss_event_timer); - } + uint16_t own_bc_slot = fhss_structure->ws->bc_slot; uint32_t prev_synchronization_time = fhss_structure->ws->synchronization_time; fhss_structure->ws->synchronization_time = fhss_structure->callbacks.read_timestamp(fhss_structure->fhss_api); @@ -1143,8 +1141,6 @@ int fhss_ws_configuration_set(fhss_structure_t *fhss_structure, const fhss_ws_co // No one would poll TX queue if schedule timers were not started. Start poll timer with 10ms (200*50us) interval. if ((fhss_structure->ws->unicast_timer_running == false) && (fhss_structure->ws->broadcast_timer_running == false)) { eventOS_callback_timer_start(fhss_structure->fhss_event_timer, 200); - } else { - eventOS_callback_timer_stop(fhss_structure->fhss_event_timer); } fhss_structure->number_of_channels = fhss_configuration->channel_mask_size;