From 290fc829ea6f4e83f2b4ebba27ca7f58d346d273 Mon Sep 17 00:00:00 2001 From: Simon Duquennoy Date: Wed, 6 May 2015 14:23:32 +0200 Subject: [PATCH] Consistently use PACKETBUF_ATTR_MAC_SEQNO for MAC sequence number, both input and output. Disable PACKETBUF_ATTR_PACKET_ID in the non-Rime case. --- core/net/mac/framer-802154.c | 3 +++ core/net/mac/mac-sequence.c | 4 ++-- core/net/mac/nullrdc.c | 2 +- core/net/packetbuf.h | 2 +- cpu/avr/radio/mac/sicslowmac.c | 2 ++ examples/ipv6/slip-radio/no-framer.c | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/core/net/mac/framer-802154.c b/core/net/mac/framer-802154.c index 67a61867a..987d142ba 100644 --- a/core/net/mac/framer-802154.c +++ b/core/net/mac/framer-802154.c @@ -242,7 +242,10 @@ parse(void) } packetbuf_set_addr(PACKETBUF_ADDR_SENDER, (linkaddr_t *)&frame.src_addr); packetbuf_set_attr(PACKETBUF_ATTR_PENDING, frame.fcf.frame_pending); + packetbuf_set_attr(PACKETBUF_ATTR_MAC_SEQNO, frame.seq); +#if NETSTACK_CONF_WITH_RIME packetbuf_set_attr(PACKETBUF_ATTR_PACKET_ID, frame.seq); +#endif #if LLSEC802154_SECURITY_LEVEL if(frame.fcf.security_enabled) { diff --git a/core/net/mac/mac-sequence.c b/core/net/mac/mac-sequence.c index 638dece13..40ac3c28a 100644 --- a/core/net/mac/mac-sequence.c +++ b/core/net/mac/mac-sequence.c @@ -74,7 +74,7 @@ mac_sequence_is_duplicate(void) for(i = 0; i < MAX_SEQNOS; ++i) { if(linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_SENDER), &received_seqnos[i].sender)) { - if(packetbuf_attr(PACKETBUF_ATTR_PACKET_ID) == received_seqnos[i].seqno) { + if(packetbuf_attr(PACKETBUF_ATTR_MAC_SEQNO) == received_seqnos[i].seqno) { /* Duplicate packet. */ return 1; } @@ -102,7 +102,7 @@ mac_sequence_register_seqno(void) for(j = i - 1; j > 0; --j) { memcpy(&received_seqnos[j], &received_seqnos[j - 1], sizeof(struct seqno)); } - received_seqnos[0].seqno = packetbuf_attr(PACKETBUF_ATTR_PACKET_ID); + received_seqnos[0].seqno = packetbuf_attr(PACKETBUF_ATTR_MAC_SEQNO); linkaddr_copy(&received_seqnos[0].sender, packetbuf_addr(PACKETBUF_ADDR_SENDER)); } diff --git a/core/net/mac/nullrdc.c b/core/net/mac/nullrdc.c index 3403b764e..07915b186 100644 --- a/core/net/mac/nullrdc.c +++ b/core/net/mac/nullrdc.c @@ -294,7 +294,7 @@ packet_input(void) if(duplicate) { /* Drop the packet. */ PRINTF("nullrdc: drop duplicate link layer packet %u\n", - packetbuf_attr(PACKETBUF_ATTR_PACKET_ID)); + packetbuf_attr(PACKETBUF_ATTR_MAC_SEQNO)); } else { mac_sequence_register_seqno(); } diff --git a/core/net/packetbuf.h b/core/net/packetbuf.h index 12bfd0fab..d3b6600ec 100644 --- a/core/net/packetbuf.h +++ b/core/net/packetbuf.h @@ -309,9 +309,9 @@ enum { PACKETBUF_ATTR_IS_CREATED_AND_SECURED, /* Scope 1 attributes: used between two neighbors only. */ - PACKETBUF_ATTR_PACKET_ID, PACKETBUF_ATTR_PACKET_TYPE, #if NETSTACK_CONF_WITH_RIME + PACKETBUF_ATTR_PACKET_ID, PACKETBUF_ATTR_RELIABLE, PACKETBUF_ATTR_REXMIT, PACKETBUF_ATTR_MAX_REXMIT, diff --git a/cpu/avr/radio/mac/sicslowmac.c b/cpu/avr/radio/mac/sicslowmac.c index ea4616e39..b836bcd3a 100644 --- a/cpu/avr/radio/mac/sicslowmac.c +++ b/cpu/avr/radio/mac/sicslowmac.c @@ -402,8 +402,10 @@ sicslowmac_dataRequest(void) frame_create_params_t params; frame_result_t result; +#if NETSTACK_CONF_WITH_RIME /* Save the msduHandle in a global variable. */ msduHandle = packetbuf_attr(PACKETBUF_ATTR_PACKET_ID); +#endif /* Build the FCF. */ params.fcf.frameType = DATAFRAME; diff --git a/examples/ipv6/slip-radio/no-framer.c b/examples/ipv6/slip-radio/no-framer.c index fbb749da8..7f3447e97 100644 --- a/examples/ipv6/slip-radio/no-framer.c +++ b/examples/ipv6/slip-radio/no-framer.c @@ -109,7 +109,7 @@ parse(void) } packetbuf_set_addr(PACKETBUF_ADDR_SENDER, (linkaddr_t *)&frame.src_addr); packetbuf_set_attr(PACKETBUF_ATTR_PENDING, frame.fcf.frame_pending); - packetbuf_set_attr(PACKETBUF_ATTR_PACKET_ID, frame.seq); + packetbuf_set_attr(PACKETBUF_ATTR_MAC_SEQNO, frame.seq); PRINTF("15.4-IN: %2X", frame.fcf.frame_type); PRINTADDR(packetbuf_addr(PACKETBUF_ADDR_SENDER));