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

...

In this manner the liblnetconfig API remains backwards compatible.

Module parameters

Setting the ToS will not be 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.

ioctl  Interface

Two new ioctls  will be added to get and set the ToS value for the NI

...

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.

...