summaryrefslogtreecommitdiff
path: root/include/uapi/linux/ncsi.h
blob: a3f87c54fdb3bf90194a9dcd32701ee6722bdd7a (plain)
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
129
130
131
132
133
134
135
136
/*
 * Copyright Samuel Mendoza-Jonas, IBM Corporation 2018.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */

#ifndef __UAPI_NCSI_NETLINK_H__
#define __UAPI_NCSI_NETLINK_H__

/**
 * enum ncsi_nl_commands - supported NCSI commands
 *
 * @NCSI_CMD_UNSPEC: unspecified command to catch errors
 * @NCSI_CMD_PKG_INFO: list package and channel attributes. Requires
 *	NCSI_ATTR_IFINDEX. If NCSI_ATTR_PACKAGE_ID is specified returns the
 *	specific package and its channels - otherwise a dump request returns
 *	all packages and their associated channels.
 * @NCSI_CMD_SET_INTERFACE: set preferred package and channel combination.
 *	Requires NCSI_ATTR_IFINDEX and the preferred NCSI_ATTR_PACKAGE_ID and
 *	optionally the preferred NCSI_ATTR_CHANNEL_ID.
 * @NCSI_CMD_CLEAR_INTERFACE: clear any preferred package/channel combination.
 *	Requires NCSI_ATTR_IFINDEX.
 * @NCSI_CMD_SEND_CMD: send NC-SI command to network card.
 *	Requires NCSI_ATTR_IFINDEX, NCSI_ATTR_PACKAGE_ID
 *	and NCSI_ATTR_CHANNEL_ID.
 * @NCSI_CMD_SET_PACKAGE_MASK: set a whitelist of allowed packages.
 *	Requires NCSI_ATTR_IFINDEX and NCSI_ATTR_PACKAGE_MASK.
 * @NCSI_CMD_SET_CHANNEL_MASK: set a whitelist of allowed channels.
 *	Requires NCSI_ATTR_IFINDEX, NCSI_ATTR_PACKAGE_ID, and
 *	NCSI_ATTR_CHANNEL_MASK. If NCSI_ATTR_CHANNEL_ID is present it sets
 *	the primary channel.
 * @NCSI_CMD_MAX: highest command number
 */
enum ncsi_nl_commands {
	NCSI_CMD_UNSPEC,
	NCSI_CMD_PKG_INFO,
	NCSI_CMD_SET_INTERFACE,
	NCSI_CMD_CLEAR_INTERFACE,
	NCSI_CMD_SEND_CMD,
	NCSI_CMD_SET_PACKAGE_MASK,
	NCSI_CMD_SET_CHANNEL_MASK,

	__NCSI_CMD_AFTER_LAST,
	NCSI_CMD_MAX = __NCSI_CMD_AFTER_LAST - 1
};

/**
 * enum ncsi_nl_attrs - General NCSI netlink attributes
 *
 * @NCSI_ATTR_UNSPEC: unspecified attributes to catch errors
 * @NCSI_ATTR_IFINDEX: ifindex of network device using NCSI
 * @NCSI_ATTR_PACKAGE_LIST: nested array of NCSI_PKG_ATTR attributes
 * @NCSI_ATTR_PACKAGE_ID: package ID
 * @NCSI_ATTR_CHANNEL_ID: channel ID
 * @NCSI_ATTR_DATA: command payload
 * @NCSI_ATTR_MULTI_FLAG: flag to signal that multi-mode should be enabled with
 *	NCSI_CMD_SET_PACKAGE_MASK or NCSI_CMD_SET_CHANNEL_MASK.
 * @NCSI_ATTR_PACKAGE_MASK: 32-bit mask of allowed packages.
 * @NCSI_ATTR_CHANNEL_MASK: 32-bit mask of allowed channels.
 * @NCSI_ATTR_MAX: highest attribute number
 */
enum ncsi_nl_attrs {
	NCSI_ATTR_UNSPEC,
	NCSI_ATTR_IFINDEX,
	NCSI_ATTR_PACKAGE_LIST,
	NCSI_ATTR_PACKAGE_ID,
	NCSI_ATTR_CHANNEL_ID,
	NCSI_ATTR_DATA,
	NCSI_ATTR_MULTI_FLAG,
	NCSI_ATTR_PACKAGE_MASK,
	NCSI_ATTR_CHANNEL_MASK,

	__NCSI_ATTR_AFTER_LAST,
	NCSI_ATTR_MAX = __NCSI_ATTR_AFTER_LAST - 1
};

/**
 * enum ncsi_nl_pkg_attrs - NCSI netlink package-specific attributes
 *
 * @NCSI_PKG_ATTR_UNSPEC: unspecified attributes to catch errors
 * @NCSI_PKG_ATTR: nested array of package attributes
 * @NCSI_PKG_ATTR_ID: package ID
 * @NCSI_PKG_ATTR_FORCED: flag signifying a package has been set as preferred
 * @NCSI_PKG_ATTR_CHANNEL_LIST: nested array of NCSI_CHANNEL_ATTR attributes
 * @NCSI_PKG_ATTR_MAX: highest attribute number
 */
enum ncsi_nl_pkg_attrs {
	NCSI_PKG_ATTR_UNSPEC,
	NCSI_PKG_ATTR,
	NCSI_PKG_ATTR_ID,
	NCSI_PKG_ATTR_FORCED,
	NCSI_PKG_ATTR_CHANNEL_LIST,

	__NCSI_PKG_ATTR_AFTER_LAST,
	NCSI_PKG_ATTR_MAX = __NCSI_PKG_ATTR_AFTER_LAST - 1
};

/**
 * enum ncsi_nl_channel_attrs - NCSI netlink channel-specific attributes
 *
 * @NCSI_CHANNEL_ATTR_UNSPEC: unspecified attributes to catch errors
 * @NCSI_CHANNEL_ATTR: nested array of channel attributes
 * @NCSI_CHANNEL_ATTR_ID: channel ID
 * @NCSI_CHANNEL_ATTR_VERSION_MAJOR: channel major version number
 * @NCSI_CHANNEL_ATTR_VERSION_MINOR: channel minor version number
 * @NCSI_CHANNEL_ATTR_VERSION_STR: channel version string
 * @NCSI_CHANNEL_ATTR_LINK_STATE: channel link state flags
 * @NCSI_CHANNEL_ATTR_ACTIVE: channels with this flag are in
 *	NCSI_CHANNEL_ACTIVE state
 * @NCSI_CHANNEL_ATTR_FORCED: flag signifying a channel has been set as
 *	preferred
 * @NCSI_CHANNEL_ATTR_VLAN_LIST: nested array of NCSI_CHANNEL_ATTR_VLAN_IDs
 * @NCSI_CHANNEL_ATTR_VLAN_ID: VLAN ID being filtered on this channel
 * @NCSI_CHANNEL_ATTR_MAX: highest attribute number
 */
enum ncsi_nl_channel_attrs {
	NCSI_CHANNEL_ATTR_UNSPEC,
	NCSI_CHANNEL_ATTR,
	NCSI_CHANNEL_ATTR_ID,
	NCSI_CHANNEL_ATTR_VERSION_MAJOR,
	NCSI_CHANNEL_ATTR_VERSION_MINOR,
	NCSI_CHANNEL_ATTR_VERSION_STR,
	NCSI_CHANNEL_ATTR_LINK_STATE,
	NCSI_CHANNEL_ATTR_ACTIVE,
	NCSI_CHANNEL_ATTR_FORCED,
	NCSI_CHANNEL_ATTR_VLAN_LIST,
	NCSI_CHANNEL_ATTR_VLAN_ID,

	__NCSI_CHANNEL_ATTR_AFTER_LAST,
	NCSI_CHANNEL_ATTR_MAX = __NCSI_CHANNEL_ATTR_AFTER_LAST - 1
};

#endif /* __UAPI_NCSI_NETLINK_H__ */