xref: /linux/include/linux/net/intel/iidc_rdma_idpf.h (revision 8be4d31cb8aaeea27bde4b7ddb26e28a89062ebf)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (C) 2025 Intel Corporation. */
3 
4 #ifndef _IIDC_RDMA_IDPF_H_
5 #define _IIDC_RDMA_IDPF_H_
6 
7 #include <linux/auxiliary_bus.h>
8 
9 /* struct to be populated by core LAN PCI driver */
10 struct iidc_rdma_vport_dev_info {
11 	struct auxiliary_device *adev;
12 	struct auxiliary_device *core_adev;
13 	struct net_device *netdev;
14 	u16 vport_id;
15 };
16 
17 struct iidc_rdma_vport_auxiliary_dev {
18 	struct auxiliary_device adev;
19 	struct iidc_rdma_vport_dev_info *vdev_info;
20 };
21 
22 struct iidc_rdma_vport_auxiliary_drv {
23 	struct auxiliary_driver adrv;
24 	void (*event_handler)(struct iidc_rdma_vport_dev_info *vdev,
25 			      struct iidc_rdma_event *event);
26 };
27 
28 /* struct to be populated by core LAN PCI driver */
29 enum iidc_function_type {
30 	IIDC_FUNCTION_TYPE_PF,
31 	IIDC_FUNCTION_TYPE_VF,
32 };
33 
34 struct iidc_rdma_lan_mapped_mem_region {
35 	u8 __iomem *region_addr;
36 	__le64 size;
37 	__le64 start_offset;
38 };
39 
40 struct iidc_rdma_priv_dev_info {
41 	struct msix_entry *msix_entries;
42 	u16 msix_count; /* How many vectors are reserved for this device */
43 	enum iidc_function_type ftype;
44 	__le16 num_memory_regions;
45 	struct iidc_rdma_lan_mapped_mem_region *mapped_mem_regions;
46 };
47 
48 int idpf_idc_vport_dev_ctrl(struct iidc_rdma_core_dev_info *cdev_info, bool up);
49 int idpf_idc_request_reset(struct iidc_rdma_core_dev_info *cdev_info,
50 			   enum iidc_rdma_reset_type __always_unused reset_type);
51 int idpf_idc_rdma_vc_send_sync(struct iidc_rdma_core_dev_info *cdev_info,
52 			       u8 *send_msg, u16 msg_size,
53 			       u8 *recv_msg, u16 *recv_len);
54 
55 #endif /* _IIDC_RDMA_IDPF_H_ */
56