Lines Matching +full:min +full:- +full:len
1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * Copyright (c) 2014 - 2018 ProfitBricks GmbH. All rights reserved.
6 * Copyright (c) 2018 - 2019 1&1 IONOS Cloud GmbH. All rights reserved.
7 * Copyright (c) 2019 - 2020 1&1 IONOS SE. All rights reserved.
12 #include "rtrs-pri.h"
13 #include "rtrs-clt.h"
14 #include "rtrs-log.h"
16 #define MIN_MAX_RECONN_ATT -1
39 free_percpu(stats->pcpu_stats); in rtrs_clt_path_stats_release()
73 attr->attr.name, buf); in max_reconnect_attempts_store()
79 "%s: invalid range (provided: '%s', accepted: min: %d, max: %d)\n", in max_reconnect_attempts_store()
80 attr->attr.name, buf, MIN_MAX_RECONN_ATT, in max_reconnect_attempts_store()
82 return -EINVAL; in max_reconnect_attempts_store()
99 switch (clt->mp_policy) { in mpath_policy_show()
101 return sysfs_emit(page, "round-robin (RR: %d)\n", in mpath_policy_show()
102 clt->mp_policy); in mpath_policy_show()
104 return sysfs_emit(page, "min-inflight (MI: %d)\n", in mpath_policy_show()
105 clt->mp_policy); in mpath_policy_show()
107 return sysfs_emit(page, "min-latency (ML: %d)\n", in mpath_policy_show()
108 clt->mp_policy); in mpath_policy_show()
110 return sysfs_emit(page, "Unknown (%d)\n", clt->mp_policy); in mpath_policy_show()
122 size_t len = 0; in mpath_policy_store() local
130 clt->mp_policy = value; in mpath_policy_store()
134 /* distinguish "mi" and "min-latency" with length */ in mpath_policy_store()
135 len = strnlen(buf, NAME_MAX); in mpath_policy_store()
136 if (len && buf[len - 1] == '\n') in mpath_policy_store()
137 len--; in mpath_policy_store()
139 if (!strncasecmp(buf, "round-robin", 11) || in mpath_policy_store()
140 (len == 2 && !strncasecmp(buf, "rr", 2))) in mpath_policy_store()
141 clt->mp_policy = MP_POLICY_RR; in mpath_policy_store()
142 else if (!strncasecmp(buf, "min-inflight", 12) || in mpath_policy_store()
143 (len == 2 && !strncasecmp(buf, "mi", 2))) in mpath_policy_store()
144 clt->mp_policy = MP_POLICY_MIN_INFLIGHT; in mpath_policy_store()
145 else if (!strncasecmp(buf, "min-latency", 11) || in mpath_policy_store()
146 (len == 2 && !strncasecmp(buf, "ml", 2))) in mpath_policy_store()
147 clt->mp_policy = MP_POLICY_MIN_LATENCY; in mpath_policy_store()
149 return -EINVAL; in mpath_policy_store()
161 attr->attr.name); in add_path_show()
175 size_t len; in add_path_store() local
182 len = nl - buf; in add_path_store()
184 len = count; in add_path_store()
185 err = rtrs_addr_to_sockaddr(buf, len, clt->port, &addr); in add_path_store()
187 return -EINVAL; in add_path_store()
204 if (clt_path->state == RTRS_CLT_CONNECTED) in rtrs_clt_state_show()
216 return sysfs_emit(buf, "Usage: echo 1 > %s\n", attr->attr.name); in rtrs_clt_reconnect_show()
228 rtrs_err(clt_path->clt, "%s: unknown value: '%s'\n", in rtrs_clt_reconnect_store()
229 attr->attr.name, buf); in rtrs_clt_reconnect_store()
230 return -EINVAL; in rtrs_clt_reconnect_store()
246 return sysfs_emit(buf, "Usage: echo 1 > %s\n", attr->attr.name); in rtrs_clt_disconnect_show()
257 rtrs_err(clt_path->clt, "%s: unknown value: '%s'\n", in rtrs_clt_disconnect_store()
258 attr->attr.name, buf); in rtrs_clt_disconnect_store()
259 return -EINVAL; in rtrs_clt_disconnect_store()
273 return sysfs_emit(buf, "Usage: echo 1 > %s\n", attr->attr.name); in rtrs_clt_remove_path_show()
285 rtrs_err(clt_path->clt, "%s: unknown value: '%s'\n", in rtrs_clt_remove_path_store()
286 attr->attr.name, buf); in rtrs_clt_remove_path_store()
287 return -EINVAL; in rtrs_clt_remove_path_store()
289 ret = rtrs_clt_remove_path_from_sysfs(clt_path, &attr->attr); in rtrs_clt_remove_path_store()
341 return sysfs_emit(page, "%u\n", clt_path->hca_port); in rtrs_clt_hca_port_show()
355 return sysfs_emit(page, "%s\n", clt_path->hca_name); in rtrs_clt_hca_name_show()
370 ktime_to_ns(clt_path->s.hb_cur_latency)); in rtrs_clt_cur_latency_show()
381 int len; in rtrs_clt_src_addr_show() local
384 len = sockaddr_to_str((struct sockaddr *)&clt_path->s.src_addr, page, in rtrs_clt_src_addr_show()
386 len += sysfs_emit_at(page, len, "\n"); in rtrs_clt_src_addr_show()
387 return len; in rtrs_clt_src_addr_show()
398 int len; in rtrs_clt_dst_addr_show() local
401 len = sockaddr_to_str((struct sockaddr *)&clt_path->s.dst_addr, page, in rtrs_clt_dst_addr_show()
403 len += sysfs_emit_at(page, len, "\n"); in rtrs_clt_dst_addr_show()
404 return len; in rtrs_clt_dst_addr_show()
429 struct rtrs_clt_sess *clt = clt_path->clt; in rtrs_clt_create_path_files()
433 .src = &clt_path->s.src_addr, in rtrs_clt_create_path_files()
434 .dst = &clt_path->s.dst_addr, in rtrs_clt_create_path_files()
438 err = kobject_init_and_add(&clt_path->kobj, &ktype_sess, in rtrs_clt_create_path_files()
439 clt->kobj_paths, in rtrs_clt_create_path_files()
443 kobject_put(&clt_path->kobj); in rtrs_clt_create_path_files()
446 err = sysfs_create_group(&clt_path->kobj, &rtrs_clt_path_attr_group); in rtrs_clt_create_path_files()
451 err = kobject_init_and_add(&clt_path->stats->kobj_stats, &ktype_stats, in rtrs_clt_create_path_files()
452 &clt_path->kobj, "stats"); in rtrs_clt_create_path_files()
455 kobject_put(&clt_path->stats->kobj_stats); in rtrs_clt_create_path_files()
459 err = sysfs_create_group(&clt_path->stats->kobj_stats, in rtrs_clt_create_path_files()
469 kobject_del(&clt_path->stats->kobj_stats); in rtrs_clt_create_path_files()
470 kobject_put(&clt_path->stats->kobj_stats); in rtrs_clt_create_path_files()
472 sysfs_remove_group(&clt_path->kobj, &rtrs_clt_path_attr_group); in rtrs_clt_create_path_files()
474 kobject_del(&clt_path->kobj); in rtrs_clt_create_path_files()
475 kobject_put(&clt_path->kobj); in rtrs_clt_create_path_files()
483 kobject_del(&clt_path->stats->kobj_stats); in rtrs_clt_destroy_path_files()
484 kobject_put(&clt_path->stats->kobj_stats); in rtrs_clt_destroy_path_files()
486 sysfs_remove_file_self(&clt_path->kobj, sysfs_self); in rtrs_clt_destroy_path_files()
487 kobject_del(&clt_path->kobj); in rtrs_clt_destroy_path_files()
503 return sysfs_create_group(&clt->dev.kobj, &rtrs_clt_attr_group); in rtrs_clt_create_sysfs_root_files()
508 sysfs_remove_group(&clt->dev.kobj, &rtrs_clt_attr_group); in rtrs_clt_destroy_sysfs_root()
510 if (clt->kobj_paths) { in rtrs_clt_destroy_sysfs_root()
511 kobject_del(clt->kobj_paths); in rtrs_clt_destroy_sysfs_root()
512 kobject_put(clt->kobj_paths); in rtrs_clt_destroy_sysfs_root()