| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
selwakeup() is now done by the wake_up() family of functions.
MFC after: 1 week
Sponsored by: Mellanox Technologies
Notes:
svn path=/head/; revision=323350
|
|
|
|
|
|
|
|
| |
MFC after: 1 week
Sponsored by: Dell EMC Isilon
Notes:
svn path=/head/; revision=323280
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes an interopability issue between FreeBSD and non-FreeBSD
systems when the connection establishment is aborted. Refer to the
initial commit in Linux, drivers/infiniband/core/cm.c,
for a more detailed description.
Obtained from: Linux
MFC after: 3 days
Sponsored by: Mellanox Technologies
Notes:
svn path=/head/; revision=321986
|
|
|
|
|
|
|
|
| |
MFC after: 3 days
Sponsored by: Mellanox Technologies
Notes:
svn path=/head/; revision=321985
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
list.h includes a number of FreeBSD headers as a workaround for the
LIST_HEAD name collision. To reduce pollution, avoid including list.h
in commonly used headers when it is not explicitly needed.
Reviewed by: hselasky
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D11249
Notes:
svn path=/head/; revision=320072
|
|
|
|
|
|
|
| |
MFC after: 1 week
Notes:
svn path=/head/; revision=319952
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
o Separate fields of struct socket that belong to listening from
fields that belong to normal dataflow, and unionize them. This
shrinks the structure a bit.
- Take out selinfo's from the socket buffers into the socket. The
first reason is to support braindamaged scenario when a socket is
added to kevent(2) and then listen(2) is cast on it. The second
reason is that there is future plan to make socket buffers pluggable,
so that for a dataflow socket a socket buffer can be changed, and
in this case we also want to keep same selinfos through the lifetime
of a socket.
- Remove struct struct so_accf. Since now listening stuff no longer
affects struct socket size, just move its fields into listening part
of the union.
- Provide sol_upcall field and enforce that so_upcall_set() may be called
only on a dataflow socket, which has buffers, and for listening sockets
provide solisten_upcall_set().
o Remove ACCEPT_LOCK() global.
- Add a mutex to socket, to be used instead of socket buffer lock to lock
fields of struct socket that don't belong to a socket buffer.
- Allow to acquire two socket locks, but the first one must belong to a
listening socket.
- Make soref()/sorele() to use atomic(9). This allows in some situations
to do soref() without owning socket lock. There is place for improvement
here, it is possible to make sorele() also to lock optionally.
- Most protocols aren't touched by this change, except UNIX local sockets.
See below for more information.
o Reduce copy-and-paste in kernel modules that accept connections from
listening sockets: provide function solisten_dequeue(), and use it in
the following modules: ctl(4), iscsi(4), ng_btsocket(4), ng_ksocket(4),
infiniband, rpc.
o UNIX local sockets.
- Removal of ACCEPT_LOCK() global uncovered several races in the UNIX
local sockets. Most races exist around spawning a new socket, when we
are connecting to a local listening socket. To cover them, we need to
hold locks on both PCBs when spawning a third one. This means holding
them across sonewconn(). This creates a LOR between pcb locks and
unp_list_lock.
- To fix the new LOR, abandon the global unp_list_lock in favor of global
unp_link_lock. Indeed, separating these two locks didn't provide us any
extra parralelism in the UNIX sockets.
- Now call into uipc_attach() may happen with unp_link_lock hold if, we
are accepting, or without unp_link_lock in case if we are just creating
a socket.
- Another problem in UNIX sockets is that uipc_close() basicly did nothing
for a listening socket. The vnode remained opened for connections. This
is fixed by removing vnode in uipc_close(). Maybe the right way would be
to do it for all sockets (not only listening), simply move the vnode
teardown from uipc_detach() to uipc_close()?
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D9770
Notes:
svn path=/head/; revision=319722
|
|
|
|
|
|
|
| |
included via sys/pcpu.h.
Notes:
svn path=/head/; revision=317055
|
|
|
|
|
|
|
|
|
|
| |
the LinuxKPI.
MFC after: 1 week
Sponsored by: Mellanox Technologies
Notes:
svn path=/head/; revision=315714
|
|
|
|
| |
Notes:
svn path=/head/; revision=315672
|
|
|
|
|
|
|
|
|
|
|
| |
Support is implemented by mapping Linux's "struct net" into FreeBSD's
"struct vnet". Currently only vnet0 is supported by ibcore.
MFC after: 1 week
Sponsored by: Mellanox Technologies
Notes:
svn path=/head/; revision=315404
|
|
|
|
|
|
|
|
|
|
|
|
| |
Renumber cluase 4 to 3, per what everybody else did when BSD granted
them permission to remove clause 3. My insistance on keeping the same
numbering for legal reasons is too pedantic, so give up on that point.
Submitted by: Jan Schaumann <jschauma@stevens.edu>
Pull Request: https://github.com/freebsd/freebsd/pull/96
Notes:
svn path=/head/; revision=314436
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sockets representing the TCP endpoints for iWARP connections are
allocated by the ibcore module. Before this revision they were closed
either by the ibcore module or the iw_cxgbe hardware driver depending on
the state transitions during connection teardown. This is error prone
and there were cases where both iw_cxgbe and ibcore closed the socket
leading to double-free panics. The fix is to let ibcore close the
sockets it creates and never do it in the driver.
- Use sodisconnect instead of soclose (preceded by solinger = 0) in the
driver to tear down an RDMA connection abruptly. This does what's
intended without releasing the socket's fd reference.
- Close the socket in ibcore when the iWARP iw_cm_id is destroyed. This
works for all kinds of sockets: clients that initiate connections,
listeners, and sockets accepted off of listeners.
Reviewed by: Steve Wise @ Open Grid Computing, hselasky@
MFC after: 3 days
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D9796
Notes:
svn path=/head/; revision=314400
|
|
|
|
|
|
|
|
|
|
| |
iw_cxgbe sets ib_device->dma_device to NULL (since r311880).
Reviewed by: hselasky@
Sponsored by: Chelsio Communications
Notes:
svn path=/head/; revision=314131
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
like other PCI network drivers. The sys/ofed directory is now mainly
reserved for generic infiniband code, with exception of the mthca driver.
- Add new manual page, mlx4en(4), describing how to configure and load
mlx4en.
- All relevant driver C-files are now prefixed mlx4, mlx4_en and
mlx4_ib respectivly to avoid object filename collisions when compiling
the kernel. This also fixes an issue with proper dependency file
generation for the C-files in question.
- Device mlxen is now device mlx4en and depends on device mlx4, see
mlx4en(4). Only the network device name remains unchanged.
- The mlx4 and mlx4en modules are now built by default on i386 and
amd64 targets. Only building the mlx4ib module depends on
WITH_OFED=YES .
Sponsored by: Mellanox Technologies
Notes:
svn path=/head/; revision=306486
|
|
|
|
|
|
|
|
|
| |
Found by: Ben RUBSON <ben.rubson@gmail.com>
Sponsored by: Mellanox Technologies
MFC after: 1 week
Notes:
svn path=/head/; revision=306454
|
|
|
|
|
|
|
|
|
| |
connection manager.
Sponsored by: Chelsio Communications
Notes:
svn path=/head/; revision=304838
|
|
|
|
|
|
|
|
|
|
|
|
| |
by returning success on FIONBIO and FIOASYNC IOCTLs. The actual flags
handling is done by the kern_ioctl() function.
Reported by: Alex Bowden <alex.bowden@outlook.com>
Sponsored by: Mellanox Technologies
MFC after: 1 week
Notes:
svn path=/head/; revision=304342
|
|
|
|
|
|
|
|
| |
MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
Notes:
svn path=/head/; revision=303786
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In pathological situations where the master subnet manager becomes
unresponsive for an extended period, we may otherwise end up queuing all
of the system's mbufs while waiting for a response to a path record lookup.
This addresses the same issue as commit 1e85b806f9 in Linux.
Reviewed by: cem, ngie
MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division
Notes:
svn path=/head/; revision=303646
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is an optimization that improves IB connection setup times.
Discussed with: hselasky
Obtained from: Linux
MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division
Notes:
svn path=/head/; revision=303636
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This addresses a regression from an earlier upstream change which caused
cma_acquire_dev() to bypass the port GID cache and instead query the HCA
for each entry in its GID table. These queries can become extremely slow on
multiport devices, which has a negative impact on connection setup times.
Discussed with: hselasky
Obtained from: Linux
MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division
Notes:
svn path=/head/; revision=303635
|
|
|
|
|
|
|
|
|
|
| |
This is the ordering documented by rdma_destroy_qp(). Also add a useful
KASSERT to sdp_pcbfree().
Sponsored by: EMC / Isilon Storage Division
Notes:
svn path=/head/; revision=303513
|
|
|
|
|
|
|
|
|
|
| |
SDP transmit and receive rings are always created in a sleepable context,
so we can use M_WAITOK and remove error checks.
Sponsored by: EMC / Isilon Storage Division
Notes:
svn path=/head/; revision=303512
|
|
|
|
|
|
|
| |
Sponsored by: EMC / Isilon Storage Division
Notes:
svn path=/head/; revision=303511
|
|
|
|
|
|
|
| |
Sponsored by: EMC / Isilon Storage Division
Notes:
svn path=/head/; revision=303509
|
|
|
|
| |
Notes:
svn path=/head/; revision=303508
|
|
|
|
|
|
|
|
|
|
|
| |
The generic socket may be detached from the PCB before the completion
queue is drained and destroyed, so this change closes a race condition
in connection teardown.
Sponsored by: EMC / Isilon Storage Division
Notes:
svn path=/head/; revision=303507
|
|
|
|
|
|
|
| |
Sponsored by: EMC / Isilon Storage Division
Notes:
svn path=/head/; revision=303506
|
|
|
|
|
|
|
|
|
| |
This is simpler than the hand-rolled queue, and fixes a use-after-free.
Sponsored by: EMC / Isilon Storage Division
Notes:
svn path=/head/; revision=303505
|
|
|
|
|
|
|
|
|
|
| |
They aren't useful here, and Linux seems to have largely abandoned SDP
anyway.
Sponsored by: EMC / Isilon Storage Division
Notes:
svn path=/head/; revision=303504
|
|
|
|
|
|
|
|
|
|
| |
repeatedly in a tight loop.
Approved by: re (gjb@)
Obtained from: hselasky@ (part of larger changes in D5791)
Notes:
svn path=/head/; revision=301896
|
|
|
|
|
|
|
|
|
| |
Reviewed by: hps, erj, tuexen
Sponsored by: Microsoft OSTC
Differential Revision: https://reviews.freebsd.org/D6688
Notes:
svn path=/head/; revision=301538
|
|
|
|
| |
Notes:
svn path=/head/; revision=301229
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
tunable SYSCTL's. Linux module parameters are associated with the
module they belong to. FreeBSD does not share this concept of a parent
module. Instead add macros which define the prefix to use for the
module parameters in the LinuxKPI consumers.
While at it convert all "bool" LinuxKPI module parameters to "byte"
type, because we don't have a "bool" type of SYSCTL in FreeBSD.
Sponsored by: Mellanox Technologies
MFC after: 1 week
Notes:
svn path=/head/; revision=300676
|
|
|
|
|
|
|
|
|
|
| |
(one manual change to fix grammar)
Confirmed With: db
Approved by: secteam (not really, but this is a comment typo fix)
Notes:
svn path=/head/; revision=300050
|
|
|
|
|
|
|
|
|
| |
No functional change.
Reviewed by: hselasky
Notes:
svn path=/head/; revision=299181
|
|
|
|
|
|
|
|
|
| |
No functional change.
Reviewed by: hselasky
Notes:
svn path=/head/; revision=299179
|
|
|
|
| |
Notes:
svn path=/head/; revision=298543
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Added check that the SCOPE ID is only restored for IPv6 linklocal
addresses.
- Changes made by r237263 in the "cma_bind_addr()" function did not
check if the socket address was of type IPv6 and used the IPv4
socket address for IPv6 addresses. This caused the function to
fail. Fixed this.
- In the "rdma_gid2ip()" function and some other places the "sin6_len"
and "sin6_scope_id" fields were not set for IPv6 socket
addresses. Fixed this.
- The scope ID is not stored as part of the GID entries and must be
passed as an argument to "rdma_gid2ip()".
- Added new method to "struct ib_device" which returns a pointer to
the network interface which belongs to the given infiniband
device. This is needed to be able to get the scope ID for IPv6
addresses via the associated ethernet interface.
- Added convenience function, "rdma_get_ipv6_scope_id()", to get the
scope ID for IPv6 addresses.
- Implemented new "get_netdev" method for mlx4ib. Other IB controller
drivers which want to support IPv6 addresses needs to implement this
aswell.
- Bumped the FreeBSD version due to changing "struct ib_device".
Sponsored by: Mellanox Technologies
MFC after: 1 week
Notes:
svn path=/head/; revision=298486
|
|
|
|
|
|
|
|
|
|
|
| |
analysis tools.
Suggested by: ngie@
Sponsored by: Mellanox Technologies
MFC after: 1 week
Notes:
svn path=/head/; revision=298459
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes a kernel panic when using IPoIB with VIMAGE and infiniband.
PR: 208957
Sponsored by: Mellanox Technologies
Tested by: Justin Clift <justin@postgresql.org>
MFC after: 1 week
Notes:
svn path=/head/; revision=298458
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
IPv6 addresses has a scope ID which sometimes is stored in the
"sin6_scope_id" field of "struct sockaddr_in6" and sometimes as part
of the IPv6 address itself depending on the context. If the scope ID
is not in the expected location, the IPv6 address lookups in the
so-called GID table will fail. Some code factoring has been made to
achieve a clean exit of the "addr_resolve" function via a common
"done" label.
Sponsored by: Mellanox Technologies
Submitted by: Shani Michaeli <shanim@mellanox.com>
MFC after: 1 week
Notes:
svn path=/head/; revision=298419
|
|
|
|
|
|
|
|
|
|
| |
Remove some dead code while at it.
Sponsored by: Mellanox Technologies
MFC after: 1 week
Notes:
svn path=/head/; revision=298412
|
|
|
|
|
|
|
|
| |
Sponsored by: Mellanox Technologies
MFC after: 1 week
Notes:
svn path=/head/; revision=298400
|
|
|
|
|
|
|
|
|
|
| |
an error code on failure. Refer to man 9 priv_check .
Sponsored by: Mellanox Technologies
MFC after: 1 week
Notes:
svn path=/head/; revision=298342
|
|
|
|
|
|
|
|
|
|
| |
These are mostly cosmetical, no functional change.
Found with devel/coccinelle.
Reviewed by: hselasky
Notes:
svn path=/head/; revision=298046
|
|
|
|
|
|
|
|
| |
Sponsored by: Mellanox Technologies
MFC after: 1 week
Notes:
svn path=/head/; revision=297968
|
|
|
|
|
|
|
|
|
|
|
|
| |
The FreeBSD's TCP/IP stack assumes that the IP-header is 32-bits aligned
when decoding it. Else unaligned 32-bit memory access can happen, which
not all processor architectures support.
Sponsored by: Mellanox Technologies
MFC after: 1 week
Notes:
svn path=/head/; revision=297967
|
|
|
|
|
|
|
|
|
|
|
|
| |
When downing a mlxen network adapter we need to check the port_up variable
to ensure we don't continue to transmit data or restart timers which can
reside in freed memory.
Sponsored by: Mellanox Technologies
MFC after: 1 week
Notes:
svn path=/head/; revision=297966
|