net/ncsi: NCSI command packet handler
[deliverable/linux.git] / net / ncsi / ncsi-pkt.h
1 /*
2 * Copyright Gavin Shan, IBM Corporation 2016.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 */
9
10 #ifndef __NCSI_PKT_H__
11 #define __NCSI_PKT_H__
12
13 struct ncsi_pkt_hdr {
14 unsigned char mc_id; /* Management controller ID */
15 unsigned char revision; /* NCSI version - 0x01 */
16 unsigned char reserved; /* Reserved */
17 unsigned char id; /* Packet sequence number */
18 unsigned char type; /* Packet type */
19 unsigned char channel; /* Network controller ID */
20 __be16 length; /* Payload length */
21 __be32 reserved1[2]; /* Reserved */
22 };
23
24 struct ncsi_cmd_pkt_hdr {
25 struct ncsi_pkt_hdr common; /* Common NCSI packet header */
26 };
27
28 /* NCSI common command packet */
29 struct ncsi_cmd_pkt {
30 struct ncsi_cmd_pkt_hdr cmd; /* Command header */
31 __be32 checksum; /* Checksum */
32 unsigned char pad[26];
33 };
34
35 /* Select Package */
36 struct ncsi_cmd_sp_pkt {
37 struct ncsi_cmd_pkt_hdr cmd; /* Command header */
38 unsigned char reserved[3]; /* Reserved */
39 unsigned char hw_arbitration; /* HW arbitration */
40 __be32 checksum; /* Checksum */
41 unsigned char pad[22];
42 };
43
44 /* Disable Channel */
45 struct ncsi_cmd_dc_pkt {
46 struct ncsi_cmd_pkt_hdr cmd; /* Command header */
47 unsigned char reserved[3]; /* Reserved */
48 unsigned char ald; /* Allow link down */
49 __be32 checksum; /* Checksum */
50 unsigned char pad[22];
51 };
52
53 /* Reset Channel */
54 struct ncsi_cmd_rc_pkt {
55 struct ncsi_cmd_pkt_hdr cmd; /* Command header */
56 __be32 reserved; /* Reserved */
57 __be32 checksum; /* Checksum */
58 unsigned char pad[22];
59 };
60
61 /* AEN Enable */
62 struct ncsi_cmd_ae_pkt {
63 struct ncsi_cmd_pkt_hdr cmd; /* Command header */
64 unsigned char reserved[3]; /* Reserved */
65 unsigned char mc_id; /* MC ID */
66 __be32 mode; /* AEN working mode */
67 __be32 checksum; /* Checksum */
68 unsigned char pad[18];
69 };
70
71 /* Set Link */
72 struct ncsi_cmd_sl_pkt {
73 struct ncsi_cmd_pkt_hdr cmd; /* Command header */
74 __be32 mode; /* Link working mode */
75 __be32 oem_mode; /* OEM link mode */
76 __be32 checksum; /* Checksum */
77 unsigned char pad[18];
78 };
79
80 /* Set VLAN Filter */
81 struct ncsi_cmd_svf_pkt {
82 struct ncsi_cmd_pkt_hdr cmd; /* Command header */
83 __be16 reserved; /* Reserved */
84 __be16 vlan; /* VLAN ID */
85 __be16 reserved1; /* Reserved */
86 unsigned char index; /* VLAN table index */
87 unsigned char enable; /* Enable or disable */
88 __be32 checksum; /* Checksum */
89 unsigned char pad[14];
90 };
91
92 /* Enable VLAN */
93 struct ncsi_cmd_ev_pkt {
94 struct ncsi_cmd_pkt_hdr cmd; /* Command header */
95 unsigned char reserved[3]; /* Reserved */
96 unsigned char mode; /* VLAN filter mode */
97 __be32 checksum; /* Checksum */
98 unsigned char pad[22];
99 };
100
101 /* Set MAC Address */
102 struct ncsi_cmd_sma_pkt {
103 struct ncsi_cmd_pkt_hdr cmd; /* Command header */
104 unsigned char mac[6]; /* MAC address */
105 unsigned char index; /* MAC table index */
106 unsigned char at_e; /* Addr type and operation */
107 __be32 checksum; /* Checksum */
108 unsigned char pad[18];
109 };
110
111 /* Enable Broadcast Filter */
112 struct ncsi_cmd_ebf_pkt {
113 struct ncsi_cmd_pkt_hdr cmd; /* Command header */
114 __be32 mode; /* Filter mode */
115 __be32 checksum; /* Checksum */
116 unsigned char pad[22];
117 };
118
119 /* Enable Global Multicast Filter */
120 struct ncsi_cmd_egmf_pkt {
121 struct ncsi_cmd_pkt_hdr cmd; /* Command header */
122 __be32 mode; /* Global MC mode */
123 __be32 checksum; /* Checksum */
124 unsigned char pad[22];
125 };
126
127 /* Set NCSI Flow Control */
128 struct ncsi_cmd_snfc_pkt {
129 struct ncsi_cmd_pkt_hdr cmd; /* Command header */
130 unsigned char reserved[3]; /* Reserved */
131 unsigned char mode; /* Flow control mode */
132 __be32 checksum; /* Checksum */
133 unsigned char pad[22];
134 };
135
136 /* NCSI packet revision */
137 #define NCSI_PKT_REVISION 0x01
138
139 /* NCSI packet commands */
140 #define NCSI_PKT_CMD_CIS 0x00 /* Clear Initial State */
141 #define NCSI_PKT_CMD_SP 0x01 /* Select Package */
142 #define NCSI_PKT_CMD_DP 0x02 /* Deselect Package */
143 #define NCSI_PKT_CMD_EC 0x03 /* Enable Channel */
144 #define NCSI_PKT_CMD_DC 0x04 /* Disable Channel */
145 #define NCSI_PKT_CMD_RC 0x05 /* Reset Channel */
146 #define NCSI_PKT_CMD_ECNT 0x06 /* Enable Channel Network Tx */
147 #define NCSI_PKT_CMD_DCNT 0x07 /* Disable Channel Network Tx */
148 #define NCSI_PKT_CMD_AE 0x08 /* AEN Enable */
149 #define NCSI_PKT_CMD_SL 0x09 /* Set Link */
150 #define NCSI_PKT_CMD_GLS 0x0a /* Get Link */
151 #define NCSI_PKT_CMD_SVF 0x0b /* Set VLAN Filter */
152 #define NCSI_PKT_CMD_EV 0x0c /* Enable VLAN */
153 #define NCSI_PKT_CMD_DV 0x0d /* Disable VLAN */
154 #define NCSI_PKT_CMD_SMA 0x0e /* Set MAC address */
155 #define NCSI_PKT_CMD_EBF 0x10 /* Enable Broadcast Filter */
156 #define NCSI_PKT_CMD_DBF 0x11 /* Disable Broadcast Filter */
157 #define NCSI_PKT_CMD_EGMF 0x12 /* Enable Global Multicast Filter */
158 #define NCSI_PKT_CMD_DGMF 0x13 /* Disable Global Multicast Filter */
159 #define NCSI_PKT_CMD_SNFC 0x14 /* Set NCSI Flow Control */
160 #define NCSI_PKT_CMD_GVI 0x15 /* Get Version ID */
161 #define NCSI_PKT_CMD_GC 0x16 /* Get Capabilities */
162 #define NCSI_PKT_CMD_GP 0x17 /* Get Parameters */
163 #define NCSI_PKT_CMD_GCPS 0x18 /* Get Controller Packet Statistics */
164 #define NCSI_PKT_CMD_GNS 0x19 /* Get NCSI Statistics */
165 #define NCSI_PKT_CMD_GNPTS 0x1a /* Get NCSI Pass-throu Statistics */
166 #define NCSI_PKT_CMD_GPS 0x1b /* Get package status */
167 #define NCSI_PKT_CMD_OEM 0x50 /* OEM */
168 #define NCSI_PKT_CMD_PLDM 0x51 /* PLDM request over NCSI over RBT */
169 #define NCSI_PKT_CMD_GPUUID 0x52 /* Get package UUID */
170
171 #endif /* __NCSI_PKT_H__ */
This page took 0.044303 seconds and 6 git commands to generate.