118 lines · c
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_H9#define _IB_CACHE_H10 11#include <rdma/ib_verbs.h>12 13int rdma_query_gid(struct ib_device *device, u32 port_num, int index,14 union ib_gid *gid);15void *rdma_read_gid_hw_context(const struct ib_gid_attr *attr);16const 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);20const 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);25const 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 31int rdma_read_gid_l2_fields(const struct ib_gid_attr *attr,32 u16 *vlan_id, u8 *smac);33struct 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 entry37 * @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 in43 * the local software cache.44 */45int 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 specified52 * 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 in59 * the local software cache.60 */61int 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 specified68 * 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 in75 * the local software cache.76 */77int 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 entry84 * @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 in89 * the local software cache.90 */91int 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 entry97 * @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 in102 * the local software cache.103 */104int ib_get_cached_port_state(struct ib_device *device,105 u32 port_num,106 enum ib_port_state *port_active);107 108bool rdma_is_zero_gid(const union ib_gid *gid);109const struct ib_gid_attr *rdma_get_gid_attr(struct ib_device *device,110 u32 port_num, int index);111void rdma_put_gid_attr(const struct ib_gid_attr *attr);112void rdma_hold_gid_attr(const struct ib_gid_attr *attr);113ssize_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