diff --git a/source/6LoWPAN/ws/ws_llc_data_service.c b/source/6LoWPAN/ws/ws_llc_data_service.c index 8b8d0567a3f..e45e0dea46a 100644 --- a/source/6LoWPAN/ws/ws_llc_data_service.c +++ b/source/6LoWPAN/ws/ws_llc_data_service.c @@ -669,8 +669,19 @@ int8_t ws_llc_create(struct protocol_interface_info_entry *interface, ws_asynch_ void ws_llc_reset(struct protocol_interface_info_entry *interface) { - (void)interface; + llc_data_base_t *base = ws_llc_discover_by_interface(interface); + if (!base) { + return; + } //Clean Message queue's + mcps_purge_t purge_req; + ns_list_foreach_safe(llc_message_t, message, &base->llc_message_list) { + purge_req.msduHandle = message->msg_handle; + llc_message_free(message, base); + base->interface_ptr->mac_api->mcps_purge_req(base->interface_ptr->mac_api, &purge_req); + + } + memset(&base->ie_params, 0, sizeof(llc_ie_params_t)); } int8_t ws_llc_asynch_request(struct protocol_interface_info_entry *interface, asynch_request_t *request)