xref: /illumos-gate/usr/src/uts/common/io/bnxe/bnxe.conf (revision d14abf15)
1#
2# CDDL HEADER START
3#
4# The contents of this file are subject to the terms of the
5# Common Development and Distribution License (the "License").
6# You may not use this file except in compliance with the License.
7#
8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9# or http://www.opensolaris.org/os/licensing.
10# See the License for the specific language governing permissions
11# and limitations under the License.
12#
13# When distributing Covered Code, include this CDDL HEADER in each
14# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15# If applicable, add the following below this CDDL HEADER, with the
16# fields enclosed by brackets "[]" replaced with your own identifying
17# information: Portions Copyright [yyyy] [name of copyright owner]
18#
19# CDDL HEADER END
20#
21
22#
23# Copyright 2014 QLogic Corporation
24# The contents of this file are subject to the terms of the
25# QLogic End User License (the "License").
26# You may not use this file except in compliance with the License.
27#
28# You can obtain a copy of the License at
29# http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/
30# QLogic_End_User_Software_License.txt
31# See the License for the specific language governing permissions
32# and limitations under the License.
33#
34#
35# All configuration can be specified per-instance.  The format used is as
36# follows and each line must end with a semicolon:
37#
38#   bnxe<#>_<config_item>=X;
39#
40# So for "adv_autoneg_cap" you would use the following:
41#
42#   bnxe0_adv_autoneg_cap=1;
43#   bnxe1_adv_autoneg_cap=0;
44#   bnxe2_adv_autoneg_cap=1;
45#   bnxe3_adv_autoneg_cap=1;
46#
47# If a configuration item is not specified for a specific instance then the
48# default value will be used.  The default value used by all instances can be
49# overridden using:
50#
51#   default_<config_item>=X;
52#
53# For boolean values 1 = TRUE and 0 = FALSE.
54#
55
56# adv_autoneg_cap - advertise autonegotiation mode
57#                 - default enabled
58#                 - 0 = disabled / 1 = enabled
59#default_adv_autoneg_cap=1;
60#bnxe0_adv_autoneg_cap=1;
61#bnxe1_adv_autoneg_cap=1;
62
63# adv_20000fdx_cap - advertise 20Gbps full duplex
64#                  - ignored for serdes devices
65#                  - default enabled
66#                  - 0 = disable / 1 = enable
67#default_adv_20000fdx_cap=1;
68#bnxe0_adv_20000fdx_cap=1;
69#bnxe1_adv_20000fdx_cap=1;
70
71# adv_10000fdx_cap - advertise 10Gbps full duplex
72#                  - ignored for serdes devices
73#                  - default enabled
74#                  - 0 = disable / 1 = enable
75#default_adv_10000fdx_cap=1;
76#bnxe0_adv_10000fdx_cap=1;
77#bnxe1_adv_10000fdx_cap=1;
78
79# adv_2500fdx_cap - advertise 2500Mbps full duplex
80#                 - ignored for copper devices
81#                 - default enabled
82#                 - 0 = disable / 1 = enable
83#default_adv_2500fdx_cap=1;
84#bnxe0_adv_2500fdx_cap=1;
85#bnxe1_adv_2500fdx_cap=1;
86
87# adv_1000fdx_cap - advertise 1000Mbps full duplex
88#                 - default enabled
89#                 - 0 = disable / 1 = enable
90#default_adv_1000fdx_cap=1;
91#bnxe0_adv_1000fdx_cap=1;
92#bnxe1_adv_1000fdx_cap=1;
93
94# adv_100fdx_cap - advertise 100Mbps full duplex
95#                - ignored for serdes devices
96#                - default disabled
97#                - 0 = disable / 1 = enable
98#default_adv_100fdx_cap=0;
99#bnxe0_adv_100fdx_cap=0;
100#bnxe1_adv_100fdx_cap=0;
101
102# adv_100hdx_cap - advertise 100Mbps half duplex
103#                - ignored for serdes devices
104#                - default disabled
105#                - 0 = disable / 1 = enable
106#default_adv_100hdx_cap=0;
107#bnxe0_adv_100hdx_cap=0;
108#bnxe1_adv_100hdx_cap=0;
109
110# adv_10fdx_cap - advertise 10Mbps full duplex
111#               - ignored for serdes devices
112#               - default disabled
113#               - 0 = disable / 1 = enable
114#default_adv_10fdx_cap=0;
115#bnxe0_adv_10fdx_cap=0;
116#bnxe1_adv_10fdx_cap=0;
117
118# adv_10hdx_cap - advertise 10Mbps half duplex
119#               - ignored for serdes devices
120#               - default disabled
121#               - 0 = disable / 1 = enable
122#default_adv_10hdx_cap=0;
123#bnxe0_adv_10hdx_cap=0;
124#bnxe1_adv_10hdx_cap=0;
125
126# txpause_cap - controls whether or not tx flow control is enabled
127#             - default enabled
128#             - 0 = disable / 1 = enable
129#default_txpause_cap=1;
130#bnxe0_txpause_cap=1;
131#bnxe1_txpause_cap=1;
132
133# rxpause_cap - controls whether or not rx flow control is enabled
134#             - default enabled
135#             - 0 = disable / 1 = enable
136#default_rxpause_cap=1;
137#bnxe0_rxpause_cap=1;
138#bnxe1_rxpause_cap=1;
139
140# autoneg_flow - advertise flow autonegotiation mode
141#              - for MTUs greater than 5000 flow control is automatically
142#                forced off no matter what the configuration is set to
143#              - default enabled
144#              - 0 = disable / 1 = enable
145#default_autoneg_flow=1;
146#bnxe0_autoneg_flow=1;
147#bnxe1_autoneg_flow=1;
148
149# checksum - configures checksum tasks to be offloaded to the card
150#          - default is TCP/UDP/IPv4 checksum offload for rx/tx
151#          - 0 = no checksum offload
152#          - 1 = IPv4 checksum offload for rx/tx
153#          - 2 = TCP/UDP/IPv4 checksum offload for rx/tx
154#default_checksum=2;
155#bnxe0_checksum=2;
156#bnxe1_checksum=2;
157
158# mtu - hardware MTU size
159#     - valid range is 60 to 9216
160#     - default is 1500
161#default_mtu=1500;
162#bnxe0_mtu=1500;
163#bnxe1_mtu=1500;
164
165# route_tx_ring_policy - policy used to route outgoing packets on rings
166#                      - default is 1 for TCP/UDP port hash
167#                      - 0 = NONE, all packets sent on ring 0
168#                      - 1 = TCP/UDP port hash
169#                      - 2 = Destination MAC address hash
170#                      - 3 = packet message priority (set in mblk)
171#default_route_tx_ring_policy=1;
172#bnxe0_route_tx_ring_policy=1;
173#bnxe1_route_tx_ring_policy=1;
174
175# num_rings - configures the number of rings to allocate
176#           - valid values are 0,1,2,4,8,16
177#           - a non-zero value overrides the default
178#           - default is 0 which implies:
179#               - 4 rings for single function mode
180#               - 1 ring for multi-function mode to keep the number
181#                 of interrupt allocations at a minimum.
182#default_num_rings=0;
183#bnxe0_num_rings=0;
184#bnxe1_num_rings=0;
185
186# rx_descs - configures the number of RX packet descriptors to allocate per ring
187#          - to keep the number of DMA allocations at a minimum, on 57711 in
188#            multi-function mode this config value is divided by four(4) and the
189#            resulting value is used as the descriptor count for each virtual
190#            interface
191#          - valid range is 1 to 32767
192#          - default is 1024
193#default_rx_descs=1024;
194#bnxe0_rx_descs=1024;
195#bnxe1_rx_descs=1024;
196
197# tx_descs - configures the number of TX packet descriptors to allocate per ring
198#          - to keep the number of DMA allocations at a minimum, on 57711 in
199#            multi-function mode this config value is divided by four(4) and the
200#            resulting value is used as the descriptor count for each virtual
201#            interface
202#          - valid range is 1 to 32767
203#          - default is 1024
204#default_tx_descs=1024;
205#bnxe0_tx_descs=1024;
206#bnxe1_tx_descs=1024;
207
208# rx_free_reclaim - configures the number of outstanding already processed
209#                   RX packet descriptors allowed before posting back for reuse
210#                 - valid range is 0 to value of 'rx_descs'
211#                 - default is 32
212#default_rx_free_reclaim=32;
213#bnxe0_rx_free_reclaim=32;
214#bnxe1_rx_free_reclaim=32;
215
216# tx_free_reclaim - configures the number of outstanding already processed
217#                   TX packet descriptors allowed before posting back for reuse
218#                 - valid range is 0 to value of 'tx_descs'
219#                 - default is 32
220#default_tx_free_reclaim=32;
221#bnxe0_tx_free_reclaim=32;
222#bnxe1_tx_free_reclaim=32;
223
224# rx_copy_threshold - packets smaller than this threshold (number of bytes) will
225#                     be copied into a new buffer before sending up the stack
226#                   - default is all rx packets less then 128 bytes are copied
227#default_rx_copy_threshold=128;
228#bnxe0_rx_copy_threshold=128;
229#bnxe1_rx_copy_threshold=128;
230
231# tx_copy_threshold - packets smaller than this threshold (number of bytes) will
232#                     be copied into a new buffer before sending to the hardware
233#                   - default is all tx packets less then 512 bytes are copied
234#default_tx_copy_threshold=512;
235#bnxe0_tx_copy_threshold=512;
236#bnxe1_tx_copy_threshold=512;
237
238# interrupt_coalesce - enable interrupt/packet coalescing
239#                      on  = great sustained/burst / decent interactive
240#                      off = great interactive / decent systained/burst
241#                    - default enabled
242#                    - 0 = disabled / 1 = enabled
243#default_interrupt_coalesce=1;
244#bnxe0_interrupt_coalesce=1;
245#bnxe1_interrupt_coalesce=1;
246
247# rx_interrupt_coalesce_usec - time between rx interrupts in usecs
248#                            - only valid if interrupt_coalesce turned on
249#                            - valid range is 10 to 1000
250#                            - default 20
251#default_rx_interrupt_coalesce_usec=20;
252#bnxe0_rx_interrupt_coalesce_usec=20;
253#bnxe1_rx_interrupt_coalesce_usec=20;
254
255# tx_interrupt_coalesce_usec - time between tx interrupts in usecs
256#                            - only valid if interrupt_coalesce turned on
257#                            - valid range is 10 to 1000
258#                            - default 40
259#default_tx_interrupt_coalesce_usec=40;
260#bnxe0_tx_interrupt_coalesce_usec=40;
261#bnxe1_tx_interrupt_coalesce_usec=40;
262
263# disable_msix - turn off MSI-X and use Fixed level interrupts
264#              - default is FALSE, use MSI-X
265#              - 0 = MSI-X enabled / 1 = Fixed enabled
266#default_disable_msix=0;
267#bnxe0_disable_msix=0;
268#bnxe1_disable_msix=0;
269
270# l2_fw_flow_ctrl - enable flow control when rx ring is low on buffers
271#                   NOTE: This parameter is NOT used in multifunction mode
272#                   as the config is driven via nvram and device shared
273#                   memory in that case.
274#                 - default disabled
275#                 - 0 = disabled / 1 = enabled
276#default_l2_fw_flow_ctrl=0;
277#bnxe0_l2_fw_flow_ctrl=0;
278#bnxe1_l2_fw_flow_ctrl=0;
279
280# autogreeen_enable - enable AutogrEEEn for devices that support it
281#                   - default enabled
282#                   - 0 = disabled / 1 = enabled
283#default_autogreeen_enable=1;
284#bnxe0_autogreeen_enable=1;
285#bnxe1_autogreeen_enable=1;
286
287# lso_enable - enable TCP Large Segment Offload (LSO)
288#            - default enabled
289#            - 0 = disabled / 1 = enabled
290#default_lso_enable=1;
291#bnxe0_lso_enable=1;
292#bnxe1_lso_enable=1;
293
294# log_enable - enable syslog logging of vital information
295#            - default enabled
296#            - 0 = disabled / 1 = enabled
297#default_log_enable=1;
298#bnxe0_log_enable=1;
299#bnxe1_log_enable=1;
300
301# link_remote_fault_detect - enable/disable phy LSS remote fault detection
302#                          - default enabled
303#                          - 0 = disabled / 1 = enabled
304#default_link_remote_fault_detect=1;
305#bnxe0_link_remote_fault_detect=1;
306#bnxe1_link_remote_fault_detect=1;
307
308# LLDP - prefixed with "default_" or override with "bnxe#_"
309#default_lldp_overwrite_settings=0;
310#default_lldp_msg_tx_hold=4;
311#default_lldp_msg_fast_tx=1;
312#default_lldp_tx_credit_max=5;
313#default_lldp_msg_tx_interval=30;
314#default_lldp_tx_fast=4;
315
316# DCBX - prefixed with "default_" or override with "bnxe#_"
317#default_dcbx_dcb_enable=1;
318#default_dcbx_admin_dcbx_enable=1;
319#default_dcbx_overwrite_settings=0;
320#default_dcbx_admin_dcbx_version=0;
321#default_dcbx_admin_ets_enable=1;
322#default_dcbx_admin_pfc_enable=1;
323#default_dcbx_admin_tc_supported_tx_enable=1;
324#default_dcbx_admin_ets_configuration_tx_enable=1;
325#default_dcbx_admin_ets_recommendation_tx_enable=0;
326#default_dcbx_admin_pfc_tx_enable=0;
327#default_dcbx_admin_application_priority_tx_enable=1;
328#default_dcbx_admin_ets_willing=1;
329#default_dcbx_admin_pfc_willing=1;
330#default_dcbx_admin_ets_reco_valid=0;
331#default_dcbx_admin_app_priority_willing=1;
332#default_dcbx_admin_configuration_bw_percentage_0=0;
333#default_dcbx_admin_configuration_bw_percentage_1=50;
334#default_dcbx_admin_configuration_bw_percentage_2=50;
335#default_dcbx_admin_configuration_bw_percentage_3=0;
336#default_dcbx_admin_configuration_bw_percentage_4=0;
337#default_dcbx_admin_configuration_bw_percentage_5=0;
338#default_dcbx_admin_configuration_bw_percentage_6=0;
339#default_dcbx_admin_configuration_bw_percentage_7=0;
340#default_dcbx_admin_configuration_ets_pg_0=0;
341#default_dcbx_admin_configuration_ets_pg_1=1;
342#default_dcbx_admin_configuration_ets_pg_2=0;
343#default_dcbx_admin_configuration_ets_pg_3=2;
344#default_dcbx_admin_configuration_ets_pg_4=1;
345#default_dcbx_admin_configuration_ets_pg_5=0;
346#default_dcbx_admin_configuration_ets_pg_6=0;
347#default_dcbx_admin_configuration_ets_pg_7=0;
348#default_dcbx_admin_recommendation_bw_percentage_0=0;
349#default_dcbx_admin_recommendation_bw_percentage_1=0;
350#default_dcbx_admin_recommendation_bw_percentage_2=0;
351#default_dcbx_admin_recommendation_bw_percentage_3=0;
352#default_dcbx_admin_recommendation_bw_percentage_4=0;
353#default_dcbx_admin_recommendation_bw_percentage_5=0;
354#default_dcbx_admin_recommendation_bw_percentage_6=0;
355#default_dcbx_admin_recommendation_bw_percentage_7=0;
356#default_dcbx_admin_recommendation_ets_pg_0=0;
357#default_dcbx_admin_recommendation_ets_pg_1=0;
358#default_dcbx_admin_recommendation_ets_pg_2=0;
359#default_dcbx_admin_recommendation_ets_pg_3=0;
360#default_dcbx_admin_recommendation_ets_pg_4=0;
361#default_dcbx_admin_recommendation_ets_pg_5=0;
362#default_dcbx_admin_recommendation_ets_pg_6=0;
363#default_dcbx_admin_recommendation_ets_pg_7=0;
364#default_dcbx_admin_pfc_bitmap=16;
365#default_dcbx_admin_priority_app_table_0_valid=1;
366#default_dcbx_admin_priority_app_table_0_priority=3;
367#default_dcbx_admin_priority_app_table_0_traffic_type=0;
368#default_dcbx_admin_priority_app_table_0_app_id=35078;
369#default_dcbx_admin_priority_app_table_1_valid=1;
370#default_dcbx_admin_priority_app_table_1_priority=4;
371#default_dcbx_admin_priority_app_table_1_traffic_type=1;
372#default_dcbx_admin_priority_app_table_1_app_id=3260;
373#default_dcbx_admin_priority_app_table_2_valid=0;
374#default_dcbx_admin_priority_app_table_2_priority=0;
375#default_dcbx_admin_priority_app_table_2_traffic_type=0;
376#default_dcbx_admin_priority_app_table_2_app_id=0;
377#default_dcbx_admin_priority_app_table_3_valid=0;
378#default_dcbx_admin_priority_app_table_3_priority=0;
379#default_dcbx_admin_priority_app_table_3_traffic_type=0;
380#default_dcbx_admin_priority_app_table_3_app_id=0;
381#default_dcbx_admin_default_priority=1;
382
383# debug_level - mask for various debug logs
384#             - this config only affects the debug driver
385#             - (example) if you want to only see L2 receive warnings
386#               and fatals then set this to: 0x00004002
387#             - note that log levels are inclusive so specifying
388#               verbose includes inform, warn, and fatal
389#             - default is to dump everything(!): 0xffffffff
390#
391# DEBUG LOG LEVELS:
392#
393#   0x00000001  Fatal
394#   0x00000002  Warn
395#   0x00000003  Inform
396#   0x00000004  Verbose
397#   0x000000ff  All
398#
399# DEBUG LOG CODE PATHS:
400#
401#   0x00000100  Initialization
402#   0x00000200  nvram
403#   0x00001000  L2 Slow Path
404#   0x00002000  L2 Transmit
405#   0x00004000  L2 Receive
406#   0x00008000  L2 Interrupt
407#   0x0000f000  L2 all
408#   0x00010000  L4 Slow Path
409#   0x00020000  L4 Transmit
410#   0x00040000  L4 Receive
411#   0x00080000  L4 Interrupt
412#   0x000f0000  L4 all
413#   0x00100000  L5 Slow Path
414#   0x00200000  L5 Transmit
415#   0x00400000  L5 Receive
416#   0x00f00000  L5 all
417#   0x01000000  VF all
418#   0x02000000  Event Queue
419#   0x04000000  Statistics
420#   0x08000000  Event Queue
421#   0x10000000  OOO Manager
422#   0x40000000  Diagnostics
423#   0x80000000  Miscellaneous
424#
425#default_debug_level=0xffffffff;
426#bnxe0_debug_level=0xffffffff;
427#bnxe1_debug_level=0xffffffff;
428
429# If you have a system with *many* interfaces it is possible to reach the
430# allocation limit of MSIX interrupts.  By default, Solaris limits each driver
431# to 2 MSIX allocations and there is an issue with the pcplusmp module where
432# only a maximum of 31 MSIX interrupts are available per interrupt priority
433# level.
434#
435# If your system has four 57711 ports each running in multi-function mode
436# Solaris will enumerate 16 bnxe interfaces.  The last interface attached will
437# fail to allocate its second MSIX interrupt and revert to Fixed.  This in turn
438# can eventually expose an issue in the system regarding interrupt management
439# resulting in interrupts never being received on the interface which reverted
440# back to Fixed.
441#
442# To ensure all interfaces are able to allocate their two MSIX interrupts, the
443# workaround is to change the priority levels of specific interfaces.  Network
444# drivers are automatically assigned an interrupt priority level of 6 so
445# changing an interface's priority level to 5 is common.
446#
447# 0. First read the driver.conf man page for a background primer.
448#
449# 1. Find out the driver instance paths assigned on your system.
450#
451#  % grep bnxe /etc/path_to_inst
452#  "/pci@0,0/pci8086,2779@1/pci14e4,1650@0" 0 "bnxe"
453#  "/pci@0,0/pci8086,2779@1/pci14e4,1650@0,1" 1 "bnxe"
454#
455# 2. The name of the driver is the last portion of the path but you should
456#    probably use the most appropriate PCI ID found in /etc/driver_aliases.
457#    Depending on how the hardware is layered we've seen cases where the name
458#    identified in path_to_inst won't work.  To figure out which name to use
459#    examine the output from 'prtconf -v'.
460#
461#  % grep bnxe /etc/driver_aliases
462#  bnxe "pci14e4,164e"
463#  bnxe "pci14e4,164f"
464#  bnxe "pci14e4,1650"
465#  bnxe "pciex14e4,164e"
466#  bnxe "pciex14e4,164f"
467#  bnxe "pciex14e4,1650"
468#
469# 3. The parent of the driver is the entire path leading up to the name.
470#
471# 4. The unit-address is located after the final '@' in the path.
472#
473# 5. Therefore, changing both of the bnxe interfaces found in path_to_inst to
474#    interrupt priority 5 we would use the following config lines to bnxe.conf:
475#
476# name = "pciex14e4,1650" parent = "/pci@0,0/pci8086,2779@1" unit-address = "0" interrupt-priorities = 5;
477# name = "pciex14e4,1650" parent = "/pci@0,0/pci8086,2779@1" unit-address = "0,1" interrupt-priorities = 5;
478#
479# 6. After modifying the config either reboot the system or unplumb all
480#    interfaces and run the update_drv command.
481#
482# 7. When the system has been reconfigured and the interfaces plumbed back up
483#    you can verify the new interrupt priority settings by running the
484#    following command as root:
485#
486#  % echo "::interrupts -d" | mdb -k
487
488