1.\" Copyright (c) 2020, Advanced Micro Devices Inc. 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions are met: 6.\" 7.\" 1. Redistributions of source code must retain the above copyright notice, 8.\" this list of conditions and the following disclaimer. 9.\" 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 14.\" 3. Neither the name of Advanced Micro Devices Inc., nor the names of its 15.\" contributors may be used to endorse or promote products derived from 16.\" this software without specific prior written permission. 17.\" 18.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 22.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28.\" POSSIBILITY OF SUCH DAMAGE. 29.\" 30.\" * Other names and brands may be claimed as the property of others. 31.\" 32.Dd January 24, 2021 33.Dt AXP 4 34.Os 35.Sh NAME 36.Nm axp 37.Nd "Advanced Micro Devices 10G Ethernet driver" 38.Sh SYNOPSIS 39To compile this driver into the kernel, 40place the following lines in your 41kernel configuration file: 42.Bd -ragged -offset indent 43.Cd "device iflib" 44.Cd "device axp" 45.Ed 46.Pp 47Alternatively, to load the driver as a 48module at boot time, place the following line in 49.Xr loader.conf 5 : 50.Bd -literal -offset indent 51if_axp_load="YES" 52.Ed 53.Sh DESCRIPTION 54The 55.Nm 56driver enables PCI-E based 10G Ethernet controller inbuilt in the 57AMD EPYC processors. 58.Pp 59The following features are supported. 60.Pp 61.Bl -bullet -compact 62.It 631G/10G SFP+ Link 64.It 65Jumbo frames (9000 Bytes) 66.It 67Transmit and Receive checksum offload 68.It 69TCP segmentation offload (TSO) 70.It 71VLAN tag insertion/extraction 72.It 73VLAN checksum offload 74.It 75VLAN TSO 76.It 77Receive side steering (RSS) 78.It 79IPV4 and IPV6 capable 80.It 81MSI-X interrupts 82.It 83Split header 84.El 85.Pp 86All the above mentioned features are enabled by default. 87.Pp 88For hardware related questions, please refer the documentation supplied 89along with AMD EPYC processors. 90.Sh SYSCTL VARIABLES 91The following variables are available as 92.Xr sysctl 8 93variables: 94.Bl -tag -width indent 95.It Va dev.ax.X.mac_stats 96Dumps the transmit and receive statistics counter values for the controller. 97This includes statistics specific to each transmit and receive queue. 98.It Va dev.ax.X.channels_info 99Dumps the permissible and default configured transmit and receive channel 100information. 101.It Va dev.ax.X.ringparam_info 102Dumps the permissible and default configured descriptor information for the 103transmit and receive queue. 104.It Va dev.ax.X.link_ksettings_info 105Dumps the current link setting like link mode, speed, duplex settings. 106.It Va dev.ax.X.pauseparam_info 107Dumps the current flow-control settings. 108.It Va dev.ax.X.coalesce_info 109Dumps the current interrupt coalescing settings. 110.It Va dev.ax.X.link_info 111Dumps the current state of the Link. 112.It Va dev.ax.X.drv_info 113Dumps the driver and controller firmware version information. 114.It Va dev.ax.X.YYYY_register 115.It Va dev.ax.X.YYYY_register_values 116Sysctl to dump a specific register from a specific block of the controller. 117YYYY specifies the block. 118The following blocks are supported. 119.Bl -bullet -compact 120.It 121xpcs 122.It 123xgmac 124.It 125xprop 126.It 127xi2c 128.El 129.Pp 130Set the offset of the register to the first variable, and then read the value 131of the register by reading the second variable. 132.It Va dev.ax.X.axgbe_debug_level 133Configure the log-level for the driver. 134Default is 0. 135Supports 0-3. 136.It Va dev.ax.X.single_fl 137This variable must be set before loading the driver, either via 138.Xr loader.conf 5 139or through the use of 140.Xr kenv 1 . 141This cannot be modified when driver is loaded. 142.Pp 143Setting this variable in 144.Xr loader.conf 5 145needs the system to be restarted to take effect. 146When using 147.Xr kenv 1 , 148use the wrapper variable 149.Va dev.ax.single_fl\&, 150which will configure all AMD interfaces with single freelist per receive queue. 151Default is 2 freelist per receive queue. 152.Pp 153This variable is to configure the interface when single freelist is needed. 154(For Eg. netmap). 155Basically, this will control the software behavior of how the receive 156descriptors are used. 157.Pp 158Setting this variable to 1, will use 1 Freelist per receive queue. 159.Pp 160Setting this variable to 0, will use 2 Freelist per receive queue. 161.Pp 162Based on the setting, the receive buffers are programmed accordingly on the 163received descriptors. 164.Pp 165By default, this variable will be set to 0, meaning the interfaces will be 166configured for regular data traffic (not netmap traffic). 167.It Va dev.ax.X.sph_enabled 168This variable must be set before loading the driver, either via 169.Xr loader.conf 5 170or through the use of 171.Xr kenv 1 . 172This cannot be modified when driver is loaded. 173.Pp 174Setting this variable in 175.Xr loader.conf 5 176needs the system to be restarted to take effect. 177When using 178.Xr kenv 1 , 179use the wrapper variable 180.Va dev.ax.sph_enable\&, 181which will configure(enable/disable) split header support in all 182AMD interfaces. 183.Pp 184This variable is to control enable/disable of the split header feature in 185the interface. 186.Pp 187Setting this variable to 1, will enable split header feature. 188.Pp 189Setting this variable to 0, will disable split header feature. 190.Pp 191By default, this variable will be set to 1, meaning the Split header support be 192enabled. 193.Pp 194NOTE: It is recommended to use this variable only when 195.Va single_fl\& 196is configured. 197Otherwise let it be default value. 198.El 199.Sh SEE ALSO 200.Xr arp 4 , 201.Xr iflib 4 , 202.Xr netmap 4 , 203.Xr vlan 4 , 204.Xr ifconfig 8 205.Sh HISTORY 206The 207.Nm 208device driver first appeared in 209.Fx 13.0 . 210.Pp 211Another version of the driver is already present in 212.Fx . 213This driver was named as "axgbe" earlier, which is renamed as "axa" now. 214This driver is for the ACPI based Ethernet controllers in the previous/older 215version of the hardware. 216This driver is authored by 217.Aq Mt andrew@FreeBSD.org . 218.Sh AUTHORS 219The 220.Nm 221device driver was written by 222.An Advanced Micro Devices Inc . 223.Pp 224For any issues and support requirements, email the details to 225.Aq Mt rajesh1.kumar@amd.com . 226