| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * Shared Memory Communications over RDMA (SMC-R) and RoCE |
| * |
| * Definitions for the SMC module (socket related) |
| * |
| * Copyright IBM Corp. 2016 |
| * |
| * Author(s): Ursula Braun <ubraun@linux.vnet.ibm.com> |
| */ |
| #ifndef _SMC_H |
| #define _SMC_H |
| |
| #include <linux/device.h> |
| #include <linux/spinlock.h> |
| #include <linux/types.h> |
| #include <linux/wait.h> |
| #include <linux/dibs.h> |
| |
| struct sock; |
| |
| #define SMC_MAX_PNETID_LEN 16 /* Max. length of PNET id */ |
| |
| struct smc_hashinfo { |
| rwlock_t lock; |
| struct hlist_head ht; |
| }; |
| |
| /* SMCD/ISM device driver interface */ |
| #define ISM_RESERVED_VLANID 0x1FFF |
| |
| struct smcd_gid { |
| u64 gid; |
| u64 gid_ext; |
| }; |
| |
| struct smcd_dev { |
| struct dibs_dev *dibs; |
| struct list_head list; |
| spinlock_t lock; |
| struct smc_connection **conn; |
| struct list_head vlan; |
| struct workqueue_struct *event_wq; |
| u8 pnetid[SMC_MAX_PNETID_LEN]; |
| bool pnetid_by_user; |
| struct list_head lgr_list; |
| spinlock_t lgr_lock; |
| atomic_t lgr_cnt; |
| wait_queue_head_t lgrs_deleted; |
| u8 going_away : 1; |
| }; |
| |
| #endif /* _SMC_H */ |