1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Shared Memory Communications over RDMA (SMC-R) and RoCE 4 * 5 * PNET table queries 6 * 7 * Copyright IBM Corp. 2016 8 * 9 * Author(s): Thomas Richter <tmricht@linux.vnet.ibm.com> 10 */ 11 12#ifndef _SMC_PNET_H 13#define _SMC_PNET_H 14 15#if IS_ENABLED(CONFIG_HAVE_PNETID) 16#include <asm/pnet.h> 17#endif 18 19struct smc_ib_device; 20struct smcd_dev; 21struct smc_init_info; 22 23/** 24 * struct smc_pnettable - SMC PNET table anchor 25 * @lock: Lock for list action 26 * @pnetlist: List of PNETIDs 27 */ 28struct smc_pnettable { 29 rwlock_t lock; 30 struct list_head pnetlist; 31}; 32 33static inline int smc_pnetid_by_dev_port(struct device *dev, 34 unsigned short port, u8 *pnetid) 35{ 36#if IS_ENABLED(CONFIG_HAVE_PNETID) 37 return pnet_id_by_dev_port(dev, port, pnetid); 38#else 39 return -ENOENT; 40#endif 41} 42 43int smc_pnet_init(void) __init; 44int smc_pnet_net_init(struct net *net); 45void smc_pnet_exit(void); 46void smc_pnet_net_exit(struct net *net); 47void smc_pnet_find_roce_resource(struct sock *sk, struct smc_init_info *ini); 48void smc_pnet_find_ism_resource(struct sock *sk, struct smc_init_info *ini); 49 50#endif 51