6PCLEAR fails in case of schedule inconsistency due to parent switch

Description

If we do have the following setup

Node A is parent of Node B and Node C all have the minimal shared cell. And we had an dedicated cell between both pairs. Now Node B powercycles and resync to Node C.

Now it happens that Node A has a cell to Node B an there will clear that because it's not needed anymore. But sending the 6PCLEAR on the dedicated link fails on linklayer because there will be no ACK from Node B. In that case we end up in endless CLEAR Requests because sixtop_six2six_sendDone
https://github.com/openwsn-berkeley/openwsn-fw/blob/develop/openstack/02b-MAChigh/sixtop.c#L921
always resets the sixtop statemachine. If the timeout would occure the cells would been removed then but the timer is only started in case we received an ACK.

can we do something like the following without beeing inconsistent with the draft?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 void sixtop_six2six_sendDone(OpenQueueEntry_t* msg, owerror_t error){ msg->owner = COMPONENT_SIXTOP_RES; // if this is a request send done if (msg->l2_sixtop_messageType == SIXTOP_CELL_REQUEST){ if(error == E_FAIL) { // the packet has not been sent retransmission failed switch (sixtop_vars.six2six_state) { case SIX_STATE_WAIT_CLEARREQUEST_SENDDONE: sixtop_vars.six2six_state = SIX_STATE_WAIT_CLEARRESPONSE; timer_sixtop_six2six_timeout_fired(); break; default: // reset handler and state if the request is failed to send out sixtop_vars.six2six_state = SIX_STATE_IDLE; break; }

Environment

None

Status

Assignee

Christian Hopfner

Reporter

Christian Hopfner

Labels

None

Story Points

1

Sprint

None

Fix versions

Affects versions

1.14.0

Priority

Normal