xref: /linux-6.15/include/linux/qed/qede_rdma.h (revision 348cb5dc)
1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
2 /* QLogic qedr NIC Driver
3  * Copyright (c) 2015-2017  QLogic Corporation
4  * Copyright (c) 2019-2020 Marvell International Ltd.
5  */
6 
7 #ifndef QEDE_ROCE_H
8 #define QEDE_ROCE_H
9 
10 #include <linux/pci.h>
11 #include <linux/netdevice.h>
12 #include <linux/types.h>
13 #include <linux/workqueue.h>
14 
15 struct qedr_dev;
16 struct qed_dev;
17 struct qede_dev;
18 
19 enum qede_rdma_event {
20 	QEDE_UP,
21 	QEDE_DOWN,
22 	QEDE_CHANGE_ADDR,
23 	QEDE_CLOSE
24 };
25 
26 struct qede_rdma_event_work {
27 	struct list_head list;
28 	struct work_struct work;
29 	void *ptr;
30 	enum qede_rdma_event event;
31 };
32 
33 struct qedr_driver {
34 	unsigned char name[32];
35 
36 	struct qedr_dev* (*add)(struct qed_dev *, struct pci_dev *,
37 				struct net_device *);
38 
39 	void (*remove)(struct qedr_dev *);
40 	void (*notify)(struct qedr_dev *, enum qede_rdma_event);
41 };
42 
43 /* APIs for RDMA driver to register callback handlers,
44  * which will be invoked when device is added, removed, ifup, ifdown
45  */
46 int qede_rdma_register_driver(struct qedr_driver *drv);
47 void qede_rdma_unregister_driver(struct qedr_driver *drv);
48 
49 bool qede_rdma_supported(struct qede_dev *dev);
50 
51 #if IS_ENABLED(CONFIG_QED_RDMA)
52 int qede_rdma_dev_add(struct qede_dev *dev, bool recovery);
53 void qede_rdma_dev_event_open(struct qede_dev *dev);
54 void qede_rdma_dev_event_close(struct qede_dev *dev);
55 void qede_rdma_dev_remove(struct qede_dev *dev, bool recovery);
56 void qede_rdma_event_changeaddr(struct qede_dev *edr);
57 
58 #else
59 static inline int qede_rdma_dev_add(struct qede_dev *dev,
60 				    bool recovery)
61 {
62 	return 0;
63 }
64 
65 static inline void qede_rdma_dev_event_open(struct qede_dev *dev) {}
66 static inline void qede_rdma_dev_event_close(struct qede_dev *dev) {}
67 static inline void qede_rdma_dev_remove(struct qede_dev *dev,
68 					bool recovery) {}
69 static inline void qede_rdma_event_changeaddr(struct qede_dev *edr) {}
70 #endif
71 #endif
72