/* * Copyright (C) 2007 VMware, Inc. All rights reserved. * * The contents of this file are subject to the terms of the Common * Development and Distribution License (the "License") version 1.0 * and no later version. You may not use this file except in * compliance with the License. * * You can obtain a copy of the License at * http://www.opensource.org/licenses/cddl1.php * * See the License for the specific language governing permissions * and limitations under the License. */ /* * upt1_defs.h * * Definitions for UPTv1 * * Some of the defs are duplicated in vmkapi_net_upt.h, because * vmkapi_net_upt.h cannot distribute with OSS yet and vmkapi headers can * only include vmkapi headers. Make sure they are kept in sync! */ #ifndef _UPT1_DEFS_H_ #define _UPT1_DEFS_H_ #define UPT1_MAX_TX_QUEUES 64 #define UPT1_MAX_RX_QUEUES 64 #define UPT1_MAX_INTRS (UPT1_MAX_TX_QUEUES + UPT1_MAX_RX_QUEUES) #pragma pack(1) typedef struct UPT1_TxStats { uint64_t TSOPktsTxOK; /* TSO pkts post-segmentation */ uint64_t TSOBytesTxOK; uint64_t ucastPktsTxOK; uint64_t ucastBytesTxOK; uint64_t mcastPktsTxOK; uint64_t mcastBytesTxOK; uint64_t bcastPktsTxOK; uint64_t bcastBytesTxOK; uint64_t pktsTxError; uint64_t pktsTxDiscard; } UPT1_TxStats; #pragma pack() #pragma pack(1) typedef struct UPT1_RxStats { uint64_t LROPktsRxOK; /* LRO pkts */ uint64_t LROBytesRxOK; /* bytes from LRO pkts */ /* the following counters are for pkts from the wire, i.e., pre-LRO */ uint64_t ucastPktsRxOK; uint64_t ucastBytesRxOK; uint64_t mcastPktsRxOK; uint64_t mcastBytesRxOK; uint64_t bcastPktsRxOK; uint64_t bcastBytesRxOK; uint64_t pktsRxOutOfBuf; uint64_t pktsRxError; } UPT1_RxStats; #pragma pack() /* interrupt moderation level */ #define UPT1_IML_NONE 0 /* no interrupt moderation */ #define UPT1_IML_HIGHEST 7 /* least intr generated */ #define UPT1_IML_ADAPTIVE 8 /* adpative intr moderation */ /* values for UPT1_RSSConf.hashFunc */ #define UPT1_RSS_HASH_TYPE_NONE 0x0 #define UPT1_RSS_HASH_TYPE_IPV4 0x01 #define UPT1_RSS_HASH_TYPE_TCP_IPV4 0x02 #define UPT1_RSS_HASH_TYPE_IPV6 0x04 #define UPT1_RSS_HASH_TYPE_TCP_IPV6 0x08 #define UPT1_RSS_HASH_FUNC_NONE 0x0 #define UPT1_RSS_HASH_FUNC_TOEPLITZ 0x01 #define UPT1_RSS_MAX_KEY_SIZE 40 #define UPT1_RSS_MAX_IND_TABLE_SIZE 128 #pragma pack(1) typedef struct UPT1_RSSConf { uint16_t hashType; uint16_t hashFunc; uint16_t hashKeySize; uint16_t indTableSize; uint8_t hashKey[UPT1_RSS_MAX_KEY_SIZE]; uint8_t indTable[UPT1_RSS_MAX_IND_TABLE_SIZE]; } UPT1_RSSConf; #pragma pack() /* features */ #define UPT1_F_RXCSUM 0x0001 /* rx csum verification */ #define UPT1_F_RSS 0x0002 #define UPT1_F_RXVLAN 0x0004 /* VLAN tag stripping */ #define UPT1_F_LRO 0x0008 #endif /* _UPT1_DEFS_H_ */