// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)/* Copyright (c) 2019-2020 Marvell International Ltd. */#include<linux/types.h>#include<asm/byteorder.h>#include<linux/bug.h>#include<linux/errno.h>#include<linux/kernel.h>#include<linux/slab.h>#include<linux/string.h>#include<linux/vmalloc.h>#include"qed.h"#include"qed_hw.h"#include"qed_mcp.h"#include"qed_reg_addr.h"#define TLV_TYPE(p) (p[0])#define TLV_LENGTH(p) (p[1])#define TLV_FLAGS(p) (p[3])#define QED_TLV_DATA_MAX (14)structqed_tlv_parsed_buf{/* To be filled with the address to set in Value field */void*p_val;/* To be used internally in case the value has to be modified */u8data[QED_TLV_DATA_MAX];};staticintqed_mfw_get_tlv_group(u8tlv_type,u8*tlv_group){switch(tlv_type){caseDRV_TLV_FEATURE_FLAGS:caseDRV_TLV_LOCAL_ADMIN_ADDR:caseDRV_TLV_ADDITIONAL_MAC_ADDR_1:caseDRV_TLV_ADDITIONAL_MAC_ADDR_2:caseDRV_TLV_OS_DRIVER_STATES:caseDRV_TLV_PXE_BOOT_PROGRESS:caseDRV_TLV_RX_FRAMES_RECEIVED:caseDRV_TLV_RX_BYTES_RECEIVED:caseDRV_TLV_TX_FRAMES_SENT:caseDRV_TLV_TX_BYTES_SENT:caseDRV_TLV_NPIV_ENABLED:caseDRV_TLV_PCIE_BUS_RX_UTILIZATION:caseDRV_TLV_PCIE_BUS_TX_UTILIZATION:caseDRV_TLV_DEVICE_CPU_CORES_UTILIZATION:caseDRV_TLV_LAST_VALID_DCC_TLV_RECEIVED:caseDRV_TLV_NCSI_RX_BYTES_RECEIVED:caseDRV_TLV_NCSI_TX_BYTES_SENT:*tlv_group|=QED_MFW_TLV_GENERIC;break;caseDRV_TLV_LSO_MAX_OFFLOAD_SIZE:caseDRV_TLV_LSO_MIN_SEGMENT_COUNT:caseDRV_TLV_PROMISCUOUS_MODE:caseDRV_TLV_TX_DESCRIPTORS_QUEUE_SIZE:caseDRV_TLV_RX_DESCRIPTORS_QUEUE_SIZE:caseDRV_TLV_NUM_OF_NET_QUEUE_VMQ_CFG:caseDRV_TLV_NUM_OFFLOADED_CONNECTIONS_TCP_IPV4:caseDRV_TLV_NUM_OFFLOADED_CONNECTIONS_TCP_IPV6:caseDRV_TLV_TX_DESCRIPTOR_QUEUE_AVG_DEPTH:caseDRV_TLV_RX_DESCRIPTORS_QUEUE_AVG_DEPTH:caseDRV_TLV_IOV_OFFLOAD:caseDRV_TLV_TX_QUEUES_EMPTY:caseDRV_TLV_RX_QUEUES_EMPTY:caseDRV_TLV_TX_QUEUES_FULL:caseDRV_TLV_RX_QUEUES_FULL:*tlv_group|=QED_MFW_TLV_ETH;break;caseDRV_TLV_SCSI_TO:caseDRV_TLV_R_T_TOV:caseDRV_TLV_R_A_TOV:caseDRV_TLV_E_D_TOV:caseDRV_TLV_CR_TOV:caseDRV_TLV_BOOT_TYPE:caseDRV_TLV_NPIV_STATE:caseDRV_TLV_NUM_OF_NPIV_IDS:caseDRV_TLV_SWITCH_NAME:caseDRV_TLV_SWITCH_PORT_NUM:case