net/smc: remember PNETID of IB device for later device matching
authorKarsten Graul <kgraul@linux.ibm.com>
Fri, 1 May 2020 10:48:06 +0000 (12:48 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 1 May 2020 23:20:04 +0000 (16:20 -0700)
The PNETID is needed to find an alternate link for a link group.
Save the PNETID of the link that is used to create the link group for
later device matching.

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

index 4c3af05..d7ab92f 100644 (file)
@@ -413,6 +413,8 @@ static int smc_lgr_create(struct smc_sock *smc, struct smc_init_info *ini)
                lgr->role = smc->listen_smc ? SMC_SERV : SMC_CLNT;
                memcpy(lgr->peer_systemid, ini->ib_lcl->id_for_peer,
                       SMC_SYSTEMID_LEN);
+               memcpy(lgr->pnet_id, ini->ib_dev->pnetid[ini->ib_port - 1],
+                      SMC_MAX_PNETID_LEN);
                smc_llc_lgr_init(lgr, smc);
 
                link_idx = SMC_SINGLE_LINK;
index aa198dd..413eaad 100644 (file)
@@ -244,6 +244,8 @@ struct smc_link_group {
                        u8                      next_link_id;
                        enum smc_lgr_type       type;
                                                /* redundancy state */
+                       u8                      pnet_id[SMC_MAX_PNETID_LEN + 1];
+                                               /* pnet id of this lgr */
                        struct list_head        llc_event_q;
                                                /* queue for llc events */
                        spinlock_t              llc_event_q_lock;