brintos

brintos / linux-shallow public Read only

0
0
Text · 3.5 KiB · 0dc6eea Raw
168 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/* Marvell Octeon EP (EndPoint) Ethernet Driver3 *4 * Copyright (C) 2020 Marvell.5 *6 */7 8#ifndef _OCTEP_PFVF_MBOX_H_9#define _OCTEP_PFVF_MBOX_H_10 11/* VF flags */12#define OCTEON_PFVF_FLAG_MAC_SET_BY_PF  BIT_ULL(0) /* PF has set VF MAC address */13#define OCTEON_SDP_16K_HW_FRS  16380UL14#define OCTEON_SDP_64K_HW_FRS  65531UL15 16/* When a new command is implemented,PF Mbox version should be bumped.17 */18enum octep_pfvf_mbox_version {19	OCTEP_PFVF_MBOX_VERSION_V0,20	OCTEP_PFVF_MBOX_VERSION_V1,21	OCTEP_PFVF_MBOX_VERSION_V2,22};23 24#define OCTEP_PFVF_MBOX_VERSION_CURRENT	OCTEP_PFVF_MBOX_VERSION_V225 26enum octep_pfvf_mbox_opcode {27	OCTEP_PFVF_MBOX_CMD_VERSION,28	OCTEP_PFVF_MBOX_CMD_SET_MTU,29	OCTEP_PFVF_MBOX_CMD_SET_MAC_ADDR,30	OCTEP_PFVF_MBOX_CMD_GET_MAC_ADDR,31	OCTEP_PFVF_MBOX_CMD_GET_LINK_INFO,32	OCTEP_PFVF_MBOX_CMD_GET_STATS,33	OCTEP_PFVF_MBOX_CMD_SET_RX_STATE,34	OCTEP_PFVF_MBOX_CMD_SET_LINK_STATUS,35	OCTEP_PFVF_MBOX_CMD_GET_LINK_STATUS,36	OCTEP_PFVF_MBOX_CMD_GET_MTU,37	OCTEP_PFVF_MBOX_CMD_DEV_REMOVE,38	OCTEP_PFVF_MBOX_CMD_GET_FW_INFO,39	OCTEP_PFVF_MBOX_CMD_SET_OFFLOADS,40	OCTEP_PFVF_MBOX_NOTIF_LINK_STATUS,41	OCTEP_PFVF_MBOX_CMD_MAX,42};43 44enum octep_pfvf_mbox_word_type {45	OCTEP_PFVF_MBOX_TYPE_CMD,46	OCTEP_PFVF_MBOX_TYPE_RSP_ACK,47	OCTEP_PFVF_MBOX_TYPE_RSP_NACK,48};49 50enum octep_pfvf_mbox_cmd_status {51	OCTEP_PFVF_MBOX_CMD_STATUS_NOT_SETUP = 1,52	OCTEP_PFVF_MBOX_CMD_STATUS_TIMEDOUT = 2,53	OCTEP_PFVF_MBOX_CMD_STATUS_NACK = 3,54	OCTEP_PFVF_MBOX_CMD_STATUS_BUSY = 455};56 57enum octep_pfvf_mbox_state {58	OCTEP_PFVF_MBOX_STATE_IDLE = 0,59	OCTEP_PFVF_MBOX_STATE_BUSY = 1,60};61 62enum octep_pfvf_link_status {63	OCTEP_PFVF_LINK_STATUS_DOWN,64	OCTEP_PFVF_LINK_STATUS_UP,65};66 67enum octep_pfvf_link_speed {68	OCTEP_PFVF_LINK_SPEED_NONE,69	OCTEP_PFVF_LINK_SPEED_1000,70	OCTEP_PFVF_LINK_SPEED_10000,71	OCTEP_PFVF_LINK_SPEED_25000,72	OCTEP_PFVF_LINK_SPEED_40000,73	OCTEP_PFVF_LINK_SPEED_50000,74	OCTEP_PFVF_LINK_SPEED_100000,75	OCTEP_PFVF_LINK_SPEED_LAST,76};77 78enum octep_pfvf_link_duplex {79	OCTEP_PFVF_LINK_HALF_DUPLEX,80	OCTEP_PFVF_LINK_FULL_DUPLEX,81};82 83enum octep_pfvf_link_autoneg {84	OCTEP_PFVF_LINK_AUTONEG,85	OCTEP_PFVF_LINK_FIXED,86};87 88#define OCTEP_PFVF_MBOX_TIMEOUT_MS     50089#define OCTEP_PFVF_MBOX_MAX_RETRIES    290#define OCTEP_PFVF_MBOX_MAX_DATA_SIZE  691#define OCTEP_PFVF_MBOX_MORE_FRAG_FLAG 192#define OCTEP_PFVF_MBOX_WRITE_WAIT_TIME msecs_to_jiffies(1)93 94union octep_pfvf_mbox_word {95	u64 u64;96	struct {97		u64 opcode:8;98		u64 type:2;99		u64 rsvd:6;100		u64 data:48;101	} s;102	struct {103		u64 opcode:8;104		u64 type:2;105		u64 frag:1;106		u64 rsvd:5;107		u8 data[6];108	} s_data;109	struct {110		u64 opcode:8;111		u64 type:2;112		u64 rsvd:6;113		u64 version:48;114	} s_version;115	struct {116		u64 opcode:8;117		u64 type:2;118		u64 rsvd:6;119		u8 mac_addr[6];120	} s_set_mac;121	struct {122		u64 opcode:8;123		u64 type:2;124		u64 rsvd:6;125		u64 mtu:48;126	} s_set_mtu;127	struct {128		u64 opcode:8;129		u64 type:2;130		u64 rsvd:6;131		u64 mtu:48;132	} s_get_mtu;133	struct {134		u64 opcode:8;135		u64 type:2;136		u64 state:1;137		u64 rsvd:53;138	} s_link_state;139	struct {140		u64 opcode:8;141		u64 type:2;142		u64 status:1;143		u64 rsvd:53;144	} s_link_status;145	struct {146		u64 opcode:8;147		u64 type:2;148		u64 pkind:8;149		u64 fsz:8;150		u64 rx_ol_flags:16;151		u64 tx_ol_flags:16;152		u64 rsvd:6;153	} s_fw_info;154	struct {155		u64 opcode:8;156		u64 type:2;157		u64 rsvd:22;158		u64 rx_ol_flags:16;159		u64 tx_ol_flags:16;160	} s_offloads;161} __packed;162 163void octep_pfvf_mbox_work(struct work_struct *work);164int octep_setup_pfvf_mbox(struct octep_device *oct);165void octep_delete_pfvf_mbox(struct octep_device *oct);166void octep_pfvf_notify(struct octep_device *oct, struct octep_ctrl_mbox_msg *msg);167#endif168