net/ncsi: NCSI command packet handler
[linux-block.git] / net / ncsi / ncsi-pkt.h
CommitLineData
6389eaa7
GS
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
13struct 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
24struct ncsi_cmd_pkt_hdr {
25 struct ncsi_pkt_hdr common; /* Common NCSI packet header */
26};
27
28/* NCSI common command packet */
29struct 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 */
36struct 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 */
45struct 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 */
54struct 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 */
62struct 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 */
72struct 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 */
81struct 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 */
93struct 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 */
102struct 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 */
112struct 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 */
120struct 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 */
128struct 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__ */