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_get_cached_lmc - Returns a cached lmc table entry 68 * @device: The device to query. 69 * @port_num: The port number of the device to query. 70 * @lmc: The lmc value for the specified port for that device. 71 * 72 * ib_get_cached_lmc() fetches the specified lmc table entry stored in 73 * the local software cache. 74 */ 75 int ib_get_cached_lmc(struct ib_device *device, 76 u32 port_num, 77 u8 *lmc); 78 79 /** 80 * ib_get_cached_port_state - Returns a cached port state table entry 81 * @device: The device to query. 82 * @port_num: The port number of the device to query. 83 * @port_state: port_state for the specified port for that device. 84 * 85 * ib_get_cached_port_state() fetches the specified port_state table entry stored in 86 * the local software cache. 87 */ 88 int ib_get_cached_port_state(struct ib_device *device, 89 u32 port_num, 90 enum ib_port_state *port_active); 91 92 bool rdma_is_zero_gid(const union ib_gid *gid); 93 const struct ib_gid_attr *rdma_get_gid_attr(struct ib_device *device, 94 u32 port_num, int index); 95 void rdma_put_gid_attr(const struct ib_gid_attr *attr); 96 void rdma_hold_gid_attr(const struct ib_gid_attr *attr); 97 ssize_t rdma_query_gid_table(struct ib_device *device, 98 struct ib_uverbs_gid_entry *entries, 99 size_t max_entries); 100 101 #endif /* _IB_CACHE_H */ 102