1 | /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ |
2 | /* |
3 | * Copyright (c) 2004 Topspin Communications. All rights reserved. |
4 | * Copyright (c) 2005 Intel Corporation. All rights reserved. |
5 | * Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved. |
6 | */ |
7 | |
8 | #ifndef _IB_CACHE_H |
9 | #define _IB_CACHE_H |
10 | |
11 | #include <rdma/ib_verbs.h> |
12 | |
13 | int rdma_query_gid(struct ib_device *device, u32 port_num, int index, |
14 | union ib_gid *gid); |
15 | void *rdma_read_gid_hw_context(const struct ib_gid_attr *attr); |
16 | const struct ib_gid_attr *rdma_find_gid(struct ib_device *device, |
17 | const union ib_gid *gid, |
18 | enum ib_gid_type gid_type, |
19 | struct net_device *ndev); |
20 | const struct ib_gid_attr *rdma_find_gid_by_port(struct ib_device *ib_dev, |
21 | const union ib_gid *gid, |
22 | enum ib_gid_type gid_type, |
23 | u32 port, |
24 | struct net_device *ndev); |
25 | const struct ib_gid_attr *rdma_find_gid_by_filter( |
26 | struct ib_device *device, const union ib_gid *gid, u32 port_num, |
27 | bool (*filter)(const union ib_gid *gid, const struct ib_gid_attr *, |
28 | void *), |
29 | void *context); |
30 | |
31 | int rdma_read_gid_l2_fields(const struct ib_gid_attr *attr, |
32 | u16 *vlan_id, u8 *smac); |
33 | struct net_device *rdma_read_gid_attr_ndev_rcu(const struct ib_gid_attr *attr); |
34 | |
35 | /** |
36 | * ib_get_cached_pkey - Returns a cached PKey table entry |
37 | * @device: The device to query. |
38 | * @port_num: The port number of the device to query. |
39 | * @index: The index into the cached PKey table to query. |
40 | * @pkey: The PKey value found at the specified index. |
41 | * |
42 | * ib_get_cached_pkey() fetches the specified PKey table entry stored in |
43 | * the local software cache. |
44 | */ |
45 | int ib_get_cached_pkey(struct ib_device *device_handle, |
46 | u32 port_num, |
47 | int index, |
48 | u16 *pkey); |
49 | |
50 | /** |
51 | * ib_find_cached_pkey - Returns the PKey table index where a specified |
52 | * PKey value occurs. |
53 | * @device: The device to query. |
54 | * @port_num: The port number of the device to search for the PKey. |
55 | * @pkey: The PKey value to search for. |
56 | * @index: The index into the cached PKey table where the PKey was found. |
57 | * |
58 | * ib_find_cached_pkey() searches the specified PKey table in |
59 | * the local software cache. |
60 | */ |
61 | int ib_find_cached_pkey(struct ib_device *device, |
62 | u32 port_num, |
63 | u16 pkey, |
64 | u16 *index); |
65 | |
66 | /** |
67 | * ib_find_exact_cached_pkey - Returns the PKey table index where a specified |
68 | * PKey value occurs. Comparison uses the FULL 16 bits (incl membership bit) |
69 | * @device: The device to query. |
70 | * @port_num: The port number of the device to search for the PKey. |
71 | * @pkey: The PKey value to search for. |
72 | * @index: The index into the cached PKey table where the PKey was found. |
73 | * |
74 | * ib_find_exact_cached_pkey() searches the specified PKey table in |
75 | * the local software cache. |
76 | */ |
77 | int ib_find_exact_cached_pkey(struct ib_device *device, |
78 | u32 port_num, |
79 | u16 pkey, |
80 | u16 *index); |
81 | |
82 | /** |
83 | * ib_get_cached_lmc - Returns a cached lmc table entry |
84 | * @device: The device to query. |
85 | * @port_num: The port number of the device to query. |
86 | * @lmc: The lmc value for the specified port for that device. |
87 | * |
88 | * ib_get_cached_lmc() fetches the specified lmc table entry stored in |
89 | * the local software cache. |
90 | */ |
91 | int ib_get_cached_lmc(struct ib_device *device, |
92 | u32 port_num, |
93 | u8 *lmc); |
94 | |
95 | /** |
96 | * ib_get_cached_port_state - Returns a cached port state table entry |
97 | * @device: The device to query. |
98 | * @port_num: The port number of the device to query. |
99 | * @port_state: port_state for the specified port for that device. |
100 | * |
101 | * ib_get_cached_port_state() fetches the specified port_state table entry stored in |
102 | * the local software cache. |
103 | */ |
104 | int ib_get_cached_port_state(struct ib_device *device, |
105 | u32 port_num, |
106 | enum ib_port_state *port_active); |
107 | |
108 | bool rdma_is_zero_gid(const union ib_gid *gid); |
109 | const struct ib_gid_attr *rdma_get_gid_attr(struct ib_device *device, |
110 | u32 port_num, int index); |
111 | void rdma_put_gid_attr(const struct ib_gid_attr *attr); |
112 | void rdma_hold_gid_attr(const struct ib_gid_attr *attr); |
113 | ssize_t rdma_query_gid_table(struct ib_device *device, |
114 | struct ib_uverbs_gid_entry *entries, |
115 | size_t max_entries); |
116 | |
117 | #endif /* _IB_CACHE_H */ |
118 | |