@@ -303,6 +303,15 @@ static u8 smcr_next_link_id(struct smc_link_group *lgr)
return link_id;
}
+static inline void smcr_copy_dev_info_to_link(struct smc_link *link)
+{
+ struct smc_ib_device *smcibdev = link->smcibdev;
+
+ memcpy(link->ibname, smcibdev->ibdev->name, sizeof(link->ibname));
+ memcpy(link->ndevname, smcibdev->netdev[link->ibport - 1],
+ sizeof(link->ndevname));
+}
+
int smcr_link_init(struct smc_link_group *lgr, struct smc_link *lnk,
u8 link_idx, struct smc_init_info *ini)
{
@@ -317,6 +326,7 @@ int smcr_link_init(struct smc_link_group *lgr, struct smc_link *lnk,
lnk->smcibdev = ini->ib_dev;
lnk->ibport = ini->ib_port;
atomic_inc(&ini->ib_dev->lnk_cnt_by_port[ini->ib_port - 1]);
+ smcr_copy_dev_info_to_link(lnk);
lnk->path_mtu = ini->ib_dev->pattr[ini->ib_port - 1].active_mtu;
atomic_set(&lnk->conn_cnt, 0);
smc_llc_link_set_uid(lnk);
@@ -124,6 +124,9 @@ struct smc_link {
u8 link_is_asym; /* is link asymmetric? */
struct smc_link_group *lgr; /* parent link group */
struct work_struct link_down_wrk; /* wrk to bring link down */
+ /* Diagnostic relevant link information */
+ u8 ibname[IB_DEVICE_NAME_MAX];/* ib device name */
+ u8 ndevname[IFNAMSIZ];/* network device name */
enum smc_link_state state; /* state of link */
struct delayed_work llc_testlink_wrk; /* testlink worker */