Lines Matching defs:req_info
133 * @req_info: structure to put results into
140 * the structure pointed to by @req_info. Extack from @info is used for error
141 * reporting. If req_info->dev is not null on return, reference to it has
142 * been taken. If error is returned, *req_info is null initialized and no
147 int ethnl_parse_header_dev_get(struct ethnl_req_info *req_info,
177 dev = netdev_get_by_index(net, ifindex, &req_info->dev_tracker,
188 netdev_put(dev, &req_info->dev_tracker);
195 &req_info->dev_tracker, GFP_KERNEL);
209 req_info->phy_index = nla_get_u32(tb[ETHTOOL_A_HEADER_PHY_INDEX]);
217 req_info->dev = dev;
218 req_info->flags = flags;
222 struct phy_device *ethnl_req_get_phydev(const struct ethnl_req_info *req_info,
230 if (!req_info->dev)
233 if (!req_info->phy_index)
234 return req_info->dev->phydev;
236 phydev = phy_link_topo_get_phy(req_info->dev, req_info->phy_index);
351 * @req_info: parsed request header of processed request
361 struct ethnl_req_info *req_info;
439 * @req_info: pointer to structure to put data into
449 static int ethnl_default_parse(struct ethnl_req_info *req_info,
457 ret = ethnl_parse_header_dev_get(req_info, tb[request_ops->hdr_attr],
464 ret = request_ops->parse_request(req_info, tb, info->extack);
472 netdev_put(req_info->dev, &req_info->dev_tracker);
473 req_info->dev = NULL;
499 struct ethnl_req_info *req_info = NULL;
513 req_info = kzalloc(ops->req_info_size, GFP_KERNEL);
514 if (!req_info)
518 kfree(req_info);
522 ret = ethnl_default_parse(req_info, info, ops, !ops->allow_nodev_do);
525 ethnl_init_reply_data(reply_data, ops, req_info->dev);
528 if (req_info->dev)
529 netdev_lock_ops(req_info->dev);
530 ret = ops->prepare_data(req_info, reply_data, info);
531 if (req_info->dev)
532 netdev_unlock_ops(req_info->dev);
536 ret = ops->reply_size(req_info, reply_data);
542 req_info->dev, ops->reply_cmd,
547 ret = ops->fill_reply(rskb, req_info, reply_data);
557 netdev_put(req_info->dev, &req_info->dev_tracker);
559 kfree(req_info);
569 netdev_put(req_info->dev, &req_info->dev_tracker);
572 kfree(req_info);
592 ret = ctx->ops->prepare_data(ctx->req_info, ctx->reply_data, info);
600 ret = ctx->ops->fill_reply(skb, ctx->req_info, ctx->reply_data);
653 struct ethnl_req_info *req_info;
663 req_info = kzalloc(ops->req_info_size, GFP_KERNEL);
664 if (!req_info)
672 ret = ethnl_default_parse(req_info, &info->info, ops, false);
675 if (req_info->dev) {
680 netdev_put(req_info->dev, &req_info->dev_tracker);
681 req_info->dev = NULL;
685 ctx->req_info = req_info;
694 kfree(req_info);
707 struct ethnl_req_info *req_info;
717 req_info = kzalloc(ops->req_info_size, GFP_KERNEL);
718 if (!req_info)
730 ret = ethnl_default_parse(req_info, &info->info, ops, false);
733 if (req_info->dev) {
734 phy_ctx->ifindex = req_info->dev->ifindex;
735 netdev_put(req_info->dev, &req_info->dev_tracker);
736 req_info->dev = NULL;
740 ctx->req_info = req_info;
749 kfree(req_info);
759 struct net_device *dev = ethnl_ctx->req_info->dev;
768 ethnl_ctx->req_info->phy_index = ctx->pos_phyindex;
772 * the req_info->phy_index
800 * net_device in the req_info
802 ethnl_ctx->req_info->dev = dev;
807 ethnl_ctx->req_info->dev = NULL;
840 ethnl_ctx->req_info->dev = dev;
861 kfree(ethnl_ctx->req_info);
872 kfree(ctx->req_info);
881 struct ethnl_req_info *req_info;
891 req_info = kzalloc(ops->req_info_size, GFP_KERNEL);
892 if (!req_info)
895 ret = ethnl_default_parse(req_info, info, ops, true);
900 ret = ops->set_validate(req_info, info);
906 dev = req_info->dev;
921 ret = ops->set(req_info, info);
928 ethnl_notify(dev, ops->set_ntf_cmd, req_info);
940 ethnl_parse_header_dev_put(req_info);
942 kfree(req_info);
973 struct ethnl_req_info *req_info;
987 req_info = kzalloc(ops->req_info_size, GFP_KERNEL);
988 if (!req_info)
992 kfree(req_info);
996 req_info->dev = dev;
997 req_info->flags |= ETHTOOL_FLAG_COMPACT_BITSETS;
999 req_info->phy_index = orig_req_info->phy_index;
1000 memcpy(&req_info[1], &orig_req_info[1],
1001 ops->req_info_size - sizeof(*req_info));
1007 ret = ops->prepare_data(req_info, reply_data, &info);
1010 ret = ops->reply_size(req_info, reply_data);
1023 ret = ops->fill_reply(skb, req_info, reply_data);
1031 kfree(req_info);
1046 kfree(req_info);
1053 const struct ethnl_req_info *req_info);
1076 const struct ethnl_req_info *req_info)
1084 ethnl_notify_handlers[cmd](dev, cmd, req_info);