2026-01-29 22:25:33 +08:00

148 lines
4.9 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright(c) 2020 - 2024, Chengdu BeiZhongWangXin Technology Co., Ltd. */
#ifndef _NE6X_COMM_MAILBOX_H
#define _NE6X_COMM_MAILBOX_H
enum virtchnl_ops {
VIRTCHNL_OP_UNKNOWN = 0,
VIRTCHNL_OP_VERSION = 1,
VIRTCHNL_OP_RESET_VF = 2,
VIRTCHNL_OP_GET_VF_RESOURCES = 3,
VIRTCHNL_OP_CONFIG_TX_QUEUE = 4,
VIRTCHNL_OP_CONFIG_RX_QUEUE = 5,
VIRTCHNL_OP_CONFIG_ADPT_QUEUES = 6,
VIRTCHNL_OP_CONFIG_IRQ_MAP = 7,
VIRTCHNL_OP_ENABLE_QUEUES = 8,
VIRTCHNL_OP_DISABLE_QUEUES = 9,
VIRTCHNL_OP_ADD_ETH_ADDR = 10,
VIRTCHNL_OP_DEL_ETH_ADDR = 11,
VIRTCHNL_OP_ADD_VLAN = 12,
VIRTCHNL_OP_DEL_VLAN = 13,
/* promiscuous mode / unicast promisc / multicast promisc */
VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE = 14,
VIRTCHNL_OP_EVENT = 17, /* link state */
VIRTCHNL_OP_SET_VF_ADDR = 18,
VIRTCHNL_OP_VF_CONFIG = 19,
VIRTCHNL_OP_CONFIG_OFFLOAD = 27,
VIRTCHNL_OP_GET_VF_FEATURE = 28,
VIRTCHNL_OP_REQUEST_QUEUES = 29,
VIRTCHNL_OP_CONFIG_RSS = 30,
VIRTCHNL_OP_GET_PORT_STATUS = 31,
VIRTCHNL_OP_CHANGED_RSS = 32,
VIRTCHNL_OP_SET_VF_STATE = 33,
VIRTCHNL_OP_SET_FAST_MDOE = 34,
VIRTCHNL_OP_CONFIG_VLAN = 40,
VIRTCHNL_OP_CONFIG_VLAN_OFFLOAD = 41,
VIRTCHNL_OP_CONFIG_MTU = 42,
VIRTCHNL_OP_CONFIG_FLOW_CTRL = 43,
VIRTCHNL_OP_MAX,
};
static char local_error_buffer[64];
static inline const char *ne6x_opcode_str(enum virtchnl_ops opcode)
{
sprintf(local_error_buffer, "__OPCODE_UNKNOWN_OPCODE(%d)", opcode);
switch (opcode) {
case VIRTCHNL_OP_VERSION:
return "__OPCODE_GET_VERSION";
case VIRTCHNL_OP_RESET_VF:
return "__OPCODE_RESET_VF";
case VIRTCHNL_OP_GET_VF_RESOURCES:
return "__OPCODE_GET_VF_RESOURCES";
case VIRTCHNL_OP_CONFIG_TX_QUEUE:
return "__OPCODE_CONFIG_TX_QUEUE";
case VIRTCHNL_OP_CONFIG_RX_QUEUE:
return "__OPCODE_INIT_EXTENDED_CAPS";
case VIRTCHNL_OP_CONFIG_ADPT_QUEUES:
return "__OPCODE_CONFIG_ADPT_QUEUES";
case VIRTCHNL_OP_CONFIG_IRQ_MAP:
return "__OPCODE_CONFIG_IRQ_MAP";
case VIRTCHNL_OP_ENABLE_QUEUES:
return "__OPCODE_ENABLE_QUEUES";
case VIRTCHNL_OP_DISABLE_QUEUES:
return "__OPCODE_DISABLE_QUEUES";
case VIRTCHNL_OP_ADD_ETH_ADDR:
return "__OPCODE_ADD_ETH_ADDR";
case VIRTCHNL_OP_DEL_ETH_ADDR:
return "__OPCODE_DEL_ETH_ADDR";
case VIRTCHNL_OP_ADD_VLAN:
return "__OPCODE_ADD_VLAN";
case VIRTCHNL_OP_DEL_VLAN:
return "__OPCODE_DEL_VLAN";
case VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE:
return "__OPCODE_CONFIG_PROMISCUOUS_MODE";
case VIRTCHNL_OP_EVENT:
return "__OPCODE_EVENT";
case VIRTCHNL_OP_CONFIG_RSS:
return "__OPCODE_CONFIG_RSS";
case VIRTCHNL_OP_CHANGED_RSS:
return "__OP_CHANGED_RSS";
case VIRTCHNL_OP_CONFIG_OFFLOAD:
return "__OPCODE_CONFIGURE_OFFLOAD";
case VIRTCHNL_OP_GET_VF_FEATURE:
return "VIRTCHNL_OP_GET_VF_FEATURE";
case VIRTCHNL_OP_REQUEST_QUEUES:
return "__OPCODE_REQUEST_QUEUES";
case VIRTCHNL_OP_GET_PORT_STATUS:
return "__OP_GET_PORT_STATUS";
case VIRTCHNL_OP_SET_VF_ADDR:
return "__OPCODE_SET_VF_ADDR";
case VIRTCHNL_OP_VF_CONFIG:
return "__VIRTCHNL_OP_VF_CONFIG";
case VIRTCHNL_OP_SET_VF_STATE:
return "__VIRTCHNL_OP_SET_VF_STATE";
case VIRTCHNL_OP_SET_FAST_MDOE:
return "__VIRTCHNL_OP_SET_FAST_MDOE";
case VIRTCHNL_OP_CONFIG_VLAN:
return "__VIRTCHNL_OP_CONFIG_VLAN";
case VIRTCHNL_OP_CONFIG_VLAN_OFFLOAD:
return "__VIRTCHNL_OP_CONFIG_VLAN_OFFLOAD";
case VIRTCHNL_OP_CONFIG_MTU:
return "__VIRTCHNL_OP_CONFIG_MTU";
case VIRTCHNL_OP_CONFIG_FLOW_CTRL:
return "__VIRTCHNL_OP_CONFIG_FLOW_CTRL";
default:
return local_error_buffer;
}
}
/* Error Codes */
enum virtchnl_status_code {
VIRTCHNL_STATUS_SUCCESS = 0,
VIRTCHNL_STATUS_ERR_PARAM = -5,
VIRTCHNL_STATUS_ERR_NO_MEMORY = -18,
VIRTCHNL_STATUS_ERR_OPCODE_MISMATCH = -38,
VIRTCHNL_STATUS_ERR_CQP_COMPL_ERROR = -39,
VIRTCHNL_STATUS_ERR_INVALID_VF_ID = -40,
VIRTCHNL_STATUS_ERR_ADMIN_QUEUE_ERROR = -53,
VIRTCHNL_STATUS_ERR_NOT_SUPPORTED = -64,
};
static inline const char *ne6x_mbox_status_str(enum virtchnl_status_code opcode)
{
switch (opcode) {
case VIRTCHNL_STATUS_SUCCESS:
return "__STATUS_SUCCESS";
case VIRTCHNL_STATUS_ERR_PARAM:
return "__STATUS_ERR_PARAM";
case VIRTCHNL_STATUS_ERR_NO_MEMORY:
return "__STATUS_ERR_NO_MEMORY";
case VIRTCHNL_STATUS_ERR_OPCODE_MISMATCH:
return "__STATUS_ERR_OPCODE_MISMATCH";
case VIRTCHNL_STATUS_ERR_CQP_COMPL_ERROR:
return "__STATUS_ERR_CQP_COMPL_ERROR";
case VIRTCHNL_STATUS_ERR_INVALID_VF_ID:
return "__STATUS_ERR_INVALID_VF_ID";
case VIRTCHNL_STATUS_ERR_ADMIN_QUEUE_ERROR:
return "__STATUS_ERR_ADMIN_QUEUE_ERROR";
case VIRTCHNL_STATUS_ERR_NOT_SUPPORTED:
return "__STATUS_ERR_NOT_SUPPORTED";
default:
return "__STATUS_UNKNOWN";
}
}
#endif