Whamcloud - gitweb
LU-8507 lnet: Enable setting per NI peer_credits 48/21948/3
authorDoug Oucharek <doug.s.oucharek@intel.com>
Mon, 29 Aug 2016 03:26:11 +0000 (23:26 -0400)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 2 Sep 2016 02:23:25 +0000 (02:23 +0000)
The code to allow peer_credits to be set per NI was originally
"left inactive" because there were concerns about peer_credits
interfering with the ability for IB nodes to connect to each
other when peer_credits are not the same (peer_credits controls
the queue depth for IB). With LU-3322, the values do not have
to match so it is now safe to enable this code so peer_credits
can be set per NI.

This patch enables existing code for setting per NI peer_credits.

Second this patch fixes a long standing bug in that the conf data
was not being used to set variables in the lnet_ni structure until
after lnd_startup() was called which meant LND drivers were
ignoring struct lnet_ni tunable values being set. Now we change
struct lnet_ni data fields based on conf data before calling
lnd_startup().

Test-Parameters: trivial
Signed-off-by: Doug Oucharek <doug.s.oucharek@intel.com>
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Change-Id: I28ede7a139c43ca9a3d1b22255d3358694057918
Reviewed-on: http://review.whamcloud.com/21948
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Olaf Weber <olaf@sgi.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lnet/lnet/api-ni.c

index b7f297f..641ee00 100644 (file)
@@ -1349,6 +1349,23 @@ lnet_startup_lndni(struct lnet_ni *ni, struct lnet_ioctl_config_data *conf)
                       sizeof(*ni->ni_lnd_tunables));
        }
 
                       sizeof(*ni->ni_lnd_tunables));
        }
 
+       /* If given some LND tunable parameters, parse those now to
+        * override the values in the NI structure. */
+       if (conf) {
+               if (conf->cfg_config_u.cfg_net.net_peer_rtr_credits >= 0)
+                       ni->ni_peerrtrcredits =
+                               conf->cfg_config_u.cfg_net.net_peer_rtr_credits;
+               if (conf->cfg_config_u.cfg_net.net_peer_timeout >= 0)
+                       ni->ni_peertimeout =
+                               conf->cfg_config_u.cfg_net.net_peer_timeout;
+               if (conf->cfg_config_u.cfg_net.net_peer_tx_credits >= 0)
+                       ni->ni_peertxcredits =
+                               conf->cfg_config_u.cfg_net.net_peer_tx_credits;
+               if (conf->cfg_config_u.cfg_net.net_max_tx_credits >= 0)
+                       ni->ni_maxtxcredits =
+                               conf->cfg_config_u.cfg_net.net_max_tx_credits;
+       }
+
        rc = (lnd->lnd_startup)(ni);
 
        mutex_unlock(&the_lnet.ln_lnd_mutex);
        rc = (lnd->lnd_startup)(ni);
 
        mutex_unlock(&the_lnet.ln_lnd_mutex);
@@ -1362,32 +1379,6 @@ lnet_startup_lndni(struct lnet_ni *ni, struct lnet_ioctl_config_data *conf)
                goto failed0;
        }
 
                goto failed0;
        }
 
-       /* If given some LND tunable parameters, parse those now to
-        * override the values in the NI structure. */
-       if (conf && conf->cfg_config_u.cfg_net.net_peer_rtr_credits >= 0) {
-               ni->ni_peerrtrcredits =
-                       conf->cfg_config_u.cfg_net.net_peer_rtr_credits;
-       }
-       if (conf && conf->cfg_config_u.cfg_net.net_peer_timeout >= 0) {
-               ni->ni_peertimeout =
-                       conf->cfg_config_u.cfg_net.net_peer_timeout;
-       }
-
-       /*
-        * TODO
-        * Note: For now, don't allow the user to change
-        * peertxcredits as this number is used in the
-        * IB LND to control queue depth.
-        *
-        * if (conf && conf->cfg_config_u.cfg_net.net_peer_tx_credits != -1)
-        *      ni->ni_peertxcredits =
-        *              conf->cfg_config_u.cfg_net.net_peer_tx_credits;
-        */
-       if (conf && conf->cfg_config_u.cfg_net.net_max_tx_credits >= 0) {
-               ni->ni_maxtxcredits =
-                       conf->cfg_config_u.cfg_net.net_max_tx_credits;
-       }
-
        LASSERT(ni->ni_peertimeout <= 0 || lnd->lnd_query != NULL);
 
        lnet_net_lock(LNET_LOCK_EX);
        LASSERT(ni->ni_peertimeout <= 0 || lnd->lnd_query != NULL);
 
        lnet_net_lock(LNET_LOCK_EX);