Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The net add command will be modified to take the tos ToS value to use for this particular network interface.

...

A new lnetctl set tos command will be added to set or modify the tos value for a particular network interface. If no Network Interface is specified all NIs will be set to the ToS value

liblnetconfig API

struct lnet_ioctl_config_o2iblnd_tunables  will be modified to take the tos ToS value

Code Block
 71 struct lnet_ioctl_config_o2iblnd_tunables {
 72 »·······__u32 lnd_version;
 73 »·······__u32 lnd_peercredits_hiw;
 74 »·······__u32 lnd_map_on_demand;
 75 »·······__u32 lnd_concurrent_sends;
 76 »·······__u32 lnd_fmr_pool_size;
 77 »·······__u32 lnd_fmr_flush_trigger;
 78 »·······__u32 lnd_fmr_cache;
 79 »·······__u16 lnd_conns_per_peer;
 80 »·······__u16 lnd_ntx;
 81 »·······__s16 lnd_tos;
 82 };

The lnd_tos field will be filled with the value passed by the user from the lnetctl  command otherwise it'll be set to -1 to indicate that field is not set. This will help us avoid modification to the API net add API:

Code Block
138 /*
139  * lustre_lnet_config_ni
140  *   Send down an IOCTL to configure a network interface. It implicitly
141  *   creates a network if one doesn't exist..
142  *
143  *   nw_descr - network and interface descriptor
144  *   global_cpts - globally defined CPTs
145  *   ip2net - this parameter allows configuring multiple networks.
146  *»·····it takes precedence over the net and intf parameters
147  *   tunables - LND tunables
148  *   seq_no - sequence number of the request
149  *   lnd_tunables - lnet specific tunable parameters
150  *   err_rc - [OUT] struct cYAML tree describing the error. Freed by caller
151  */
152 int lustre_lnet_config_ni(struct lnet_dlc_network_descr *nw_descr,
153 »·······»·······»·······  struct cfs_expr_list *global_cpts,
154 »·······»·······»·······  char *ip2net,
155 »·······»·······»·······  struct lnet_ioctl_config_lnd_tunables *tunables,
156 »·······»·······»·······  int seq_no, struct cYAML **err_rc);

...

Setting the ToS will not be set done from the module parameters as it will require modification to the net configuration string. The decision has been made a while back to move away from string parsing in the kernel, and add new Network Interface changes to the lnetctl  utility and liblnetconfig  API.

...

There doesn't appear to be a cma API provided to get the service type valueToS value set on a particulr cmid ; therefore, we will need to store the ToS value in the device structure: struct kib_hca_dev. The get operation will return this value.

...