summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/freescale/sdk_dpaa/Kconfig
blob: b21d23623e594596f5d3b85239312efeea924351 (plain)
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
menuconfig FSL_SDK_DPAA_ETH
	tristate "DPAA Ethernet"
	depends on (FSL_SOC || ARM64 || ARM) && FSL_SDK_BMAN && FSL_SDK_QMAN && FSL_SDK_FMAN && !FSL_DPAA_ETH
	select PHYLIB
	help
	  Data Path Acceleration Architecture Ethernet driver,
	  supporting the Freescale QorIQ chips.
	  Depends on Freescale Buffer Manager and Queue Manager
	  driver and Frame Manager Driver.

if FSL_SDK_DPAA_ETH

config FSL_DPAA_HOOKS
	bool "DPAA Ethernet driver hooks"

config FSL_DPAA_CEETM
	bool "DPAA CEETM QoS"
	depends on NET_SCHED
	default n
	help
	Enable QoS offloading support through the CEETM hardware block.

config FSL_DPAA_CEETM_CCS_THRESHOLD_1G
	hex "CEETM egress congestion threshold on 1G ports"
	depends on FSL_DPAA_CEETM
	range 0x1000 0x10000000
	default "0x000a0000"
	help
	  The size in bytes of the CEETM egress Class Congestion State threshold on 1G ports.
	  The threshold needs to be configured keeping in mind the following factors:
	       - A threshold too large will buffer frames for a long time in the TX queues,
	       when a small shaping rate is configured. This will cause buffer pool depletion
	       or out of memory errors. This in turn will cause frame loss on RX;
	       - A threshold too small will cause unnecessary frame loss by entering
	       congestion too often.

config FSL_DPAA_CEETM_CCS_THRESHOLD_10G
	hex "CEETM egress congestion threshold on 10G ports"
	depends on FSL_DPAA_CEETM
	range 0x1000 0x20000000
	default "0x00640000"
	help
	  The size in bytes of the CEETM egress Class Congestion State threshold on 10G ports.
	  See FSL_DPAA_CEETM_CCS_THRESHOLD_1G for details.

config FSL_DPAA_OFFLINE_PORTS
	bool "Offline Ports support"
	depends on FSL_SDK_DPAA_ETH
	default y
	help
	  The Offline Parsing / Host Command ports (short: OH ports, of Offline ports) provide
	  most of the functionality of the regular, online ports, except they receive their
	  frames from a core or an accelerator on the SoC, via QMan frame queues,
	  rather than directly from the network.
	  Offline ports are configured via PCD (Parse-Classify-Distribute) schemes, just like
	  any online FMan port. They deliver the processed frames to frame queues, according
	  to the applied PCD configurations.

	  Choosing this feature will not impact the functionality and/or performance of the system,
	  so it is safe to have it.

config FSL_DPAA_ADVANCED_DRIVERS
        bool "Advanced DPAA Ethernet drivers"
        depends on FSL_SDK_DPAA_ETH
        default y
        help
	  Besides the standard DPAA Ethernet driver the DPAA Proxy initialization driver
	  is needed to support advanced scenarios. Select this to also build the advanced
	  drivers.

config FSL_DPAA_ETH_JUMBO_FRAME
	bool "Optimize for jumbo frames"
	default n
	help
	  Optimize the DPAA Ethernet driver throughput for large frames
	  termination traffic (e.g. 4K and above).
	  NOTE: This option can only be used if FSL_FM_MAX_FRAME_SIZE
	  is set to 9600 bytes.
	  Using this option in combination with small frames increases
	  significantly the driver's memory footprint and may even deplete
	  the system memory. Also, the skb truesize is altered and messages
	  from the stack that warn against this are bypassed.
	  This option is not available on LS1043.

config FSL_DPAA_TS
	bool "Linux compliant timestamping"
	depends on FSL_SDK_DPAA_ETH
	default n
	help
	  Enable Linux API compliant timestamping support.

config FSL_DPAA_1588
        bool "IEEE 1588-compliant timestamping"
        depends on FSL_SDK_DPAA_ETH
        select FSL_DPAA_TS
        default n
        help
         Enable IEEE1588 support code.

config FSL_DPAA_ETH_USE_NDO_SELECT_QUEUE
	bool "Use driver's Tx queue selection mechanism"
	default y
	depends on FSL_SDK_DPAA_ETH
	help
	  The DPAA-Ethernet driver defines a ndo_select_queue() callback for optimal selection
	  of the egress FQ. That will override the XPS support for this netdevice.
	  If for whatever reason you want to be in control of the egress FQ-to-CPU selection and mapping,
	  or simply don't want to use the driver's ndo_select_queue() callback, then unselect this
	  and use the standard XPS support instead.

config FSL_DPAA_ETH_MAX_BUF_COUNT
	int "Maximum nuber of buffers in private bpool"
	depends on FSL_SDK_DPAA_ETH
	range 64 2048
	default "128"
	help
	  The maximum number of buffers to be by default allocated in the DPAA-Ethernet private port's
	  buffer pool. One needn't normally modify this, as it has probably been tuned for performance
	  already. This cannot be lower than DPAA_ETH_REFILL_THRESHOLD.

config FSL_DPAA_ETH_REFILL_THRESHOLD
	int "Private bpool refill threshold"
	depends on FSL_SDK_DPAA_ETH
	range 32 FSL_DPAA_ETH_MAX_BUF_COUNT
	default "80"
	help
	  The DPAA-Ethernet driver will start replenishing buffer pools whose count
	  falls below this threshold. This must be related to DPAA_ETH_MAX_BUF_COUNT. One needn't normally
	  modify this value unless one has very specific performance reasons.

config FSL_DPAA_CS_THRESHOLD_1G
	hex "Egress congestion threshold on 1G ports"
	depends on FSL_SDK_DPAA_ETH
	range 0x1000 0x10000000
	default "0x06000000"
	help
	  The size in bytes of the egress Congestion State notification threshold on 1G ports.
	  The 1G dTSECs can quite easily be flooded by cores doing Tx in a tight loop
	  (e.g. by sending UDP datagrams at "while(1) speed"),
	  and the larger the frame size, the more acute the problem.
	  So we have to find a balance between these factors:
	       - avoiding the device staying congested for a prolonged time (risking
                 the netdev watchdog to fire - see also the tx_timeout module param);
               - affecting performance of protocols such as TCP, which otherwise
	         behave well under the congestion notification mechanism;
	       - preventing the Tx cores from tightly-looping (as if the congestion
	         threshold was too low to be effective);
	       - running out of memory if the CS threshold is set too high.

config FSL_DPAA_CS_THRESHOLD_10G
	hex "Egress congestion threshold on 10G ports"
	depends on FSL_SDK_DPAA_ETH
	range 0x1000 0x20000000
	default "0x10000000"
	help
	  The size in bytes of the egress Congestion State notification threshold on 10G ports.

config FSL_DPAA_INGRESS_CS_THRESHOLD
	hex "Ingress congestion threshold on FMan ports"
	depends on FSL_SDK_DPAA_ETH
	default "0x10000000"
	help
	  The size in bytes of the ingress tail-drop threshold on FMan ports.
	  Traffic piling up above this value will be rejected by QMan and discarded by FMan.

config FSL_DPAA_ETH_DEBUGFS
	bool "DPAA Ethernet debugfs interface"
	depends on DEBUG_FS && FSL_SDK_DPAA_ETH
	default y
	help
	  This option compiles debugfs code for the DPAA Ethernet driver.

config FSL_DPAA_ETH_DEBUG
	bool "DPAA Ethernet Debug Support"
	depends on FSL_SDK_DPAA_ETH
	default n
	help
	  This option compiles debug code for the DPAA Ethernet driver.

config FSL_DPAA_DBG_LOOP
	bool "DPAA Ethernet Debug loopback"
	depends on FSL_DPAA_ETH_DEBUGFS && FSL_DPAA_ETH_USE_NDO_SELECT_QUEUE
	default n
	help
	  This option allows to divert all received traffic on a certain interface A towards a
	  selected interface B. This option is used to benchmark the HW + Ethernet driver in
	  isolation from the Linux networking stack. The loops are controlled by debugfs entries,
	  one for each interface. By default all loops are disabled (target value is -1). I.e. to
	  change the loop setting for interface 4 and divert all received traffic to interface 5
	  write Tx interface number in the receive interface debugfs file:
		# cat /sys/kernel/debug/powerpc/fsl_dpa/eth4_loop
			4->-1
		# echo 5 > /sys/kernel/debug/powerpc/fsl_dpa/eth4_loop
		# cat /sys/kernel/debug/powerpc/fsl_dpa/eth4_loop
			4->5
endif # FSL_SDK_DPAA_ETH