TSCH: filter out frames from ourselves

This commit is contained in:
Simon Duquennoy 2019-02-24 16:30:57 +01:00
parent e3f1b67096
commit 4cc64ea942

View File

@ -849,8 +849,12 @@ PT_THREAD(tsch_rx_slot(struct pt *pt, struct rtimer *t))
#endif /* LLSEC802154_ENABLED */ #endif /* LLSEC802154_ENABLED */
if(frame_valid) { if(frame_valid) {
if(linkaddr_cmp(&destination_address, &linkaddr_node_addr) /* Check that frome is for us or broadcast, AND that it is not from
|| linkaddr_cmp(&destination_address, &linkaddr_null)) { * ourselves. This is for consistency with CSMA and to avoid adding
* ourselves to neighbor tables in case frames are being replayed. */
if((linkaddr_cmp(&destination_address, &linkaddr_node_addr)
|| linkaddr_cmp(&destination_address, &linkaddr_null))
&& !linkaddr_cmp(&source_address, &linkaddr_node_addr)) {
int do_nack = 0; int do_nack = 0;
rx_count++; rx_count++;
estimated_drift = RTIMER_CLOCK_DIFF(expected_rx_time, rx_start_time); estimated_drift = RTIMER_CLOCK_DIFF(expected_rx_time, rx_start_time);