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;
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);