root/include/rdma/ib_cache.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * Copyright (c) 2004 Topspin Communications.  All rights reserved.
   3  * Copyright (c) 2005 Intel Corporation. All rights reserved.
   4  * Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved.
   5  *
   6  * This software is available to you under a choice of one of two
   7  * licenses.  You may choose to be licensed under the terms of the GNU
   8  * General Public License (GPL) Version 2, available from the file
   9  * COPYING in the main directory of this source tree, or the
  10  * OpenIB.org BSD license below:
  11  *
  12  *     Redistribution and use in source and binary forms, with or
  13  *     without modification, are permitted provided that the following
  14  *     conditions are met:
  15  *
  16  *      - Redistributions of source code must retain the above
  17  *        copyright notice, this list of conditions and the following
  18  *        disclaimer.
  19  *
  20  *      - Redistributions in binary form must reproduce the above
  21  *        copyright notice, this list of conditions and the following
  22  *        disclaimer in the documentation and/or other materials
  23  *        provided with the distribution.
  24  *
  25  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  26  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  27  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  28  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  29  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  30  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  31  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  32  * SOFTWARE.
  33  */
  34 
  35 #ifndef _IB_CACHE_H
  36 #define _IB_CACHE_H
  37 
  38 #include <rdma/ib_verbs.h>
  39 
  40 int rdma_query_gid(struct ib_device *device, u8 port_num, int index,
  41                    union ib_gid *gid);
  42 const struct ib_gid_attr *rdma_find_gid(struct ib_device *device,
  43                                         const union ib_gid *gid,
  44                                         enum ib_gid_type gid_type,
  45                                         struct net_device *ndev);
  46 const struct ib_gid_attr *rdma_find_gid_by_port(struct ib_device *ib_dev,
  47                                                 const union ib_gid *gid,
  48                                                 enum ib_gid_type gid_type,
  49                                                 u8 port,
  50                                                 struct net_device *ndev);
  51 const struct ib_gid_attr *rdma_find_gid_by_filter(
  52         struct ib_device *device, const union ib_gid *gid, u8 port_num,
  53         bool (*filter)(const union ib_gid *gid, const struct ib_gid_attr *,
  54                        void *),
  55         void *context);
  56 
  57 int rdma_read_gid_l2_fields(const struct ib_gid_attr *attr,
  58                             u16 *vlan_id, u8 *smac);
  59 struct net_device *rdma_read_gid_attr_ndev_rcu(const struct ib_gid_attr *attr);
  60 
  61 /**
  62  * ib_get_cached_pkey - Returns a cached PKey table entry
  63  * @device: The device to query.
  64  * @port_num: The port number of the device to query.
  65  * @index: The index into the cached PKey table to query.
  66  * @pkey: The PKey value found at the specified index.
  67  *
  68  * ib_get_cached_pkey() fetches the specified PKey table entry stored in
  69  * the local software cache.
  70  */
  71 int ib_get_cached_pkey(struct ib_device    *device_handle,
  72                        u8                   port_num,
  73                        int                  index,
  74                        u16                 *pkey);
  75 
  76 /**
  77  * ib_find_cached_pkey - Returns the PKey table index where a specified
  78  *   PKey value occurs.
  79  * @device: The device to query.
  80  * @port_num: The port number of the device to search for the PKey.
  81  * @pkey: The PKey value to search for.
  82  * @index: The index into the cached PKey table where the PKey was found.
  83  *
  84  * ib_find_cached_pkey() searches the specified PKey table in
  85  * the local software cache.
  86  */
  87 int ib_find_cached_pkey(struct ib_device    *device,
  88                         u8                   port_num,
  89                         u16                  pkey,
  90                         u16                 *index);
  91 
  92 /**
  93  * ib_find_exact_cached_pkey - Returns the PKey table index where a specified
  94  *   PKey value occurs. Comparison uses the FULL 16 bits (incl membership bit)
  95  * @device: The device to query.
  96  * @port_num: The port number of the device to search for the PKey.
  97  * @pkey: The PKey value to search for.
  98  * @index: The index into the cached PKey table where the PKey was found.
  99  *
 100  * ib_find_exact_cached_pkey() searches the specified PKey table in
 101  * the local software cache.
 102  */
 103 int ib_find_exact_cached_pkey(struct ib_device    *device,
 104                               u8                   port_num,
 105                               u16                  pkey,
 106                               u16                 *index);
 107 
 108 /**
 109  * ib_get_cached_lmc - Returns a cached lmc table entry
 110  * @device: The device to query.
 111  * @port_num: The port number of the device to query.
 112  * @lmc: The lmc value for the specified port for that device.
 113  *
 114  * ib_get_cached_lmc() fetches the specified lmc table entry stored in
 115  * the local software cache.
 116  */
 117 int ib_get_cached_lmc(struct ib_device *device,
 118                       u8                port_num,
 119                       u8                *lmc);
 120 
 121 /**
 122  * ib_get_cached_port_state - Returns a cached port state table entry
 123  * @device: The device to query.
 124  * @port_num: The port number of the device to query.
 125  * @port_state: port_state for the specified port for that device.
 126  *
 127  * ib_get_cached_port_state() fetches the specified port_state table entry stored in
 128  * the local software cache.
 129  */
 130 int ib_get_cached_port_state(struct ib_device *device,
 131                               u8                port_num,
 132                               enum ib_port_state *port_active);
 133 
 134 bool rdma_is_zero_gid(const union ib_gid *gid);
 135 const struct ib_gid_attr *rdma_get_gid_attr(struct ib_device *device,
 136                                             u8 port_num, int index);
 137 void rdma_put_gid_attr(const struct ib_gid_attr *attr);
 138 void rdma_hold_gid_attr(const struct ib_gid_attr *attr);
 139 
 140 #endif /* _IB_CACHE_H */

/* [<][>][^][v][top][bottom][index][help] */