xref: /openbmc/linux/net/ncsi/ncsi-pkt.h (revision 6389eaa7)
16389eaa7SGavin Shan /*
26389eaa7SGavin Shan  * Copyright Gavin Shan, IBM Corporation 2016.
36389eaa7SGavin Shan  *
46389eaa7SGavin Shan  * This program is free software; you can redistribute it and/or modify
56389eaa7SGavin Shan  * it under the terms of the GNU General Public License as published by
66389eaa7SGavin Shan  * the Free Software Foundation; either version 2 of the License, or
76389eaa7SGavin Shan  * (at your option) any later version.
86389eaa7SGavin Shan  */
96389eaa7SGavin Shan 
106389eaa7SGavin Shan #ifndef __NCSI_PKT_H__
116389eaa7SGavin Shan #define __NCSI_PKT_H__
126389eaa7SGavin Shan 
136389eaa7SGavin Shan struct ncsi_pkt_hdr {
146389eaa7SGavin Shan 	unsigned char mc_id;        /* Management controller ID */
156389eaa7SGavin Shan 	unsigned char revision;     /* NCSI version - 0x01      */
166389eaa7SGavin Shan 	unsigned char reserved;     /* Reserved                 */
176389eaa7SGavin Shan 	unsigned char id;           /* Packet sequence number   */
186389eaa7SGavin Shan 	unsigned char type;         /* Packet type              */
196389eaa7SGavin Shan 	unsigned char channel;      /* Network controller ID    */
206389eaa7SGavin Shan 	__be16        length;       /* Payload length           */
216389eaa7SGavin Shan 	__be32        reserved1[2]; /* Reserved                 */
226389eaa7SGavin Shan };
236389eaa7SGavin Shan 
246389eaa7SGavin Shan struct ncsi_cmd_pkt_hdr {
256389eaa7SGavin Shan 	struct ncsi_pkt_hdr common; /* Common NCSI packet header */
266389eaa7SGavin Shan };
276389eaa7SGavin Shan 
286389eaa7SGavin Shan /* NCSI common command packet */
296389eaa7SGavin Shan struct ncsi_cmd_pkt {
306389eaa7SGavin Shan 	struct ncsi_cmd_pkt_hdr cmd;      /* Command header */
316389eaa7SGavin Shan 	__be32                  checksum; /* Checksum       */
326389eaa7SGavin Shan 	unsigned char           pad[26];
336389eaa7SGavin Shan };
346389eaa7SGavin Shan 
356389eaa7SGavin Shan /* Select Package */
366389eaa7SGavin Shan struct ncsi_cmd_sp_pkt {
376389eaa7SGavin Shan 	struct ncsi_cmd_pkt_hdr cmd;            /* Command header */
386389eaa7SGavin Shan 	unsigned char           reserved[3];    /* Reserved       */
396389eaa7SGavin Shan 	unsigned char           hw_arbitration; /* HW arbitration */
406389eaa7SGavin Shan 	__be32                  checksum;       /* Checksum       */
416389eaa7SGavin Shan 	unsigned char           pad[22];
426389eaa7SGavin Shan };
436389eaa7SGavin Shan 
446389eaa7SGavin Shan /* Disable Channel */
456389eaa7SGavin Shan struct ncsi_cmd_dc_pkt {
466389eaa7SGavin Shan 	struct ncsi_cmd_pkt_hdr cmd;         /* Command header  */
476389eaa7SGavin Shan 	unsigned char           reserved[3]; /* Reserved        */
486389eaa7SGavin Shan 	unsigned char           ald;         /* Allow link down */
496389eaa7SGavin Shan 	__be32                  checksum;    /* Checksum        */
506389eaa7SGavin Shan 	unsigned char           pad[22];
516389eaa7SGavin Shan };
526389eaa7SGavin Shan 
536389eaa7SGavin Shan /* Reset Channel */
546389eaa7SGavin Shan struct ncsi_cmd_rc_pkt {
556389eaa7SGavin Shan 	struct ncsi_cmd_pkt_hdr cmd;      /* Command header */
566389eaa7SGavin Shan 	__be32                  reserved; /* Reserved       */
576389eaa7SGavin Shan 	__be32                  checksum; /* Checksum       */
586389eaa7SGavin Shan 	unsigned char           pad[22];
596389eaa7SGavin Shan };
606389eaa7SGavin Shan 
616389eaa7SGavin Shan /* AEN Enable */
626389eaa7SGavin Shan struct ncsi_cmd_ae_pkt {
636389eaa7SGavin Shan 	struct ncsi_cmd_pkt_hdr cmd;         /* Command header   */
646389eaa7SGavin Shan 	unsigned char           reserved[3]; /* Reserved         */
656389eaa7SGavin Shan 	unsigned char           mc_id;       /* MC ID            */
666389eaa7SGavin Shan 	__be32                  mode;        /* AEN working mode */
676389eaa7SGavin Shan 	__be32                  checksum;    /* Checksum         */
686389eaa7SGavin Shan 	unsigned char           pad[18];
696389eaa7SGavin Shan };
706389eaa7SGavin Shan 
716389eaa7SGavin Shan /* Set Link */
726389eaa7SGavin Shan struct ncsi_cmd_sl_pkt {
736389eaa7SGavin Shan 	struct ncsi_cmd_pkt_hdr cmd;      /* Command header    */
746389eaa7SGavin Shan 	__be32                  mode;     /* Link working mode */
756389eaa7SGavin Shan 	__be32                  oem_mode; /* OEM link mode     */
766389eaa7SGavin Shan 	__be32                  checksum; /* Checksum          */
776389eaa7SGavin Shan 	unsigned char           pad[18];
786389eaa7SGavin Shan };
796389eaa7SGavin Shan 
806389eaa7SGavin Shan /* Set VLAN Filter */
816389eaa7SGavin Shan struct ncsi_cmd_svf_pkt {
826389eaa7SGavin Shan 	struct ncsi_cmd_pkt_hdr cmd;       /* Command header    */
836389eaa7SGavin Shan 	__be16                  reserved;  /* Reserved          */
846389eaa7SGavin Shan 	__be16                  vlan;      /* VLAN ID           */
856389eaa7SGavin Shan 	__be16                  reserved1; /* Reserved          */
866389eaa7SGavin Shan 	unsigned char           index;     /* VLAN table index  */
876389eaa7SGavin Shan 	unsigned char           enable;    /* Enable or disable */
886389eaa7SGavin Shan 	__be32                  checksum;  /* Checksum          */
896389eaa7SGavin Shan 	unsigned char           pad[14];
906389eaa7SGavin Shan };
916389eaa7SGavin Shan 
926389eaa7SGavin Shan /* Enable VLAN */
936389eaa7SGavin Shan struct ncsi_cmd_ev_pkt {
946389eaa7SGavin Shan 	struct ncsi_cmd_pkt_hdr cmd;         /* Command header   */
956389eaa7SGavin Shan 	unsigned char           reserved[3]; /* Reserved         */
966389eaa7SGavin Shan 	unsigned char           mode;        /* VLAN filter mode */
976389eaa7SGavin Shan 	__be32                  checksum;    /* Checksum         */
986389eaa7SGavin Shan 	unsigned char           pad[22];
996389eaa7SGavin Shan };
1006389eaa7SGavin Shan 
1016389eaa7SGavin Shan /* Set MAC Address */
1026389eaa7SGavin Shan struct ncsi_cmd_sma_pkt {
1036389eaa7SGavin Shan 	struct ncsi_cmd_pkt_hdr cmd;      /* Command header          */
1046389eaa7SGavin Shan 	unsigned char           mac[6];   /* MAC address             */
1056389eaa7SGavin Shan 	unsigned char           index;    /* MAC table index         */
1066389eaa7SGavin Shan 	unsigned char           at_e;     /* Addr type and operation */
1076389eaa7SGavin Shan 	__be32                  checksum; /* Checksum                */
1086389eaa7SGavin Shan 	unsigned char           pad[18];
1096389eaa7SGavin Shan };
1106389eaa7SGavin Shan 
1116389eaa7SGavin Shan /* Enable Broadcast Filter */
1126389eaa7SGavin Shan struct ncsi_cmd_ebf_pkt {
1136389eaa7SGavin Shan 	struct ncsi_cmd_pkt_hdr cmd;      /* Command header */
1146389eaa7SGavin Shan 	__be32                  mode;     /* Filter mode    */
1156389eaa7SGavin Shan 	__be32                  checksum; /* Checksum       */
1166389eaa7SGavin Shan 	unsigned char           pad[22];
1176389eaa7SGavin Shan };
1186389eaa7SGavin Shan 
1196389eaa7SGavin Shan /* Enable Global Multicast Filter */
1206389eaa7SGavin Shan struct ncsi_cmd_egmf_pkt {
1216389eaa7SGavin Shan 	struct ncsi_cmd_pkt_hdr cmd;      /* Command header */
1226389eaa7SGavin Shan 	__be32                  mode;     /* Global MC mode */
1236389eaa7SGavin Shan 	__be32                  checksum; /* Checksum       */
1246389eaa7SGavin Shan 	unsigned char           pad[22];
1256389eaa7SGavin Shan };
1266389eaa7SGavin Shan 
1276389eaa7SGavin Shan /* Set NCSI Flow Control */
1286389eaa7SGavin Shan struct ncsi_cmd_snfc_pkt {
1296389eaa7SGavin Shan 	struct ncsi_cmd_pkt_hdr cmd;         /* Command header    */
1306389eaa7SGavin Shan 	unsigned char           reserved[3]; /* Reserved          */
1316389eaa7SGavin Shan 	unsigned char           mode;        /* Flow control mode */
1326389eaa7SGavin Shan 	__be32                  checksum;    /* Checksum          */
1336389eaa7SGavin Shan 	unsigned char           pad[22];
1346389eaa7SGavin Shan };
1356389eaa7SGavin Shan 
1366389eaa7SGavin Shan /* NCSI packet revision */
1376389eaa7SGavin Shan #define NCSI_PKT_REVISION	0x01
1386389eaa7SGavin Shan 
1396389eaa7SGavin Shan /* NCSI packet commands */
1406389eaa7SGavin Shan #define NCSI_PKT_CMD_CIS	0x00 /* Clear Initial State              */
1416389eaa7SGavin Shan #define NCSI_PKT_CMD_SP		0x01 /* Select Package                   */
1426389eaa7SGavin Shan #define NCSI_PKT_CMD_DP		0x02 /* Deselect Package                 */
1436389eaa7SGavin Shan #define NCSI_PKT_CMD_EC		0x03 /* Enable Channel                   */
1446389eaa7SGavin Shan #define NCSI_PKT_CMD_DC		0x04 /* Disable Channel                  */
1456389eaa7SGavin Shan #define NCSI_PKT_CMD_RC		0x05 /* Reset Channel                    */
1466389eaa7SGavin Shan #define NCSI_PKT_CMD_ECNT	0x06 /* Enable Channel Network Tx        */
1476389eaa7SGavin Shan #define NCSI_PKT_CMD_DCNT	0x07 /* Disable Channel Network Tx       */
1486389eaa7SGavin Shan #define NCSI_PKT_CMD_AE		0x08 /* AEN Enable                       */
1496389eaa7SGavin Shan #define NCSI_PKT_CMD_SL		0x09 /* Set Link                         */
1506389eaa7SGavin Shan #define NCSI_PKT_CMD_GLS	0x0a /* Get Link                         */
1516389eaa7SGavin Shan #define NCSI_PKT_CMD_SVF	0x0b /* Set VLAN Filter                  */
1526389eaa7SGavin Shan #define NCSI_PKT_CMD_EV		0x0c /* Enable VLAN                      */
1536389eaa7SGavin Shan #define NCSI_PKT_CMD_DV		0x0d /* Disable VLAN                     */
1546389eaa7SGavin Shan #define NCSI_PKT_CMD_SMA	0x0e /* Set MAC address                  */
1556389eaa7SGavin Shan #define NCSI_PKT_CMD_EBF	0x10 /* Enable Broadcast Filter          */
1566389eaa7SGavin Shan #define NCSI_PKT_CMD_DBF	0x11 /* Disable Broadcast Filter         */
1576389eaa7SGavin Shan #define NCSI_PKT_CMD_EGMF	0x12 /* Enable Global Multicast Filter   */
1586389eaa7SGavin Shan #define NCSI_PKT_CMD_DGMF	0x13 /* Disable Global Multicast Filter  */
1596389eaa7SGavin Shan #define NCSI_PKT_CMD_SNFC	0x14 /* Set NCSI Flow Control            */
1606389eaa7SGavin Shan #define NCSI_PKT_CMD_GVI	0x15 /* Get Version ID                   */
1616389eaa7SGavin Shan #define NCSI_PKT_CMD_GC		0x16 /* Get Capabilities                 */
1626389eaa7SGavin Shan #define NCSI_PKT_CMD_GP		0x17 /* Get Parameters                   */
1636389eaa7SGavin Shan #define NCSI_PKT_CMD_GCPS	0x18 /* Get Controller Packet Statistics */
1646389eaa7SGavin Shan #define NCSI_PKT_CMD_GNS	0x19 /* Get NCSI Statistics              */
1656389eaa7SGavin Shan #define NCSI_PKT_CMD_GNPTS	0x1a /* Get NCSI Pass-throu Statistics   */
1666389eaa7SGavin Shan #define NCSI_PKT_CMD_GPS	0x1b /* Get package status               */
1676389eaa7SGavin Shan #define NCSI_PKT_CMD_OEM	0x50 /* OEM                              */
1686389eaa7SGavin Shan #define NCSI_PKT_CMD_PLDM	0x51 /* PLDM request over NCSI over RBT  */
1696389eaa7SGavin Shan #define NCSI_PKT_CMD_GPUUID	0x52 /* Get package UUID                 */
1706389eaa7SGavin Shan 
1716389eaa7SGavin Shan #endif /* __NCSI_PKT_H__ */
172