]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC 273806,289103,289201,289338,289578,293185,294474,294610,297124,297368,
authorjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Thu, 1 Dec 2016 23:38:52 +0000 (23:38 +0000)
committerjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Thu, 1 Dec 2016 23:38:52 +0000 (23:38 +0000)
commitaf8b43c3b4fe5e2be08570045f3b55528eb9418c
treeaa5a73d91080bd971fb7ede5336350a63319eb2a
parentc72be8e57ed3279e709e8f76354d55f9a5c3e0dd
MFC 273806,289103,289201,289338,289578,293185,294474,294610,297124,297368,
297406,300875,300888,301158,301896,301897,304838:

Pull in most of the Chelsio and iWARP related changes from stable/11 into
stable/10.  A few changes from 278886 (OFED 1.2) were also included though
the full merge is not:
- The find_gid_port() function in infiband/core/cma.c.
- Addition of the 'ord' and 'ird' fields to 'struct iw_cm_event'.

273806:
Userspace library for Chelsio's Terminator 5 based iWARP RNICs (pretty
much every T5 card that does _not_ have "-SO" in its name is RDMA
capable).

This plugs into the OFED verbs framework and allows userspace RDMA
applications to work over T5 RNICs.  Tested with rping.

289103:
iw_cxgbe: fix for page fault in cm_close_handler().

This is roughly the iw_cxgbe equivalent of
https://github.com/torvalds/linux/commit/be13b2dff8c4e41846477b22cc5c164ea5a6ac2e
-----------------
RDMA/cxgb4: Connect_request_upcall fixes

When processing an MPA Start Request, if the listening endpoint is
DEAD, then abort the connection.

If the IWCM returns an error, then we must abort the connection and
release resources.  Also abort_connection() should not post a CLOSE
event, so clean that up too.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
-----------------

289201:
iw_cxgbe: MPA v2 is always available.

289338:
iw_cxgbe: use correct RFC number.

289578:
Merge LinuxKPI changes from DragonflyBSD:
- Define the kref structure identical to the one found in Linux.
- Update clients referring inside the kref structure.
- Implement kref_sub() for FreeBSD.

293185:
iw_cxgbe: Shut down the socket but do not close the fd in case of error.
The fd is closed later in this case.  This fixes a "SS_NOFDREF on enter"
panic.

294474:
iw_cxgbe: fix a couple of problems int the RDMA_TERMINATE handler.

a) Look for the CPL in the payload buffer instead of the descriptor.
b) Retrieve the socket associated with the tid with the inpcb lock held.

294610:
Fix for iWARP servers that listen on INADDR_ANY.

The iWARP Connection Manager (CM) on FreeBSD creates a TCP socket to
represent an iWARP endpoint when the connection is over TCP. For
servers the current approach is to invoke create_listen callback for
each iWARP RNIC registered with the CM. This doesn't work too well for
INADDR_ANY because a listen on any TCP socket already notifies all
hardware TOEs/RNICs of the new listener. This patch fixes the server
side of things for FreeBSD. We've tried to keep all these modifications
in the iWARP/TCP specific parts of the OFED infrastructure as much as
possible.

297124:
iw_cxgbe/libcxgb4: Pull in many applicable fixes from the upstream Linux
iWARP driver and userspace library to the FreeBSD iw_cxgbe and libcxgb4.

This commit includes internal changesets 6785 8111 8149 8478 8617 8648
8650 9110 9143 9440 9511 9894 10164 10261 10450 10980 10981 10982 11730
11792 12218 12220 12222 12223 12225 12226 12227 12228 12229 12654.

297368:
cxgbe/iw_cxgbe: Fix for stray "start_ep_timer timer already started!"
messages.

297406:
Remove unnecessary dequeue_mutex (added in r294610) from the iWARP
connection manager.  Examining so_comp without synchronization with
iw_so_event_handler is a harmless race.

300875:
iw_cxgbe: Use vmem(9) to manage PBL and RQT allocations.

300888:
iw_cxgbe: Plug a lock leak in process_mpa_request().

If the parent is DEAD or connect_request_upcall() fails, the parent
mutex is left locked.  This leads to a hang when process_mpa_request()
is called again for another child of the listening endpoint.

301158:
iw_cxgbe: Fix panic that occurs when c4iw_ev_handler tries to acquire
comp_handler_lock but c4iw_destroy_cq has already freed the CQ memory
(which is where the lock resides).

301896:
Fix bug in iwcm that caused a panic in iw_cm_wq when krping is run
repeatedly in a tight loop.

301897:
iw_cxgbe: Make sure that send_abort results in a TCP RST and not a FIN.
Release the hold on ep->com immediately after sending the RST.  This
fixes a bug that sometimes leaves userspace iWARP tools hung when the
user presses ^C.

304838:
Do not free an uninitialized pointer on soaccept failure in the iWARP
connection manager.

Submitted by: Krishnamraju Eraparaju @ Chelsio (original patch)
Sponsored by: Chelsio Communications

git-svn-id: svn://svn.freebsd.org/base/stable/10@309378 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
40 files changed:
contrib/ofed/libcxgb4/AUTHORS [new file with mode: 0644]
contrib/ofed/libcxgb4/COPYING [new file with mode: 0644]
contrib/ofed/libcxgb4/ChangeLog [new file with mode: 0644]
contrib/ofed/libcxgb4/README [new file with mode: 0644]
contrib/ofed/libcxgb4/cxgb4.driver [new file with mode: 0644]
contrib/ofed/libcxgb4/src/cq.c [new file with mode: 0644]
contrib/ofed/libcxgb4/src/cxgb4-abi.h [new file with mode: 0644]
contrib/ofed/libcxgb4/src/cxgb4.map [new file with mode: 0644]
contrib/ofed/libcxgb4/src/dev.c [new file with mode: 0644]
contrib/ofed/libcxgb4/src/libcxgb4.h [new file with mode: 0644]
contrib/ofed/libcxgb4/src/qp.c [new file with mode: 0644]
contrib/ofed/libcxgb4/src/queue.h [new file with mode: 0644]
contrib/ofed/libcxgb4/src/t4.h [new file with mode: 0644]
contrib/ofed/libcxgb4/src/t4_chip_type.h [new file with mode: 0644]
contrib/ofed/libcxgb4/src/t4_pci_id_tbl.h [new file with mode: 0644]
contrib/ofed/libcxgb4/src/t4_regs.h [new file with mode: 0644]
contrib/ofed/libcxgb4/src/t4fw_interface.h [new file with mode: 0644]
contrib/ofed/libcxgb4/src/verbs.c [new file with mode: 0644]
contrib/ofed/usr.lib/Makefile
contrib/ofed/usr.lib/libcxgb4/Makefile [new file with mode: 0644]
contrib/ofed/usr.lib/libcxgb4/config.h [new file with mode: 0644]
sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.h
sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c
sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.h
sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c
sys/dev/cxgbe/iw_cxgbe/cm.c
sys/dev/cxgbe/iw_cxgbe/cq.c
sys/dev/cxgbe/iw_cxgbe/ev.c
sys/dev/cxgbe/iw_cxgbe/iw_cxgbe.h
sys/dev/cxgbe/iw_cxgbe/mem.c
sys/dev/cxgbe/iw_cxgbe/provider.c
sys/dev/cxgbe/iw_cxgbe/qp.c
sys/dev/cxgbe/iw_cxgbe/resource.c
sys/dev/cxgbe/iw_cxgbe/t4.h
sys/dev/cxgbe/iw_cxgbe/user.h
sys/ofed/drivers/infiniband/core/cma.c
sys/ofed/drivers/infiniband/core/iwcm.c
sys/ofed/include/linux/kref.h
sys/ofed/include/rdma/iw_cm.h
sys/ofed/include/rdma/rdma_cm.h