Lines Matching +full:client +full:- +full:id
1 // SPDX-License-Identifier: GPL-2.0+
2 // Copyright (c) 2016-2017 Hisilicon Limited.
22 if (!hnae3_get_bit(ae_dev->flag, HNAE3_DEV_INITED_B)) in hnae3_unregister_ae_algo_prepare()
25 pci_id = pci_match_id(ae_algo->pdev_id_table, ae_dev->pdev); in hnae3_unregister_ae_algo_prepare()
29 pci_disable_sriov(ae_dev->pdev); in hnae3_unregister_ae_algo_prepare()
35 * list. This is a non-critical code so other updations, if happen
49 void hnae3_set_client_init_flag(struct hnae3_client *client, in hnae3_set_client_init_flag() argument
53 if (!client || !ae_dev) in hnae3_set_client_init_flag()
56 switch (client->type) { in hnae3_set_client_init_flag()
58 hnae3_set_bit(ae_dev->flag, HNAE3_KNIC_CLIENT_INITED_B, inited); in hnae3_set_client_init_flag()
61 hnae3_set_bit(ae_dev->flag, HNAE3_ROCE_CLIENT_INITED_B, inited); in hnae3_set_client_init_flag()
69 static int hnae3_get_client_init_flag(struct hnae3_client *client, in hnae3_get_client_init_flag() argument
74 switch (client->type) { in hnae3_get_client_init_flag()
76 inited = hnae3_get_bit(ae_dev->flag, in hnae3_get_client_init_flag()
80 inited = hnae3_get_bit(ae_dev->flag, in hnae3_get_client_init_flag()
90 static int hnae3_init_client_instance(struct hnae3_client *client, in hnae3_init_client_instance() argument
95 /* check if this client matches the type of ae_dev */ in hnae3_init_client_instance()
96 if (!(hnae3_client_match(client->type) && in hnae3_init_client_instance()
97 hnae3_get_bit(ae_dev->flag, HNAE3_DEV_INITED_B))) { in hnae3_init_client_instance()
101 ret = ae_dev->ops->init_client_instance(client, ae_dev); in hnae3_init_client_instance()
103 dev_err(&ae_dev->pdev->dev, in hnae3_init_client_instance()
104 "fail to instantiate client, ret = %d\n", ret); in hnae3_init_client_instance()
109 static void hnae3_uninit_client_instance(struct hnae3_client *client, in hnae3_uninit_client_instance() argument
112 /* check if this client matches the type of ae_dev */ in hnae3_uninit_client_instance()
113 if (!(hnae3_client_match(client->type) && in hnae3_uninit_client_instance()
114 hnae3_get_bit(ae_dev->flag, HNAE3_DEV_INITED_B))) in hnae3_uninit_client_instance()
117 if (hnae3_get_client_init_flag(client, ae_dev)) { in hnae3_uninit_client_instance()
118 ae_dev->ops->uninit_client_instance(client, ae_dev); in hnae3_uninit_client_instance()
120 hnae3_set_client_init_flag(client, ae_dev, 0); in hnae3_uninit_client_instance()
124 int hnae3_register_client(struct hnae3_client *client) in hnae3_register_client() argument
129 if (!client) in hnae3_register_client()
130 return -ENODEV; in hnae3_register_client()
133 /* one system should only have one client for every type */ in hnae3_register_client()
135 if (client_tmp->type == client->type) in hnae3_register_client()
139 list_add_tail(&client->node, &hnae3_client_list); in hnae3_register_client()
141 /* initialize the client on every matched port */ in hnae3_register_client()
143 /* if the client could not be initialized on current port, for in hnae3_register_client()
146 int ret = hnae3_init_client_instance(client, ae_dev); in hnae3_register_client()
148 dev_err(&ae_dev->pdev->dev, in hnae3_register_client()
160 void hnae3_unregister_client(struct hnae3_client *client) in hnae3_unregister_client() argument
166 if (!client) in hnae3_unregister_client()
170 /* one system should only have one client for every type */ in hnae3_unregister_client()
172 if (client_tmp->type == client->type) { in hnae3_unregister_client()
180 pr_err("client %s does not exist!\n", client->name); in hnae3_unregister_client()
184 /* un-initialize the client on every matched port */ in hnae3_unregister_client()
186 hnae3_uninit_client_instance(client, ae_dev); in hnae3_unregister_client()
189 list_del(&client->node); in hnae3_unregister_client()
194 /* hnae3_register_ae_algo - register a AE algorithm to hnae3 framework
200 const struct pci_device_id *id; in hnae3_register_ae_algo() local
202 struct hnae3_client *client; in hnae3_register_ae_algo() local
210 list_add_tail(&ae_algo->node, &hnae3_ae_algo_list); in hnae3_register_ae_algo()
214 id = pci_match_id(ae_algo->pdev_id_table, ae_dev->pdev); in hnae3_register_ae_algo()
215 if (!id) in hnae3_register_ae_algo()
218 if (!ae_algo->ops) { in hnae3_register_ae_algo()
219 dev_err(&ae_dev->pdev->dev, "ae_algo ops are null\n"); in hnae3_register_ae_algo()
222 ae_dev->ops = ae_algo->ops; in hnae3_register_ae_algo()
224 ret = ae_algo->ops->init_ae_dev(ae_dev); in hnae3_register_ae_algo()
226 dev_err(&ae_dev->pdev->dev, in hnae3_register_ae_algo()
232 hnae3_set_bit(ae_dev->flag, HNAE3_DEV_INITED_B, 1); in hnae3_register_ae_algo()
234 /* check the client list for the match with this ae_dev type and in hnae3_register_ae_algo()
235 * initialize the figure out client instance in hnae3_register_ae_algo()
237 list_for_each_entry(client, &hnae3_client_list, node) { in hnae3_register_ae_algo()
238 ret = hnae3_init_client_instance(client, ae_dev); in hnae3_register_ae_algo()
240 dev_err(&ae_dev->pdev->dev, in hnae3_register_ae_algo()
250 /* hnae3_unregister_ae_algo - unregisters a AE algorithm
255 const struct pci_device_id *id; in hnae3_unregister_ae_algo() local
257 struct hnae3_client *client; in hnae3_unregister_ae_algo() local
265 if (!hnae3_get_bit(ae_dev->flag, HNAE3_DEV_INITED_B)) in hnae3_unregister_ae_algo()
268 id = pci_match_id(ae_algo->pdev_id_table, ae_dev->pdev); in hnae3_unregister_ae_algo()
269 if (!id) in hnae3_unregister_ae_algo()
272 /* check the client list for the match with this ae_dev type and in hnae3_unregister_ae_algo()
273 * un-initialize the figure out client instance in hnae3_unregister_ae_algo()
275 list_for_each_entry(client, &hnae3_client_list, node) in hnae3_unregister_ae_algo()
276 hnae3_uninit_client_instance(client, ae_dev); in hnae3_unregister_ae_algo()
278 ae_algo->ops->uninit_ae_dev(ae_dev); in hnae3_unregister_ae_algo()
279 hnae3_set_bit(ae_dev->flag, HNAE3_DEV_INITED_B, 0); in hnae3_unregister_ae_algo()
280 ae_dev->ops = NULL; in hnae3_unregister_ae_algo()
283 list_del(&ae_algo->node); in hnae3_unregister_ae_algo()
288 /* hnae3_register_ae_dev - registers a AE device to hnae3 framework
294 const struct pci_device_id *id; in hnae3_register_ae_dev() local
296 struct hnae3_client *client; in hnae3_register_ae_dev() local
300 return -ENODEV; in hnae3_register_ae_dev()
304 list_add_tail(&ae_dev->node, &hnae3_ae_dev_list); in hnae3_register_ae_dev()
308 id = pci_match_id(ae_algo->pdev_id_table, ae_dev->pdev); in hnae3_register_ae_dev()
309 if (!id) in hnae3_register_ae_dev()
312 if (!ae_algo->ops) { in hnae3_register_ae_dev()
313 dev_err(&ae_dev->pdev->dev, "ae_algo ops are null\n"); in hnae3_register_ae_dev()
314 ret = -EOPNOTSUPP; in hnae3_register_ae_dev()
317 ae_dev->ops = ae_algo->ops; in hnae3_register_ae_dev()
319 ret = ae_dev->ops->init_ae_dev(ae_dev); in hnae3_register_ae_dev()
321 dev_err(&ae_dev->pdev->dev, in hnae3_register_ae_dev()
327 hnae3_set_bit(ae_dev->flag, HNAE3_DEV_INITED_B, 1); in hnae3_register_ae_dev()
331 /* check the client list for the match with this ae_dev type and in hnae3_register_ae_dev()
332 * initialize the figure out client instance in hnae3_register_ae_dev()
334 list_for_each_entry(client, &hnae3_client_list, node) { in hnae3_register_ae_dev()
335 ret = hnae3_init_client_instance(client, ae_dev); in hnae3_register_ae_dev()
337 dev_err(&ae_dev->pdev->dev, in hnae3_register_ae_dev()
347 list_del(&ae_dev->node); in hnae3_register_ae_dev()
354 /* hnae3_unregister_ae_dev - unregisters a AE device
359 const struct pci_device_id *id; in hnae3_unregister_ae_dev() local
361 struct hnae3_client *client; in hnae3_unregister_ae_dev() local
369 if (!hnae3_get_bit(ae_dev->flag, HNAE3_DEV_INITED_B)) in hnae3_unregister_ae_dev()
372 id = pci_match_id(ae_algo->pdev_id_table, ae_dev->pdev); in hnae3_unregister_ae_dev()
373 if (!id) in hnae3_unregister_ae_dev()
376 list_for_each_entry(client, &hnae3_client_list, node) in hnae3_unregister_ae_dev()
377 hnae3_uninit_client_instance(client, ae_dev); in hnae3_unregister_ae_dev()
379 ae_algo->ops->uninit_ae_dev(ae_dev); in hnae3_unregister_ae_dev()
380 hnae3_set_bit(ae_dev->flag, HNAE3_DEV_INITED_B, 0); in hnae3_unregister_ae_dev()
381 ae_dev->ops = NULL; in hnae3_unregister_ae_dev()
384 list_del(&ae_dev->node); in hnae3_unregister_ae_dev()