-
Notifications
You must be signed in to change notification settings - Fork 580
/
Kconfig
998 lines (868 loc) · 32.5 KB
/
Kconfig
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
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
# IP stack config
# Copyright (c) 2016 Intel Corporation.
# Copyright (c) 2021 Nordic Semiconductor
# Copyright (c) 2023 Arm Limited (or its affiliates). All rights reserved.
# SPDX-License-Identifier: Apache-2.0
menu "IP stack"
# Hidden option enabled whenever an IP stack is available.
config NET_IP
bool
default y if NET_IPV6 || NET_IPV4
# Hidden option selected by net connection based socket implementations
# to draw in all code required for connection infrastructure.
config NET_CONNECTION_SOCKETS
bool
config NET_NATIVE
bool "Native network stack support"
default y
help
Enables Zephyr native IP stack. If you disable this, then
you need to enable the offloading support if you want to
have IP connectivity.
# Hidden options for enabling native IPv6/IPv4. Using these options
# avoids having "defined(CONFIG_NET_IPV6) && defined(CONFIG_NET_NATIVE)"
# in the code as we can have "defined(CONFIG_NET_NATIVE_IPV6)" instead.
config NET_NATIVE_IPV6
bool
depends on NET_NATIVE
default y if NET_IPV6
config NET_NATIVE_IPV4
bool
depends on NET_NATIVE
default y if NET_IPV4
config NET_NATIVE_TCP
bool
depends on NET_NATIVE
default y if NET_TCP
config NET_NATIVE_UDP
bool
depends on NET_NATIVE
default y if NET_UDP
config NET_OFFLOAD
bool "Offload IP stack"
help
Enables TCP/IP stack to be offload to a co-processor.
if NET_OFFLOAD
module = NET_OFFLOAD
module-dep = NET_LOG
module-str = Log level for offload layer
module-help = Enables offload layer to output debug messages.
source "subsys/net/Kconfig.template.log_config.net"
endif # NET_OFFLOAD
config NET_RAW_MODE
bool
help
This is a very specific option used to built only the very minimal
part of the net stack in order to get network drivers working without
any net stack above: core, L2 etc... Basically this will build only
net_pkt part. It is currently used only by IEEE 802.15.4 drivers,
though any type of net drivers could use it.
if !NET_RAW_MODE
choice NET_QEMU_NETWORKING
prompt "Qemu networking"
default NET_QEMU_PPP if NET_PPP
default NET_QEMU_SLIP
depends on QEMU_TARGET
help
Can be used to select how the network connectivity is established
from inside qemu to host system. This can be done either via
serial connection (SLIP) or via Qemu ethernet driver.
config NET_QEMU_SLIP
bool "SLIP"
help
Connect to host or to another Qemu via SLIP.
config NET_QEMU_PPP
bool "PPP"
help
Connect to host via PPP.
config NET_QEMU_ETHERNET
bool "Ethernet"
help
Connect to host system via Qemu ethernet driver support. One such
driver that Zephyr supports is Intel e1000 ethernet driver.
config NET_QEMU_USER
bool "SLIRP"
help
Connect to host system via Qemu's built-in User Networking support. This
is implemented using "slirp", which provides a full TCP/IP stack within
QEMU and uses that stack to implement a virtual NAT'd network.
endchoice
config NET_QEMU_USER_EXTRA_ARGS
string "Qemu User Networking Args"
depends on NET_QEMU_USER
default ""
help
Extra arguments passed to QEMU when User Networking is enabled. This may
include host / guest port forwarding, device id, Network address
information etc. This string is appended to the QEMU "-net user" option.
config NET_INIT_PRIO
int
default 90
help
Network initialization priority level. This number tells how
early in the boot the network stack is initialized.
config NET_IP_DSCP_ECN
bool "DSCP/ECN processing at IP layer"
depends on NET_IP
default y
help
Specify whether DSCP/ECN values are processed at IP layer. The values
are encoded within ToS field in IPv4 and TC field in IPv6.
source "subsys/net/ip/Kconfig.ipv6"
source "subsys/net/ip/Kconfig.ipv4"
config NET_SHELL
bool "Network shell utilities"
select SHELL
help
Activate shell module that provides network commands like
ping to the console.
config NET_SHELL_DYN_CMD_COMPLETION
bool "Network shell dynamic command completion"
depends on NET_SHELL
default y
help
Enable various net-shell command to support dynamic command
completion. This means that for example the nbr command can
automatically complete the neighboring IPv6 address and user
does not need to type it manually.
Please note that this uses more memory in order to save the
dynamic command strings. For example for nbr command the
increase is 320 bytes (8 neighbors * 40 bytes for IPv6 address
length) by default. Other dynamic completion commands in
net-shell require also some smaller amount of memory.
config NET_TC_TX_COUNT
int "How many Tx traffic classes to have for each network device"
default 1 if USERSPACE || USB_DEVICE_NETWORK
default 0
range 1 NET_TC_NUM_PRIORITIES if NET_TC_NUM_PRIORITIES<=8 && USERSPACE
range 0 NET_TC_NUM_PRIORITIES if NET_TC_NUM_PRIORITIES<=8
range 1 8 if USERSPACE
range 0 8
help
Define how many Tx traffic classes (queues) the system should have
when sending a network packet. The network packet priority can then
be mapped to this traffic class so that higher prioritized packets
can be processed before lower prioritized ones. Each queue is handled
by a separate thread which will need RAM for stack space.
Only increase the value from 1 if you really need this feature.
The default value is 1 which means that all the network traffic is
handled equally. In this implementation, the higher traffic class
value corresponds to lower thread priority.
If you select 0 here, then it means that all the network traffic
is pushed to the driver directly without any queues.
Note that if USERSPACE support is enabled, then currently we need to
enable at least 1 TX thread.
config NET_TC_RX_COUNT
int "How many Rx traffic classes to have for each network device"
default 1
range 1 NET_TC_NUM_PRIORITIES if NET_TC_NUM_PRIORITIES<=8 && USERSPACE
range 0 NET_TC_NUM_PRIORITIES if NET_TC_NUM_PRIORITIES<=8
range 1 8 if USERSPACE
range 0 8
help
Define how many Rx traffic classes (queues) the system should have
when receiving a network packet. The network packet priority can then
be mapped to this traffic class so that higher prioritized packets
can be processed before lower prioritized ones. Each queue is handled
by a separate thread which will need RAM for stack space.
Only increase the value from 1 if you really need this feature.
The default value is 1 which means that all the network traffic is
handled equally. In this implementation, the higher traffic class
value corresponds to lower thread priority.
If you select 0 here, then it means that all the network traffic
is pushed from the driver to application thread without any
intermediate RX queue. There is always a receive socket queue between
device driver and application. Disabling RX thread means that the
network device driver, that is typically running in IRQ context, will
handle the packet all the way to the application. This might cause
other incoming packets to be lost if the RX processing takes long
time.
Note that if USERSPACE support is enabled, then currently we need to
enable at least 1 RX thread.
config NET_TC_SKIP_FOR_HIGH_PRIO
bool "Push high priority packets directly to network driver"
help
If this is set, then high priority (NET_PRIORITY_CA) net_pkt will be
pushed directly to network driver and will skip the traffic class
queues. This is currently not enabled by default.
choice NET_TC_THREAD_TYPE
prompt "How the network RX/TX threads should work"
help
Please select the RX/TX threads to be either pre-emptive or
co-operative.
config NET_TC_THREAD_COOPERATIVE
bool "Use co-operative TX/RX threads"
depends on COOP_ENABLED
help
With co-operative threads, the thread cannot be pre-empted.
config NET_TC_THREAD_PREEMPTIVE
bool "Use pre-emptive TX/RX threads [EXPERIMENTAL]"
depends on PREEMPT_ENABLED
select EXPERIMENTAL
help
With pre-emptive threads, the thread can be pre-empted.
endchoice
config NET_TC_NUM_PRIORITIES
int
default NUM_COOP_PRIORITIES if NET_TC_THREAD_COOPERATIVE
default NUM_PREEMPT_PRIORITIES if NET_TC_THREAD_PREEMPTIVE
choice
prompt "Priority to traffic class mapping"
help
Select mapping to use to map network packet priorities to traffic
classes.
config NET_TC_MAPPING_STRICT
bool "Strict priority mapping"
help
This is the recommended default priority to traffic class mapping.
Use it for implementations that do not support the credit-based
shaper transmission selection algorithm.
See 802.1Q, chapter 8.6.6 for more information.
config NET_TC_MAPPING_SR_CLASS_A_AND_B
bool "SR class A and class B mapping"
depends on NET_TC_TX_COUNT >= 2
depends on NET_TC_RX_COUNT >= 2
help
This is the recommended priority to traffic class mapping for a
system that supports SR (Stream Reservation) class A and SR class B.
See 802.1Q, chapter 34.5 for more information.
config NET_TC_MAPPING_SR_CLASS_B_ONLY
bool "SR class B only mapping"
depends on NET_TC_TX_COUNT >= 2
depends on NET_TC_RX_COUNT >= 2
help
This is the recommended priority to traffic class mapping for a
system that supports SR (Stream Reservation) class B only.
See 802.1Q, chapter 34.5 for more information.
endchoice
config NET_TX_DEFAULT_PRIORITY
int "Default network TX packet priority if none have been set"
default 1
range 0 7
help
What is the default network packet priority if user has not specified
one. The value 0 means lowest priority and 7 is the highest.
config NET_RX_DEFAULT_PRIORITY
int "Default network RX packet priority if none have been set"
default 0
range 0 7
help
What is the default network RX packet priority if user has not set
one. The value 0 means lowest priority and 7 is the highest.
config NET_ALLOW_ANY_PRIORITY
bool "Allow any network packet priority to be used"
help
If this is set, then any user given network packet priority can be used. Otherwise
the network packet priorities are limited to 0-7 range.
config NET_IP_ADDR_CHECK
bool "Check IP address validity before sending IP packet"
default y
help
Check that either the source or destination address is
correct before sending either IPv4 or IPv6 network packet.
config NET_MAX_ROUTERS
int "How many routers are supported"
default 2 if NET_IPV4 && NET_IPV6
default 1 if NET_IPV4 && !NET_IPV6
default 1 if !NET_IPV4 && NET_IPV6
range 1 254
help
The value depends on your network needs.
# Normally the route support is enabled by RPL or similar technology
# that needs to use the routing infrastructure.
config NET_ROUTE
bool
depends on NET_IPV6_NBR_CACHE
default y if NET_IPV6_NBR_CACHE
# Temporarily hide the routing option as we do not have RPL in the system
# that used to populate the routing table.
config NET_ROUTING
bool
depends on NET_ROUTE
help
Allow IPv6 routing between different network interfaces and
technologies. Currently this has limited use as some entity
would need to populate the routing table. RPL used to do that
earlier but currently there is no RPL support in Zephyr.
config NET_MAX_ROUTES
int "Max number of routing entries stored."
default NET_IPV6_MAX_NEIGHBORS
depends on NET_ROUTE
help
This determines how many entries can be stored in routing table.
config NET_MAX_NEXTHOPS
int "Max number of next hop entries stored."
default NET_MAX_ROUTES
depends on NET_ROUTE
help
This determines how many entries can be stored in nexthop table.
config NET_ROUTE_MCAST
bool "Multicast Routing / Forwarding"
depends on NET_ROUTE
help
Activates multicast routing/forwarding
config NET_MAX_MCAST_ROUTES
int "Max number of multicast routing entries stored."
default 1
depends on NET_ROUTE_MCAST
help
This determines how many entries can be stored in multicast
routing table.
config NET_TCP
bool "TCP"
depends on NET_IP
help
The value depends on your network needs.
config NET_TCP_CHECKSUM
bool "Check TCP checksum"
default y
depends on NET_TCP
help
Enables TCP handler to check TCP checksum. If the checksum is invalid,
then the packet is discarded.
if NET_TCP
module = NET_TCP
module-dep = NET_LOG
module-str = Log level for TCP
module-help = Enables TCP handler output debug messages
source "subsys/net/Kconfig.template.log_config.net"
endif # NET_TCP
config NET_TCP_TIME_WAIT_DELAY
int "How long to wait in TIME_WAIT state (in milliseconds)"
depends on NET_TCP
default 1500
help
To avoid a (low-probability) issue when delayed packets from
previous connection get delivered to next connection reusing
the same local/remote ports, RFC 793 (TCP) suggests to keep
an old, closed connection in a special "TIME_WAIT" state for
the duration of 2*MSL (Maximum Segment Lifetime). The RFC
suggests to use MSL of 2 minutes, but notes "This is an
engineering choice, and may be changed if experience indicates
it is desirable to do so." For low-resource systems, having
large MSL may lead to quick resource exhaustion (and related
DoS attacks). At the same time, the issue of packet misdelivery
is largely alleviated in the modern TCP stacks by using random,
non-repeating port numbers and initial sequence numbers. Due
to this, Zephyr uses much lower value of 1500ms by default.
Value of 0 disables TIME_WAIT state completely.
config NET_TCP_ACK_TIMEOUT
int "How long to wait for ACK (in milliseconds)"
depends on NET_TCP
default 1000
range 1 2147483647
help
This value affects the timeout when waiting ACK to arrive in
various TCP states. The value is in milliseconds. Note that
having a very low value here could prevent connectivity.
config NET_TCP_INIT_RETRANSMISSION_TIMEOUT
int "Initial value of Retransmission Timeout (RTO) (in milliseconds)"
depends on NET_TCP
default 200
range 100 60000
help
This value affects the timeout between initial retransmission
of TCP data packets. The value is in milliseconds.
config NET_TCP_RETRY_COUNT
int "Maximum number of TCP segment retransmissions"
depends on NET_TCP
default 9
help
The following formula can be used to determine the time (in ms)
that a segment will be be buffered awaiting retransmission:
n=NET_TCP_RETRY_COUNT
Sum((1<<n) * NET_TCP_INIT_RETRANSMISSION_TIMEOUT)
n=0
With the default value of 9, the IP stack will try to
retransmit for up to 1:42 minutes. This is as close as possible
to the minimum value recommended by RFC1122 (1:40 minutes).
Only 5 bits are dedicated for the retransmission count, so accepted
values are in the 0-31 range. It's highly recommended to not go
below 9, though.
Should a retransmission timeout occur, the receive callback is
called with -ECONNRESET error code and the context is dereferenced.
config NET_TCP_RANDOMIZED_RTO
bool "Use a randomized retransmission time"
default y
depends on NET_TCP
help
It can happen that two similar stacks enter a retransmission cycle
due to a packet collision. If the transmission timeout is the same
both stacks will retry at the same moment resulting in another
collision. By introducing a randomized retry timeout, the chance of
a second collision is reduced and it reduces furter the more
retransmissions occur.
config NET_TCP_FAST_RETRANSMIT
bool "Fast-retry algorithm based on the number of duplicated ACKs"
depends on NET_TCP
default y
help
When a packet is lost, the receiver will keep acknowledging the
sequence number of the last correctly received byte. Upon reception
of a sequence of acknowledgements for the same sequence number,
this can be deduced as that the packet afterwards must have been lost.
In that case a retransmission is triggerd to avoid having to wait for
the retransmit timer to elapse.
config NET_TCP_CONGESTION_AVOIDANCE
bool "Implement a congestion avoidance algorithm in TCP"
depends on NET_TCP
default y
help
To avoid overstressing a link reduce the transmission rate as soon as
packets are starting to drop.
config NET_TCP_MAX_SEND_WINDOW_SIZE
int "Maximum sending window size to use"
depends on NET_TCP
default 0
range 0 65535
help
This value affects how the TCP selects the maximum sending window
size. The default value 0 lets the TCP stack select the value
according to amount of network buffers configured in the system.
config NET_TCP_MAX_RECV_WINDOW_SIZE
int "Maximum receive window size to use"
depends on NET_TCP
default 0
range 0 65535
help
This value defines the maximum TCP receive window size. Increasing
this value can improve connection throughput, but requires more
receive buffers available in the system for efficient operation.
The default value 0 lets the TCP stack select the value
according to amount of network buffers configured in the system.
config NET_TCP_RECV_QUEUE_TIMEOUT
int "How long to queue received data (in ms)"
depends on NET_TCP
default 2000
range 0 10000
help
If we receive out-of-order TCP data, we queue it. This value tells
how long the data is kept before it is discarded if we have not been
able to pass the data to the application. If set to 0, then receive
queueing is not enabled. The value is in milliseconds.
Note that we only queue data sequentially in current version i.e.,
there should be no holes in the queue. For example, if we receive
SEQs 5,4,3,6 and are waiting SEQ 2, the data in segments 3,4,5,6 is
queued (in this order), and then given to application when we receive
SEQ 2. But if we receive SEQs 5,4,3,7 then the SEQ 7 is discarded
because the list would not be sequential as number 6 is be missing.
config NET_TCP_PKT_ALLOC_TIMEOUT
int "How long to wait for a TCP packet allocation (in ms)"
depends on NET_TCP
default 100
range 10 1000
help
The TCP network stack allocates packets from the buffers and the
allocation can take some time depending on the situation.
This value indicates how long the stack should wait for the packet to
be allocated, before returning an internal error and trying again.
config NET_TCP_WORKQ_STACK_SIZE
int "TCP work queue thread stack size"
default 1200 if X86
default 1024
depends on NET_TCP
help
Set the TCP work queue thread stack size in bytes.
config NET_TCP_ISN_RFC6528
bool "Use ISN algorithm from RFC 6528"
default y
depends on NET_TCP
select MBEDTLS
select MBEDTLS_MD
select MBEDTLS_MAC_MD5_ENABLED
help
Implement Initial Sequence Number calculation as described in
RFC 6528 chapter 3. https://tools.ietf.org/html/rfc6528
If this is not set, then sys_rand32_get() is used for ISN value.
config NET_TCP_WORKER_PRIO
int "Priority of the TCP work queue"
default 2
depends on NET_TCP
help
Set the priority of the the TCP worker queue, that handles all
transmission and maintenance within the TCP stack.
Value 0 = highest priortity.
When CONFIG_NET_TC_THREAD_COOPERATIVE = y, lowest priority is
CONFIG_NUM_COOP_PRIORITIES-1 else lowest priority is
CONFIG_NUM_PREEMPT_PRIORITIES-1.
Make sure the priority is lower than lower layer TX threads to
avoid the TCP stack consume all net_bufs before transferring
execution to the lower layer network stack, with a high risk of
running out of net_bufs.
config NET_TEST_PROTOCOL
bool "JSON based test protocol (UDP)"
help
Enable JSON based test protocol (UDP).
config NET_UDP
bool "UDP"
default y
depends on NET_IP
help
The value depends on your network needs.
config NET_UDP_CHECKSUM
bool "Check UDP checksum"
default y
depends on NET_UDP
help
Enables UDP handler to check UDP checksum. If the checksum is invalid,
then the packet is discarded.
config NET_UDP_MISSING_CHECKSUM
bool "Accept missing checksum (IPv4 only)"
default y
depends on NET_UDP && NET_IPV4
help
RFC 768 states the possibility to have a missing checksum, for
debugging purposes for instance. That feature is however valid only
for IPv4 and on reception only, since Zephyr will always compute the
UDP checksum in transmission path.
if NET_UDP
module = NET_UDP
module-dep = NET_LOG
module-str = Log level for UDP
module-help = Enables UDP handler output debug messages
source "subsys/net/Kconfig.template.log_config.net"
endif # NET_UDP
config NET_MAX_CONN
int "How many network connections are supported"
depends on NET_UDP || NET_TCP || NET_SOCKETS_PACKET || NET_SOCKETS_CAN
default 8 if NET_IPV6 && NET_IPV4
default 4
help
The value depends on your network needs. The value
should include both UDP and TCP connections.
config NET_MAX_CONTEXTS
int "Number of network contexts to allocate"
default 6
help
Each network context is used to describe a network 5-tuple that
is used when listening or sending network traffic. This is very
similar as one could call a network socket in some other systems.
config NET_CONTEXT_NET_PKT_POOL
bool "Net_buf TX pool / context"
default y if NET_TCP && NET_6LO
help
If enabled, then it is possible to fine-tune network packet pool
for each context when sending network data. If this setting is
enabled, then you should define the context pools in your application
using NET_PKT_TX_POOL_DEFINE() and NET_PKT_DATA_POOL_DEFINE()
macros and tie these pools to desired context using the
net_context_setup_pools() function.
config NET_CONTEXT_SYNC_RECV
bool "Support synchronous functionality in net_context_recv() API"
default y
help
You can disable sync support to save some memory if you are calling
net_context_recv() in async way only when timeout is set to 0.
config NET_CONTEXT_CHECK
bool "Check options when calling various net_context functions"
default y
help
If you know that the options passed to net_context...() functions
are ok, then you can disable the checks to save some memory.
config NET_CONTEXT_PRIORITY
bool "Add priority support to net_context"
help
It is possible to prioritize network traffic. This requires
also traffic class support to work as expected.
config NET_CONTEXT_TXTIME
bool "Add TXTIME support to net_context"
select NET_PKT_TXTIME
help
It is possible to add information when the outgoing network packet
should be sent. The TX time information should be placed into
ancillary data field in sendmsg call.
config NET_CONTEXT_RCVTIMEO
bool "Add RCVTIMEO support to net_context"
help
It is possible to time out receiving a network packet. The timeout
time is configurable run-time in the application code. For network
sockets timeout is configured per socket with
setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, ...) function.
config NET_CONTEXT_SNDTIMEO
bool "Add SNDTIMEO support to net_context"
help
It is possible to time out sending a network packet. The timeout
time is configurable run-time in the application code. For network
sockets timeout is configured per socket with
setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, ...) function.
config NET_CONTEXT_RCVBUF
bool "Add RCVBUF support to net_context"
help
If is possible to define the maximum socket receive buffer per socket.
The default value is set by CONFIG_NET_TCP_MAX_RECV_WINDOW_SIZE. For
TCP sockets, the rcvbuf will determine the receive window size.
config NET_CONTEXT_SNDBUF
bool "Add SNDBUF support to net_context"
help
It is possible to define the maximum socket send buffer per socket.
For TCP sockets, the sndbuf will determine the total size of queued
data in the TCP layer.
config NET_CONTEXT_DSCP_ECN
bool "Add support for setting DSCP/ECN IP properties on net_context"
depends on NET_IP_DSCP_ECN
default y
help
Allow to set Differentiated Services and Explicit Congestion
Notification values on net_context. Those values are then used in
IPv4/IPv6 header when sending packets over net_context.
config NET_TEST
bool "Network Testing"
help
Used for self-contained networking tests that do not require a
network device.
config NET_SLIP_TAP
bool "TAP SLIP driver"
depends on NET_QEMU_SLIP
depends on NET_NATIVE
select SLIP
select UART_PIPE
select UART_INTERRUPT_DRIVEN
select SLIP_TAP
default y if (QEMU_TARGET && !NET_TEST && !NET_L2_BT)
help
SLIP TAP support is necessary when testing with QEMU. The host
needs to have tunslip6 with TAP support running in order to
communicate via the SLIP driver. See net-tools project at
https://github.com/zephyrproject-rtos/net-tools for more details.
config NET_TRICKLE
bool "Trickle library"
help
Normally this is enabled automatically if needed,
so say 'n' if unsure.
if NET_TRICKLE
module = NET_TRICKLE
module-dep = NET_LOG
module-str = Log level for Trickle algorithm
module-help = Enables Trickle library output debug messages
source "subsys/net/Kconfig.template.log_config.net"
endif # NET_TRICKLE
endif # NET_RAW_MODE
config NET_PKT_RX_COUNT
int "How many packet receives can be pending at the same time"
default 14 if NET_L2_ETHERNET
default 4
help
Each RX buffer will occupy smallish amount of memory.
See include/net/net_pkt.h and the sizeof(struct net_pkt)
config NET_PKT_TX_COUNT
int "How many packet sends can be pending at the same time"
default 14 if NET_L2_ETHERNET
default 4
help
Each TX buffer will occupy smallish amount of memory.
See include/net/net_pkt.h and the sizeof(struct net_pkt)
config NET_BUF_RX_COUNT
int "How many network buffers are allocated for receiving data"
default 36 if NET_L2_ETHERNET
default 16
help
Each data buffer will occupy CONFIG_NET_BUF_DATA_SIZE + smallish
header (sizeof(struct net_buf)) amount of data.
config NET_BUF_TX_COUNT
int "How many network buffers are allocated for sending data"
default 36 if NET_L2_ETHERNET
default 16
help
Each data buffer will occupy CONFIG_NET_BUF_DATA_SIZE + smallish
header (sizeof(struct net_buf)) amount of data.
choice
prompt "Network packet data allocator type"
default NET_BUF_FIXED_DATA_SIZE
help
Select the memory allocator for the network buffers that hold the
packet data.
config NET_BUF_FIXED_DATA_SIZE
bool "Fixed data size buffer"
help
Each buffer comes with a built time configured size. If runtime
requested is bigger than that, it will allocate as many net_buf
as necessary to reach that request.
config NET_BUF_VARIABLE_DATA_SIZE
bool "Variable data size buffer [EXPERIMENTAL]"
select EXPERIMENTAL
help
The buffer is dynamically allocated from runtime requested size.
endchoice
config NET_BUF_DATA_SIZE
int "Size of each network data fragment"
default 128
depends on NET_BUF_FIXED_DATA_SIZE
help
This value tells what is the fixed size of each network buffer.
config NET_BUF_DATA_POOL_SIZE
int "Size of the memory pool where buffers are allocated from"
default 4096 if NET_L2_ETHERNET
default 2048
depends on NET_BUF_VARIABLE_DATA_SIZE
help
This value tell what is the size of the memory pool where each
network buffer is allocated from.
config NET_PKT_BUF_USER_DATA_SIZE
int "Size of user_data available in rx and tx network buffers"
default BT_CONN_TX_USER_DATA_SIZE if NET_L2_BT
default 4
range BT_CONN_TX_USER_DATA_SIZE 16 if NET_L2_BT
range 4 16
help
User data size used in rx and tx network buffers.
config NET_HEADERS_ALWAYS_CONTIGUOUS
bool
help
This a hidden option, which one should use with a lot of care.
NO bug reports will be accepted if that option is enabled!
You are warned.
If you are 100% sure the headers memory space is always in a
contiguous space, this will save stack usage and ROM in net core.
This is a possible case when using IPv4 only, with
NET_BUF_FIXED_DATA_SIZE enabled and NET_BUF_DATA_SIZE of 128 for
instance.
choice
prompt "Default Network Interface"
default NET_DEFAULT_IF_FIRST
help
If system has multiple interfaces enabled, then user shall be able
to choose default interface. Otherwise first interface will be the
default interface.
config NET_DEFAULT_IF_FIRST
bool "First available interface"
config NET_DEFAULT_IF_UP
bool "First interface which is up"
config NET_DEFAULT_IF_ETHERNET
bool "Ethernet"
depends on NET_L2_ETHERNET
config NET_DEFAULT_IF_BLUETOOTH
bool "Bluetooth"
depends on NET_L2_BT
config NET_DEFAULT_IF_IEEE802154
bool "IEEE 802.15.4"
depends on NET_L2_IEEE802154
config NET_DEFAULT_IF_OFFLOAD
bool "Offloaded interface"
depends on NET_OFFLOAD
config NET_DEFAULT_IF_DUMMY
bool "Dummy testing interface"
depends on NET_L2_DUMMY
config NET_DEFAULT_IF_CANBUS_RAW
bool "Socket CAN interface"
depends on NET_L2_CANBUS_RAW
config NET_DEFAULT_IF_PPP
bool "PPP interface"
depends on NET_L2_PPP
config NET_DEFAULT_IF_WIFI
bool "WiFi interface"
depends on NET_L2_ETHERNET
endchoice
config NET_INTERFACE_NAME
bool "Allow setting a name to a network interface"
default y
help
Allow application to set a name to the network interface in order
to simplify network interface management.
config NET_INTERFACE_NAME_LEN
int "Network interface max name length"
default 8
range 1 15
depends on NET_INTERFACE_NAME
help
Maximum length of the network interface name.
config NET_PKT_TIMESTAMP
bool "Network packet timestamp support"
help
Enable network packet timestamp support. This is needed for
example in gPTP which needs to know how long it takes to send
a network packet or for timed radio protocols like IEEE 802.15.4
CSL and TSCH.
config NET_PKT_TIMESTAMP_THREAD
bool "Create TX timestamp thread"
default y if NET_L2_PTP
depends on NET_PKT_TIMESTAMP
help
Create a TX timestamp thread that will pass the timestamped network
packets to some other module like gPTP for further processing.
If you just want to timestamp network packets and get information
how long the network packets flow in the system, you can disable
the thread support.
config NET_PKT_TIMESTAMP_STACK_SIZE
int "Timestamp thread stack size"
default 1024
depends on NET_PKT_TIMESTAMP_THREAD
help
Set the timestamp thread stack size in bytes. The timestamp
thread waits for timestamped TX frames and calls registered
callbacks.
config NET_PKT_TXTIME
bool "Network packet TX time support"
help
Enable network packet TX time support. This is needed for
when the application wants to set the exact time when the network
packet should be sent.
config NET_PKT_RXTIME_STATS
bool "Network packet RX time statistics"
select NET_PKT_TIMESTAMP
select NET_STATISTICS
depends on (NET_UDP || NET_TCP || NET_SOCKETS_PACKET) && NET_NATIVE
help
Enable network packet RX time statistics support. This is used to
calculate how long on average it takes for a packet to travel from
device driver to just before it is given to application. The RX
timing information can then be seen in network interface statistics
in net-shell.
The RX statistics are only calculated for UDP and TCP packets.
config NET_PKT_RXTIME_STATS_DETAIL
bool "Get extra receive detail statistics in RX path"
depends on NET_PKT_RXTIME_STATS
help
Store receive statistics detail information in certain key points
in RX path. This is very special configuration and will increase
the size of net_pkt so in typical cases you should not enable it.
The extra statistics can be seen in net-shell using "net stats"
command.
config NET_PKT_TXTIME_STATS
bool "Network packet TX time statistics"
select NET_PKT_TIMESTAMP
select NET_STATISTICS
depends on (NET_UDP || NET_TCP || NET_SOCKETS_PACKET) && NET_NATIVE
help
Enable network packet TX time statistics support. This is used to
calculate how long on average it takes for a packet to travel from
application to just before it is sent to network. The TX timing
information can then be seen in network interface statistics in
net-shell.
The RX calculation is done only for UDP, TCP or RAW packets,
but for TX we do not know the protocol so the TX packet timing is
done for all network protocol packets.
config NET_PKT_TXTIME_STATS_DETAIL
bool "Get extra transmit detail statistics in TX path"
depends on NET_PKT_TXTIME_STATS
help
Store receive statistics detail information in certain key points
in TX path. This is very special configuration and will increase
the size of net_pkt so in typical cases you should not enable it.
The extra statistics can be seen in net-shell using "net stats"
command.
config NET_PROMISCUOUS_MODE
bool "Promiscuous mode support"
select NET_MGMT
select NET_MGMT_EVENT
select NET_L2_ETHERNET_MGMT if NET_L2_ETHERNET
help
Enable promiscuous mode support. This only works if the network
device driver supports promiscuous mode. The user application
also needs to read the promiscuous mode data.
if NET_PROMISCUOUS_MODE
module = NET_PROMISC
module-dep = NET_LOG
module-str = Log level for promiscuous mode
module-help = Enables promiscuous mode to output debug messages.
source "subsys/net/Kconfig.template.log_config.net"
endif # NET_PROMISCUOUS_MODE
config NET_DISABLE_ICMP_DESTINATION_UNREACHABLE
bool "Disable destination unreachable ICMP errors"
help
Suppress the generation of ICMP destination unreachable errors
when ports that are not in a listening state receive packets.
source "subsys/net/ip/Kconfig.stack"
source "subsys/net/ip/Kconfig.mgmt"
source "subsys/net/ip/Kconfig.stats"
source "subsys/net/ip/Kconfig.debug"
endmenu