From: Santosh Shilimkar <santosh.shilimkar@oracle.com>
To: netdev@vger.kernel.org, davem@davemloft.net
Cc: yanjun.zhu@oracle.com, santosh.shilimkar@oracle.com
Subject: [net-next][PATCH 4/5] rds: add transport specific tos_map hook
Date: Mon, 4 Feb 2019 16:04:48 -0800 [thread overview]
Message-ID: <1549325089-16572-5-git-send-email-santosh.shilimkar@oracle.com> (raw)
In-Reply-To: <1549325089-16572-1-git-send-email-santosh.shilimkar@oracle.com>
RDMA transport maps user tos to underline virtual lanes(VL)
for IB or DSCP values. RDMA CM transport abstract thats for
RDS. TCP transport makes use of default priority 0 and maps
all user tos values to it.
Reviewed-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
[yanjun.zhu@oracle.com: Adapted original patch with ipv6 changes]
Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com>
---
net/rds/af_rds.c | 10 ++++++----
net/rds/ib.c | 10 ++++++++++
net/rds/rds.h | 1 +
net/rds/tcp.c | 7 +++++++
4 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/net/rds/af_rds.c b/net/rds/af_rds.c
index 9045158..d6cc97f 100644
--- a/net/rds/af_rds.c
+++ b/net/rds/af_rds.c
@@ -255,16 +255,18 @@ static __poll_t rds_poll(struct file *file, struct socket *sock,
static int rds_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
{
struct rds_sock *rs = rds_sk_to_rs(sock->sk);
- rds_tos_t tos;
+ rds_tos_t utos, tos = 0;
switch (cmd) {
case SIOCRDSSETTOS:
- if (get_user(tos, (rds_tos_t __user *)arg))
+ if (get_user(utos, (rds_tos_t __user *)arg))
return -EFAULT;
if (rs->rs_transport &&
- rs->rs_transport->t_type == RDS_TRANS_TCP)
- tos = 0;
+ rs->rs_transport->get_tos_map)
+ tos = rs->rs_transport->get_tos_map(utos);
+ else
+ return -ENOIOCTLCMD;
spin_lock_bh(&rds_sock_lock);
if (rs->rs_tos || rs->rs_conn) {
diff --git a/net/rds/ib.c b/net/rds/ib.c
index 21b6588..2da9b75 100644
--- a/net/rds/ib.c
+++ b/net/rds/ib.c
@@ -515,6 +515,15 @@ void rds_ib_exit(void)
rds_ib_mr_exit();
}
+static u8 rds_ib_get_tos_map(u8 tos)
+{
+ /* 1:1 user to transport map for RDMA transport.
+ * In future, if custom map is desired, hook can export
+ * user configurable map.
+ */
+ return tos;
+}
+
struct rds_transport rds_ib_transport = {
.laddr_check = rds_ib_laddr_check,
.xmit_path_complete = rds_ib_xmit_path_complete,
@@ -537,6 +546,7 @@ struct rds_transport rds_ib_transport = {
.sync_mr = rds_ib_sync_mr,
.free_mr = rds_ib_free_mr,
.flush_mrs = rds_ib_flush_mrs,
+ .get_tos_map = rds_ib_get_tos_map,
.t_owner = THIS_MODULE,
.t_name = "infiniband",
.t_unloading = rds_ib_is_unloading,
diff --git a/net/rds/rds.h b/net/rds/rds.h
index 7e52b92..0d8f67c 100644
--- a/net/rds/rds.h
+++ b/net/rds/rds.h
@@ -574,6 +574,7 @@ struct rds_transport {
void (*free_mr)(void *trans_private, int invalidate);
void (*flush_mrs)(void);
bool (*t_unloading)(struct rds_connection *conn);
+ u8 (*get_tos_map)(u8 tos);
};
/* Bind hash table key length. It is the sum of the size of a struct
diff --git a/net/rds/tcp.c b/net/rds/tcp.c
index eb68519..fd26941 100644
--- a/net/rds/tcp.c
+++ b/net/rds/tcp.c
@@ -453,6 +453,12 @@ static void rds_tcp_destroy_conns(void)
static void rds_tcp_exit(void);
+static u8 rds_tcp_get_tos_map(u8 tos)
+{
+ /* all user tos mapped to default 0 for TCP transport */
+ return 0;
+}
+
struct rds_transport rds_tcp_transport = {
.laddr_check = rds_tcp_laddr_check,
.xmit_path_prepare = rds_tcp_xmit_path_prepare,
@@ -467,6 +473,7 @@ struct rds_transport rds_tcp_transport = {
.inc_free = rds_tcp_inc_free,
.stats_info_copy = rds_tcp_stats_info_copy,
.exit = rds_tcp_exit,
+ .get_tos_map = rds_tcp_get_tos_map,
.t_owner = THIS_MODULE,
.t_name = "tcp",
.t_type = RDS_TRANS_TCP,
--
1.9.1
next prev parent reply other threads:[~2019-02-05 0:05 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-05 0:04 [net-next][PATCH 0/5] rds: add tos support Santosh Shilimkar
2019-02-05 0:04 ` [net-next][PATCH 1/5] rds: make v3.1 as compat version Santosh Shilimkar
2019-02-05 0:04 ` [net-next][PATCH 2/5] rds: rdma: add consumer reject Santosh Shilimkar
2019-02-05 0:04 ` [net-next][PATCH 3/5] rds: add type of service(tos) infrastructure Santosh Shilimkar
[not found] ` <20190307220106.9099-1-gerd.rausch@oracle.com>
2019-03-08 1:16 ` [net-next PATCH] net/rds: Return proper "tos" value to user-space Yanjun Zhu
2019-03-08 1:37 ` santosh.shilimkar
2019-03-08 22:37 ` Gerd Rausch
2019-03-08 22:54 ` Santosh Shilimkar
2019-03-08 23:57 ` Zhu Yanjun
2019-02-05 0:04 ` Santosh Shilimkar [this message]
2019-02-05 0:04 ` [net-next][PATCH 5/5] rds: rdma: update rdma transport for tos Santosh Shilimkar
2019-03-05 16:33 ` Gerd Rausch
2019-03-05 16:41 ` Santosh Shilimkar
2019-03-05 16:48 ` Gerd Rausch
2019-03-05 17:02 ` Santosh Shilimkar
2019-03-06 5:28 ` Yanjun Zhu
[not found] ` <20190306070409.26840-1-gerd.rausch@oracle.com>
2019-03-06 8:41 ` [PATCH] net/rds: Accept peer connection reject messages due to incompatible version Yanjun Zhu
[not found] ` <20190307014920.24257-1-gerd.rausch@oracle.com>
2019-03-07 1:55 ` [net-next PATCH v2] " Santosh Shilimkar
2019-03-07 2:09 ` Yanjun Zhu
2019-03-07 3:28 ` Yanjun Zhu
2019-03-06 17:55 ` [PATCH] " Santosh Shilimkar
2019-02-07 1:01 ` [net-next][PATCH 0/5] rds: add tos support David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1549325089-16572-5-git-send-email-santosh.shilimkar@oracle.com \
--to=santosh.shilimkar@oracle.com \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
--cc=yanjun.zhu@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).