TSCH: reset now also flushes all queues and resets backoff exponents
This commit is contained in:
parent
4b4ea36e9b
commit
3057cb3363
|
@ -302,14 +302,17 @@ tsch_queue_free_packet(struct tsch_packet *p)
|
|||
/*---------------------------------------------------------------------------*/
|
||||
/* Flush all neighbor queues */
|
||||
void
|
||||
tsch_queue_flush_all(void)
|
||||
tsch_queue_reset(void)
|
||||
{
|
||||
/* Deallocate unneeded neighbors */
|
||||
if(!tsch_is_locked()) {
|
||||
struct tsch_neighbor *n = list_head(neighbor_list);
|
||||
while(n != NULL) {
|
||||
struct tsch_neighbor *next_n = list_item_next(n);
|
||||
/* Flush queue */
|
||||
tsch_queue_flush_nbr_queue(n);
|
||||
/* Reset backoff exponent */
|
||||
tsch_queue_backoff_reset(n);
|
||||
n = next_n;
|
||||
}
|
||||
}
|
||||
|
@ -379,6 +382,7 @@ tsch_queue_get_packet_for_dest_addr(const linkaddr_t *addr, struct tsch_link *li
|
|||
}
|
||||
return NULL;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Returns the head packet of any neighbor queue with zero backoff counter.
|
||||
* Writes pointer to the neighbor in *n */
|
||||
struct tsch_packet *
|
||||
|
|
|
@ -166,8 +166,8 @@ int tsch_queue_packet_count(const linkaddr_t *addr);
|
|||
struct tsch_packet *tsch_queue_remove_packet_from_queue(struct tsch_neighbor *n);
|
||||
/* Free a packet */
|
||||
void tsch_queue_free_packet(struct tsch_packet *p);
|
||||
/* Flush all neighbor queues */
|
||||
void tsch_queue_flush_all(void);
|
||||
/* Reset neighbor queues */
|
||||
void tsch_queue_reset(void);
|
||||
/* Deallocate neighbors with empty queue */
|
||||
void tsch_queue_free_unused_neighbors(void);
|
||||
/* Is the neighbor queue empty? */
|
||||
|
|
|
@ -199,8 +199,8 @@ tsch_reset(void)
|
|||
frame802154_set_pan_id(0xffff);
|
||||
/* First make sure pending packet callbacks are sent etc */
|
||||
process_post_synch(&tsch_pending_events_process, PROCESS_EVENT_POLL, NULL);
|
||||
/* Empty all neighbor queues */
|
||||
/* tsch_queue_flush_all(); */
|
||||
/* Reset neighbor queues */
|
||||
tsch_queue_reset();
|
||||
/* Remove unused neighbors */
|
||||
tsch_queue_free_unused_neighbors();
|
||||
tsch_queue_update_time_source(NULL);
|
||||
|
|
Loading…
Reference in a new issue