1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (c) 2020 Intel Corporation */
#ifndef _UAPI_LINUX_ASPEED_MCTP_H
#define _UAPI_LINUX_ASPEED_MCTP_H
#include <linux/ioctl.h>
#include <linux/types.h>
/*
* aspeed-mctp is a simple device driver exposing a read/write interface:
* +----------------------+
* | PCIe VDM Header | 16 bytes (Big Endian)
* +----------------------+
* | MCTP Message Payload | 64/128/256/512 bytes (Big Endian)
* +----------------------+
*
* MCTP packet description can be found in DMTF DSP0238,
* MCTP PCIe VDM Transport Specification.
*/
#define ASPEED_MCTP_PCIE_VDM_HDR_SIZE 16
/*
* uevents generated by aspeed-mctp driver
*/
#define ASPEED_MCTP_READY "PCIE_READY"
/*
* maximum possible number of struct eid_info elements stored in list
*/
#define ASPEED_MCTP_EID_INFO_MAX 256
/*
* MCTP operations
* @ASPEED_MCTP_IOCTL_FILTER_EID: enable/disable filter incoming packets based
* on Endpoint ID (BROKEN)
* @ASPEED_MCTP_IOCTL_GET_BDF: read PCI bus/device/function of MCTP Controller
* @ASPEED_MCTP_IOCTL_GET_MEDIUM_ID: read MCTP physical medium identifier
* related to PCIe revision
* @ASPEED_MCTP_IOCTL_GET_MTU: read max transmission unit (in bytes)
* @ASPEED_MCTP_IOCTL_REGISTER_DEFAULT_HANDLER Register client as default
* handler that receives all MCTP messages that were not dispatched to other
* clients
* @ASPEED_MCTP_IOCTL_REGISTER_TYPE_HANDLER Register client to receive all
* messages of specified MCTP type or PCI vendor defined type
* @ASPEED_MCTP_IOCTL_UNREGISTER_TYPE_HANDLER Unregister client as handler
* for specified MCTP type or PCI vendor defined message type
* @ASPEED_MCTP_GET_EID_INFO: read list of existing endpoint mappings
* returns count which is less of the two requested count and existing count
* @ASPEED_MCTP_SET_EID_INFO: write list of endpoint mappings
* overwrites already existing endpoint mappings
*/
struct aspeed_mctp_filter_eid {
__u8 eid;
bool enable;
};
struct aspeed_mctp_get_bdf {
__u16 bdf;
};
struct aspeed_mctp_get_medium_id {
__u8 medium_id;
};
struct aspeed_mctp_get_mtu {
__u8 mtu;
};
struct aspeed_mctp_type_handler_ioctl {
__u8 mctp_type; /* MCTP message type as per DSP239*/
/* Below params must be 0 if mctp_type is not Vendor Defined PCI */
__u16 pci_vendor_id; /* PCI Vendor ID */
__u16 vendor_type; /* Vendor specific type */
__u16 vendor_type_mask; /* Mask applied to vendor type */
};
struct aspeed_mctp_eid_info {
__u8 eid;
__u16 bdf;
};
struct aspeed_mctp_eid_ext_info {
__u8 eid;
__u16 bdf;
__u8 domain_id;
};
struct aspeed_mctp_get_eid_info {
__u64 ptr;
__u16 count;
__u8 start_eid;
};
struct aspeed_mctp_set_eid_info {
__u64 ptr;
__u16 count;
};
#define ASPEED_MCTP_IOCTL_BASE 0x4d
#define ASPEED_MCTP_IOCTL_FILTER_EID \
_IOW(ASPEED_MCTP_IOCTL_BASE, 0, struct aspeed_mctp_filter_eid)
#define ASPEED_MCTP_IOCTL_GET_BDF \
_IOR(ASPEED_MCTP_IOCTL_BASE, 1, struct aspeed_mctp_get_bdf)
#define ASPEED_MCTP_IOCTL_GET_MEDIUM_ID \
_IOR(ASPEED_MCTP_IOCTL_BASE, 2, struct aspeed_mctp_get_medium_id)
#define ASPEED_MCTP_IOCTL_GET_MTU \
_IOR(ASPEED_MCTP_IOCTL_BASE, 3, struct aspeed_mctp_get_mtu)
#define ASPEED_MCTP_IOCTL_REGISTER_DEFAULT_HANDLER \
_IO(ASPEED_MCTP_IOCTL_BASE, 4)
#define ASPEED_MCTP_IOCTL_REGISTER_TYPE_HANDLER \
_IOW(ASPEED_MCTP_IOCTL_BASE, 6, struct aspeed_mctp_type_handler_ioctl)
#define ASPEED_MCTP_IOCTL_UNREGISTER_TYPE_HANDLER \
_IOW(ASPEED_MCTP_IOCTL_BASE, 7, struct aspeed_mctp_type_handler_ioctl)
#define ASPEED_MCTP_IOCTL_GET_EID_INFO \
_IOWR(ASPEED_MCTP_IOCTL_BASE, 8, struct aspeed_mctp_get_eid_info)
#define ASPEED_MCTP_IOCTL_SET_EID_INFO \
_IOW(ASPEED_MCTP_IOCTL_BASE, 9, struct aspeed_mctp_set_eid_info)
#define ASPEED_MCTP_IOCTL_GET_EID_EXT_INFO \
_IOW(ASPEED_MCTP_IOCTL_BASE, 10, struct aspeed_mctp_get_eid_info)
#define ASPEED_MCTP_IOCTL_SET_EID_EXT_INFO \
_IOW(ASPEED_MCTP_IOCTL_BASE, 11, struct aspeed_mctp_set_eid_info)
#endif /* _UAPI_LINUX_ASPEED_MCTP_H */
|