]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
staging: lustre: lnet: add per NI configuration structures
authorAmir Shehata <amir.shehata@intel.com>
Sat, 7 May 2016 01:30:24 +0000 (21:30 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 May 2016 12:05:23 +0000 (14:05 +0200)
Currently for LNet all hardware configuration is done with
the modprobe configuration file. These settings are applied
to all hardware instances for a node. That makes it impossible
to configure two different pieces of infiniband hardware that
require very different settings to function. Here we
introduce the infrastructre to allow applying per interface
settings.

Signed-off-by: Amir Shehata <amir.shehata@intel.com>
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-7101
Reviewed-on: http://review.whamcloud.com/16367
Reviewed-by: Doug Oucharek <doug.s.oucharek@intel.com>
Reviewed-by: Olaf Weber <olaf@sgi.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/include/linux/lnet/lib-dlc.h
drivers/staging/lustre/include/linux/lnet/lib-types.h
drivers/staging/lustre/lnet/lnet/config.c

index 84a19e96ea044ccd1af9677cd748c52a06149705..6ce9accb91ad384428863b25321b57a1b3c7e5df 100644 (file)
 #define LNET_MAX_SHOW_NUM_CPT  128
 #define LNET_UNDEFINED_HOPS    ((__u32) -1)
 
+struct lnet_ioctl_config_lnd_cmn_tunables {
+       __u32 lct_version;
+       __u32 lct_peer_timeout;
+       __u32 lct_peer_tx_credits;
+       __u32 lct_peer_rtr_credits;
+       __u32 lct_max_tx_credits;
+};
+
+struct lnet_ioctl_config_o2iblnd_tunables {
+       __u32 lnd_version;
+       __u32 lnd_peercredits_hiw;
+       __u32 lnd_map_on_demand;
+       __u32 lnd_concurrent_sends;
+       __u32 lnd_fmr_pool_size;
+       __u32 lnd_fmr_flush_trigger;
+       __u32 lnd_fmr_cache;
+       __u32 pad;
+};
+
+struct lnet_ioctl_config_lnd_tunables {
+       struct lnet_ioctl_config_lnd_cmn_tunables lt_cmn;
+       union {
+               struct lnet_ioctl_config_o2iblnd_tunables lt_o2ib;
+       } lt_tun_u;
+};
+
 struct lnet_ioctl_net_config {
        char ni_interfaces[LNET_MAX_INTERFACES][LNET_MAX_STR_LEN];
        __u32 ni_status;
        __u32 ni_cpts[LNET_MAX_SHOW_NUM_CPT];
+       char cfg_bulk[0];
 };
 
 #define LNET_TINY_BUF_IDX      0
@@ -81,7 +108,7 @@ struct lnet_ioctl_config_data {
                        __s32 net_peer_rtr_credits;
                        __s32 net_max_tx_credits;
                        __u32 net_cksum_algo;
-                       __u32 net_pad;
+                       __u32 net_interface_count;
                } cfg_net;
                struct {
                        __u32 buf_enable;
index 29c72f8c2f99a7b7eae337992a16445960d997e4..24c4a08e6dc6f0495207e16cc35793158d8894d7 100644 (file)
@@ -273,6 +273,8 @@ typedef struct lnet_ni {
        int                     **ni_refs;      /* percpt reference count */
        time64_t                  ni_last_alive;/* when I was last alive */
        lnet_ni_status_t         *ni_status;    /* my health status */
+       /* per NI LND tunables */
+       struct lnet_ioctl_config_lnd_tunables *ni_lnd_tunables;
        /* equivalent interfaces to use */
        char                     *ni_interfaces[LNET_MAX_INTERFACES];
 } lnet_ni_t;
index 449069c9e64936d5dfe35856e904438b48bb2a7b..480cc9c6caabdadadc61706f34ed8a4ea17e2abe 100644 (file)
@@ -107,6 +107,9 @@ lnet_ni_free(struct lnet_ni *ni)
        if (ni->ni_cpts)
                cfs_expr_list_values_free(ni->ni_cpts, ni->ni_ncpts);
 
+       if (ni->ni_lnd_tunables)
+               LIBCFS_FREE(ni->ni_lnd_tunables, sizeof(*ni->ni_lnd_tunables));
+
        for (i = 0; i < LNET_MAX_INTERFACES && ni->ni_interfaces[i]; i++) {
                LIBCFS_FREE(ni->ni_interfaces[i],
                            strlen(ni->ni_interfaces[i]) + 1);