30 May, 2018
1 commit
-
[ Upstream commit 2be922f31606f114119f48de3207d122a90e7357 ]
The CONFIRM LINK reply message must contain the link_id sent
by the server. And set the link_id explicitly when
initializing the link.Signed-off-by: Karsten Graul
Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller
Signed-off-by: Sasha Levin
Signed-off-by: Greg Kroah-Hartman
14 Dec, 2017
1 commit
-
[ Upstream commit 4e1061f4a2bba1669c7297455c73ddafbebf2b12 ]
Commit 3e034725c0d8 ("net/smc: common functions for RMBs and send buffers")
merged handling of SMC receive and send buffers. It introduced sk_buf_size
as merged start value for size determination. But since sk_buf_size is not
used at all, sk_sndbuf is erroneously used as start for rmb creation.
This patch makes sure, sk_buf_size is really used as intended, and
sk_rcvbuf is used as start value for rmb creation.Fixes: 3e034725c0d8 ("net/smc: common functions for RMBs and send buffers")
Signed-off-by: Ursula Braun
Reviewed-by: Hans Wippel
Signed-off-by: David S. Miller
Signed-off-by: Sasha Levin
Signed-off-by: Greg Kroah-Hartman
02 Nov, 2017
1 commit
-
Many source files in the tree are missing licensing information, which
makes it harder for compliance tools to determine the correct license.By default all files without license information are under the default
license of the kernel, which is GPL version 2.Update the files which contain no license information with the 'GPL-2.0'
SPDX license identifier. The SPDX identifier is a legally binding
shorthand, which can be used instead of the full boiler plate text.This patch is based on work done by Thomas Gleixner and Kate Stewart and
Philippe Ombredanne.How this work was done:
Patches were generated and checked against linux-4.14-rc6 for a subset of
the use cases:
- file had no licensing information it it.
- file was a */uapi/* one with no licensing information in it,
- file was a */uapi/* one with existing licensing information,Further patches will be generated in subsequent months to fix up cases
where non-standard license headers were used, and references to license
had to be inferred by heuristics based on keywords.The analysis to determine which SPDX License Identifier to be applied to
a file was done in a spreadsheet of side by side results from of the
output of two independent scanners (ScanCode & Windriver) producing SPDX
tag:value files created by Philippe Ombredanne. Philippe prepared the
base worksheet, and did an initial spot review of a few 1000 files.The 4.13 kernel was the starting point of the analysis with 60,537 files
assessed. Kate Stewart did a file by file comparison of the scanner
results in the spreadsheet to determine which SPDX license identifier(s)
to be applied to the file. She confirmed any determination that was not
immediately clear with lawyers working with the Linux Foundation.Criteria used to select files for SPDX license identifier tagging was:
- Files considered eligible had to be source code files.
- Make and config files were included as candidates if they contained >5
lines of source
- File already had some variant of a license header in it (even if
Reviewed-by: Philippe Ombredanne
Reviewed-by: Thomas Gleixner
Signed-off-by: Greg Kroah-Hartman
22 Sep, 2017
1 commit
-
Client link group creation always follows the server linkgroup creation.
If peer creates a new server link group, client has to create a new
client link group. If peer reuses a server link group for a new
connection, client has to reuse its client link group as well. This
patch introduces a longer delay for client link group removal to make
sure this link group still exists, once the peer decides to reuse a
server link group. This avoids out-of-sync conditions for link groups.
If already scheduled, modify the delay.Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller
30 Jul, 2017
8 commits
-
Usage of send buffer "sndbuf" is synced
(a) before filling sndbuf for cpu access
(b) after filling sndbuf for device accessUsage of receive buffer "RMB" is synced
(a) before reading RMB content for cpu access
(b) after reading RMB content for device accessSigned-off-by: Ursula Braun
Signed-off-by: David S. Miller -
Split function __smc_buf_create() for better readability.
Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller -
Creation and deletion of SMC receive and send buffers shares a high
amount of common code . This patch introduces common functions to get
rid of duplicate code.Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller -
SMC send buffers are processed the same way as RMBs. Since RMBs have
been converted to sg-logic, do the same for send buffers.Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller -
A memory region created for a new RMB must be registered explicitly,
before the peer can make use of it for remote DMA transfer.Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller -
SMC currently uses the unsafe_global_rkey of the protection domain,
which exposes all memory for remote reads and writes once a connection
is established. This patch introduces separate memory regions with
separate rkeys for every RMB. Now the unsafe_global_rkey of the
protection domain is no longer needed.Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller -
The follow-on patch makes use of ib_map_mr_sg() when introducing
separate memory regions for RMBs. This function is based on
scatterlists; thus this patch introduces scatterlists for RMBs.Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller -
Initiate the coming rework of SMC buffer handling with this
small code cleanup. No functional changes here.Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller
17 May, 2017
1 commit
-
Currently, SMC enables remote access to physical memory when a user
has successfully configured and established an SMC-connection until ten
minutes after the last SMC connection is closed. Because this is considered
a security risk, drivers are supposed to use IB_PD_UNSAFE_GLOBAL_RKEY in
such a case.This patch changes the current SMC code to use IB_PD_UNSAFE_GLOBAL_RKEY.
This improves user awareness, but does not remove the security risk itself.Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller
12 Apr, 2017
1 commit
-
Several state changes occur during SMC socket closing. Currently
state changes triggered locally occur in process context with
lock_sock() taken while state changes triggered by peer occur in
tasklet context with bh_lock_sock() taken. bh_lock_sock() does not
wait till a lock_sock(() task in process context is finished. This
may lead to races in socket state transitions resulting in dangling
SMC-sockets, or it may lead to duplicate SMC socket freeing.
This patch introduces a closing worker to run all state changes under
lock_sock().Signed-off-by: Ursula Braun
Reviewed-by: Thomas Richter
Reported-by: Dave Jones
Signed-off-by: David S. Miller
31 Jan, 2017
1 commit
-
Say we got really unlucky and these failed on the last iteration, then
it could lead to a use after free bug.Fixes: cd6851f30386 ("smc: remote memory buffers (RMBs)")
Signed-off-by: Dan Carpenter
Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller
10 Jan, 2017
8 commits
-
smc_shutdown() and smc_release() handling
delayed linkgroup cleanup for linkgroups without connectionsSigned-off-by: Ursula Braun
Signed-off-by: David S. Miller -
move RMBE data into user space buffer and update managing cursors
Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller -
send and receive CDC messages (via IB message send and CQE)
Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller -
send and receive LLC messages CONFIRM_LINK (via IB message send and CQE)
Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller -
Prepare the link for RDMA transport:
Create a queue pair (QP) and move it into the state Ready-To-Receive (RTR).Signed-off-by: Ursula Braun
Signed-off-by: David S. Miller -
The base containers for RDMA transport are work requests and completion
queue entries processed through Infiniband verbs:
* allocate and initialize these areas
* map these areas to DMA
* implement the basic communication consisting of work request posting
and receival of completion queue eventsSigned-off-by: Ursula Braun
Signed-off-by: David S. Miller -
* allocate data RMB memory for sending and receiving
* size depends on the maximum socket send and receive buffers
* allocated RMBs are kept during life time of the owning link group
* map the allocated RMBs to DMASigned-off-by: Ursula Braun
Signed-off-by: David S. Miller -
* create smc_connection for SMC-sockets
* determine suitable link group for a connection
* create a new link group if necessarySigned-off-by: Ursula Braun
Signed-off-by: David S. Miller