Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fcb3f55f authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'rds-support-FRMR-and-cleanups'

Santosh Shilimkar says:

====================
RDS: Major clean-up with couple of new features for 4.6

v3:
Re-generated the same series by omitting "-D" option from git format-patch
command. Since first patch has file removals, git apply/am can't deal
with it when formated with '-D' option.

v2:
Dropped module parameter from [PATCH 11/13] as suggested by David Miller

Series is generated against net-next but also applies against Linus's tip
cleanly. Entire patchset is available at below git tree:

 git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux.git

 for_4.6/net-next/rds_v2

The diff-stat looks bit scary since almost ~4K lines of code is
getting removed. Brief summary of the series:

- Drop the stale iWARP support:
	RDS iWarp support code has become stale and non testable for
	sometime.  As discussed and agreed earlier on list, am dropping
	its support for good. If new iWarp user(s) shows up in future,
	the plan is to adapt existing IB RDMA with special sink case.
- RDS gets SO_TIMESTAMP support
- Long due RDS maintainer entry gets updated
- Some RDS IB code refactoring towards new FastReg Memory registration (FRMR)
- Lastly the initial support for FRMR

RDS IB RDMA performance with FRMR is not yet as good as FMR and I do have
some patches in progress to address that. But they are not ready for 4.6
so I left them out of this series.

Also am keeping eye on new CQ API adaptations like other ULPs doing and
will try to adapt RDS for the same most likely in 4.7+ timeframe.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents afc3de92 1659185f
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -19,9 +19,7 @@ to N*N if you use a connection-oriented socket transport like TCP.

RDS is not Infiniband-specific; it was designed to support different
transports.  The current implementation used to support RDS over TCP as well
as IB. Work is in progress to support RDS over iWARP, and using DCE to
guarantee no dropped packets on Ethernet, it may be possible to use RDS over
UDP in the future.
as IB.

The high-level semantics of RDS from the application's point of view are

+5 −1
Original line number Diff line number Diff line
@@ -9076,10 +9076,14 @@ S: Maintained
F:	drivers/net/ethernet/rdc/r6040.c

RDS - RELIABLE DATAGRAM SOCKETS
M:	Chien Yen <chien.yen@oracle.com>
M:	Santosh Shilimkar <santosh.shilimkar@oracle.com>
L:	netdev@vger.kernel.org
L:	linux-rdma@vger.kernel.org
L:	rds-devel@oss.oracle.com (moderated for non-subscribers)
W:	https://oss.oracle.com/projects/rds/
S:	Supported
F:	net/rds/
F:	Documentation/networking/rds.txt

READ-COPY UPDATE (RCU)
M:	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
+3 −4
Original line number Diff line number Diff line
@@ -4,14 +4,13 @@ config RDS
	depends on INET
	---help---
	  The RDS (Reliable Datagram Sockets) protocol provides reliable,
	  sequenced delivery of datagrams over Infiniband, iWARP,
	  or TCP.
	  sequenced delivery of datagrams over Infiniband or TCP.

config RDS_RDMA
	tristate "RDS over Infiniband and iWARP"
	tristate "RDS over Infiniband"
	depends on RDS && INFINIBAND && INFINIBAND_ADDR_TRANS
	---help---
	  Allow RDS to use Infiniband and iWARP as a transport.
	  Allow RDS to use Infiniband as a transport.
	  This transport supports RDMA operations.

config RDS_TCP
+1 −3
Original line number Diff line number Diff line
@@ -6,9 +6,7 @@ rds-y := af_rds.o bind.o cong.o connection.o info.o message.o \
obj-$(CONFIG_RDS_RDMA) += rds_rdma.o
rds_rdma-y :=	rdma_transport.o \
			ib.o ib_cm.o ib_recv.o ib_ring.o ib_send.o ib_stats.o \
			ib_sysctl.o ib_rdma.o \
			iw.o iw_cm.o iw_recv.o iw_ring.o iw_send.o iw_stats.o \
			iw_sysctl.o iw_rdma.o
			ib_sysctl.o ib_rdma.o ib_fmr.o ib_frmr.o


obj-$(CONFIG_RDS_TCP) += rds_tcp.o
+26 −0
Original line number Diff line number Diff line
@@ -277,6 +277,27 @@ static int rds_set_transport(struct rds_sock *rs, char __user *optval,
	return rs->rs_transport ? 0 : -ENOPROTOOPT;
}

static int rds_enable_recvtstamp(struct sock *sk, char __user *optval,
				 int optlen)
{
	int val, valbool;

	if (optlen != sizeof(int))
		return -EFAULT;

	if (get_user(val, (int __user *)optval))
		return -EFAULT;

	valbool = val ? 1 : 0;

	if (valbool)
		sock_set_flag(sk, SOCK_RCVTSTAMP);
	else
		sock_reset_flag(sk, SOCK_RCVTSTAMP);

	return 0;
}

static int rds_setsockopt(struct socket *sock, int level, int optname,
			  char __user *optval, unsigned int optlen)
{
@@ -312,6 +333,11 @@ static int rds_setsockopt(struct socket *sock, int level, int optname,
		ret = rds_set_transport(rs, optval, optlen);
		release_sock(sock->sk);
		break;
	case SO_TIMESTAMP:
		lock_sock(sock->sk);
		ret = rds_enable_recvtstamp(sock->sk, optval, optlen);
		release_sock(sock->sk);
		break;
	default:
		ret = -ENOPROTOOPT;
	}
Loading