Boot Linux faster!

Check our new training course

Boot Linux faster!

Check our new training course
and Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
# networking.kconf - Generic networking configuration options

#
# Copyright (c) 2015 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

#
# Networking options
#

menuconfig NETWORKING
	bool
	prompt "Generic networking support"
	select NANO_TIMEOUTS
	select NANO_TIMERS
	select NET_BUF
	default n
	help
	  This option enabled generic networking support.

choice
prompt "IP stack"
depends on NETWORKING
help
	Select what IP stack to use. The legacy stack is
	Contiki based uIP stack.
default NET_UIP
config NET_UIP
	bool "uIP"
	help
	  Choose this if unsure.
endchoice

if NETWORKING && NET_UIP

config IP_BUF_RX_SIZE
	int "Number of IP net buffers to use when receiving data"
	default 1
	help
	Each network buffer will contain one received IPv6 or IPv4 packet.
	Each buffer will occupy 1280 bytes of memory.

config IP_BUF_TX_SIZE
	int "Number of IP net buffers to use when sending data"
	default 2
	help
	Each network buffer will contain one sent IPv6 or IPv4 packet.
	Each buffer will occupy 1280 bytes of memory.

config IP_RX_STACK_SIZE
	int "RX fiber stack size"
	default 1024
	help
	  Set the RX fiber stack size in bytes. The RX fiber is waiting
	  network packets from lower level bearers. It will then run the
	  packet through IP stack which validates the packet and passes
	  it eventually to application.

config IP_TX_STACK_SIZE
	int "TX fiber stack size"
	default 1024
	help
	  Set the TX fiber stack size in bytes. The TX fiber is waiting
	  data from application. It will then validate the data and push
	  it to network driver to be sent out.

config IP_TIMER_STACK_SIZE
	int "Timer fiber stack size"
	default 1536
	help
	  Set the timer fiber stack size in bytes. The timer fiber is
	  responsible for handling re-transmissions and periodic network
	  packet sending like IPv6 router solicitations.

config NET_MAX_CONTEXTS
	int "How many network context to use"
	default 2
	help
	  The network context is similar concept as network socket.
	  It defines a network endpoint and number of context depends
	  on application usage.

config UDP_MAX_CONNECTIONS
	int "How many UDP connections can be used"
	default 2
	help
	  Amount of concurrent UDP connections.

choice
prompt "Internet Protocol version"
depends on NETWORKING
help
	The IP stack can either support IPv6 or IPv4 but
	not both at the same time. The IPv6 support should
	be selected by default as there is limited set of
	network bearers provided that support IPv4.
default NETWORKING_WITH_IPV6
config NETWORKING_WITH_IPV6
	bool "IPv6"
	help
	  Choose this if unsure.
config NETWORKING_WITH_IPV4
	bool "IPv4"
	help
	  Legacy IP.
endchoice

config	NETWORKING_STATISTICS
	bool
	prompt "Enable IP statistics gathering"
	depends on NETWORKING
	default n
	help
	  This is only for debugging the network. Do not activate
	  this in live system! The option uses memory and slows
	  down IP packet processing.

if NETWORKING_WITH_IPV6
config	NETWORKING_IPV6_NO_ND
	bool
	prompt "Disable IPv6 neighbor discovery"
	depends on NETWORKING
	depends on NETWORKING_WITH_IPV6
	default n
	help
	  Normally ND should be enabled but in order to simplify
	  the network setup it can be turned off if using
	  slip and tun device.

config	NETWORKING_MAX_NEIGHBORS
	int "Max number of neighbors"
	depends on NETWORKING
	depends on NETWORKING_WITH_IPV6
	default 4
	help
	  Specifies the maximum number of neighbors that each node will
	  be able to handle.
endif

config	NETWORKING_WITH_TCP
	bool
	prompt "Enable TCP protocol"
	depends on NETWORKING
	default n
	help
	  Enable Transmission and Control Protocol (TCP) support.

config	TCP_MAX_CONNECTIONS
	int "Maximum number of connections"
	depends on NETWORKING_WITH_TCP
	default 2
	help
	  Tweak the TCP maximum segment size. Normally one should
	  not change this but let the IP stack to calculate a best
	  size for it.

config	TCP_DISABLE_ACTIVE_OPEN
	bool
	prompt "Disallow host to initiate connection attempt"
	depends on NETWORKING_WITH_TCP
	default n
	help
	  By default application is allowed to initiate a TCP
	  connection attempt. If the application is only acting
	  as a server, then some memory can be saved by disabling
	  the client role.

config	TCP_MSS
	int
	prompt "TCP maximum segment size"
	depends on NETWORKING_WITH_TCP
	default 0
	help
	  Tweak the TCP maximum segment size. Normally one should
	  not change this but let the IP stack to calculate a best
	  size for it.

config	TCP_RECEIVE_WINDOW
	int
	prompt "TCP receive window size"
	depends on NETWORKING_WITH_TCP
	default 0
	help
	  Tweak the TCP receive window size. Normally one should
	  not change this but let the IP stack to calculate a best
	  size for it.

config	NETWORKING_WITH_RPL
	bool
	prompt "Enable RPL (ripple) IPv6 mesh routing protocol"
	depends on NETWORKING && NETWORKING_WITH_IPV6
	default n
	help
	  Enable RPL (RFC 6550) IPv6 Routing Protocol for
	  Low-Power and Lossy Networks.

config	RPL_STATS
	bool
	prompt "Enable RPL statistics"
	depends on NETWORKING_WITH_RPL
	select NETWORKING_STATISTICS
	default n
	help
	  Enable RPL statistics support.

config	RPL_PROBING
	bool
	prompt "Enable RPL probing"
	depends on NETWORKING_WITH_RPL
	default n
	help
	  Enable RPL probing support. When enabled, probes will be sent
	  periodically to keep parent link estimates up to date.

choice
prompt "Objective function"
depends on NETWORKING_WITH_RPL
help
	The objective function to use. All RPL nodes in a DODAG
	must use the same OF.
	The default is MRHOF, see RFC 6719 for details.
	Other alternative is OF0, see RFC 6552 for details.
default RPL_WITH_MRHOF
config RPL_WITH_MRHOF
	bool "Minimum Rank with Hysteresis, RFC 6719"
	help
	  Choose this (MRHOF) if unsure.
config RPL_WITH_OF0
	bool "OF Zero, RFC 6552"
	help
	  Objective function zero (OF0).
endchoice

config	NETWORKING_WITH_TRICKLE
	bool "Enable Trickle algorithm"
	depends on NETWORKING
	default n
	help
	  Enable Trickle algorithm (RFC 6206) support. This only
	  includes Trickle library but IP stack does not call its
	  functions.

config	NETWORKING_WITH_LOOPBACK
	bool
	prompt "Enable loopback driver"
	depends on NETWORKING
	default n
	help
	  Enable a simple loopback driver that installs
	  IPv6 loopback addresses into routing table and
	  neighbor cache. All packets transmitted are
	  looped back to the receiving fifo/fiber.

config	NETWORK_LOOPBACK_TEST_COUNT
	int "How many packets the loopback test passes"
	depends on NETWORKING_WITH_LOOPBACK
	default 0
	help
	  If set to 0, then the loopback test runs forever.

choice
prompt "Wired networking support"
depends on NETWORKING
default NETWORKING_NO_WIRED
config NETWORKING_NO_WIRED
	bool "No wired network driver"
	help
	  Do not enable any wired network driver. It is still
	  possible to select other types of network drivers if
	  this option is selected.
config	NETWORKING_UART
	bool "Network UART/slip driver"
	select UART_PIPE
	help
	  Enable UART driver for passing IPv6 packets using slip.
config ETHERNET
	bool "Ethernet drivers"
	help
	  Include Ethernet drivers in system config. This
	  option enables Ethernet support in the core network
	  subsystem, but it is necessary to also select a
	  specific Ethernet device driver.
endchoice

config	NETWORKING_DEBUG_UART
	bool
	prompt "Network UART driver debug"
	depends on NETWORKING_UART && NETWORKING_WITH_LOGGING
	default n
	help
	  This option enables debug support for network UART
	  driver.

config	ETHERNET_DEBUG
	bool
	prompt "Network Ethernet driver debug"
	depends on NETWORKING_WITH_LOGGING && ETHERNET
	default n
	help
	  This option enables debug support for Ethernet drivers.

config	L2_BUFFERS
	bool
	default n

config	NETWORKING_WITH_15_4
	bool
	prompt "Enable 802.15.4 driver"
	depends on NETWORKING && NETWORKING_WITH_IPV6
	select L2_BUFFERS
	default n
	help
	  Enable 802.15.4 driver that receives the IPv6 packet,
	  does header compression on it and writes it to the
	  802.15.4 stack Tx FIFO. The 802.15.4 Tx fiber will pick up
	  the header compressed IPv6 6lowpan packet and fragment
	  it into suitable chunks ready to be sent to the 802.15.4
	  hw driver

config NETWORKING_WITH_15_4_ALWAYS_ACK
	bool
	prompt "Always request 802.15.4 packet acknowledgment"
	depends on NETWORKING_WITH_15_4
	default n
	help
	  This is meant to be used for testing only. Requesting an
	  acknowledgment on all data packet will draw power resource.
	  Use case for this option it for testing only.

# Using nullmac 802.15.4 driver only.
config	NETWORKING_WITH_15_4_MAC_NULL
	bool
	default n

choice
	prompt "802.15.4 RDC Driver"
	depends on NETWORKING && NETWORKING_WITH_15_4
	help
	 The 802.15.4 RDC (Radio Duty Cycle) layer can use either
	 sicslowmac or simplerdc.
config	NETWORKING_WITH_15_4_RDC_SIMPLE
	bool
	prompt "simplerdc driver"
	help
	  Enable simplerdc driver.
config	NETWORKING_WITH_15_4_RDC_SICSLOWMAC
	bool
	prompt "sicslowmac driver"
	help
	  Enable sicslowmac driver.
endchoice

config	15_4_RX_STACK_SIZE
	int "Stack size of 802.15.4 RX fiber"
	depends on NETWORKING_WITH_15_4
	default 1024
	help
	  Set the 802.15.4 RX fiber stack size in bytes. The RX fiber
	  is waiting network packets from 802.15.4 device driver.
	  It will then run the packet through 6LoWPAN stack which
	  uncompresses and de-fragments the packet and passes those to
	  upper layers.

config	15_4_TX_STACK_SIZE
	int "Stack size of 802.15.4 TX fiber"
	depends on NETWORKING_WITH_15_4
	default 4096
	help
	  Set the 802.15.4 TX fiber stack size in bytes. The TX fiber
	  is waiting network packets from IP stack. It then feeds those
	  to 6LoWPAN stack which compresses and fragments packets before
	  passing the fragments to 802.15.4 device driver. Note that
	  this stack needs to be bigger that TX stack because stack is
	  used to store the fragmented 802.15.4 packets.

config	15_4_BEACON_SUPPORT
	bool
	prompt "Enable 802.15.4 beacon support"
	depends on NETWORKING_WITH_15_4
	default n
	help
	  Enable 802.15.4 beacon support

config	15_4_BEACON_STATS
	bool
	prompt "Enable 802.15.4 beacon statistics"
	depends on NETWORKING_WITH_15_4
	depends on 15_4_BEACON_SUPPORT
	select NETWORKING_STATISTICS
	default n
	help
	  Enable 802.15.4 beacon statistics support.

config NETWORKING_WITH_15_4_PAN_ID
	hex
	prompt "IEEE 802.15.4 PAN id/address"
	depends on NETWORKING_WITH_15_4
	default 0xabcd
	help
	 All the 802.15.4 devices that want to connect to each
	 other need to have same PAN id (address).
	 Default PAN id is 0xABCD

choice
prompt "802.15.4 Radio Driver"
depends on NETWORKING && NETWORKING_WITH_15_4
default n
help
	The 802.15.4 layer can either support loopback within
	or loopback with uart but not both at the same time.

config	NETWORKING_WITH_15_4_TI_CC2520
	bool
	prompt "TI CC2520"
	select TEST_RANDOM_GENERATOR
	help
	  Enable Texas Instruments CC2520 802.15.4 radio driver.

config	NETWORKING_WITH_15_4_LOOPBACK
	bool
	prompt "Loopback"
	help
	  Enable 802.15.4 loopback radio driver that receives
	  the 802.15.4 frame and put it back 802.15.4 Rx Fifo.

config NETWORKING_WITH_15_4_LOOPBACK_UART
	bool
	prompt "Loopback with UART"
	select UART_PIPE
	help
	 Enable 802.15.4 loopback radio driver that sends
	 802.15.4 frames out of qemu through uart and receive
	 frames through uart. This way one can test 802.15.4 frames
	 between two qemus
endchoice

config	NETWORKING_WITH_BT
	bool
	prompt "Enable Bluetooth driver"
	depends on NETWORKING && NETWORKING_WITH_IPV6
	select L2_BUFFERS
	select NETWORKING_IPV6_NO_ND
	select NETWORKING_WITH_6LOWPAN
	select 6LOWPAN_COMPRESSION_IPHC
	select BLUETOOTH
	select BLUETOOTH_PERIPHERAL
	select BLUETOOTH_L2CAP_DYNAMIC_CHANNEL
	select BLUETOOTH_SMP
	default n
	help
	  Enable Bluetooth driver that send and receives IPv6 packets,
	  does header compression on it and writes it to the
	  Bluetooth stack via L2CAP channel.

config	NETWORKING_WITH_6LOWPAN
	bool
	prompt "Enable 6LoWPAN (IPv6 compression) in the uIP stack"
	depends on NETWORKING
	depends on NETWORKING_WITH_15_4 || NETWORKING_WITH_BT
	default n
	help
	  Enable 6LoWPAN in uIP stack. Currently this requires 802.15.4
	  stack to be enabled.

choice
prompt "6LoWPAN compression method"
depends on NETWORKING_WITH_6LOWPAN
help
	Select the compression method that is used in 6LoWPAN.
default 6LOWPAN_COMPRESSION_IPV6
config 6LOWPAN_COMPRESSION_IPV6
	bool "No compression"
	help
	  Choose this if unsure.
config 6LOWPAN_COMPRESSION_IPHC
	bool "IP header compression"
	help
	  IP header compression
endchoice

config	TINYDTLS
	bool
	prompt "Enable tinyDTLS support."
	depends on NETWORKING
	default n
	help
	  Enable tinyDTLS support so that applications can use it.
	  This is needed at least in CoAP.

config	TINYDTLS_DEBUG
	bool
	prompt "Enable tinyDTLS debugging support."
	depends on TINYDTLS
	default n
	help
	  Enable tinyDTLS debugging support.

config	ER_COAP
	bool
	prompt "Enable Erbium CoAP engine support."
	depends on NETWORKING
	default n
	help
	  Enable Erbium CoAP engine support so that applications can use it.

config	ER_COAP_WITH_DTLS
	bool
	prompt "Use DTLS in CoAP"
	depends on ER_COAP
	select TINYDTLS
	default n
	help
	  Make CoAP engine use DTLS. Note that if you activate DTLS, you
	  are not able to send or receive non-DTLS CoAP messages, and
	  vice versa.

config  ER_COAP_LINK_FORMAT_FILTERING
	bool "Enable link format filtering"
	select MINIMAL_LIBC_EXTENDED
	default n
	help
	  Make CoAP engine support link format filters.

config	COAP_STATS
	bool
	prompt "Enable CoAP statistics"
	depends on ER_COAP
	select NETWORKING_STATISTICS
	default n
	help
	  Enable CoAP statistics support.

config	ER_COAP_CLIENT
	bool
	prompt "Enable CoAP client support"
	depends on ER_COAP
	default n
	help
	  Compile in client CoAP support.

config	DHCP
	bool
	prompt "Enable DHCP support."
	depends on NETWORKING && NETWORKING_WITH_IPV4
	default n
	help
	  Enable DHCP support so that applications can use it.
choice
prompt "DHCP message type"
depends on DHCP
help
	Select the DHCP message type broadcast or unicast.
default DHCP_BROADCAST
config DHCP_BROADCAST
	bool "Broadcast message"
	help
	  Choose this if unsure.
config DHCP_UNICAST
	bool "Unicast message"
	help
	  DHCP message type
endchoice

config NET_SANITY_TEST
	bool
	prompt "Enable networking sanity test"
	depends on NETWORKING
	default n
	help
	 Enable networking sanity tests. Network sanity test
	 verification and test report submission will fall under
	 this config.

config NET_15_4_LOOPBACK_NUM
	int
	prompt "Number of times loopback test runs"
	depends on (NETWORKING_WITH_15_4_LOOPBACK || NETWORKING_WITH_15_4_LOOPBACK_UART) && NET_SANITY_TEST
	default 0
	help
	 Number of times loopback test runs, 0 means infinite.

config	NET_TESTING
	bool
	prompt "Enable network testing setup"
	depends on NETWORKING
	default n
	help
	  Setup the network stack such a way that it is suitable for
	  testing with Qemu and slip.

endif

if NETWORKING

source "net/ip/Kconfig.debug"

endif