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