...
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.
...