net/smc: provide smc mode in smc_diag.c
authorKarsten Graul <kgraul@linux.ibm.com>
Mon, 23 Jul 2018 11:53:08 +0000 (13:53 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 23 Jul 2018 17:57:14 +0000 (10:57 -0700)
Rename field diag_fallback into diag_mode and set the smc mode of a
connection explicitly.

Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/smc_diag.h
net/smc/smc_diag.c

index 92be255..48ae3ee 100644 (file)
@@ -20,7 +20,7 @@ struct smc_diag_req {
 struct smc_diag_msg {
        __u8    diag_family;
        __u8    diag_state;
-       __u8    diag_fallback;
+       __u8    diag_mode;
        __u8    diag_shutdown;
        struct inet_diag_sockid id;
 
@@ -28,6 +28,13 @@ struct smc_diag_msg {
        __u64   diag_inode;
 };
 
+/* Mode of a connection */
+enum {
+       SMC_DIAG_MODE_SMCR,
+       SMC_DIAG_MODE_FALLBACK_TCP,
+       SMC_DIAG_MODE_SMCD,
+};
+
 /* Extensions */
 
 enum {
index 6d83eef..d772cd1 100644 (file)
@@ -91,7 +91,12 @@ static int __smc_diag_dump(struct sock *sk, struct sk_buff *skb,
        r = nlmsg_data(nlh);
        smc_diag_msg_common_fill(r, sk);
        r->diag_state = sk->sk_state;
-       r->diag_fallback = smc->use_fallback;
+       if (smc->use_fallback)
+               r->diag_mode = SMC_DIAG_MODE_FALLBACK_TCP;
+       else if (smc->conn.lgr && smc->conn.lgr->is_smcd)
+               r->diag_mode = SMC_DIAG_MODE_SMCD;
+       else
+               r->diag_mode = SMC_DIAG_MODE_SMCR;
        user_ns = sk_user_ns(NETLINK_CB(cb->skb).sk);
        if (smc_diag_msg_attrs_fill(sk, skb, r, user_ns))
                goto errout;