diff --git a/sys/net/ieee802154/ieee802154_frame.h b/sys/net/ieee802154/ieee802154_frame.h index 7ae6b482a2e8..978313f4958d 100644 --- a/sys/net/ieee802154/ieee802154_frame.h +++ b/sys/net/ieee802154/ieee802154_frame.h @@ -24,8 +24,8 @@ /* maximum 802.15.4 header length */ #define IEEE_802154_MAX_HDR_LEN 23 -/* mininmum */ -#define IEEE_802154_PAYLOAD_LEN 21 +/* ...and FCS*/ +#define IEEE_802154_FCS_LEN 2 #define IEEE_802154_BEACON_FRAME 0 #define IEEE_802154_DATA_FRAME 1 diff --git a/sys/net/sixlowpan/mac.c b/sys/net/sixlowpan/mac.c index 5bf228fe571e..4e0a34970803 100644 --- a/sys/net/sixlowpan/mac.c +++ b/sys/net/sixlowpan/mac.c @@ -215,9 +215,14 @@ void sixlowpan_mac_send_ieee802154_frame(const ieee_802154_long_t *addr, memset(&buf, 0, PAYLOAD_SIZE); init_802154_frame(&frame, (uint8_t *)&buf); memcpy(&buf[hdrlen], frame.payload, frame.payload_len); + /* set FCS */ + /* RSSI = 0 */ + buf[frame.payload_len+hdrlen] = 0; + /* FCS Valid = 1 / LQI Correlation Value = 0 */ + buf[frame.payload_len+hdrlen+1] = 0x80; DEBUG("IEEE802.15.4 frame - FCF: %02X %02X DPID: %02X SPID: %02X DSN: %02X\n", buf[0], buf[1], frame->dest_pan_id, frame->src_pan_id, frame->seq_nr); - p.length = hdrlen + frame.payload_len; + p.length = hdrlen + frame.payload_len + IEEE_802154_FCS_LEN; if (mcast == 0) { p.dst = daddr;