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