cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

octep_ctrl_net.h (7822B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* Marvell Octeon EP (EndPoint) Ethernet Driver
      3 *
      4 * Copyright (C) 2020 Marvell.
      5 *
      6 */
      7#ifndef __OCTEP_CTRL_NET_H__
      8#define __OCTEP_CTRL_NET_H__
      9
     10/* Supported commands */
     11enum octep_ctrl_net_cmd {
     12	OCTEP_CTRL_NET_CMD_GET = 0,
     13	OCTEP_CTRL_NET_CMD_SET,
     14};
     15
     16/* Supported states */
     17enum octep_ctrl_net_state {
     18	OCTEP_CTRL_NET_STATE_DOWN = 0,
     19	OCTEP_CTRL_NET_STATE_UP,
     20};
     21
     22/* Supported replies */
     23enum octep_ctrl_net_reply {
     24	OCTEP_CTRL_NET_REPLY_OK = 0,
     25	OCTEP_CTRL_NET_REPLY_GENERIC_FAIL,
     26	OCTEP_CTRL_NET_REPLY_INVALID_PARAM,
     27};
     28
     29/* Supported host to fw commands */
     30enum octep_ctrl_net_h2f_cmd {
     31	OCTEP_CTRL_NET_H2F_CMD_INVALID = 0,
     32	OCTEP_CTRL_NET_H2F_CMD_MTU,
     33	OCTEP_CTRL_NET_H2F_CMD_MAC,
     34	OCTEP_CTRL_NET_H2F_CMD_GET_IF_STATS,
     35	OCTEP_CTRL_NET_H2F_CMD_GET_XSTATS,
     36	OCTEP_CTRL_NET_H2F_CMD_GET_Q_STATS,
     37	OCTEP_CTRL_NET_H2F_CMD_LINK_STATUS,
     38	OCTEP_CTRL_NET_H2F_CMD_RX_STATE,
     39	OCTEP_CTRL_NET_H2F_CMD_LINK_INFO,
     40};
     41
     42/* Supported fw to host commands */
     43enum octep_ctrl_net_f2h_cmd {
     44	OCTEP_CTRL_NET_F2H_CMD_INVALID = 0,
     45	OCTEP_CTRL_NET_F2H_CMD_LINK_STATUS,
     46};
     47
     48struct octep_ctrl_net_req_hdr {
     49	/* sender id */
     50	u16 sender;
     51	/* receiver id */
     52	u16 receiver;
     53	/* octep_ctrl_net_h2t_cmd */
     54	u16 cmd;
     55	/* reserved */
     56	u16 rsvd0;
     57};
     58
     59/* get/set mtu request */
     60struct octep_ctrl_net_h2f_req_cmd_mtu {
     61	/* enum octep_ctrl_net_cmd */
     62	u16 cmd;
     63	/* 0-65535 */
     64	u16 val;
     65};
     66
     67/* get/set mac request */
     68struct octep_ctrl_net_h2f_req_cmd_mac {
     69	/* enum octep_ctrl_net_cmd */
     70	u16 cmd;
     71	/* xx:xx:xx:xx:xx:xx */
     72	u8 addr[ETH_ALEN];
     73};
     74
     75/* get if_stats, xstats, q_stats request */
     76struct octep_ctrl_net_h2f_req_cmd_get_stats {
     77	/* offset into barmem where fw should copy over stats */
     78	u32 offset;
     79};
     80
     81/* get/set link state, rx state */
     82struct octep_ctrl_net_h2f_req_cmd_state {
     83	/* enum octep_ctrl_net_cmd */
     84	u16 cmd;
     85	/* enum octep_ctrl_net_state */
     86	u16 state;
     87};
     88
     89/* link info */
     90struct octep_ctrl_net_link_info {
     91	/* Bitmap of Supported link speeds/modes */
     92	u64 supported_modes;
     93	/* Bitmap of Advertised link speeds/modes */
     94	u64 advertised_modes;
     95	/* Autonegotation state; bit 0=disabled; bit 1=enabled */
     96	u8 autoneg;
     97	/* Pause frames setting. bit 0=disabled; bit 1=enabled */
     98	u8 pause;
     99	/* Negotiated link speed in Mbps */
    100	u32 speed;
    101};
    102
    103/* get/set link info */
    104struct octep_ctrl_net_h2f_req_cmd_link_info {
    105	/* enum octep_ctrl_net_cmd */
    106	u16 cmd;
    107	/* struct octep_ctrl_net_link_info */
    108	struct octep_ctrl_net_link_info info;
    109};
    110
    111/* Host to fw request data */
    112struct octep_ctrl_net_h2f_req {
    113	struct octep_ctrl_net_req_hdr hdr;
    114	union {
    115		struct octep_ctrl_net_h2f_req_cmd_mtu mtu;
    116		struct octep_ctrl_net_h2f_req_cmd_mac mac;
    117		struct octep_ctrl_net_h2f_req_cmd_get_stats get_stats;
    118		struct octep_ctrl_net_h2f_req_cmd_state link;
    119		struct octep_ctrl_net_h2f_req_cmd_state rx;
    120		struct octep_ctrl_net_h2f_req_cmd_link_info link_info;
    121	};
    122} __packed;
    123
    124struct octep_ctrl_net_resp_hdr {
    125	/* sender id */
    126	u16 sender;
    127	/* receiver id */
    128	u16 receiver;
    129	/* octep_ctrl_net_h2t_cmd */
    130	u16 cmd;
    131	/* octep_ctrl_net_reply */
    132	u16 reply;
    133};
    134
    135/* get mtu response */
    136struct octep_ctrl_net_h2f_resp_cmd_mtu {
    137	/* 0-65535 */
    138	u16 val;
    139};
    140
    141/* get mac response */
    142struct octep_ctrl_net_h2f_resp_cmd_mac {
    143	/* xx:xx:xx:xx:xx:xx */
    144	u8 addr[ETH_ALEN];
    145};
    146
    147/* get link state, rx state response */
    148struct octep_ctrl_net_h2f_resp_cmd_state {
    149	/* enum octep_ctrl_net_state */
    150	u16 state;
    151};
    152
    153/* Host to fw response data */
    154struct octep_ctrl_net_h2f_resp {
    155	struct octep_ctrl_net_resp_hdr hdr;
    156	union {
    157		struct octep_ctrl_net_h2f_resp_cmd_mtu mtu;
    158		struct octep_ctrl_net_h2f_resp_cmd_mac mac;
    159		struct octep_ctrl_net_h2f_resp_cmd_state link;
    160		struct octep_ctrl_net_h2f_resp_cmd_state rx;
    161		struct octep_ctrl_net_link_info link_info;
    162	};
    163} __packed;
    164
    165/* link state notofication */
    166struct octep_ctrl_net_f2h_req_cmd_state {
    167	/* enum octep_ctrl_net_state */
    168	u16 state;
    169};
    170
    171/* Fw to host request data */
    172struct octep_ctrl_net_f2h_req {
    173	struct octep_ctrl_net_req_hdr hdr;
    174	union {
    175		struct octep_ctrl_net_f2h_req_cmd_state link;
    176	};
    177};
    178
    179/* Fw to host response data */
    180struct octep_ctrl_net_f2h_resp {
    181	struct octep_ctrl_net_resp_hdr hdr;
    182};
    183
    184/* Size of host to fw octep_ctrl_mbox queue element */
    185union octep_ctrl_net_h2f_data_sz {
    186	struct octep_ctrl_net_h2f_req h2f_req;
    187	struct octep_ctrl_net_h2f_resp h2f_resp;
    188};
    189
    190/* Size of fw to host octep_ctrl_mbox queue element */
    191union octep_ctrl_net_f2h_data_sz {
    192	struct octep_ctrl_net_f2h_req f2h_req;
    193	struct octep_ctrl_net_f2h_resp f2h_resp;
    194};
    195
    196/* size of host to fw data in words */
    197#define OCTEP_CTRL_NET_H2F_DATA_SZW		((sizeof(union octep_ctrl_net_h2f_data_sz)) / \
    198						 (sizeof(unsigned long)))
    199
    200/* size of fw to host data in words */
    201#define OCTEP_CTRL_NET_F2H_DATA_SZW		((sizeof(union octep_ctrl_net_f2h_data_sz)) / \
    202						 (sizeof(unsigned long)))
    203
    204/* size in words of get/set mtu request */
    205#define OCTEP_CTRL_NET_H2F_MTU_REQ_SZW			2
    206/* size in words of get/set mac request */
    207#define OCTEP_CTRL_NET_H2F_MAC_REQ_SZW			2
    208/* size in words of get stats request */
    209#define OCTEP_CTRL_NET_H2F_GET_STATS_REQ_SZW		2
    210/* size in words of get/set state request */
    211#define OCTEP_CTRL_NET_H2F_STATE_REQ_SZW		2
    212/* size in words of get/set link info request */
    213#define OCTEP_CTRL_NET_H2F_LINK_INFO_REQ_SZW		4
    214
    215/* size in words of get mtu response */
    216#define OCTEP_CTRL_NET_H2F_GET_MTU_RESP_SZW		2
    217/* size in words of set mtu response */
    218#define OCTEP_CTRL_NET_H2F_SET_MTU_RESP_SZW		1
    219/* size in words of get mac response */
    220#define OCTEP_CTRL_NET_H2F_GET_MAC_RESP_SZW		2
    221/* size in words of set mac response */
    222#define OCTEP_CTRL_NET_H2F_SET_MAC_RESP_SZW		1
    223/* size in words of get state request */
    224#define OCTEP_CTRL_NET_H2F_GET_STATE_RESP_SZW		2
    225/* size in words of set state request */
    226#define OCTEP_CTRL_NET_H2F_SET_STATE_RESP_SZW		1
    227/* size in words of get link info request */
    228#define OCTEP_CTRL_NET_H2F_GET_LINK_INFO_RESP_SZW	4
    229/* size in words of set link info request */
    230#define OCTEP_CTRL_NET_H2F_SET_LINK_INFO_RESP_SZW	1
    231
    232/** Get link status from firmware.
    233 *
    234 * @param oct: non-null pointer to struct octep_device.
    235 *
    236 * return value: link status 0=down, 1=up.
    237 */
    238int octep_get_link_status(struct octep_device *oct);
    239
    240/** Set link status in firmware.
    241 *
    242 * @param oct: non-null pointer to struct octep_device.
    243 * @param up: boolean status.
    244 */
    245void octep_set_link_status(struct octep_device *oct, bool up);
    246
    247/** Set rx state in firmware.
    248 *
    249 * @param oct: non-null pointer to struct octep_device.
    250 * @param up: boolean status.
    251 */
    252void octep_set_rx_state(struct octep_device *oct, bool up);
    253
    254/** Get mac address from firmware.
    255 *
    256 * @param oct: non-null pointer to struct octep_device.
    257 * @param addr: non-null pointer to mac address.
    258 *
    259 * return value: 0 on success, -errno on failure.
    260 */
    261int octep_get_mac_addr(struct octep_device *oct, u8 *addr);
    262
    263/** Set mac address in firmware.
    264 *
    265 * @param oct: non-null pointer to struct octep_device.
    266 * @param addr: non-null pointer to mac address.
    267 */
    268int octep_set_mac_addr(struct octep_device *oct, u8 *addr);
    269
    270/** Set mtu in firmware.
    271 *
    272 * @param oct: non-null pointer to struct octep_device.
    273 * @param mtu: mtu.
    274 */
    275int octep_set_mtu(struct octep_device *oct, int mtu);
    276
    277/** Get interface statistics from firmware.
    278 *
    279 * @param oct: non-null pointer to struct octep_device.
    280 *
    281 * return value: 0 on success, -errno on failure.
    282 */
    283int octep_get_if_stats(struct octep_device *oct);
    284
    285/** Get link info from firmware.
    286 *
    287 * @param oct: non-null pointer to struct octep_device.
    288 *
    289 * return value: 0 on success, -errno on failure.
    290 */
    291int octep_get_link_info(struct octep_device *oct);
    292
    293/** Set link info in firmware.
    294 *
    295 * @param oct: non-null pointer to struct octep_device.
    296 */
    297int octep_set_link_info(struct octep_device *oct, struct octep_iface_link_info *link_info);
    298
    299#endif /* __OCTEP_CTRL_NET_H__ */