2020-07-19 10:25:21 +03:00
/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
2005-04-17 02:20:36 +04:00
/*
* Copyright ( c ) 2004 Topspin Communications . All rights reserved .
2005-08-11 10:03:10 +04:00
* Copyright ( c ) 2005 Intel Corporation . All rights reserved .
* Copyright ( c ) 2005 Sun Microsystems , Inc . All rights reserved .
2005-04-17 02:20:36 +04:00
*/
# ifndef _IB_CACHE_H
# define _IB_CACHE_H
2005-08-26 00:40:04 +04:00
# include <rdma/ib_verbs.h>
2005-04-17 02:20:36 +04:00
2021-03-01 10:04:20 +03:00
int rdma_query_gid ( struct ib_device * device , u32 port_num , int index ,
2018-06-05 08:40:20 +03:00
union ib_gid * gid ) ;
2020-02-19 13:19:53 +03:00
void * rdma_read_gid_hw_context ( const struct ib_gid_attr * attr ) ;
2018-06-05 08:40:20 +03:00
const struct ib_gid_attr * rdma_find_gid ( struct ib_device * device ,
const union ib_gid * gid ,
enum ib_gid_type gid_type ,
struct net_device * ndev ) ;
const struct ib_gid_attr * rdma_find_gid_by_port ( struct ib_device * ib_dev ,
const union ib_gid * gid ,
enum ib_gid_type gid_type ,
2021-03-01 10:04:20 +03:00
u32 port ,
2018-06-05 08:40:20 +03:00
struct net_device * ndev ) ;
const struct ib_gid_attr * rdma_find_gid_by_filter (
2021-03-01 10:04:20 +03:00
struct ib_device * device , const union ib_gid * gid , u32 port_num ,
2018-06-05 08:40:20 +03:00
bool ( * filter ) ( const union ib_gid * gid , const struct ib_gid_attr * ,
void * ) ,
void * context ) ;
2019-05-02 10:48:03 +03:00
int rdma_read_gid_l2_fields ( const struct ib_gid_attr * attr ,
u16 * vlan_id , u8 * smac ) ;
2019-05-02 10:48:04 +03:00
struct net_device * rdma_read_gid_attr_ndev_rcu ( const struct ib_gid_attr * attr ) ;
2019-05-02 10:48:03 +03:00
2005-04-17 02:20:36 +04:00
/**
* ib_get_cached_pkey - Returns a cached PKey table entry
* @ device : The device to query .
* @ port_num : The port number of the device to query .
* @ index : The index into the cached PKey table to query .
* @ pkey : The PKey value found at the specified index .
*
* ib_get_cached_pkey ( ) fetches the specified PKey table entry stored in
* the local software cache .
*/
int ib_get_cached_pkey ( struct ib_device * device_handle ,
2021-03-01 10:04:20 +03:00
u32 port_num ,
2005-04-17 02:20:36 +04:00
int index ,
u16 * pkey ) ;
/**
* ib_find_cached_pkey - Returns the PKey table index where a specified
* PKey value occurs .
* @ device : The device to query .
* @ port_num : The port number of the device to search for the PKey .
* @ pkey : The PKey value to search for .
* @ index : The index into the cached PKey table where the PKey was found .
*
* ib_find_cached_pkey ( ) searches the specified PKey table in
* the local software cache .
*/
int ib_find_cached_pkey ( struct ib_device * device ,
2021-03-01 10:04:20 +03:00
u32 port_num ,
2005-04-17 02:20:36 +04:00
u16 pkey ,
u16 * index ) ;
2012-08-03 12:40:39 +04:00
/**
* ib_find_exact_cached_pkey - Returns the PKey table index where a specified
* PKey value occurs . Comparison uses the FULL 16 bits ( incl membership bit )
* @ device : The device to query .
* @ port_num : The port number of the device to search for the PKey .
* @ pkey : The PKey value to search for .
* @ index : The index into the cached PKey table where the PKey was found .
*
* ib_find_exact_cached_pkey ( ) searches the specified PKey table in
* the local software cache .
*/
int ib_find_exact_cached_pkey ( struct ib_device * device ,
2021-03-01 10:04:20 +03:00
u32 port_num ,
2012-08-03 12:40:39 +04:00
u16 pkey ,
u16 * index ) ;
2006-06-18 07:37:34 +04:00
/**
* ib_get_cached_lmc - Returns a cached lmc table entry
* @ device : The device to query .
* @ port_num : The port number of the device to query .
* @ lmc : The lmc value for the specified port for that device .
*
* ib_get_cached_lmc ( ) fetches the specified lmc table entry stored in
* the local software cache .
*/
int ib_get_cached_lmc ( struct ib_device * device ,
2021-03-01 10:04:20 +03:00
u32 port_num ,
2006-06-18 07:37:34 +04:00
u8 * lmc ) ;
2017-01-02 15:19:24 +03:00
/**
* ib_get_cached_port_state - Returns a cached port state table entry
* @ device : The device to query .
* @ port_num : The port number of the device to query .
* @ port_state : port_state for the specified port for that device .
*
* ib_get_cached_port_state ( ) fetches the specified port_state table entry stored in
* the local software cache .
*/
int ib_get_cached_port_state ( struct ib_device * device ,
2021-03-01 10:04:20 +03:00
u32 port_num ,
2017-01-02 15:19:24 +03:00
enum ib_port_state * port_active ) ;
2018-05-22 20:33:45 +03:00
bool rdma_is_zero_gid ( const union ib_gid * gid ) ;
2018-06-05 08:40:17 +03:00
const struct ib_gid_attr * rdma_get_gid_attr ( struct ib_device * device ,
2021-03-01 10:04:20 +03:00
u32 port_num , int index ) ;
2018-06-05 08:40:17 +03:00
void rdma_put_gid_attr ( const struct ib_gid_attr * attr ) ;
void rdma_hold_gid_attr ( const struct ib_gid_attr * attr ) ;
2020-09-23 19:50:14 +03:00
ssize_t rdma_query_gid_table ( struct ib_device * device ,
struct ib_uverbs_gid_entry * entries ,
size_t max_entries ) ;
2018-07-27 18:48:30 +03:00
2005-04-17 02:20:36 +04:00
# endif /* _IB_CACHE_H */