MFC r291072, r291168 and r291169:

Add the mlx5 and mlx5en modules to the i386 and amd64 kernel builds by
default and add a manual page for mlx5en. The mlx5 module contains
shared code for both infiniband and ethernet. The mlx5en module
contains specific code for ethernet functionality only. A mlx5ib
module is in the works for infiniband support.

Supported hardware:
- ConnectX-4: 10/20/25/40/50/56/100Gb/s speeds.
- ConnectX-4 LX: 10/25/40/50Gb/s speeds (low power consumption)

Refer to the mlx5en(4) manual page for a comprehensive list.

The team porting the mlx5 driver(s) to FreeBSD:
- Hans Petter Selasky <hselasky@freebsd.org>
- Oded Shanoon <odeds@mellanox.com>
- Meny Yossefi <menyy@mellanox.com>
- Shany Michaely <shanim@mellanox.com>
- Shahar Klein <shahark@mellanox.com>
- Daria Genzel <dariaz@mellanox.com>
- Mark Bloch <markb@mellanox.com>

Differential Revision:	https://reviews.freebsd.org/D4163
Sponsored by:	Mellanox Technologies
This commit is contained in:
hselasky 2015-11-23 13:30:13 +00:00
parent 46bf441574
commit d375c5c34e
6 changed files with 203 additions and 3 deletions

View File

@ -260,6 +260,7 @@ MAN= aac.4 \
mk48txx.4 \
mld.4 \
mlx.4 \
mlx5en.4 \
mly.4 \
mmc.4 \
mmcsd.4 \
@ -636,6 +637,7 @@ MLINKS+=lp.4 plip.4
MLINKS+=malo.4 if_malo.4
MLINKS+=md.4 vn.4
MLINKS+=mem.4 kmem.4
MLINKS+=mlx5en.4 mce.4
MLINKS+=mn.4 if_mn.4
MLINKS+=mos.4 if_mos.4
MLINKS+=msk.4 if_msk.4

124
share/man/man4/mlx5en.4 Normal file
View File

@ -0,0 +1,124 @@
.\" Copyright (c) 2015 Mellanox Technologies
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS `AS IS' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.\"
.Dd November 22, 2015
.Dt mlx5en 4
.Os
.Sh NAME
.Nm mlx5en
.Nd "Mellanox ConnectX-4 and ConnectX-4 LX based 100Gb, 50Gb, 40Gb, 25Gb and 10Gb Ethernet adapter driver"
.Sh SYNOPSIS
To compile this driver into the kernel,
place the following lines in your
kernel configuration file:
.Bd -ragged -offset indent
.Cd "options COMPAT_LINUXKPI"
.Cd "device mlx5"
.Cd "device mlx5en"
.Ed
.Pp
To load the driver as a
module at boot time, place the following lines in
.Xr loader.conf 5 :
.Bd -literal -offset indent
mlx5en_load="YES"
.Ed
.Sh DESCRIPTION
The
.Nm
driver provides support for PCI Express Ethernet adapters based on
ConnectX-4 and ConnectX-4 LX.
The driver supports Jumbo Frames, Transmit/Receive checksum offload,
TCP segmentation offload (TSO), Large Receive Offload (LRO),
HW Large Receive Offload (HW LRO), VLAN tag insertion/extraction,
VLAN checksum offload, VLAN TSO, and Receive Side Steering (RSS).
.br
The network interface is named mce.
.br
For further hardware information and questions related to hardware
requirements, see
.Pa http://www.mellanox.com/ .
.Pp
For more information on configuring this device, see
.Xr ifconfig 8 .
.Sh HARDWARE
The
.Nm
driver supports 100Gb, 50Gb, 40Gb, 25Gb and 10Gb Ethernet adapters.
ConnectX-4 supports:10/20/25/40/50/56/100Gb/s speeds.
ConnectX-4 LX supports:10/25/40/50Gb/s speeds (and reduced power consumption) :
.Pp
.Bl -bullet -compact
.It
Mellanox MCX455A-ECAT
.It
Mellanox MCX456A-ECAT
.It
Mellanox MCX415A-CCAT
.It
Mellanox MCX416A-CCAT
.It
Mellanox MCX455A-FCAT
.It
Mellanox MCX456A-FCAT
.It
Mellanox MCX415A-BCAT
.It
Mellanox MCX416A-BCAT
.It
Mellanox MCX4131A-GCAT
.It
Mellanox MCX4131A-BCAT
.It
Mellanox MCX4121A-ACAT
.It
Mellanox MCX4111A-ACAT
.It
Mellanox MCX4121A-XCAT
.It
Mellanox MCX4111A-XCAT
.El
.Sh SUPPORT
For general information and support,
go to the Mellanox support website at:
.Pa http://www.mellanox.com/ .
.Pp
If an issue is identified with this driver with a supported adapter,
email all the specific information related to the issue to
.Aq Mt freebsd-drivers@mellanox.com .
.Sh SEE ALSO
.Xr ifconfig 8
.Sh HISTORY
The
.Nm
device driver first appeared in
.Fx 11.0 .
.Sh AUTHORS
.An -nosplit
The
.Nm
driver was written by
.An Mellanox Technologies <freebsd-drivers@mellanox.com> .

View File

@ -351,6 +351,9 @@ options COMPAT_FREEBSD6
# Enable FreeBSD7 compatibility syscalls
options COMPAT_FREEBSD7
# Enable Linux Kernel Programming Interface
#options COMPAT_LINUXKPI
#
# These three options provide support for System V Interface
# Definition-style interprocess communication, in the form of shared
@ -1953,6 +1956,8 @@ device xmphy # XaQti XMAC II
# 88E8062, 88E8035, 88E8036, 88E8038, 88E8050, 88E8052, 88E8053,
# 88E8055, 88E8056 and D-Link 560T/550SX.
# lmc: Support for the LMC/SBE wide-area network interface cards.
# mlx5: Mellanox ConnectX-4 and ConnectX-4 LX IB and Eth shared code module.
# mlx5en:Mellanox ConnectX-4 and ConnectX-4 LX PCIe Ethernet adapters.
# my: Myson Fast Ethernet (MTD80X, MTD89X)
# nge: Support for PCI gigabit ethernet adapters based on the National
# Semiconductor DP83820 and DP83821 chipset. This includes the
@ -2071,6 +2076,8 @@ device gem # Apple GMAC/Sun ERI/Sun GEM
device hme # Sun HME (Happy Meal Ethernet)
device jme # JMicron JMC250 Gigabit/JMC260 Fast Ethernet
device lge # Level 1 LXT1001 gigabit Ethernet
#device mlx5 # Shared code module between IB and Ethernet
#device mlx5en # Mellanox ConnectX-4 and ConnectX-4 LX
device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet
device my # Myson Fast Ethernet (MTD80X, MTD89X)
device nge # NatSemi DP83820 gigabit Ethernet

View File

@ -3639,11 +3639,11 @@ nlm/nlm_prot_xdr.c optional nfslockd | nfsd
nlm/sm_inter_xdr.c optional nfslockd | nfsd
# OpenFabrics Enterprise Distribution (Infiniband)
ofed/include/linux/linux_compat.c optional ofed \
ofed/include/linux/linux_compat.c optional ofed | compat_linuxkpi \
no-depend compile-with "${OFED_C}"
ofed/include/linux/linux_idr.c optional ofed \
ofed/include/linux/linux_idr.c optional ofed | compat_linuxkpi \
no-depend compile-with "${OFED_C}"
ofed/include/linux/linux_radix.c optional ofed \
ofed/include/linux/linux_radix.c optional ofed | compat_linuxkpi \
no-depend compile-with "${OFED_C}"
ofed/drivers/infiniband/core/addr.c optional ofed \
no-depend \
@ -3890,6 +3890,60 @@ ofed/drivers/net/mlx4/en_tx.c optional mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
dev/mlx5/mlx5_core/mlx5_alloc.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_cmd.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_cq.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_eq.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_flow_table.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_fw.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_health.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_mad.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_main.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_mcg.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_mr.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_pagealloc.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_pd.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_port.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_qp.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_srq.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_transobj.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_uar.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_vport.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_wq.c optional mlx5 pci \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_en/mlx5_en_ethtool.c optional mlx5en pci inet inet6 \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_en/mlx5_en_main.c optional mlx5en pci inet inet6 \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_en/mlx5_en_tx.c optional mlx5en pci inet inet6 \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_en/mlx5_en_flow_table.c optional mlx5en pci inet inet6 \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_en/mlx5_en_rx.c optional mlx5en pci inet inet6 \
no-depend compile-with "${OFED_C}"
dev/mlx5/mlx5_en/mlx5_en_txrx.c optional mlx5en pci inet inet6 \
no-depend compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_allocator.c optional mthca \
no-depend compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_av.c optional mthca \

View File

@ -83,6 +83,7 @@ COMPAT_FREEBSD4 opt_compat.h
COMPAT_FREEBSD5 opt_compat.h
COMPAT_FREEBSD6 opt_compat.h
COMPAT_FREEBSD7 opt_compat.h
COMPAT_LINUXKPI opt_compat.h
COMPILING_LINT opt_global.h
COMPRESS_USER_CORES opt_core.h
CY_PCI_FASTINTR

View File

@ -220,6 +220,8 @@ SUBDIR= \
${_mlx4} \
${_mlx4ib} \
${_mlxen} \
${_mlx5} \
${_mlx5en} \
${_mly} \
mmc \
mmcsd \
@ -545,6 +547,11 @@ _mlx4ib= mlx4ib
_mlxen= mlxen
_mthca= mthca
.endif
_mlx5= mlx5
.if (${MK_INET_SUPPORT} != "no" && ${MK_INET6_SUPPORT} != "no") || \
defined(ALL_MODULES)
_mlx5en= mlx5en
.endif
_ncv= ncv
_ndis= ndis
_nsp= nsp
@ -749,6 +756,11 @@ _mlx4ib= mlx4ib
_mlxen= mlxen
_mthca= mthca
.endif
_mlx5= mlx5
.if (${MK_INET_SUPPORT} != "no" && ${MK_INET6_SUPPORT} != "no") || \
defined(ALL_MODULES)
_mlx5en= mlx5en
.endif
_ndis= ndis
_nfe= nfe
_ntb= ntb