Merge pull request #1994 from yatch/pr/bugfix-framer802154-sender-addr
Bugfix on source address setting in framer_802154.create()
This commit is contained in:
commit
53efcec1fa
|
@ -873,6 +873,10 @@ qsend_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
|||
if(next != NULL) {
|
||||
packetbuf_set_attr(PACKETBUF_ATTR_PENDING, 1);
|
||||
}
|
||||
#if !NETSTACK_CONF_BRIDGE_MODE
|
||||
/* If NETSTACK_CONF_BRIDGE_MODE is set, assume PACKETBUF_ADDR_SENDER is already set. */
|
||||
packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &linkaddr_node_addr);
|
||||
#endif
|
||||
packetbuf_set_attr(PACKETBUF_ATTR_MAC_ACK, 1);
|
||||
if(NETSTACK_FRAMER.create() < 0) {
|
||||
PRINTF("contikimac: framer failed\n");
|
||||
|
|
|
@ -173,7 +173,8 @@ create_frame(int type, int do_create)
|
|||
* Set up the source address using only the long address mode for
|
||||
* phase 1.
|
||||
*/
|
||||
linkaddr_copy((linkaddr_t *)¶ms.src_addr, &linkaddr_node_addr);
|
||||
linkaddr_copy((linkaddr_t *)¶ms.src_addr,
|
||||
packetbuf_addr(PACKETBUF_ADDR_SENDER));
|
||||
|
||||
params.payload = packetbuf_dataptr();
|
||||
params.payload_len = packetbuf_datalen();
|
||||
|
|
|
@ -910,6 +910,15 @@ send_packet(mac_callback_t sent, void *ptr)
|
|||
|
||||
packet_count_before = tsch_queue_packet_count(addr);
|
||||
|
||||
#if !NETSTACK_CONF_BRIDGE_MODE
|
||||
/*
|
||||
* In the Contiki stack, the source address of a frame is set at the RDC
|
||||
* layer. Since TSCH doesn't use any RDC protocol and bypasses the layer to
|
||||
* transmit a frame, it should set the source address by itself.
|
||||
*/
|
||||
packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &linkaddr_node_addr);
|
||||
#endif
|
||||
|
||||
if((hdr_len = NETSTACK_FRAMER.create()) < 0) {
|
||||
PRINTF("TSCH:! can't send packet due to framer error\n");
|
||||
ret = MAC_TX_ERR;
|
||||
|
|
Loading…
Reference in a new issue