/*
 * Copyright Gavin Shan, IBM Corporation 2016.
 *
 * 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 NCSI_PKT_H
#define NCSI_PKT_H

/* from linux/net/ncsi/ncsi-pkt.h */
#define __be32 uint32_t
#define __be16 uint16_t

struct ncsi_pkt_hdr {
        unsigned char mc_id;        /* Management controller ID */
        unsigned char revision;     /* NCSI version - 0x01      */
        unsigned char reserved;     /* Reserved                 */
        unsigned char id;           /* Packet sequence number   */
        unsigned char type;         /* Packet type              */
        unsigned char channel;      /* Network controller ID    */
        __be16        length;       /* Payload length           */
        __be32        reserved1[2]; /* Reserved                 */
};

struct ncsi_cmd_pkt_hdr {
        struct ncsi_pkt_hdr common; /* Common NCSI packet header */
};

struct ncsi_rsp_pkt_hdr {
        struct ncsi_pkt_hdr common; /* Common NCSI packet header */
        __be16              code;   /* Response code             */
        __be16              reason; /* Response reason           */
};

struct ncsi_aen_pkt_hdr {
        struct ncsi_pkt_hdr common;       /* Common NCSI packet header */
        unsigned char       reserved2[3]; /* Reserved                  */
        unsigned char       type;         /* AEN packet type           */
};

/* NCSI common command packet */
struct ncsi_cmd_pkt {
        struct ncsi_cmd_pkt_hdr cmd;      /* Command header */
        __be32                  checksum; /* Checksum       */
        unsigned char           pad[26];
};

struct ncsi_rsp_pkt {
        struct ncsi_rsp_pkt_hdr rsp;      /* Response header */
        __be32                  checksum; /* Checksum        */
        unsigned char           pad[22];
};

/* Select Package */
struct ncsi_cmd_sp_pkt {
        struct ncsi_cmd_pkt_hdr cmd;            /* Command header */
        unsigned char           reserved[3];    /* Reserved       */
        unsigned char           hw_arbitration; /* HW arbitration */
        __be32                  checksum;       /* Checksum       */
        unsigned char           pad[22];
};

/* Disable Channel */
struct ncsi_cmd_dc_pkt {
        struct ncsi_cmd_pkt_hdr cmd;         /* Command header  */
        unsigned char           reserved[3]; /* Reserved        */
        unsigned char           ald;         /* Allow link down */
        __be32                  checksum;    /* Checksum        */
        unsigned char           pad[22];
};

/* Reset Channel */
struct ncsi_cmd_rc_pkt {
        struct ncsi_cmd_pkt_hdr cmd;      /* Command header */
        __be32                  reserved; /* Reserved       */
        __be32                  checksum; /* Checksum       */
        unsigned char           pad[22];
};

/* AEN Enable */
struct ncsi_cmd_ae_pkt {
        struct ncsi_cmd_pkt_hdr cmd;         /* Command header   */
        unsigned char           reserved[3]; /* Reserved         */
        unsigned char           mc_id;       /* MC ID            */
        __be32                  mode;        /* AEN working mode */
        __be32                  checksum;    /* Checksum         */
        unsigned char           pad[18];
};

/* Set Link */
struct ncsi_cmd_sl_pkt {
        struct ncsi_cmd_pkt_hdr cmd;      /* Command header    */
        __be32                  mode;     /* Link working mode */
        __be32                  oem_mode; /* OEM link mode     */
        __be32                  checksum; /* Checksum          */
        unsigned char           pad[18];
};

/* Set VLAN Filter */
struct ncsi_cmd_svf_pkt {
        struct ncsi_cmd_pkt_hdr cmd;       /* Command header    */
        __be16                  reserved;  /* Reserved          */
        __be16                  vlan;      /* VLAN ID           */
        __be16                  reserved1; /* Reserved          */
        unsigned char           index;     /* VLAN table index  */
        unsigned char           enable;    /* Enable or disable */
        __be32                  checksum;  /* Checksum          */
        unsigned char           pad[14];
};

/* Enable VLAN */
struct ncsi_cmd_ev_pkt {
        struct ncsi_cmd_pkt_hdr cmd;         /* Command header   */
        unsigned char           reserved[3]; /* Reserved         */
        unsigned char           mode;        /* VLAN filter mode */
        __be32                  checksum;    /* Checksum         */
        unsigned char           pad[22];
};

/* Set MAC Address */
struct ncsi_cmd_sma_pkt {
        struct ncsi_cmd_pkt_hdr cmd;      /* Command header          */
        unsigned char           mac[6];   /* MAC address             */
        unsigned char           index;    /* MAC table index         */
        unsigned char           at_e;     /* Addr type and operation */
        __be32                  checksum; /* Checksum                */
        unsigned char           pad[18];
};

/* Enable Broadcast Filter */
struct ncsi_cmd_ebf_pkt {
        struct ncsi_cmd_pkt_hdr cmd;      /* Command header */
        __be32                  mode;     /* Filter mode    */
        __be32                  checksum; /* Checksum       */
        unsigned char           pad[22];
};

/* Enable Global Multicast Filter */
struct ncsi_cmd_egmf_pkt {
        struct ncsi_cmd_pkt_hdr cmd;      /* Command header */
        __be32                  mode;     /* Global MC mode */
        __be32                  checksum; /* Checksum       */
        unsigned char           pad[22];
};

/* Set NCSI Flow Control */
struct ncsi_cmd_snfc_pkt {
        struct ncsi_cmd_pkt_hdr cmd;         /* Command header    */
        unsigned char           reserved[3]; /* Reserved          */
        unsigned char           mode;        /* Flow control mode */
        __be32                  checksum;    /* Checksum          */
        unsigned char           pad[22];
};

/* Get Link Status */
struct ncsi_rsp_gls_pkt {
        struct ncsi_rsp_pkt_hdr rsp;        /* Response header   */
        __be32                  status;     /* Link status       */
        __be32                  other;      /* Other indications */
        __be32                  oem_status; /* OEM link status   */
        __be32                  checksum;
        unsigned char           pad[10];
};

/* Get Version ID */
struct ncsi_rsp_gvi_pkt {
        struct ncsi_rsp_pkt_hdr rsp;          /* Response header */
        __be32                  ncsi_version; /* NCSI version    */
        unsigned char           reserved[3];  /* Reserved        */
        unsigned char           alpha2;       /* NCSI version    */
        unsigned char           fw_name[12];  /* f/w name string */
        __be32                  fw_version;   /* f/w version     */
        __be16                  pci_ids[4];   /* PCI IDs         */
        __be32                  mf_id;        /* Manufacture ID  */
        __be32                  checksum;
};

/* Get Capabilities */
struct ncsi_rsp_gc_pkt {
        struct ncsi_rsp_pkt_hdr rsp;         /* Response header   */
        __be32                  cap;         /* Capabilities      */
        __be32                  bc_cap;      /* Broadcast cap     */
        __be32                  mc_cap;      /* Multicast cap     */
        __be32                  buf_cap;     /* Buffering cap     */
        __be32                  aen_cap;     /* AEN cap           */
        unsigned char           vlan_cnt;    /* VLAN filter count */
        unsigned char           mixed_cnt;   /* Mix filter count  */
        unsigned char           mc_cnt;      /* MC filter count   */
        unsigned char           uc_cnt;      /* UC filter count   */
        unsigned char           reserved[2]; /* Reserved          */
        unsigned char           vlan_mode;   /* VLAN mode         */
        unsigned char           channel_cnt; /* Channel count     */
        __be32                  checksum;    /* Checksum          */
};

/* Get Parameters */
struct ncsi_rsp_gp_pkt {
        struct ncsi_rsp_pkt_hdr rsp;          /* Response header       */
        unsigned char           mac_cnt;      /* Number of MAC addr    */
        unsigned char           reserved[2];  /* Reserved              */
        unsigned char           mac_enable;   /* MAC addr enable flags */
        unsigned char           vlan_cnt;     /* VLAN tag count        */
        unsigned char           reserved1;    /* Reserved              */
        __be16                  vlan_enable;  /* VLAN tag enable flags */
        __be32                  link_mode;    /* Link setting          */
        __be32                  bc_mode;      /* BC filter mode        */
        __be32                  valid_modes;  /* Valid mode parameters */
        unsigned char           vlan_mode;    /* VLAN mode             */
        unsigned char           fc_mode;      /* Flow control mode     */
        unsigned char           reserved2[2]; /* Reserved              */
        __be32                  aen_mode;     /* AEN mode              */
        unsigned char           mac[6];       /* Supported MAC addr    */
        __be16                  vlan;         /* Supported VLAN tags   */
        __be32                  checksum;     /* Checksum              */
};

/* Get Controller Packet Statistics */
struct ncsi_rsp_gcps_pkt {
        struct ncsi_rsp_pkt_hdr rsp;            /* Response header            */
        __be32                  cnt_hi;         /* Counter cleared            */
        __be32                  cnt_lo;         /* Counter cleared            */
        __be32                  rx_bytes;       /* Rx bytes                   */
        __be32                  tx_bytes;       /* Tx bytes                   */
        __be32                  rx_uc_pkts;     /* Rx UC packets              */
        __be32                  rx_mc_pkts;     /* Rx MC packets              */
        __be32                  rx_bc_pkts;     /* Rx BC packets              */
        __be32                  tx_uc_pkts;     /* Tx UC packets              */
        __be32                  tx_mc_pkts;     /* Tx MC packets              */
        __be32                  tx_bc_pkts;     /* Tx BC packets              */
        __be32                  fcs_err;        /* FCS errors                 */
        __be32                  align_err;      /* Alignment errors           */
        __be32                  false_carrier;  /* False carrier detection    */
        __be32                  runt_pkts;      /* Rx runt packets            */
        __be32                  jabber_pkts;    /* Rx jabber packets          */
        __be32                  rx_pause_xon;   /* Rx pause XON frames        */
        __be32                  rx_pause_xoff;  /* Rx XOFF frames             */
        __be32                  tx_pause_xon;   /* Tx XON frames              */
        __be32                  tx_pause_xoff;  /* Tx XOFF frames             */
        __be32                  tx_s_collision; /* Single collision frames    */
        __be32                  tx_m_collision; /* Multiple collision frames  */
        __be32                  l_collision;    /* Late collision frames      */
        __be32                  e_collision;    /* Excessive collision frames */
        __be32                  rx_ctl_frames;  /* Rx control frames          */
        __be32                  rx_64_frames;   /* Rx 64-bytes frames         */
        __be32                  rx_127_frames;  /* Rx 65-127 bytes frames     */
        __be32                  rx_255_frames;  /* Rx 128-255 bytes frames    */
        __be32                  rx_511_frames;  /* Rx 256-511 bytes frames    */
        __be32                  rx_1023_frames; /* Rx 512-1023 bytes frames   */
        __be32                  rx_1522_frames; /* Rx 1024-1522 bytes frames  */
        __be32                  rx_9022_frames; /* Rx 1523-9022 bytes frames  */
        __be32                  tx_64_frames;   /* Tx 64-bytes frames         */
        __be32                  tx_127_frames;  /* Tx 65-127 bytes frames     */
        __be32                  tx_255_frames;  /* Tx 128-255 bytes frames    */
        __be32                  tx_511_frames;  /* Tx 256-511 bytes frames    */
        __be32                  tx_1023_frames; /* Tx 512-1023 bytes frames   */
        __be32                  tx_1522_frames; /* Tx 1024-1522 bytes frames  */
        __be32                  tx_9022_frames; /* Tx 1523-9022 bytes frames  */
        __be32                  rx_valid_bytes; /* Rx valid bytes             */
        __be32                  rx_runt_pkts;   /* Rx error runt packets      */
        __be32                  rx_jabber_pkts; /* Rx error jabber packets    */
        __be32                  checksum;       /* Checksum                   */
};

/* Get NCSI Statistics */
struct ncsi_rsp_gns_pkt {
        struct ncsi_rsp_pkt_hdr rsp;           /* Response header         */
        __be32                  rx_cmds;       /* Rx NCSI commands        */
        __be32                  dropped_cmds;  /* Dropped commands        */
        __be32                  cmd_type_errs; /* Command type errors     */
        __be32                  cmd_csum_errs; /* Command checksum errors */
        __be32                  rx_pkts;       /* Rx NCSI packets         */
        __be32                  tx_pkts;       /* Tx NCSI packets         */
        __be32                  tx_aen_pkts;   /* Tx AEN packets          */
        __be32                  checksum;      /* Checksum                */
};

/* Get NCSI Pass-through Statistics */
struct ncsi_rsp_gnpts_pkt {
        struct ncsi_rsp_pkt_hdr rsp;            /* Response header     */
        __be32                  tx_pkts;        /* Tx packets          */
        __be32                  tx_dropped;     /* Tx dropped packets  */
        __be32                  tx_channel_err; /* Tx channel errors   */
        __be32                  tx_us_err;      /* Tx undersize errors */
        __be32                  rx_pkts;        /* Rx packets          */
        __be32                  rx_dropped;     /* Rx dropped packets  */
        __be32                  rx_channel_err; /* Rx channel errors   */
        __be32                  rx_us_err;      /* Rx undersize errors */
        __be32                  rx_os_err;      /* Rx oversize errors  */
        __be32                  checksum;       /* Checksum            */
};

/* Get package status */
struct ncsi_rsp_gps_pkt {
        struct ncsi_rsp_pkt_hdr rsp;      /* Response header             */
        __be32                  status;   /* Hardware arbitration status */
        __be32                  checksum;
};

/* Get package UUID */
struct ncsi_rsp_gpuuid_pkt {
        struct ncsi_rsp_pkt_hdr rsp;      /* Response header */
        unsigned char           uuid[16]; /* UUID            */
        __be32                  checksum;
};

/* AEN: Link State Change */
struct ncsi_aen_lsc_pkt {
        struct ncsi_aen_pkt_hdr aen;        /* AEN header      */
        __be32                  status;     /* Link status     */
        __be32                  oem_status; /* OEM link status */
        __be32                  checksum;   /* Checksum        */
        unsigned char           pad[14];
};

/* AEN: Configuration Required */
struct ncsi_aen_cr_pkt {
        struct ncsi_aen_pkt_hdr aen;      /* AEN header */
        __be32                  checksum; /* Checksum   */
        unsigned char           pad[22];
};

/* AEN: Host Network Controller Driver Status Change */
struct ncsi_aen_hncdsc_pkt {
        struct ncsi_aen_pkt_hdr aen;      /* AEN header */
        __be32                  status;   /* Status     */
        __be32                  checksum; /* Checksum   */
        unsigned char           pad[18];
};

/* NCSI packet revision */
#define NCSI_PKT_REVISION       0x01

/* NCSI packet commands */
#define NCSI_PKT_CMD_CIS        0x00 /* Clear Initial State              */
#define NCSI_PKT_CMD_SP         0x01 /* Select Package                   */
#define NCSI_PKT_CMD_DP         0x02 /* Deselect Package                 */
#define NCSI_PKT_CMD_EC         0x03 /* Enable Channel                   */
#define NCSI_PKT_CMD_DC         0x04 /* Disable Channel                  */
#define NCSI_PKT_CMD_RC         0x05 /* Reset Channel                    */
#define NCSI_PKT_CMD_ECNT       0x06 /* Enable Channel Network Tx        */
#define NCSI_PKT_CMD_DCNT       0x07 /* Disable Channel Network Tx       */
#define NCSI_PKT_CMD_AE         0x08 /* AEN Enable                       */
#define NCSI_PKT_CMD_SL         0x09 /* Set Link                         */
#define NCSI_PKT_CMD_GLS        0x0a /* Get Link                         */
#define NCSI_PKT_CMD_SVF        0x0b /* Set VLAN Filter                  */
#define NCSI_PKT_CMD_EV         0x0c /* Enable VLAN                      */
#define NCSI_PKT_CMD_DV         0x0d /* Disable VLAN                     */
#define NCSI_PKT_CMD_SMA        0x0e /* Set MAC address                  */
#define NCSI_PKT_CMD_EBF        0x10 /* Enable Broadcast Filter          */
#define NCSI_PKT_CMD_DBF        0x11 /* Disable Broadcast Filter         */
#define NCSI_PKT_CMD_EGMF       0x12 /* Enable Global Multicast Filter   */
#define NCSI_PKT_CMD_DGMF       0x13 /* Disable Global Multicast Filter  */
#define NCSI_PKT_CMD_SNFC       0x14 /* Set NCSI Flow Control            */
#define NCSI_PKT_CMD_GVI        0x15 /* Get Version ID                   */
#define NCSI_PKT_CMD_GC         0x16 /* Get Capabilities                 */
#define NCSI_PKT_CMD_GP         0x17 /* Get Parameters                   */
#define NCSI_PKT_CMD_GCPS       0x18 /* Get Controller Packet Statistics */
#define NCSI_PKT_CMD_GNS        0x19 /* Get NCSI Statistics              */
#define NCSI_PKT_CMD_GNPTS      0x1a /* Get NCSI Pass-throu Statistics   */
#define NCSI_PKT_CMD_GPS        0x1b /* Get package status               */
#define NCSI_PKT_CMD_OEM        0x50 /* OEM                              */
#define NCSI_PKT_CMD_PLDM       0x51 /* PLDM request over NCSI over RBT  */
#define NCSI_PKT_CMD_GPUUID     0x52 /* Get package UUID                 */

/* NCSI packet responses */
#define NCSI_PKT_RSP_CIS        (NCSI_PKT_CMD_CIS    + 0x80)
#define NCSI_PKT_RSP_SP         (NCSI_PKT_CMD_SP     + 0x80)
#define NCSI_PKT_RSP_DP         (NCSI_PKT_CMD_DP     + 0x80)
#define NCSI_PKT_RSP_EC         (NCSI_PKT_CMD_EC     + 0x80)
#define NCSI_PKT_RSP_DC         (NCSI_PKT_CMD_DC     + 0x80)
#define NCSI_PKT_RSP_RC         (NCSI_PKT_CMD_RC     + 0x80)
#define NCSI_PKT_RSP_ECNT       (NCSI_PKT_CMD_ECNT   + 0x80)
#define NCSI_PKT_RSP_DCNT       (NCSI_PKT_CMD_DCNT   + 0x80)
#define NCSI_PKT_RSP_AE         (NCSI_PKT_CMD_AE     + 0x80)
#define NCSI_PKT_RSP_SL         (NCSI_PKT_CMD_SL     + 0x80)
#define NCSI_PKT_RSP_GLS        (NCSI_PKT_CMD_GLS    + 0x80)
#define NCSI_PKT_RSP_SVF        (NCSI_PKT_CMD_SVF    + 0x80)
#define NCSI_PKT_RSP_EV         (NCSI_PKT_CMD_EV     + 0x80)
#define NCSI_PKT_RSP_DV         (NCSI_PKT_CMD_DV     + 0x80)
#define NCSI_PKT_RSP_SMA        (NCSI_PKT_CMD_SMA    + 0x80)
#define NCSI_PKT_RSP_EBF        (NCSI_PKT_CMD_EBF    + 0x80)
#define NCSI_PKT_RSP_DBF        (NCSI_PKT_CMD_DBF    + 0x80)
#define NCSI_PKT_RSP_EGMF       (NCSI_PKT_CMD_EGMF   + 0x80)
#define NCSI_PKT_RSP_DGMF       (NCSI_PKT_CMD_DGMF   + 0x80)
#define NCSI_PKT_RSP_SNFC       (NCSI_PKT_CMD_SNFC   + 0x80)
#define NCSI_PKT_RSP_GVI        (NCSI_PKT_CMD_GVI    + 0x80)
#define NCSI_PKT_RSP_GC         (NCSI_PKT_CMD_GC     + 0x80)
#define NCSI_PKT_RSP_GP         (NCSI_PKT_CMD_GP     + 0x80)
#define NCSI_PKT_RSP_GCPS       (NCSI_PKT_CMD_GCPS   + 0x80)
#define NCSI_PKT_RSP_GNS        (NCSI_PKT_CMD_GNS    + 0x80)
#define NCSI_PKT_RSP_GNPTS      (NCSI_PKT_CMD_GNPTS  + 0x80)
#define NCSI_PKT_RSP_GPS        (NCSI_PKT_CMD_GPS    + 0x80)
#define NCSI_PKT_RSP_OEM        (NCSI_PKT_CMD_OEM    + 0x80)
#define NCSI_PKT_RSP_PLDM       (NCSI_PKT_CMD_PLDM   + 0x80)
#define NCSI_PKT_RSP_GPUUID     (NCSI_PKT_CMD_GPUUID + 0x80)

/* NCSI response code/reason */
#define NCSI_PKT_RSP_C_COMPLETED        0x0000 /* Command Completed        */
#define NCSI_PKT_RSP_C_FAILED           0x0001 /* Command Failed           */
#define NCSI_PKT_RSP_C_UNAVAILABLE      0x0002 /* Command Unavailable      */
#define NCSI_PKT_RSP_C_UNSUPPORTED      0x0003 /* Command Unsupported      */
#define NCSI_PKT_RSP_R_NO_ERROR         0x0000 /* No Error                 */
#define NCSI_PKT_RSP_R_INTERFACE        0x0001 /* Interface not ready      */
#define NCSI_PKT_RSP_R_PARAM            0x0002 /* Invalid Parameter        */
#define NCSI_PKT_RSP_R_CHANNEL          0x0003 /* Channel not Ready        */
#define NCSI_PKT_RSP_R_PACKAGE          0x0004 /* Package not Ready        */
#define NCSI_PKT_RSP_R_LENGTH           0x0005 /* Invalid payload length   */
#define NCSI_PKT_RSP_R_UNKNOWN          0x7fff /* Command type unsupported */

/* NCSI AEN packet type */
#define NCSI_PKT_AEN            0xFF /* AEN Packet               */
#define NCSI_PKT_AEN_LSC        0x00 /* Link status change       */
#define NCSI_PKT_AEN_CR         0x01 /* Configuration required   */
#define NCSI_PKT_AEN_HNCDSC     0x02 /* HNC driver status change */

#endif /* NCSI_PKT_H */
