/* SPDX-License-Identifier: BSD-3-Clause */
/*
 * Copyright Gavin Shan, IBM Corporation 2016.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above
 * copyright notice, this list of conditions and the following
 * disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above
 * copyright notice, this list of conditions and the following
 * disclaimer in the documentation and/or other materials provided
 * with the distribution.
 *
 * 3. Neither the name of the copyright holder nor the names of its
 * contributors may be used to endorse or promote products derived
 * from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#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 */
