From: Sonia Sharma Date: Sun, 2 Sep 2018 10:32:17 +0000 (-0400) Subject: LU-11371 socklnd: dynamically set LND parameters X-Git-Tag: 2.12.0-RC1~119 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=1d94072c63f53dfdf0fbad3adc866f9a0ca8cae9 LU-11371 socklnd: dynamically set LND parameters Currently, the socklnd parameters cannot be set dynamically. Only the default values are set which cannot be changed by deleting and re-adding the net with DLC. This patch allows setting socklnd parameters dynamically. Change-Id: Ied9c300833b4d1352ca4d94c3b6886ed8d5eb901 Test-Parameters: trivial Signed-off-by: Sonia Sharma Reviewed-on: https://review.whamcloud.com/33191 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: James Simmons Reviewed-by: Doug Oucharek Reviewed-by: Oleg Drokin --- diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c index 001fef6..dd59e93 100644 --- a/lnet/klnds/socklnd/socklnd.c +++ b/lnet/klnds/socklnd/socklnd.c @@ -2797,6 +2797,7 @@ int ksocknal_startup(struct lnet_ni *ni) { struct ksock_net *net; + struct lnet_ioctl_config_lnd_cmn_tunables *net_tunables; int rc; int i; struct net_device *net_dev; @@ -2817,18 +2818,28 @@ ksocknal_startup(struct lnet_ni *ni) spin_lock_init(&net->ksnn_lock); net->ksnn_incarnation = ktime_get_real_ns(); ni->ni_data = net; - if (!ni->ni_net->net_tunables_set) { - ni->ni_net->net_tunables.lct_peer_timeout = + net_tunables = &ni->ni_net->net_tunables; + + if (net_tunables->lct_peer_timeout == -1) + net_tunables->lct_peer_timeout = *ksocknal_tunables.ksnd_peertimeout; - ni->ni_net->net_tunables.lct_max_tx_credits = + + if (net_tunables->lct_max_tx_credits == -1) + net_tunables->lct_max_tx_credits = *ksocknal_tunables.ksnd_credits; - ni->ni_net->net_tunables.lct_peer_tx_credits = + + if (net_tunables->lct_peer_tx_credits == -1) + net_tunables->lct_peer_tx_credits = *ksocknal_tunables.ksnd_peertxcredits; - ni->ni_net->net_tunables.lct_peer_rtr_credits = - *ksocknal_tunables.ksnd_peerrtrcredits; - ni->ni_net->net_tunables_set = true; - } + if (net_tunables->lct_peer_tx_credits > + net_tunables->lct_max_tx_credits) + net_tunables->lct_peer_tx_credits = + net_tunables->lct_max_tx_credits; + + if (net_tunables->lct_peer_rtr_credits == -1) + net_tunables->lct_peer_rtr_credits = + *ksocknal_tunables.ksnd_peerrtrcredits; if (ni->ni_interfaces[0] == NULL) { rc = ksocknal_enumerate_interfaces(net);