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