Skip to content

Commit

Permalink
Merge net branch into master
Browse files Browse the repository at this point in the history
Main changes:

- HTTP sample application Basic Auth support
- DNS parsing fixes
- SLIP MAC address can be set from Kconfig
- SLIP driver memory corruption fix
- IPv6 neighbor unreachability detection (NUD) fixes
- ICMPv6 fixes
- Compiler warning fixes
- IEEE 802.15.4 CC2520 MAC address can be set from Kconfig
- Multiple k_delayed_work_init() call fixes in network stack
- 6lo (IPv6 header compression) fix
- Atmel SAM family GMAC ethernet driver update
- RPL protocol header fixes
- mbedtls CoAP fixes
- Management API supports now synchronous event waiting
- RX and TX thread startup fix
- net_buf leak fixes in error cases

----------------------------------------------------------------
Flavio Santes (6):
      samples/http: Match header field ctr with Kconfig variable
      net/http: Move some statements to the right place
      samples/net/http: Add the HTTP Basic Authentication routine
      net/dns: Fix wrong name in DNS answer type routine
      net/dns: Fix DNS answer RR computation
      tests/net/dns: Add routines to evaluate DNS responses

Inaky Perez-Gonzalez (1):
      drivers: slip: Allow specifying the MAC address from config file

Jukka Rissanen (32):
      net: ipv6: Add debug function to convert nbr state to string
      net: ipv6: Print IPv6 neighbor state changes
      net: ipv6: Send NS when neighbor is added
      net: ipv6: Return the prefix lifetime in seconds
      net: shell: Print more detailed neighbor information
      net: ipv6: Wrong timer was used when reachability timer expired
      net: ipv6: Add more debugging to reachability timer
      net: ipv6: Properly enter DELAY state in NUD
      net: utils: Byte to hex converter had wrong prototype
      samples: net: zperf: Fix compiler warnings
      net: tests: nbuf: Fix compiler warnings
      net: shell: Add cmd to remove IPv6 neighbor from cache
      net: shell: Pretty print the neighbor cache info
      net: tests: Fix the default MAC address
      net: Synchronize TX and RX threads startup
      net: Ignore everything in RX if interface is not up
      net: ipv6: Use net_nbuf_unref() to get better debug prints
      net: ipv6: Make sure there is data to be sent
      net: ipv6: Clear pending buf if NS cannot be sent
      net: ipv6: Enhance debug print when handling pending packet
      drivers: slip: Use always the initialized network interface
      net: Print error if buf or interface are NULL when receiving pkt
      net: ipv6: Make config options more fine grained
      drivers: slip: Fix memory corruption when receiving packet
      net: ipv6: Cancel the prefix timer before setting it again
      net: ipv6: Prefix length was incorrectly set
      net: icmp: Gracefully timeout net_buf get in RX path
      net: icmp: Update ICMP statistics for every ICMP packet
      net: icmp: Fix return values of ICMP error send function
      net: tcp: Print TCP trace in one line
      samples: net: coaps_client: Fix the parameters when setting callbacks
      drivers: ieee802154: cc2520: User can set the MAC address

Luiz Augusto von Dentz (5):
      net: if: Don't check NET_IF_UP in net_if_prepare_events
      net: bt: Fix warnings when debug is enabled
      net: if: Make sure k_delayed_work_init is only called once
      net: ipv6: Make sure k_delayed_work_init is only called once
      net: rpl: Make sure k_delayed_work_init is only called once

Michael Scott (2):
      net: 6lo: Fix typo in compress bit calculation
      net/http: let HTTP_SERVER, HTTP_CLIENT and HTTP_PARSER select HTTP

Paul Sokolovsky (2):
      net: connection: Move proto2str() to utils.c, rename to net_proto2str()
      net: context: For bind debug logging, include context protocol.

Piotr Mienkowski (1):
      drivers: Update Atmel SAM family GMAC Ethernet driver

Ravi kumar Veeramally (9):
      net: core: Fix IPv6 RPL extension parsing
      net: rpl: Add RPL header revert utility
      net: ipv6: Fix handling of RA 6CO options
      net: icmpv6: Add support for HBH and RPL option handling
      net: context: Fix setting of appdata ptr and length
      net: rpl: Fix compilation warnings about format specifier
      net: rpl: Add API to access default rpl instance
      net: Modify IPv4/6 packet finalize API's
      net: samples: leds_demo: Fix memory leak

Sergio Rodriguez (2):
      samples: mbedtls coap: Fixing entropy source
      samples: mbedTLS coap: Cleaning prj.conf for QEMU

Tomasz Bursztyka (7):
      net/ieee802154: Add missing line breaks in the shell module
      net/ieee802154: Fix net mgmt request to get core settings
      net/mgmt: Add a function to wait on a event synchronously
      net/mgmt: Add a network interface based synchronous event listener
      tests/net/mgmt: Add 2 unit tests around synchronous event listeners.
      net/mgmt: Remove a useless k_sem_init() and use K_SEM_DEFINE instead
      net/mgmt: Remove the list node before unlocking the semaphore

 .known-issues/doc/networking.conf                 |  12 +
 drivers/ethernet/Kconfig.sam_gmac                 |  16 +-
 drivers/ethernet/eth_sam_gmac.c                   |  82 +++++-
 drivers/ethernet/eth_sam_gmac_priv.h              |   6 +-
 drivers/ieee802154/Kconfig.cc2520                 |  37 +++
 drivers/ieee802154/ieee802154_cc2520.c            |  15 +-
 drivers/slip/Kconfig                              |  11 +
 drivers/slip/slip.c                               |  64 ++++-
 include/net/net_mgmt.h                            |  92 ++++++-
 samples/net/coaps_client/src/coaps_client.c       |  17 +-
 samples/net/coaps_server/prj_qemu_x86.conf        |   5 +-
 samples/net/coaps_server/src/coaps_server.c       |  13 +-
 samples/net/echo_server/prj_sam_e70_xplained.conf |   3 -
 samples/net/http_client/prj_frdm_k64f.conf        |   1 -
 samples/net/http_client/prj_qemu_x86.conf         |   1 -
 samples/net/http_server/README.rst                |  21 ++
 samples/net/http_server/prj_frdm_k64f.conf        |   1 -
 samples/net/http_server/prj_qemu_x86.conf         |   1 -
 samples/net/http_server/src/config.h              |   9 +
 samples/net/http_server/src/http_server.c         |  19 +-
 samples/net/http_server/src/http_server.h         |   2 +
 samples/net/http_server/src/http_types.h          |   4 +-
 samples/net/http_server/src/http_write_utils.c    |  18 ++
 samples/net/http_server/src/http_write_utils.h    |   4 +
 samples/net/http_server/src/main.c                |   1 +
 samples/net/leds_demo/src/leds-demo.c             |  36 ++-
 samples/net/zperf/src/zperf_udp_receiver.c        |   2 +-
 samples/net/zperf/src/zperf_udp_uploader.c        |  24 +-
 subsys/net/ip/6lo.c                               |   2 +-
 subsys/net/ip/Kconfig.ipv6                        |  10 +-
 subsys/net/ip/connection.c                        |  24 +-
 subsys/net/ip/icmpv4.c                            |  28 +-
 subsys/net/ip/icmpv6.c                            |  78 ++++--
 subsys/net/ip/ipv4.c                              |   8 +-
 subsys/net/ip/ipv4.h                              |  10 +-
 subsys/net/ip/ipv6.c                              | 305 +++++++++++++++-------
 subsys/net/ip/ipv6.h                              |  65 +++--
 subsys/net/ip/l2/bluetooth.c                      |   8 +-
 subsys/net/ip/l2/ieee802154/ieee802154_mgmt.c     |   2 +-
 subsys/net/ip/l2/ieee802154/ieee802154_shell.c    |   8 +-
 subsys/net/ip/net_context.c                       |  98 +++----
 subsys/net/ip/net_core.c                          |  30 ++-
 subsys/net/ip/net_if.c                            | 189 ++++++++------
 subsys/net/ip/net_mgmt.c                          | 108 +++++++-
 subsys/net/ip/net_private.h                       |   6 +-
 subsys/net/ip/net_shell.c                         |  68 +++--
 subsys/net/ip/rpl.c                               | 223 +++++++++++-----
 subsys/net/ip/rpl.h                               |  30 ++-
 subsys/net/ip/tcp.c                               |  85 +++---
 subsys/net/ip/utils.c                             |  18 ++
 subsys/net/lib/dns/dns_pack.c                     |   4 +-
 subsys/net/lib/dns/dns_pack.h                     |  11 +-
 subsys/net/lib/http/Kconfig                       |   6 +-
 subsys/net/lib/http/http_server.c                 |  10 +-
 tests/net/6lo/src/main.c                          |   4 +-
 tests/net/arp/src/main.c                          |  10 +-
 tests/net/context/prj.conf                        |   3 +
 tests/net/context/src/main.c                      |  10 +-
 tests/net/dhcpv4/prj.conf                         |   1 +
 tests/net/dhcpv4/src/main.c                       |  24 +-
 tests/net/iface/src/main.c                        |  10 +-
 tests/net/ip-addr/src/main.c                      |  10 +-
 tests/net/ipv6/src/main.c                         |  10 +-
 tests/net/lib/dns_packet/src/dns_packet.c         | 266 ++++++++++++++++++-
 tests/net/lib/http_header_fields/prj.conf         |   1 -
 tests/net/mgmt/src/mgmt.c                         |  57 +++-
 tests/net/mld/src/main.c                          |  12 +-
 tests/net/nbuf/src/main.c                         |  28 +-
 tests/net/route/src/main.c                        |  14 +-
 tests/net/rpl/src/main.c                          |  10 +-
 tests/net/tcp/src/main.c                          |  10 +-
 tests/net/udp/src/main.c                          |  10 +-
 72 files changed, 1780 insertions(+), 661 deletions(-)

Change-Id: I6f911be46eec8ae760fc5077d473aca6c47e91ae
Signed-off-by: Jukka Rissanen <[email protected]>
  • Loading branch information
jukkar committed Mar 17, 2017
2 parents efc68b4 + 7aa5ae1 commit cfaf64c
Show file tree
Hide file tree
Showing 72 changed files with 1,780 additions and 661 deletions.
12 changes: 12 additions & 0 deletions .known-issues/doc/networking.conf
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,15 @@
^(?P=filename):(?P=lineno): WARNING: Invalid definition: Expected end of definition. \[error at [0-9]+]
^.*dns_context.address
^[- \t]*\^
#
# include/net/net_mgmt.h
#
^(?P<filename>[-._/\w]+/doc/api/networking.rst):(?P<lineno>[0-9]+): WARNING: Invalid definition: Expected identifier in nested name. \[error at [0-9]+]
^[ \t]*
^[ \t]*\^
^(?P=filename):(?P=lineno): WARNING: Invalid definition: Expected identifier in nested name. \[error at [0-9]+]
^[ \t]*
^[ \t]*\^
^(?P=filename):(?P=lineno): WARNING: Invalid definition: Expected end of definition. \[error at [0-9]+]
^.*net_mgmt_event_callback.__unnamed__
^[- \t]*\^
16 changes: 8 additions & 8 deletions drivers/ethernet/Kconfig.sam_gmac
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,20 @@ config ETH_SAM_GMAC_NAME
Device name allows user to obtain a handle to the device object
required by all driver API functions. Device name has to be unique.

config ETH_SAM_GMAC_NBUF_DATA_COUNT
int "Network data buffers pre-allocated by the SAM ETH driver"
default 12
config ETH_SAM_GMAC_NBUF_RX_DATA_COUNT
int "Network RX data buffers pre-allocated by the SAM ETH driver"
default 18
help
Number of network data buffers that will be permanently allocated by the
Ethernet driver. These data buffers are used in receive path. They are
pre-alocated by the driver and made available to the GMAC module to be
filled in with incoming data. Their number has to be large enough to fit
at least one complete Ethernet frame. SAM ETH driver will always allocate
that amount of buffers for itself thus reducing the NET_NBUF_DATA_COUNT
which is a total amount of data buffers used by the whole networking
stack. One has to ensure that NET_NBUF_DATA_COUNT is large enough to fit
at least two ethernet frames: one being received by the GMAC module and
the other being processed by the higer layer networking stack.
that amount of buffers for itself thus reducing the NET_NBUF_RX_DATA_COUNT
which is a total amount of RX data buffers used by the whole networking
stack. One has to ensure that NET_NBUF_RX_DATA_COUNT is large enough to
fit at least two ethernet frames: one being received by the GMAC module
and the other being processed by the higer layer networking stack.

config ETH_SAM_GMAC_IRQ_PRI
int "Interrupt priority"
Expand Down
82 changes: 69 additions & 13 deletions drivers/ethernet/eth_sam_gmac.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,21 +38,24 @@
* Verify Kconfig configuration
*/

#if CONFIG_NET_NBUF_RX_DATA_COUNT <= CONFIG_ETH_SAM_GMAC_NBUF_DATA_COUNT
#error CONFIG_NET_NBUF_RX_DATA_COUNT has to be larger than \
CONFIG_ETH_SAM_GMAC_NBUF_DATA_COUNT
#if CONFIG_NET_NBUF_DATA_SIZE * CONFIG_ETH_SAM_GMAC_NBUF_RX_DATA_COUNT \
< GMAC_FRAME_SIZE_MAX
#error CONFIG_NET_NBUF_DATA_SIZE * CONFIG_ETH_SAM_GMAC_NBUF_RX_DATA_COUNT is \
not large enough to hold a full frame
#endif

#if CONFIG_NET_NBUF_DATA_SIZE * CONFIG_ETH_SAM_GMAC_NBUF_DATA_COUNT \
< GMAC_FRAME_SIZE_MAX
#error CONFIG_NET_NBUF_DATA_SIZE * CONFIG_ETH_SAM_GMAC_NBUF_DATA_COUNT is not \
large enough to hold a full frame
#if CONFIG_NET_NBUF_DATA_SIZE * (CONFIG_NET_NBUF_RX_DATA_COUNT - \
CONFIG_ETH_SAM_GMAC_NBUF_RX_DATA_COUNT) < GMAC_FRAME_SIZE_MAX
#error Remaining free RX data buffers (CONFIG_NET_NBUF_RX_DATA_COUNT -
CONFIG_ETH_SAM_GMAC_NBUF_RX_DATA_COUNT) * CONFIG_NET_NBUF_DATA_SIZE
are not large enough to hold a full frame
#endif

#if CONFIG_NET_NBUF_DATA_SIZE * CONFIG_NET_NBUF_RX_DATA_COUNT \
< 2 * GMAC_FRAME_SIZE_MAX
#error CONFIG_NET_NBUF_DATA_SIZE * CONFIG_NET_NBUF_RX_DATA_COUNT is not large\
enough to hold two full frames
#if CONFIG_NET_NBUF_DATA_SIZE * CONFIG_NET_NBUF_TX_DATA_COUNT \
< GMAC_FRAME_SIZE_MAX
#pragma message "Maximum frame size GMAC driver is able to transmit " \
"CONFIG_NET_NBUF_DATA_SIZE * CONFIG_NET_NBUF_TX_DATA_COUNT is smaller" \
"than a full Ethernet frame"
#endif

#if CONFIG_NET_NBUF_DATA_SIZE & 0x3F
Expand Down Expand Up @@ -225,6 +228,7 @@ static void tx_completed(Gmac *gmac, struct gmac_queue *queue)

tx_desc = &tx_desc_list->buf[tx_desc_list->tail];
MODULO_INC(tx_desc_list->tail, tx_desc_list->len);
k_sem_give(&queue->tx_desc_sem);

if (tx_desc->w1 & GMAC_TXW1_LASTBUFFER) {
/* Release net buffer to the buffer pool */
Expand All @@ -242,19 +246,36 @@ static void tx_completed(Gmac *gmac, struct gmac_queue *queue)
*/
static void tx_error_handler(Gmac *gmac, struct gmac_queue *queue)
{
struct net_buf *buf;
struct ring_buf *tx_frames = &queue->tx_frames;

queue->err_tx_flushed_count++;

/* Stop transmission, clean transmit pipeline and control registers */
gmac->GMAC_NCR &= ~GMAC_NCR_TXEN;

/* Free all nbuf resources in the TX path */
while (tx_frames->tail != tx_frames->head) {
/* Release net buffer to the buffer pool */
buf = UINT_TO_POINTER(tx_frames->buf[tx_frames->tail]);
net_buf_unref(buf);
SYS_LOG_DBG("Dropping buf %p", buf);
MODULO_INC(tx_frames->tail, tx_frames->len);
}

/* Reinitialize TX descriptor list */
k_sem_reset(&queue->tx_desc_sem);
tx_descriptors_init(gmac, queue);
for (int i = 0; i < queue->tx_desc_list.len - 1; i++) {
k_sem_give(&queue->tx_desc_sem);
}

/* Restart transmission */
gmac->GMAC_NCR |= GMAC_NCR_TXEN;
}

/*
* Clean RX queue, any received data stored still in the buffers is abandoned.
* Clean RX queue, any received data still stored in the buffers is abandoned.
*/
static void rx_error_handler(Gmac *gmac, struct gmac_queue *queue)
{
Expand Down Expand Up @@ -379,6 +400,13 @@ static int queue_init(Gmac *gmac, struct gmac_queue *queue)

tx_descriptors_init(gmac, queue);

/* Initialize TX descriptors semaphore. The semaphore is required as the
* size of the TX descriptor list is limited while the number of TX data
* buffers is not.
*/
k_sem_init(&queue->tx_desc_sem, queue->tx_desc_list.len - 1,
queue->tx_desc_list.len - 1);

/* Set Receive Buffer Queue Pointer Register */
gmac->GMAC_RBQB = (uint32_t)queue->rx_desc_list.buf;
/* Set Transmit Buffer Queue Pointer Register */
Expand Down Expand Up @@ -509,7 +537,7 @@ static struct net_buf *frame_get(struct gmac_queue *queue)
DCACHE_INVALIDATE(frag_data, frag_len);

/* Get a new data net buffer from the buffer pool */
new_frag = net_nbuf_get_frag(buf, K_NO_WAIT);
new_frag = net_nbuf_get_frag(rx_frame, K_NO_WAIT);
if (new_frag == NULL) {
queue->err_rx_frames_dropped++;
net_buf_unref(rx_frame);
Expand Down Expand Up @@ -576,6 +604,8 @@ static int eth_tx(struct net_if *iface, struct net_buf *buf)
struct net_buf *frag;
uint8_t *frag_data;
uint16_t frag_len;
uint32_t err_tx_flushed_count_at_entry = queue->err_tx_flushed_count;
unsigned int key;

__ASSERT(buf, "buf pointer is NULL");
__ASSERT(buf->frags, "Frame data missing");
Expand Down Expand Up @@ -605,6 +635,20 @@ static int eth_tx(struct net_if *iface, struct net_buf *buf)
/* Assure cache coherency before DMA read operation */
DCACHE_CLEAN(frag_data, frag_len);

k_sem_take(&queue->tx_desc_sem, K_FOREVER);

/* The following section becomes critical and requires IRQ lock
* / unlock protection only due to the possibility of executing
* tx_error_handler() function.
*/
key = irq_lock();

/* Check if tx_error_handler() function was executed */
if (queue->err_tx_flushed_count != err_tx_flushed_count_at_entry) {
irq_unlock(key);
return -EIO;
}

tx_desc = &tx_desc_list->buf[tx_desc_list->head];

/* Update buffer descriptor address word */
Expand All @@ -626,19 +670,31 @@ static int eth_tx(struct net_if *iface, struct net_buf *buf)
__ASSERT(tx_desc_list->head != tx_desc_list->tail,
"tx_desc_list overflow");

irq_unlock(key);

/* Continue with the rest of fragments (only data) */
frag = frag->frags;
frag_data = frag->data;
frag_len = frag->len;
}

key = irq_lock();

/* Check if tx_error_handler() function was executed */
if (queue->err_tx_flushed_count != err_tx_flushed_count_at_entry) {
irq_unlock(key);
return -EIO;
}

/* Ensure the descriptor following the last one is marked as used */
tx_desc = &tx_desc_list->buf[tx_desc_list->head];
tx_desc->w1 |= GMAC_TXW1_USED;

/* Account for a sent frame */
ring_buf_put(&queue->tx_frames, POINTER_TO_UINT(buf));

irq_unlock(key);

/* Start transmission */
gmac->GMAC_NCR |= GMAC_NCR_TSTART;

Expand Down
6 changes: 3 additions & 3 deletions drivers/ethernet/eth_sam_gmac_priv.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,9 @@
/** Total number of queues supported by GMAC hardware module */
#define GMAC_QUEUE_NO 3
/** RX descriptors count for main queue */
#define MAIN_QUEUE_RX_DESC_COUNT CONFIG_ETH_SAM_GMAC_NBUF_DATA_COUNT
#define MAIN_QUEUE_RX_DESC_COUNT CONFIG_ETH_SAM_GMAC_NBUF_RX_DATA_COUNT
/** TX descriptors count for main queue */
#define MAIN_QUEUE_TX_DESC_COUNT (CONFIG_NET_NBUF_RX_DATA_COUNT - \
CONFIG_ETH_SAM_GMAC_NBUF_DATA_COUNT + 1)
#define MAIN_QUEUE_TX_DESC_COUNT (CONFIG_NET_NBUF_TX_DATA_COUNT + 1)
/** RX/TX descriptors count for priority queues */
#define PRIORITY_QUEUE_DESC_COUNT 1

Expand Down Expand Up @@ -151,6 +150,7 @@ struct gmac_desc_list {
struct gmac_queue {
struct gmac_desc_list rx_desc_list;
struct gmac_desc_list tx_desc_list;
struct k_sem tx_desc_sem;

struct ring_buf rx_nbuf_list;
struct ring_buf tx_frames;
Expand Down
37 changes: 37 additions & 0 deletions drivers/ieee802154/Kconfig.cc2520
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,41 @@ config IEEE802154_CC2520_INIT_PRIO
be ready first (and sometime gpio should be the very first as spi
might need it too). And of course it has to start before the net stack.

config IEEE802154_CC2520_RANDOM_MAC
bool "Random MAC address"
default y
help
Generate a random MAC address dynamically.

if ! IEEE802154_CC2520_RANDOM_MAC

config IEEE802154_CC2520_MAC4
hex "MAC Address Byte 4"
default 0
range 0 ff
help
This is the byte 4 of the MAC address.

config IEEE802154_CC2520_MAC5
hex "MAC Address Byte 5"
default 0
range 0 ff
help
This is the byte 5 of the MAC address.

config IEEE802154_CC2520_MAC6
hex "MAC Address Byte 6"
default 0
range 0 ff
help
This is the byte 6 of the MAC address.

config IEEE802154_CC2520_MAC7
hex "MAC Address Byte 7"
default 0
range 0 ff
help
This is the byte 7 of the MAC address.
endif

endif
15 changes: 12 additions & 3 deletions drivers/ieee802154/ieee802154_cc2520.c
Original file line number Diff line number Diff line change
Expand Up @@ -274,15 +274,24 @@ static bool verify_osc_stabilization(struct cc2520_context *cc2520)
static inline uint8_t *get_mac(struct device *dev)
{
struct cc2520_context *cc2520 = dev->driver_data;

#if defined(CONFIG_IEEE802154_CC2520_RANDOM_MAC)
uint32_t *ptr = (uint32_t *)(cc2520->mac_addr + 4);

UNALIGNED_PUT(sys_rand32_get(), ptr);

cc2520->mac_addr[7] = (cc2520->mac_addr[7] & ~0x01) | 0x02;
#else
cc2520->mac_addr[4] = CONFIG_IEEE802154_CC2520_MAC4;
cc2520->mac_addr[5] = CONFIG_IEEE802154_CC2520_MAC5;
cc2520->mac_addr[6] = CONFIG_IEEE802154_CC2520_MAC6;
cc2520->mac_addr[7] = CONFIG_IEEE802154_CC2520_MAC7;
#endif

cc2520->mac_addr[0] = 0x00;
cc2520->mac_addr[1] = 0x12;
cc2520->mac_addr[2] = 0x4b;
cc2520->mac_addr[3] = 0x00;
UNALIGNED_PUT(sys_rand32_get(), ptr);

cc2520->mac_addr[7] = (cc2520->mac_addr[7] & ~0x01) | 0x02;

return cc2520->mac_addr;
}
Expand Down
11 changes: 11 additions & 0 deletions drivers/slip/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,15 @@ config SLIP_TAP
By default TUN is used. In TAP the Ethernet frames
are transferred over SLIP.


config SLIP_MAC_ADDR
string "MAC address for the interface"
default ""
help
Specify a MAC address for the SLIP interface in the form of
six hex 8-bit chars separaed by colons (eg:
aa:33:cc:22:e2:c0). The default is an empty string, which
means the code will make 00:00:5E:00:53:XX, where XX will be
random.

endif
Loading

0 comments on commit cfaf64c

Please sign in to comment.