xref: /illumos-gate/usr/src/uts/common/io/mlxcx/mlxcx.conf (revision ebb7c6fd4f966f94af3e235242b8a39b7a53664a)
1#
2# This file and its contents are supplied under the terms of the
3# Common Development and Distribution License ("CDDL"), version 1.0.
4# You may only use this file in accordance with the terms of version
5# 1.0 of the CDDL.
6#
7# A full copy of the text of the CDDL should have accompanied this
8# source.  A copy of the CDDL is also available via the Internet at
9# http://www.illumos.org/license/CDDL.
10#
11
12#
13# Copyright 2018, Joyent, Inc.
14# Copyright 2020, The University of Queensland
15#
16
17#
18# Driver.conf file for Mellanox Connect-X 4/5/6.
19# See mlxcx(7D) for valid options.
20#
21
22#
23# Sizing of event and completion queues.
24#
25# The number of entries on each queue will be (1 << *_size_shift) -- so
26# a value of 9 would mean 512 entries.
27#
28#eq_size_shift = 9;
29#cq_size_shift = 10;
30
31#
32# Sizing of send and receive queues.
33#
34# Note that this determines the size of the RX and TX rings that mlxcx will
35# advertise to MAC. It also determines how many packet buffers we will allocate
36# when starting the interface.
37#
38#sq_size_shift = 11;
39#rq_size_shift = 10;
40
41#
42# Number and configuration of TX groups and rings.
43#
44#tx_ngroups = 1;
45#tx_nrings_per_group = 64;
46
47#
48# Number and configuration of RX groups and rings.
49#
50#rx_ngroups_large = 2;
51#rx_nrings_per_large_group = 16;
52#rx_ngroups_small = 256;
53#rx_nrings_per_small_group = 4;
54
55#
56# Number of flow table entries allocated to root flow tables.
57#
58# This places an upper ceiling on how many MAC addresses can be filtered into
59# groups across the whole NIC. If you have a lot of VNICs you might want to
60# raise this (and probably also rx_ngroups_small).
61#
62#ftbl_root_size_shift = 12;
63
64#
65# Number of flow table entries allocated to each L1 VLAN filtering table.
66#
67# This places a limit on the number of VLANs that one MAC address can be
68# associated with before falling back to software classification. Two entries
69# are always reserved for the non-VLAN catch-all and promisc entries.
70#
71# Note: illumos MAC today only supports giving a single VLAN per MAC address
72# to hardware drivers anyway, so setting this higher is pointless until that
73# changes.
74#
75#ftbl_vlan_size_shift = 4;
76
77#
78# Interrupt and completion moderation.
79#
80#cqemod_period_usec = 50;
81#cqemod_count = <80% of cq_size>;
82#intrmod_period_usec = 10;
83
84#
85# Minimum packet size before we use a ddi_dma_bind_addr() rather than bcopy()
86# of the packet data. DMA binds are expensive and involve taking locks in the
87# PCI nexus driver, so it's seldom worth doing them for small packets.
88#
89#tx_bind_threshold = 2048;
90
91#
92# Interval between periodic double-checks of queue status against hardware
93# state. This is used to detect hardware stalls or errors, as well as guard
94# against driver bugs.
95#
96# If set to too high a frequency, checks may impact NIC performance. Can be
97# set to zero to disable periodic checking entirely.
98#
99#eq_check_interval_sec = 30;
100#cq_check_interval_sec = 300;
101#wq_check_interval_sec = 300;
102