freebsd-dev/sys
Hans Petter Selasky 1456d97c01 Optimize ibcore RoCE address handle creation from user-space.
Creating a UD address handle from user-space or from the kernel-space,
when the link layer is ethernet, requires resolving the remote L3
address into a L2 address. Doing this from the kernel is easy because
the required ARP(IPv4) and ND6(IPv6) address resolving APIs are readily
available. In userspace such an interface does not exist and kernel
help is required.

It should be noted that in an IP-based GID environment, the GID itself
does not contain all the information needed to resolve the destination
IP address. For example information like VLAN ID and SCOPE ID, is not
part of the GID and must be fetched from the GID attributes. Therefore
a source GID should always be referred to as a GID index. Instead of
going through various racy steps to obtain information about the
GID attributes from user-space, this is now all done by the kernel.

This patch optimises the L3 to L2 address resolving using the existing
create address handle uverbs interface, retrieving back the L2 address
as an additional user-space information structure.

This commit combines the following Linux upstream commits:

IB/core: Let create_ah return extended response to user
IB/core: Change ib_resolve_eth_dmac to use it in create AH
IB/mlx5: Make create/destroy_ah available to userspace
IB/mlx5: Use kernel driver to help userspace create ah
IB/mlx5: Report that device has udata response in create_ah

MFC after:	1 week
Sponsored by:	Mellanox Technologies
2018-03-05 14:34:52 +00:00
..
amd64 Move the new AMD-Vi IVHD [ACPI_IVRS_HARDWARE_NEW]definitions added in r329360 in contrib ACPI to local files till ACPI code adds new definitions reported by jkim. 2018-03-05 02:28:25 +00:00
arm Switch imx_gpio to attach at BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LATE. 2018-03-05 02:32:23 +00:00
arm64 Register each GICv3 ITS driver with a useful cross reference. We currently 2018-03-05 10:11:30 +00:00
bsm
cam Use bool instead of int for predicate functions relating to work 2018-02-23 16:06:54 +00:00
cddl add ZFS_ENTER protection to .zfs/snapshot vnode operations that need it 2018-02-27 14:08:54 +00:00
compat Properly wrap the BUILD_BUG() function macro in the LinuxKPI. 2018-03-04 19:42:50 +00:00
conf imcsmb(4): Intel integrated Memory Controller (iMC) SMBus controller driver 2018-03-03 01:53:51 +00:00
contrib Move the new AMD-Vi IVHD [ACPI_IVRS_HARDWARE_NEW]definitions added in r329360 in contrib ACPI to local files till ACPI code adds new definitions reported by jkim. 2018-03-05 02:28:25 +00:00
crypto Remove unused error return from API that cannot fail 2018-02-23 20:15:19 +00:00
ddb db_script_exec: use a saved script name when reporting commands executed 2018-03-04 13:27:21 +00:00
dev Optimize ibcore RoCE address handle creation from user-space. 2018-03-05 14:34:52 +00:00
dts Switch to mainstream DTS for Raspberry Pi-B and Pi-2. 2018-02-27 15:01:17 +00:00
fs sys/fuse: fix off by one error 2018-03-03 20:42:39 +00:00
gdb
geom g_label_ufs: Fix typo from r330264 2018-03-02 06:02:54 +00:00
gnu bwn(4): txpid2g/txpid5g[lh] are not defined after sromrev 7; the default 2018-02-13 17:43:54 +00:00
i386 Unify bulk free operations in several pmaps. 2018-03-04 20:53:20 +00:00
isa Add ISA PNP tables to ISA drivers. Fix a few incidental comments. 2018-01-29 00:22:30 +00:00
kern lockmgr: save on sleepq when cmpset fails 2018-03-05 00:30:07 +00:00
kgssapi kgssapi: Remove trivial deadcode 2018-02-14 00:12:03 +00:00
libkern iconv uses strlen directly on user supplied memory 2018-02-26 18:23:36 +00:00
mips Do not include float interfaces when using libsa. 2018-02-23 04:04:25 +00:00
modules Build iicbus/rtc8583 as a module. 2018-03-04 21:06:21 +00:00
net iflib: stop timer callout when stopping 2018-03-02 18:48:07 +00:00
net80211 net80211: sanitize input for ieee80211_output() 2017-12-30 00:40:34 +00:00
netgraph Correct pseudo misspelling in sys/ comments 2018-02-23 18:15:50 +00:00
netinet When checking the TCP fast cookie length, conststently also check 2018-02-27 22:12:38 +00:00
netinet6 Update the MTU in affected routes when IPv6 RA changes the MTU 2018-02-12 19:49:20 +00:00
netipsec Remove unused variables and sysctl declaration. 2018-02-19 12:20:51 +00:00
netpfil pf: Cope with overly large net.pf.states_hashsize 2018-02-25 08:56:44 +00:00
netsmb Unsign some values related to allocation. 2018-01-22 02:08:10 +00:00
nfs Modernize nfssvc(2) registartion. 2018-02-08 20:09:42 +00:00
nfsclient style: Remove remaining deprecated MALLOC/FREE macros 2018-01-25 22:25:13 +00:00
nfsserver
nlm Use syscall_helper_register() to register syscalls and initialize though 2018-02-10 01:09:22 +00:00
ofed Optimize ibcore RoCE address handle creation from user-space. 2018-03-05 14:34:52 +00:00
opencrypto Move per-operation data out of the csession structure. 2018-01-26 23:21:50 +00:00
powerpc Honor physical memory regions marked unavailable in the FDT, when present. 2018-03-03 02:06:48 +00:00
riscv Unify bulk free operations in several pmaps. 2018-03-04 20:53:20 +00:00
rpc Do pass removing some write-only variables from the kernel. 2017-12-25 04:48:39 +00:00
security mac_portacl(4): stop panicing INVARIANTS-enabled kernel by loading .ko 2018-02-25 23:10:13 +00:00
sparc64 Do not include float interfaces when using libsa. 2018-02-23 04:04:25 +00:00
sys Upgrade our copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 2018-03-04 17:06:37 +00:00
teken
tests
tools Avoid using \$. It's an unknown escape sequence. Some awks warn about 2018-01-28 05:13:08 +00:00
ufs This change is some refactoring of Mark Johnston's changes in r329375 2018-03-02 04:34:53 +00:00
vm Remove redundant test from r330410. 2018-03-04 21:15:31 +00:00
x86 Correct pseudo misspelling in sys/ comments 2018-02-23 18:15:50 +00:00
xdr
xen
Makefile