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
# 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.

if NETWORKING

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.

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

source "net/ip/Kconfig.debug"

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.
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_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	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_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.

choice
	prompt "802.15.4 MAC Driver"
	depends on NETWORKING && NETWORKING_WITH_15_4
	help
	 The 802.15.4 layer can support nullmac or csma.
config	NETWORKING_WITH_15_4_MAC_NULL
	bool
	prompt "nullmac driver"
	help
	  Enable nullmac driver. All packets go straight through.

config	NETWORKING_WITH_15_4_MAC_CSMA
	bool
	prompt "csma driver"
	help
	  Enable csma driver. Will queue packets and retry transmissions.

endchoice

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
	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	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 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