bnxe.conf revision d14abf155341d55053c76eeec58b787a456b753b
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2014 QLogic Corporation
# The contents of this file are subject to the terms of the
# QLogic End User License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the License at
# http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/
# QLogic_End_User_Software_License.txt
# See the License for the specific language governing permissions
# and limitations under the License.
#
#
# All configuration can be specified per-instance. The format used is as
# follows and each line must end with a semicolon:
#
# bnxe<#>_<config_item>=X;
#
# So for "adv_autoneg_cap" you would use the following:
#
# bnxe0_adv_autoneg_cap=1;
# bnxe1_adv_autoneg_cap=0;
# bnxe2_adv_autoneg_cap=1;
# bnxe3_adv_autoneg_cap=1;
#
# If a configuration item is not specified for a specific instance then the
# default value will be used. The default value used by all instances can be
# overridden using:
#
# default_<config_item>=X;
#
# For boolean values 1 = TRUE and 0 = FALSE.
#
# adv_autoneg_cap - advertise autonegotiation mode
# - default enabled
# - 0 = disabled / 1 = enabled
#default_adv_autoneg_cap=1;
#bnxe0_adv_autoneg_cap=1;
#bnxe1_adv_autoneg_cap=1;
# adv_20000fdx_cap - advertise 20Gbps full duplex
# - ignored for serdes devices
# - default enabled
# - 0 = disable / 1 = enable
#default_adv_20000fdx_cap=1;
#bnxe0_adv_20000fdx_cap=1;
#bnxe1_adv_20000fdx_cap=1;
# adv_10000fdx_cap - advertise 10Gbps full duplex
# - ignored for serdes devices
# - default enabled
# - 0 = disable / 1 = enable
#default_adv_10000fdx_cap=1;
#bnxe0_adv_10000fdx_cap=1;
#bnxe1_adv_10000fdx_cap=1;
# adv_2500fdx_cap - advertise 2500Mbps full duplex
# - ignored for copper devices
# - default enabled
# - 0 = disable / 1 = enable
#default_adv_2500fdx_cap=1;
#bnxe0_adv_2500fdx_cap=1;
#bnxe1_adv_2500fdx_cap=1;
# adv_1000fdx_cap - advertise 1000Mbps full duplex
# - default enabled
# - 0 = disable / 1 = enable
#default_adv_1000fdx_cap=1;
#bnxe0_adv_1000fdx_cap=1;
#bnxe1_adv_1000fdx_cap=1;
# adv_100fdx_cap - advertise 100Mbps full duplex
# - ignored for serdes devices
# - default disabled
# - 0 = disable / 1 = enable
#default_adv_100fdx_cap=0;
#bnxe0_adv_100fdx_cap=0;
#bnxe1_adv_100fdx_cap=0;
# adv_100hdx_cap - advertise 100Mbps half duplex
# - ignored for serdes devices
# - default disabled
# - 0 = disable / 1 = enable
#default_adv_100hdx_cap=0;
#bnxe0_adv_100hdx_cap=0;
#bnxe1_adv_100hdx_cap=0;
# adv_10fdx_cap - advertise 10Mbps full duplex
# - ignored for serdes devices
# - default disabled
# - 0 = disable / 1 = enable
#default_adv_10fdx_cap=0;
#bnxe0_adv_10fdx_cap=0;
#bnxe1_adv_10fdx_cap=0;
# adv_10hdx_cap - advertise 10Mbps half duplex
# - ignored for serdes devices
# - default disabled
# - 0 = disable / 1 = enable
#default_adv_10hdx_cap=0;
#bnxe0_adv_10hdx_cap=0;
#bnxe1_adv_10hdx_cap=0;
# txpause_cap - controls whether or not tx flow control is enabled
# - default enabled
# - 0 = disable / 1 = enable
#default_txpause_cap=1;
#bnxe0_txpause_cap=1;
#bnxe1_txpause_cap=1;
# rxpause_cap - controls whether or not rx flow control is enabled
# - default enabled
# - 0 = disable / 1 = enable
#default_rxpause_cap=1;
#bnxe0_rxpause_cap=1;
#bnxe1_rxpause_cap=1;
# autoneg_flow - advertise flow autonegotiation mode
# - for MTUs greater than 5000 flow control is automatically
# forced off no matter what the configuration is set to
# - default enabled
# - 0 = disable / 1 = enable
#default_autoneg_flow=1;
#bnxe0_autoneg_flow=1;
#bnxe1_autoneg_flow=1;
# checksum - configures checksum tasks to be offloaded to the card
# - default is TCP/UDP/IPv4 checksum offload for rx/tx
# - 0 = no checksum offload
# - 1 = IPv4 checksum offload for rx/tx
# - 2 = TCP/UDP/IPv4 checksum offload for rx/tx
#default_checksum=2;
#bnxe0_checksum=2;
#bnxe1_checksum=2;
# mtu - hardware MTU size
# - valid range is 60 to 9216
# - default is 1500
#default_mtu=1500;
#bnxe0_mtu=1500;
#bnxe1_mtu=1500;
# route_tx_ring_policy - policy used to route outgoing packets on rings
# - default is 1 for TCP/UDP port hash
# - 0 = NONE, all packets sent on ring 0
# - 1 = TCP/UDP port hash
# - 2 = Destination MAC address hash
# - 3 = packet message priority (set in mblk)
#default_route_tx_ring_policy=1;
#bnxe0_route_tx_ring_policy=1;
#bnxe1_route_tx_ring_policy=1;
# num_rings - configures the number of rings to allocate
# - valid values are 0,1,2,4,8,16
# - a non-zero value overrides the default
# - default is 0 which implies:
# - 4 rings for single function mode
# - 1 ring for multi-function mode to keep the number
# of interrupt allocations at a minimum.
#default_num_rings=0;
#bnxe0_num_rings=0;
#bnxe1_num_rings=0;
# rx_descs - configures the number of RX packet descriptors to allocate per ring
# - to keep the number of DMA allocations at a minimum, on 57711 in
# multi-function mode this config value is divided by four(4) and the
# resulting value is used as the descriptor count for each virtual
# interface
# - valid range is 1 to 32767
# - default is 1024
#default_rx_descs=1024;
#bnxe0_rx_descs=1024;
#bnxe1_rx_descs=1024;
# tx_descs - configures the number of TX packet descriptors to allocate per ring
# - to keep the number of DMA allocations at a minimum, on 57711 in
# multi-function mode this config value is divided by four(4) and the
# resulting value is used as the descriptor count for each virtual
# interface
# - valid range is 1 to 32767
# - default is 1024
#default_tx_descs=1024;
#bnxe0_tx_descs=1024;
#bnxe1_tx_descs=1024;
# rx_free_reclaim - configures the number of outstanding already processed
# RX packet descriptors allowed before posting back for reuse
# - valid range is 0 to value of 'rx_descs'
# - default is 32
#default_rx_free_reclaim=32;
#bnxe0_rx_free_reclaim=32;
#bnxe1_rx_free_reclaim=32;
# tx_free_reclaim - configures the number of outstanding already processed
# TX packet descriptors allowed before posting back for reuse
# - valid range is 0 to value of 'tx_descs'
# - default is 32
#default_tx_free_reclaim=32;
#bnxe0_tx_free_reclaim=32;
#bnxe1_tx_free_reclaim=32;
# rx_copy_threshold - packets smaller than this threshold (number of bytes) will
# be copied into a new buffer before sending up the stack
# - default is all rx packets less then 128 bytes are copied
#default_rx_copy_threshold=128;
#bnxe0_rx_copy_threshold=128;
#bnxe1_rx_copy_threshold=128;
# tx_copy_threshold - packets smaller than this threshold (number of bytes) will
# be copied into a new buffer before sending to the hardware
# - default is all tx packets less then 512 bytes are copied
#default_tx_copy_threshold=512;
#bnxe0_tx_copy_threshold=512;
#bnxe1_tx_copy_threshold=512;
# interrupt_coalesce - enable interrupt/packet coalescing
# on = great sustained/burst / decent interactive
# off = great interactive / decent systained/burst
# - default enabled
# - 0 = disabled / 1 = enabled
#default_interrupt_coalesce=1;
#bnxe0_interrupt_coalesce=1;
#bnxe1_interrupt_coalesce=1;
# rx_interrupt_coalesce_usec - time between rx interrupts in usecs
# - only valid if interrupt_coalesce turned on
# - valid range is 10 to 1000
# - default 20
#default_rx_interrupt_coalesce_usec=20;
#bnxe0_rx_interrupt_coalesce_usec=20;
#bnxe1_rx_interrupt_coalesce_usec=20;
# tx_interrupt_coalesce_usec - time between tx interrupts in usecs
# - only valid if interrupt_coalesce turned on
# - valid range is 10 to 1000
# - default 40
#default_tx_interrupt_coalesce_usec=40;
#bnxe0_tx_interrupt_coalesce_usec=40;
#bnxe1_tx_interrupt_coalesce_usec=40;
# disable_msix - turn off MSI-X and use Fixed level interrupts
# - default is FALSE, use MSI-X
# - 0 = MSI-X enabled / 1 = Fixed enabled
#default_disable_msix=0;
#bnxe0_disable_msix=0;
#bnxe1_disable_msix=0;
# l2_fw_flow_ctrl - enable flow control when rx ring is low on buffers
# NOTE: This parameter is NOT used in multifunction mode
# as the config is driven via nvram and device shared
# memory in that case.
# - default disabled
# - 0 = disabled / 1 = enabled
#default_l2_fw_flow_ctrl=0;
#bnxe0_l2_fw_flow_ctrl=0;
#bnxe1_l2_fw_flow_ctrl=0;
# autogreeen_enable - enable AutogrEEEn for devices that support it
# - default enabled
# - 0 = disabled / 1 = enabled
#default_autogreeen_enable=1;
#bnxe0_autogreeen_enable=1;
#bnxe1_autogreeen_enable=1;
# lso_enable - enable TCP Large Segment Offload (LSO)
# - default enabled
# - 0 = disabled / 1 = enabled
#default_lso_enable=1;
#bnxe0_lso_enable=1;
#bnxe1_lso_enable=1;
# log_enable - enable syslog logging of vital information
# - default enabled
# - 0 = disabled / 1 = enabled
#default_log_enable=1;
#bnxe0_log_enable=1;
#bnxe1_log_enable=1;
# link_remote_fault_detect - enable/disable phy LSS remote fault detection
# - default enabled
# - 0 = disabled / 1 = enabled
#default_link_remote_fault_detect=1;
#bnxe0_link_remote_fault_detect=1;
#bnxe1_link_remote_fault_detect=1;
# LLDP - prefixed with "default_" or override with "bnxe#_"
#default_lldp_overwrite_settings=0;
#default_lldp_msg_tx_hold=4;
#default_lldp_msg_fast_tx=1;
#default_lldp_tx_credit_max=5;
#default_lldp_msg_tx_interval=30;
#default_lldp_tx_fast=4;
# DCBX - prefixed with "default_" or override with "bnxe#_"
#default_dcbx_dcb_enable=1;
#default_dcbx_admin_dcbx_enable=1;
#default_dcbx_overwrite_settings=0;
#default_dcbx_admin_dcbx_version=0;
#default_dcbx_admin_ets_enable=1;
#default_dcbx_admin_pfc_enable=1;
#default_dcbx_admin_tc_supported_tx_enable=1;
#default_dcbx_admin_ets_configuration_tx_enable=1;
#default_dcbx_admin_ets_recommendation_tx_enable=0;
#default_dcbx_admin_pfc_tx_enable=0;
#default_dcbx_admin_application_priority_tx_enable=1;
#default_dcbx_admin_ets_willing=1;
#default_dcbx_admin_pfc_willing=1;
#default_dcbx_admin_ets_reco_valid=0;
#default_dcbx_admin_app_priority_willing=1;
#default_dcbx_admin_configuration_bw_percentage_0=0;
#default_dcbx_admin_configuration_bw_percentage_1=50;
#default_dcbx_admin_configuration_bw_percentage_2=50;
#default_dcbx_admin_configuration_bw_percentage_3=0;
#default_dcbx_admin_configuration_bw_percentage_4=0;
#default_dcbx_admin_configuration_bw_percentage_5=0;
#default_dcbx_admin_configuration_bw_percentage_6=0;
#default_dcbx_admin_configuration_bw_percentage_7=0;
#default_dcbx_admin_configuration_ets_pg_0=0;
#default_dcbx_admin_configuration_ets_pg_1=1;
#default_dcbx_admin_configuration_ets_pg_2=0;
#default_dcbx_admin_configuration_ets_pg_3=2;
#default_dcbx_admin_configuration_ets_pg_4=1;
#default_dcbx_admin_configuration_ets_pg_5=0;
#default_dcbx_admin_configuration_ets_pg_6=0;
#default_dcbx_admin_configuration_ets_pg_7=0;
#default_dcbx_admin_recommendation_bw_percentage_0=0;
#default_dcbx_admin_recommendation_bw_percentage_1=0;
#default_dcbx_admin_recommendation_bw_percentage_2=0;
#default_dcbx_admin_recommendation_bw_percentage_3=0;
#default_dcbx_admin_recommendation_bw_percentage_4=0;
#default_dcbx_admin_recommendation_bw_percentage_5=0;
#default_dcbx_admin_recommendation_bw_percentage_6=0;
#default_dcbx_admin_recommendation_bw_percentage_7=0;
#default_dcbx_admin_recommendation_ets_pg_0=0;
#default_dcbx_admin_recommendation_ets_pg_1=0;
#default_dcbx_admin_recommendation_ets_pg_2=0;
#default_dcbx_admin_recommendation_ets_pg_3=0;
#default_dcbx_admin_recommendation_ets_pg_4=0;
#default_dcbx_admin_recommendation_ets_pg_5=0;
#default_dcbx_admin_recommendation_ets_pg_6=0;
#default_dcbx_admin_recommendation_ets_pg_7=0;
#default_dcbx_admin_pfc_bitmap=16;
#default_dcbx_admin_priority_app_table_0_valid=1;
#default_dcbx_admin_priority_app_table_0_priority=3;
#default_dcbx_admin_priority_app_table_0_traffic_type=0;
#default_dcbx_admin_priority_app_table_0_app_id=35078;
#default_dcbx_admin_priority_app_table_1_valid=1;
#default_dcbx_admin_priority_app_table_1_priority=4;
#default_dcbx_admin_priority_app_table_1_traffic_type=1;
#default_dcbx_admin_priority_app_table_1_app_id=3260;
#default_dcbx_admin_priority_app_table_2_valid=0;
#default_dcbx_admin_priority_app_table_2_priority=0;
#default_dcbx_admin_priority_app_table_2_traffic_type=0;
#default_dcbx_admin_priority_app_table_2_app_id=0;
#default_dcbx_admin_priority_app_table_3_valid=0;
#default_dcbx_admin_priority_app_table_3_priority=0;
#default_dcbx_admin_priority_app_table_3_traffic_type=0;
#default_dcbx_admin_priority_app_table_3_app_id=0;
#default_dcbx_admin_default_priority=1;
# debug_level - mask for various debug logs
# - this config only affects the debug driver
# - (example) if you want to only see L2 receive warnings
# and fatals then set this to: 0x00004002
# - note that log levels are inclusive so specifying
# verbose includes inform, warn, and fatal
# - default is to dump everything(!): 0xffffffff
#
# DEBUG LOG LEVELS:
#
# 0x00000001 Fatal
# 0x00000002 Warn
# 0x00000003 Inform
# 0x00000004 Verbose
# 0x000000ff All
#
# DEBUG LOG CODE PATHS:
#
# 0x00000100 Initialization
# 0x00000200 nvram
# 0x00001000 L2 Slow Path
# 0x00002000 L2 Transmit
# 0x00004000 L2 Receive
# 0x00008000 L2 Interrupt
# 0x0000f000 L2 all
# 0x00010000 L4 Slow Path
# 0x00020000 L4 Transmit
# 0x00040000 L4 Receive
# 0x00080000 L4 Interrupt
# 0x000f0000 L4 all
# 0x00100000 L5 Slow Path
# 0x00200000 L5 Transmit
# 0x00400000 L5 Receive
# 0x00f00000 L5 all
# 0x01000000 VF all
# 0x02000000 Event Queue
# 0x04000000 Statistics
# 0x08000000 Event Queue
# 0x10000000 OOO Manager
# 0x40000000 Diagnostics
# 0x80000000 Miscellaneous
#
#default_debug_level=0xffffffff;
#bnxe0_debug_level=0xffffffff;
#bnxe1_debug_level=0xffffffff;
# If you have a system with *many* interfaces it is possible to reach the
# allocation limit of MSIX interrupts. By default, Solaris limits each driver
# to 2 MSIX allocations and there is an issue with the pcplusmp module where
# only a maximum of 31 MSIX interrupts are available per interrupt priority
# level.
#
# If your system has four 57711 ports each running in multi-function mode
# Solaris will enumerate 16 bnxe interfaces. The last interface attached will
# fail to allocate its second MSIX interrupt and revert to Fixed. This in turn
# can eventually expose an issue in the system regarding interrupt management
# resulting in interrupts never being received on the interface which reverted
# back to Fixed.
#
# To ensure all interfaces are able to allocate their two MSIX interrupts, the
# workaround is to change the priority levels of specific interfaces. Network
# drivers are automatically assigned an interrupt priority level of 6 so
# changing an interface's priority level to 5 is common.
#
# 0. First read the driver.conf man page for a background primer.
#
# 1. Find out the driver instance paths assigned on your system.
#
# % grep bnxe /etc/path_to_inst
# "/pci@0,0/pci8086,2779@1/pci14e4,1650@0" 0 "bnxe"
# "/pci@0,0/pci8086,2779@1/pci14e4,1650@0,1" 1 "bnxe"
#
# 2. The name of the driver is the last portion of the path but you should
# probably use the most appropriate PCI ID found in /etc/driver_aliases.
# Depending on how the hardware is layered we've seen cases where the name
# identified in path_to_inst won't work. To figure out which name to use
# examine the output from 'prtconf -v'.
#
# % grep bnxe /etc/driver_aliases
# bnxe "pci14e4,164e"
# bnxe "pci14e4,164f"
# bnxe "pci14e4,1650"
# bnxe "pciex14e4,164e"
# bnxe "pciex14e4,164f"
# bnxe "pciex14e4,1650"
#
# 3. The parent of the driver is the entire path leading up to the name.
#
# 4. The unit-address is located after the final '@' in the path.
#
# 5. Therefore, changing both of the bnxe interfaces found in path_to_inst to
# interrupt priority 5 we would use the following config lines to bnxe.conf:
#
# name = "pciex14e4,1650" parent = "/pci@0,0/pci8086,2779@1" unit-address = "0" interrupt-priorities = 5;
# name = "pciex14e4,1650" parent = "/pci@0,0/pci8086,2779@1" unit-address = "0,1" interrupt-priorities = 5;
#
# 6. After modifying the config either reboot the system or unplumb all
# interfaces and run the update_drv command.
#
# 7. When the system has been reconfigured and the interfaces plumbed back up
# you can verify the new interrupt priority settings by running the
# following command as root:
#
# % echo "::interrupts -d" | mdb -k