* Added configurable default number of transmissions for CSMA to use when not specified using packetbuf attributes (CSMA_CONF_MAX_MAC_TRANSMISSIONS).
* Renamed packetbuf attribute PACKETBUF_ATTR_MAX_MAC_REXMIT to PACKETBUF_ATTR_MAX_MAC_TRANSMISSIONS where value 0 (attribute not set) means that default number of transmissions should be used.
This commit is contained in:
parent
ce5d19fefd
commit
9508d2c4d7
5 changed files with 30 additions and 11 deletions
|
@ -28,7 +28,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: csma.c,v 1.14 2010/03/09 20:38:55 adamdunkels Exp $
|
* $Id: csma.c,v 1.15 2010/03/26 12:29:29 nifi Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -60,6 +60,19 @@
|
||||||
#define PRINTF(...)
|
#define PRINTF(...)
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
|
|
||||||
|
#ifndef CSMA_MAX_MAC_TRANSMISSIONS
|
||||||
|
#ifdef CSMA_CONF_MAX_MAC_TRANSMISSIONS
|
||||||
|
#define CSMA_MAX_MAC_TRANSMISSIONS CSMA_CONF_MAX_MAC_TRANSMISSIONS
|
||||||
|
#else
|
||||||
|
#define CSMA_MAX_MAC_TRANSMISSIONS 1
|
||||||
|
#endif /* CSMA_CONF_MAX_MAC_TRANSMISSIONS */
|
||||||
|
#endif /* CSMA_MAX_MAC_TRANSMISSIONS */
|
||||||
|
|
||||||
|
#if CSMA_MAX_MAC_TRANSMISSIONS < 1
|
||||||
|
#error CSMA_CONF_MAX_MAC_TRANSMISSIONS must be at least 1.
|
||||||
|
#error Change CSMA_CONF_MAX_MAC_TRANSMISSIONS in contiki-conf.h or in your Makefile.
|
||||||
|
#endif /* CSMA_CONF_MAX_MAC_TRANSMISSIONS < 1 */
|
||||||
|
|
||||||
struct queued_packet {
|
struct queued_packet {
|
||||||
struct queued_packet *next;
|
struct queued_packet *next;
|
||||||
struct queuebuf *buf;
|
struct queuebuf *buf;
|
||||||
|
@ -179,7 +192,13 @@ send_packet(mac_callback_t sent, void *ptr)
|
||||||
if(q != NULL) {
|
if(q != NULL) {
|
||||||
q->buf = queuebuf_new_from_packetbuf();
|
q->buf = queuebuf_new_from_packetbuf();
|
||||||
if(q != NULL) {
|
if(q != NULL) {
|
||||||
q->max_transmissions = packetbuf_attr(PACKETBUF_ATTR_MAX_MAC_REXMIT) + 1;
|
if(packetbuf_attr(PACKETBUF_ATTR_MAX_MAC_TRANSMISSIONS) == 0) {
|
||||||
|
/* Use default configuration for max transmissions */
|
||||||
|
q->max_transmissions = CSMA_MAX_MAC_TRANSMISSIONS;
|
||||||
|
} else {
|
||||||
|
q->max_transmissions =
|
||||||
|
packetbuf_attr(PACKETBUF_ATTR_MAX_MAC_TRANSMISSIONS);
|
||||||
|
}
|
||||||
q->transmissions = 0;
|
q->transmissions = 0;
|
||||||
q->collisions = 0;
|
q->collisions = 0;
|
||||||
q->deferrals = 0;
|
q->deferrals = 0;
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: collect.c,v 1.42 2010/03/25 08:51:07 adamdunkels Exp $
|
* $Id: collect.c,v 1.43 2010/03/26 12:29:29 nifi Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -277,7 +277,7 @@ send_queued_packet(void)
|
||||||
c->max_rexmits = packetbuf_attr(PACKETBUF_ATTR_MAX_REXMIT);
|
c->max_rexmits = packetbuf_attr(PACKETBUF_ATTR_MAX_REXMIT);
|
||||||
PRINTF("max_rexmits %d\n", c->max_rexmits);
|
PRINTF("max_rexmits %d\n", c->max_rexmits);
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_RELIABLE, 1);
|
packetbuf_set_attr(PACKETBUF_ATTR_RELIABLE, 1);
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_MAX_MAC_REXMIT, 2);
|
packetbuf_set_attr(PACKETBUF_ATTR_MAX_MAC_TRANSMISSIONS, 3);
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_PACKET_ID, c->seqno);
|
packetbuf_set_attr(PACKETBUF_ATTR_PACKET_ID, c->seqno);
|
||||||
unicast_send(&c->unicast_conn, &n->addr);
|
unicast_send(&c->unicast_conn, &n->addr);
|
||||||
rexmit_time_scaling = c->transmissions;
|
rexmit_time_scaling = c->transmissions;
|
||||||
|
@ -382,7 +382,7 @@ send_ack(struct collect_conn *tc, const rimeaddr_t *to, int congestion, int drop
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_RELIABLE, 0);
|
packetbuf_set_attr(PACKETBUF_ATTR_RELIABLE, 0);
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_ERELIABLE, 0);
|
packetbuf_set_attr(PACKETBUF_ATTR_ERELIABLE, 0);
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_PACKET_ID, packet_seqno);
|
packetbuf_set_attr(PACKETBUF_ATTR_PACKET_ID, packet_seqno);
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_MAX_MAC_REXMIT, 2);
|
packetbuf_set_attr(PACKETBUF_ATTR_MAX_MAC_TRANSMISSIONS, 3);
|
||||||
unicast_send(&tc->unicast_conn, to);
|
unicast_send(&tc->unicast_conn, to);
|
||||||
|
|
||||||
PRINTF("%d.%d: collect: Sending ACK to %d.%d for %d\n",
|
PRINTF("%d.%d: collect: Sending ACK to %d.%d for %d\n",
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: packetbuf.h,v 1.6 2010/02/28 09:19:43 adamdunkels Exp $
|
* $Id: packetbuf.h,v 1.7 2010/03/26 12:29:29 nifi Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -341,7 +341,7 @@ enum {
|
||||||
PACKETBUF_ATTR_RADIO_TXPOWER,
|
PACKETBUF_ATTR_RADIO_TXPOWER,
|
||||||
PACKETBUF_ATTR_LISTEN_TIME,
|
PACKETBUF_ATTR_LISTEN_TIME,
|
||||||
PACKETBUF_ATTR_TRANSMIT_TIME,
|
PACKETBUF_ATTR_TRANSMIT_TIME,
|
||||||
PACKETBUF_ATTR_MAX_MAC_REXMIT,
|
PACKETBUF_ATTR_MAX_MAC_TRANSMISSIONS,
|
||||||
|
|
||||||
/* Scope 1 attributes: used between two neighbors only. */
|
/* Scope 1 attributes: used between two neighbors only. */
|
||||||
PACKETBUF_ATTR_RELIABLE,
|
PACKETBUF_ATTR_RELIABLE,
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: runicast.c,v 1.11 2010/03/19 13:21:59 adamdunkels Exp $
|
* $Id: runicast.c,v 1.12 2010/03/26 12:29:29 nifi Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -233,7 +233,7 @@ runicast_send(struct runicast_conn *c, const rimeaddr_t *receiver,
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_RELIABLE, 1);
|
packetbuf_set_attr(PACKETBUF_ATTR_RELIABLE, 1);
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_PACKET_TYPE, PACKETBUF_ATTR_PACKET_TYPE_DATA);
|
packetbuf_set_attr(PACKETBUF_ATTR_PACKET_TYPE, PACKETBUF_ATTR_PACKET_TYPE_DATA);
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_PACKET_ID, c->sndnxt);
|
packetbuf_set_attr(PACKETBUF_ATTR_PACKET_ID, c->sndnxt);
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_MAX_MAC_REXMIT, 2);
|
packetbuf_set_attr(PACKETBUF_ATTR_MAX_MAC_TRANSMISSIONS, 3);
|
||||||
c->max_rxmit = max_retransmissions;
|
c->max_rxmit = max_retransmissions;
|
||||||
c->rxmit = 0;
|
c->rxmit = 0;
|
||||||
c->is_tx = 1;
|
c->is_tx = 1;
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: sicslowpan.c,v 1.33 2010/03/26 10:28:52 joxe Exp $
|
* $Id: sicslowpan.c,v 1.34 2010/03/26 12:29:29 nifi Exp $
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
* \file
|
* \file
|
||||||
|
@ -1342,7 +1342,7 @@ output(uip_lladdr_t *localdest)
|
||||||
packetbuf_clear();
|
packetbuf_clear();
|
||||||
rime_ptr = packetbuf_dataptr();
|
rime_ptr = packetbuf_dataptr();
|
||||||
|
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_MAX_MAC_REXMIT, 2);
|
packetbuf_set_attr(PACKETBUF_ATTR_MAX_MAC_TRANSMISSIONS, 3);
|
||||||
|
|
||||||
if(UIP_IP_BUF->proto == UIP_PROTO_TCP) {
|
if(UIP_IP_BUF->proto == UIP_PROTO_TCP) {
|
||||||
/* packetbuf_set_attr(PACKETBUF_ATTR_PACKET_TYPE,
|
/* packetbuf_set_attr(PACKETBUF_ATTR_PACKET_TYPE,
|
||||||
|
|
Loading…
Reference in a new issue