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 device_lock(&ae_dev->pdev->dev); in hnae3_unregister_ae_algo_prepare()
30 pci_disable_sriov(ae_dev->pdev); in hnae3_unregister_ae_algo_prepare()
31 device_unlock(&ae_dev->pdev->dev); in hnae3_unregister_ae_algo_prepare()
38 * list. This is a non-critical code so other updations, if happen
67 void hnae3_set_client_init_flag(struct hnae3_client *client, in hnae3_set_client_init_flag() argument
71 if (!client || !ae_dev) in hnae3_set_client_init_flag()
74 switch (client->type) { in hnae3_set_client_init_flag()
76 hnae3_set_bit(ae_dev->flag, HNAE3_KNIC_CLIENT_INITED_B, inited); in hnae3_set_client_init_flag()
79 hnae3_set_bit(ae_dev->flag, HNAE3_ROCE_CLIENT_INITED_B, inited); in hnae3_set_client_init_flag()
87 static int hnae3_get_client_init_flag(struct hnae3_client *client, in hnae3_get_client_init_flag() argument
92 switch (client->type) { in hnae3_get_client_init_flag()
94 inited = hnae3_get_bit(ae_dev->flag, in hnae3_get_client_init_flag()
98 inited = hnae3_get_bit(ae_dev->flag, in hnae3_get_client_init_flag()
108 static int hnae3_init_client_instance(struct hnae3_client *client, in hnae3_init_client_instance() argument
113 /* check if this client matches the type of ae_dev */ in hnae3_init_client_instance()
114 if (!(hnae3_client_match(client->type) && in hnae3_init_client_instance()
115 hnae3_get_bit(ae_dev->flag, HNAE3_DEV_INITED_B))) { in hnae3_init_client_instance()
119 ret = ae_dev->ops->init_client_instance(client, ae_dev); in hnae3_init_client_instance()
121 dev_err(&ae_dev->pdev->dev, in hnae3_init_client_instance()
122 "fail to instantiate client, ret = %d\n", ret); in hnae3_init_client_instance()
127 static void hnae3_uninit_client_instance(struct hnae3_client *client, in hnae3_uninit_client_instance() argument
130 /* check if this client matches the type of ae_dev */ in hnae3_uninit_client_instance()
131 if (!(hnae3_client_match(client->type) && in hnae3_uninit_client_instance()
132 hnae3_get_bit(ae_dev->flag, HNAE3_DEV_INITED_B))) in hnae3_uninit_client_instance()
135 if (hnae3_get_client_init_flag(client, ae_dev)) { in hnae3_uninit_client_instance()
136 ae_dev->ops->uninit_client_instance(client, ae_dev); in hnae3_uninit_client_instance()
138 hnae3_set_client_init_flag(client, ae_dev, 0); in hnae3_uninit_client_instance()
142 int hnae3_register_client(struct hnae3_client *client) in hnae3_register_client() argument
147 if (!client) in hnae3_register_client()
148 return -ENODEV; in hnae3_register_client()
151 /* one system should only have one client for every type */ in hnae3_register_client()
153 if (client_tmp->type == client->type) in hnae3_register_client()
157 list_add_tail(&client->node, &hnae3_client_list); in hnae3_register_client()
159 /* initialize the client on every matched port */ in hnae3_register_client()
161 /* if the client could not be initialized on current port, for in hnae3_register_client()
164 int ret = hnae3_init_client_instance(client, ae_dev); in hnae3_register_client()
166 dev_err(&ae_dev->pdev->dev, in hnae3_register_client()
178 void hnae3_unregister_client(struct hnae3_client *client) in hnae3_unregister_client() argument
184 if (!client) in hnae3_unregister_client()
188 /* one system should only have one client for every type */ in hnae3_unregister_client()
190 if (client_tmp->type == client->type) { in hnae3_unregister_client()
198 pr_err("client %s does not exist!\n", client->name); in hnae3_unregister_client()
202 /* un-initialize the client on every matched port */ in hnae3_unregister_client()
204 hnae3_uninit_client_instance(client, ae_dev); in hnae3_unregister_client()
207 list_del(&client->node); in hnae3_unregister_client()
212 /* hnae3_register_ae_algo - register a AE algorithm to hnae3 framework
218 const struct pci_device_id *id; in hnae3_register_ae_algo() local
220 struct hnae3_client *client; in hnae3_register_ae_algo() local
228 list_add_tail(&ae_algo->node, &hnae3_ae_algo_list); in hnae3_register_ae_algo()
232 id = pci_match_id(ae_algo->pdev_id_table, ae_dev->pdev); in hnae3_register_ae_algo()
233 if (!id) in hnae3_register_ae_algo()
236 if (!ae_algo->ops) { in hnae3_register_ae_algo()
237 dev_err(&ae_dev->pdev->dev, "ae_algo ops are null\n"); in hnae3_register_ae_algo()
240 ae_dev->ops = ae_algo->ops; in hnae3_register_ae_algo()
242 ret = ae_algo->ops->init_ae_dev(ae_dev); in hnae3_register_ae_algo()
244 dev_err(&ae_dev->pdev->dev, in hnae3_register_ae_algo()
250 hnae3_set_bit(ae_dev->flag, HNAE3_DEV_INITED_B, 1); in hnae3_register_ae_algo()
252 /* check the client list for the match with this ae_dev type and in hnae3_register_ae_algo()
253 * initialize the figure out client instance in hnae3_register_ae_algo()
255 list_for_each_entry(client, &hnae3_client_list, node) { in hnae3_register_ae_algo()
256 ret = hnae3_init_client_instance(client, ae_dev); in hnae3_register_ae_algo()
258 dev_err(&ae_dev->pdev->dev, in hnae3_register_ae_algo()
268 /* hnae3_unregister_ae_algo - unregisters a AE algorithm
273 const struct pci_device_id *id; in hnae3_unregister_ae_algo() local
275 struct hnae3_client *client; in hnae3_unregister_ae_algo() local
283 if (!hnae3_get_bit(ae_dev->flag, HNAE3_DEV_INITED_B)) in hnae3_unregister_ae_algo()
286 id = pci_match_id(ae_algo->pdev_id_table, ae_dev->pdev); in hnae3_unregister_ae_algo()
287 if (!id) in hnae3_unregister_ae_algo()
290 /* check the client list for the match with this ae_dev type and in hnae3_unregister_ae_algo()
291 * un-initialize the figure out client instance in hnae3_unregister_ae_algo()
293 list_for_each_entry(client, &hnae3_client_list, node) in hnae3_unregister_ae_algo()
294 hnae3_uninit_client_instance(client, ae_dev); in hnae3_unregister_ae_algo()
296 ae_algo->ops->uninit_ae_dev(ae_dev); in hnae3_unregister_ae_algo()
297 hnae3_set_bit(ae_dev->flag, HNAE3_DEV_INITED_B, 0); in hnae3_unregister_ae_algo()
298 ae_dev->ops = NULL; in hnae3_unregister_ae_algo()
301 list_del(&ae_algo->node); in hnae3_unregister_ae_algo()
306 /* hnae3_register_ae_dev - registers a AE device to hnae3 framework
312 const struct pci_device_id *id; in hnae3_register_ae_dev() local
314 struct hnae3_client *client; in hnae3_register_ae_dev() local
318 return -ENODEV; in hnae3_register_ae_dev()
322 list_add_tail(&ae_dev->node, &hnae3_ae_dev_list); in hnae3_register_ae_dev()
326 id = pci_match_id(ae_algo->pdev_id_table, ae_dev->pdev); in hnae3_register_ae_dev()
327 if (!id) in hnae3_register_ae_dev()
330 if (!ae_algo->ops) { in hnae3_register_ae_dev()
331 dev_err(&ae_dev->pdev->dev, "ae_algo ops are null\n"); in hnae3_register_ae_dev()
332 ret = -EOPNOTSUPP; in hnae3_register_ae_dev()
335 ae_dev->ops = ae_algo->ops; in hnae3_register_ae_dev()
337 ret = ae_dev->ops->init_ae_dev(ae_dev); in hnae3_register_ae_dev()
339 dev_err(&ae_dev->pdev->dev, in hnae3_register_ae_dev()
345 hnae3_set_bit(ae_dev->flag, HNAE3_DEV_INITED_B, 1); in hnae3_register_ae_dev()
349 /* check the client list for the match with this ae_dev type and in hnae3_register_ae_dev()
350 * initialize the figure out client instance in hnae3_register_ae_dev()
352 list_for_each_entry(client, &hnae3_client_list, node) { in hnae3_register_ae_dev()
353 ret = hnae3_init_client_instance(client, ae_dev); in hnae3_register_ae_dev()
355 dev_err(&ae_dev->pdev->dev, in hnae3_register_ae_dev()
365 list_del(&ae_dev->node); in hnae3_register_ae_dev()
372 /* hnae3_unregister_ae_dev - unregisters a AE device
377 const struct pci_device_id *id; in hnae3_unregister_ae_dev() local
379 struct hnae3_client *client; in hnae3_unregister_ae_dev() local
387 if (!hnae3_get_bit(ae_dev->flag, HNAE3_DEV_INITED_B)) in hnae3_unregister_ae_dev()
390 id = pci_match_id(ae_algo->pdev_id_table, ae_dev->pdev); in hnae3_unregister_ae_dev()
391 if (!id) in hnae3_unregister_ae_dev()
394 list_for_each_entry(client, &hnae3_client_list, node) in hnae3_unregister_ae_dev()
395 hnae3_uninit_client_instance(client, ae_dev); in hnae3_unregister_ae_dev()
397 ae_algo->ops->uninit_ae_dev(ae_dev); in hnae3_unregister_ae_dev()
398 hnae3_set_bit(ae_dev->flag, HNAE3_DEV_INITED_B, 0); in hnae3_unregister_ae_dev()
399 ae_dev->ops = NULL; in hnae3_unregister_ae_dev()
402 list_del(&ae_dev->node); in hnae3_unregister_ae_dev()