Lines Matching refs:req_info

137 int ethnl_parse_header_dev_get(struct ethnl_req_info *req_info,  in ethnl_parse_header_dev_get()  argument
167 dev = netdev_get_by_index(net, ifindex, &req_info->dev_tracker, in ethnl_parse_header_dev_get()
178 netdev_put(dev, &req_info->dev_tracker); in ethnl_parse_header_dev_get()
185 &req_info->dev_tracker, GFP_KERNEL); in ethnl_parse_header_dev_get()
199 req_info->phy_index = nla_get_u32(tb[ETHTOOL_A_HEADER_PHY_INDEX]); in ethnl_parse_header_dev_get()
207 req_info->dev = dev; in ethnl_parse_header_dev_get()
208 req_info->flags = flags; in ethnl_parse_header_dev_get()
212 struct phy_device *ethnl_req_get_phydev(const struct ethnl_req_info *req_info, in ethnl_req_get_phydev() argument
220 if (!req_info->dev) in ethnl_req_get_phydev()
223 if (!req_info->phy_index) in ethnl_req_get_phydev()
224 return req_info->dev->phydev; in ethnl_req_get_phydev()
226 phydev = phy_link_topo_get_phy(req_info->dev, req_info->phy_index); in ethnl_req_get_phydev()
351 struct ethnl_req_info *req_info; member
416 static int ethnl_default_parse(struct ethnl_req_info *req_info, in ethnl_default_parse() argument
424 ret = ethnl_parse_header_dev_get(req_info, tb[request_ops->hdr_attr], in ethnl_default_parse()
431 ret = request_ops->parse_request(req_info, tb, info->extack); in ethnl_default_parse()
461 struct ethnl_req_info *req_info = NULL; in ethnl_default_doit() local
475 req_info = kzalloc(ops->req_info_size, GFP_KERNEL); in ethnl_default_doit()
476 if (!req_info) in ethnl_default_doit()
480 kfree(req_info); in ethnl_default_doit()
484 ret = ethnl_default_parse(req_info, info, ops, !ops->allow_nodev_do); in ethnl_default_doit()
487 ethnl_init_reply_data(reply_data, ops, req_info->dev); in ethnl_default_doit()
490 ret = ops->prepare_data(req_info, reply_data, info); in ethnl_default_doit()
494 ret = ops->reply_size(req_info, reply_data); in ethnl_default_doit()
500 req_info->dev, ops->reply_cmd, in ethnl_default_doit()
505 ret = ops->fill_reply(rskb, req_info, reply_data); in ethnl_default_doit()
515 netdev_put(req_info->dev, &req_info->dev_tracker); in ethnl_default_doit()
517 kfree(req_info); in ethnl_default_doit()
527 netdev_put(req_info->dev, &req_info->dev_tracker); in ethnl_default_doit()
529 kfree(req_info); in ethnl_default_doit()
548 ret = ctx->ops->prepare_data(ctx->req_info, ctx->reply_data, info); in ethnl_default_dump_one()
555 ret = ctx->ops->fill_reply(skb, ctx->req_info, ctx->reply_data); in ethnl_default_dump_one()
606 struct ethnl_req_info *req_info; in ethnl_default_start() local
616 req_info = kzalloc(ops->req_info_size, GFP_KERNEL); in ethnl_default_start()
617 if (!req_info) in ethnl_default_start()
625 ret = ethnl_default_parse(req_info, &info->info, ops, false); in ethnl_default_start()
626 if (req_info->dev) { in ethnl_default_start()
631 netdev_put(req_info->dev, &req_info->dev_tracker); in ethnl_default_start()
632 req_info->dev = NULL; in ethnl_default_start()
638 ctx->req_info = req_info; in ethnl_default_start()
647 kfree(req_info); in ethnl_default_start()
658 kfree(ctx->req_info); in ethnl_default_done()
666 struct ethnl_req_info req_info = {}; in ethnl_default_set_doit() local
676 ret = ethnl_parse_header_dev_get(&req_info, info->attrs[ops->hdr_attr], in ethnl_default_set_doit()
683 ret = ops->set_validate(&req_info, info); in ethnl_default_set_doit()
690 ret = ethnl_ops_begin(req_info.dev); in ethnl_default_set_doit()
694 ret = ops->set(&req_info, info); in ethnl_default_set_doit()
697 ethtool_notify(req_info.dev, ops->set_ntf_cmd, NULL); in ethnl_default_set_doit()
701 ethnl_ops_complete(req_info.dev); in ethnl_default_set_doit()
705 ethnl_parse_header_dev_put(&req_info); in ethnl_default_set_doit()
734 struct ethnl_req_info *req_info; in ethnl_default_notify() local
748 req_info = kzalloc(ops->req_info_size, GFP_KERNEL); in ethnl_default_notify()
749 if (!req_info) in ethnl_default_notify()
753 kfree(req_info); in ethnl_default_notify()
757 req_info->dev = dev; in ethnl_default_notify()
758 req_info->flags |= ETHTOOL_FLAG_COMPACT_BITSETS; in ethnl_default_notify()
761 ret = ops->prepare_data(req_info, reply_data, &info); in ethnl_default_notify()
764 ret = ops->reply_size(req_info, reply_data); in ethnl_default_notify()
777 ret = ops->fill_reply(skb, req_info, reply_data); in ethnl_default_notify()
785 kfree(req_info); in ethnl_default_notify()
799 kfree(req_info); in ethnl_default_notify()