brintos

brintos / linux-shallow public Read only

0
0
Text · 2.8 KiB · c51a61a Raw
101 lines · c
1/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */2/* Copyright (c) 2015-2018 Mellanox Technologies. All rights reserved */3 4#ifndef _MLXSW_EMAD_H5#define _MLXSW_EMAD_H6 7#define MLXSW_EMAD_MAX_FRAME_LEN 1518	/* Length in u8 */8#define MLXSW_EMAD_MAX_RETRY 59 10/* EMAD Ethernet header */11#define MLXSW_EMAD_ETH_HDR_LEN 0x10	/* Length in u8 */12#define MLXSW_EMAD_EH_DMAC "\x01\x02\xc9\x00\x00\x01"13#define MLXSW_EMAD_EH_SMAC "\x00\x02\xc9\x01\x02\x03"14#define MLXSW_EMAD_EH_ETHERTYPE 0x893215#define MLXSW_EMAD_EH_MLX_PROTO 016#define MLXSW_EMAD_EH_PROTO_VERSION 017 18/* EMAD TLV Types */19enum {20	MLXSW_EMAD_TLV_TYPE_END,21	MLXSW_EMAD_TLV_TYPE_OP,22	MLXSW_EMAD_TLV_TYPE_STRING,23	MLXSW_EMAD_TLV_TYPE_REG,24	MLXSW_EMAD_TLV_TYPE_LATENCY,25};26 27/* OP TLV */28#define MLXSW_EMAD_OP_TLV_LEN 4		/* Length in u32 */29 30enum {31	MLXSW_EMAD_OP_TLV_CLASS_REG_ACCESS = 1,32	MLXSW_EMAD_OP_TLV_CLASS_IPC = 2,33};34 35enum mlxsw_emad_op_tlv_status {36	MLXSW_EMAD_OP_TLV_STATUS_SUCCESS,37	MLXSW_EMAD_OP_TLV_STATUS_BUSY,38	MLXSW_EMAD_OP_TLV_STATUS_VERSION_NOT_SUPPORTED,39	MLXSW_EMAD_OP_TLV_STATUS_UNKNOWN_TLV,40	MLXSW_EMAD_OP_TLV_STATUS_REGISTER_NOT_SUPPORTED,41	MLXSW_EMAD_OP_TLV_STATUS_CLASS_NOT_SUPPORTED,42	MLXSW_EMAD_OP_TLV_STATUS_METHOD_NOT_SUPPORTED,43	MLXSW_EMAD_OP_TLV_STATUS_BAD_PARAMETER,44	MLXSW_EMAD_OP_TLV_STATUS_RESOURCE_NOT_AVAILABLE,45	MLXSW_EMAD_OP_TLV_STATUS_MESSAGE_RECEIPT_ACK,46	MLXSW_EMAD_OP_TLV_STATUS_INTERNAL_ERROR = 0x70,47};48 49static inline char *mlxsw_emad_op_tlv_status_str(u8 status)50{51	switch (status) {52	case MLXSW_EMAD_OP_TLV_STATUS_SUCCESS:53		return "operation performed";54	case MLXSW_EMAD_OP_TLV_STATUS_BUSY:55		return "device is busy";56	case MLXSW_EMAD_OP_TLV_STATUS_VERSION_NOT_SUPPORTED:57		return "version not supported";58	case MLXSW_EMAD_OP_TLV_STATUS_UNKNOWN_TLV:59		return "unknown TLV";60	case MLXSW_EMAD_OP_TLV_STATUS_REGISTER_NOT_SUPPORTED:61		return "register not supported";62	case MLXSW_EMAD_OP_TLV_STATUS_CLASS_NOT_SUPPORTED:63		return "class not supported";64	case MLXSW_EMAD_OP_TLV_STATUS_METHOD_NOT_SUPPORTED:65		return "method not supported";66	case MLXSW_EMAD_OP_TLV_STATUS_BAD_PARAMETER:67		return "bad parameter";68	case MLXSW_EMAD_OP_TLV_STATUS_RESOURCE_NOT_AVAILABLE:69		return "resource not available";70	case MLXSW_EMAD_OP_TLV_STATUS_MESSAGE_RECEIPT_ACK:71		return "acknowledged. retransmit";72	case MLXSW_EMAD_OP_TLV_STATUS_INTERNAL_ERROR:73		return "internal error";74	default:75		return "*UNKNOWN*";76	}77}78 79enum {80	MLXSW_EMAD_OP_TLV_REQUEST,81	MLXSW_EMAD_OP_TLV_RESPONSE82};83 84enum {85	MLXSW_EMAD_OP_TLV_METHOD_QUERY = 1,86	MLXSW_EMAD_OP_TLV_METHOD_WRITE = 2,87	MLXSW_EMAD_OP_TLV_METHOD_SEND = 3,88	MLXSW_EMAD_OP_TLV_METHOD_EVENT = 5,89};90 91/* STRING TLV */92#define MLXSW_EMAD_STRING_TLV_LEN 33	/* Length in u32 */93 94/* LATENCY TLV */95#define MLXSW_EMAD_LATENCY_TLV_LEN 7	/* Length in u32 */96 97/* END TLV */98#define MLXSW_EMAD_END_TLV_LEN 1	/* Length in u32 */99 100#endif101