Lines Matching refs:fmsg

32 	struct devlink_fmsg *fmsg;  in devlink_fmsg_alloc()  local
34 fmsg = kzalloc(sizeof(*fmsg), GFP_KERNEL); in devlink_fmsg_alloc()
35 if (!fmsg) in devlink_fmsg_alloc()
38 INIT_LIST_HEAD(&fmsg->item_list); in devlink_fmsg_alloc()
40 return fmsg; in devlink_fmsg_alloc()
43 static void devlink_fmsg_free(struct devlink_fmsg *fmsg) in devlink_fmsg_free() argument
47 list_for_each_entry_safe(item, tmp, &fmsg->item_list, list) { in devlink_fmsg_free()
51 kfree(fmsg); in devlink_fmsg_free()
673 static int devlink_fmsg_nest_common(struct devlink_fmsg *fmsg, in devlink_fmsg_nest_common() argument
683 list_add_tail(&item->list, &fmsg->item_list); in devlink_fmsg_nest_common()
688 int devlink_fmsg_obj_nest_start(struct devlink_fmsg *fmsg) in devlink_fmsg_obj_nest_start() argument
690 if (fmsg->putting_binary) in devlink_fmsg_obj_nest_start()
693 return devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_OBJ_NEST_START); in devlink_fmsg_obj_nest_start()
697 static int devlink_fmsg_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_nest_end() argument
699 if (fmsg->putting_binary) in devlink_fmsg_nest_end()
702 return devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_NEST_END); in devlink_fmsg_nest_end()
705 int devlink_fmsg_obj_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_obj_nest_end() argument
707 if (fmsg->putting_binary) in devlink_fmsg_obj_nest_end()
710 return devlink_fmsg_nest_end(fmsg); in devlink_fmsg_obj_nest_end()
716 static int devlink_fmsg_put_name(struct devlink_fmsg *fmsg, const char *name) in devlink_fmsg_put_name() argument
720 if (fmsg->putting_binary) in devlink_fmsg_put_name()
734 list_add_tail(&item->list, &fmsg->item_list); in devlink_fmsg_put_name()
739 int devlink_fmsg_pair_nest_start(struct devlink_fmsg *fmsg, const char *name) in devlink_fmsg_pair_nest_start() argument
743 if (fmsg->putting_binary) in devlink_fmsg_pair_nest_start()
746 err = devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_PAIR_NEST_START); in devlink_fmsg_pair_nest_start()
750 err = devlink_fmsg_put_name(fmsg, name); in devlink_fmsg_pair_nest_start()
758 int devlink_fmsg_pair_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_pair_nest_end() argument
760 if (fmsg->putting_binary) in devlink_fmsg_pair_nest_end()
763 return devlink_fmsg_nest_end(fmsg); in devlink_fmsg_pair_nest_end()
767 int devlink_fmsg_arr_pair_nest_start(struct devlink_fmsg *fmsg, in devlink_fmsg_arr_pair_nest_start() argument
772 if (fmsg->putting_binary) in devlink_fmsg_arr_pair_nest_start()
775 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_arr_pair_nest_start()
779 err = devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_ARR_NEST_START); in devlink_fmsg_arr_pair_nest_start()
787 int devlink_fmsg_arr_pair_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_arr_pair_nest_end() argument
791 if (fmsg->putting_binary) in devlink_fmsg_arr_pair_nest_end()
794 err = devlink_fmsg_nest_end(fmsg); in devlink_fmsg_arr_pair_nest_end()
798 err = devlink_fmsg_nest_end(fmsg); in devlink_fmsg_arr_pair_nest_end()
806 int devlink_fmsg_binary_pair_nest_start(struct devlink_fmsg *fmsg, in devlink_fmsg_binary_pair_nest_start() argument
811 err = devlink_fmsg_arr_pair_nest_start(fmsg, name); in devlink_fmsg_binary_pair_nest_start()
815 fmsg->putting_binary = true; in devlink_fmsg_binary_pair_nest_start()
820 int devlink_fmsg_binary_pair_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_binary_pair_nest_end() argument
822 if (!fmsg->putting_binary) in devlink_fmsg_binary_pair_nest_end()
825 fmsg->putting_binary = false; in devlink_fmsg_binary_pair_nest_end()
826 return devlink_fmsg_arr_pair_nest_end(fmsg); in devlink_fmsg_binary_pair_nest_end()
830 static int devlink_fmsg_put_value(struct devlink_fmsg *fmsg, in devlink_fmsg_put_value() argument
847 list_add_tail(&item->list, &fmsg->item_list); in devlink_fmsg_put_value()
852 static int devlink_fmsg_bool_put(struct devlink_fmsg *fmsg, bool value) in devlink_fmsg_bool_put() argument
854 if (fmsg->putting_binary) in devlink_fmsg_bool_put()
857 return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_FLAG); in devlink_fmsg_bool_put()
860 static int devlink_fmsg_u8_put(struct devlink_fmsg *fmsg, u8 value) in devlink_fmsg_u8_put() argument
862 if (fmsg->putting_binary) in devlink_fmsg_u8_put()
865 return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U8); in devlink_fmsg_u8_put()
868 int devlink_fmsg_u32_put(struct devlink_fmsg *fmsg, u32 value) in devlink_fmsg_u32_put() argument
870 if (fmsg->putting_binary) in devlink_fmsg_u32_put()
873 return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U32); in devlink_fmsg_u32_put()
877 static int devlink_fmsg_u64_put(struct devlink_fmsg *fmsg, u64 value) in devlink_fmsg_u64_put() argument
879 if (fmsg->putting_binary) in devlink_fmsg_u64_put()
882 return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U64); in devlink_fmsg_u64_put()
885 int devlink_fmsg_string_put(struct devlink_fmsg *fmsg, const char *value) in devlink_fmsg_string_put() argument
887 if (fmsg->putting_binary) in devlink_fmsg_string_put()
890 return devlink_fmsg_put_value(fmsg, value, strlen(value) + 1, in devlink_fmsg_string_put()
895 int devlink_fmsg_binary_put(struct devlink_fmsg *fmsg, const void *value, in devlink_fmsg_binary_put() argument
898 if (!fmsg->putting_binary) in devlink_fmsg_binary_put()
901 return devlink_fmsg_put_value(fmsg, value, value_len, NLA_BINARY); in devlink_fmsg_binary_put()
905 int devlink_fmsg_bool_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_bool_pair_put() argument
910 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_bool_pair_put()
914 err = devlink_fmsg_bool_put(fmsg, value); in devlink_fmsg_bool_pair_put()
918 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_bool_pair_put()
926 int devlink_fmsg_u8_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_u8_pair_put() argument
931 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_u8_pair_put()
935 err = devlink_fmsg_u8_put(fmsg, value); in devlink_fmsg_u8_pair_put()
939 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_u8_pair_put()
947 int devlink_fmsg_u32_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_u32_pair_put() argument
952 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_u32_pair_put()
956 err = devlink_fmsg_u32_put(fmsg, value); in devlink_fmsg_u32_pair_put()
960 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_u32_pair_put()
968 int devlink_fmsg_u64_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_u64_pair_put() argument
973 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_u64_pair_put()
977 err = devlink_fmsg_u64_put(fmsg, value); in devlink_fmsg_u64_pair_put()
981 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_u64_pair_put()
989 int devlink_fmsg_string_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_string_pair_put() argument
994 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_string_pair_put()
998 err = devlink_fmsg_string_put(fmsg, value); in devlink_fmsg_string_pair_put()
1002 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_string_pair_put()
1010 int devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_binary_pair_put() argument
1018 err = devlink_fmsg_binary_pair_nest_start(fmsg, name); in devlink_fmsg_binary_pair_put()
1026 err = devlink_fmsg_binary_put(fmsg, value + offset, data_size); in devlink_fmsg_binary_pair_put()
1035 end_err = devlink_fmsg_binary_pair_nest_end(fmsg); in devlink_fmsg_binary_pair_put()
1089 devlink_fmsg_prepare_skb(struct devlink_fmsg *fmsg, struct sk_buff *skb, in devlink_fmsg_prepare_skb() argument
1101 list_for_each_entry(item, &fmsg->item_list, list) { in devlink_fmsg_prepare_skb()
1138 static int devlink_fmsg_snd(struct devlink_fmsg *fmsg, in devlink_fmsg_snd() argument
1163 err = devlink_fmsg_prepare_skb(fmsg, skb, &index); in devlink_fmsg_snd()
1192 static int devlink_fmsg_dumpit(struct devlink_fmsg *fmsg, struct sk_buff *skb, in devlink_fmsg_dumpit() argument
1209 err = devlink_fmsg_prepare_skb(fmsg, skb, &index); in devlink_fmsg_dumpit()
1227 struct devlink_fmsg *fmsg; in devlink_nl_cmd_health_reporter_diagnose_doit() local
1237 fmsg = devlink_fmsg_alloc(); in devlink_nl_cmd_health_reporter_diagnose_doit()
1238 if (!fmsg) in devlink_nl_cmd_health_reporter_diagnose_doit()
1241 err = devlink_fmsg_obj_nest_start(fmsg); in devlink_nl_cmd_health_reporter_diagnose_doit()
1245 err = reporter->ops->diagnose(reporter, fmsg, info->extack); in devlink_nl_cmd_health_reporter_diagnose_doit()
1249 err = devlink_fmsg_obj_nest_end(fmsg); in devlink_nl_cmd_health_reporter_diagnose_doit()
1253 err = devlink_fmsg_snd(fmsg, info, in devlink_nl_cmd_health_reporter_diagnose_doit()
1257 devlink_fmsg_free(fmsg); in devlink_nl_cmd_health_reporter_diagnose_doit()