# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, Joyent, Inc. # Copyright 2023 The University of Queensland # Copyright 2020 RackTop Systems, Inc. # # # Driver.conf file for Mellanox Connect-X 4/5/6. # See mlxcx(4D) for valid options. # # # Sizing of event and completion queues. # # The number of entries on each queue will be (1 << *_size_shift) -- so # a value of 10 would mean 1024 entries. # #eq_size_shift = 9; # The default for devices with a maximum supported speed up to 10Gb/s #cq_size_shift = 10; # # The default for devices with a maximum supported speed above 10Gb/s #cq_size_shift = 12; # # Sizing of send and receive queues. # # Note that this determines the size of the RX and TX rings that mlxcx will # advertise to MAC. It also determines how many packet buffers we will allocate # when starting the interface. # # The defaults for devices with a maximum supported speed up to 10Gb/s #sq_size_shift = 11; #rq_size_shift = 10; # # The defaults for devices with a maximum supported speed above 10Gb/s #sq_size_shift = 13; #rq_size_shift = 12; # # Number and configuration of TX groups and rings. # #tx_ngroups = 1; #tx_nrings_per_group = 64; # # Number and configuration of RX groups and rings. # #rx_ngroups_large = 2; #rx_nrings_per_large_group = 16; #rx_ngroups_small = 256; #rx_nrings_per_small_group = 4; # # Number of flow table entries allocated to root flow tables. # # This places an upper ceiling on how many MAC addresses can be filtered into # groups across the whole NIC. If you have a lot of VNICs you might want to # raise this (and probably also rx_ngroups_small). # #ftbl_root_size_shift = 12; # # Number of flow table entries allocated to each L1 VLAN filtering table. # # This places a limit on the number of VLANs that one MAC address can be # associated with before falling back to software classification. Two entries # are always reserved for the non-VLAN catch-all and promisc entries. # # Note: illumos MAC today only supports giving a single VLAN per MAC address # to hardware drivers anyway, so setting this higher is pointless until that # changes. # #ftbl_vlan_size_shift = 4; # # Interrupt and completion moderation. # #cqemod_period_usec = 50; #cqemod_count = <80% of cq_size>; #intrmod_period_usec = 10; # # Minimum packet size before we use a ddi_dma_bind_addr() rather than bcopy() # of the packet data. DMA binds are expensive and involve taking locks in the # PCI nexus driver, so it's seldom worth doing them for small packets. # #tx_bind_threshold = 2048; # # Interval between periodic double-checks of queue status against hardware # state. This is used to detect hardware stalls or errors, as well as guard # against driver bugs. # # If set to too high a frequency, checks may impact NIC performance. Can be # set to zero to disable periodic checking entirely. # #eq_check_interval_sec = 30; #cq_check_interval_sec = 300; #wq_check_interval_sec = 300; # # To provide some level of moderation and aid latencies, after # "rx_limit_per_completion" packets are received in a single completion # event, the interrupt handler will pass the chain up the receive stack. # #rx_limit_per_completion = 256; # # Minimum size of packet buffers allowed to be loaned to MAC when the ring # has reached >=50% of its buffers already on loan. Packet buffers smaller than # this will be copied. At >= 75% of buffers on loan, all packets will be # copied instead of loaned. # # If your workload involves lots of very deep socket queues, you may find some # performance gains in adjusting this. # #rx_p50_loan_min_size = 256;