1 /* 2 * Copyright (C) 2007 VMware, Inc. All rights reserved. 3 * 4 * The contents of this file are subject to the terms of the Common 5 * Development and Distribution License (the "License") version 1.0 6 * and no later version. You may not use this file except in 7 * compliance with the License. 8 * 9 * You can obtain a copy of the License at 10 * http://www.opensource.org/licenses/cddl1.php 11 * 12 * See the License for the specific language governing permissions 13 * and limitations under the License. 14 */ 15 16 /* 17 * upt1_defs.h 18 * 19 * Definitions for UPTv1 20 * 21 * Some of the defs are duplicated in vmkapi_net_upt.h, because 22 * vmkapi_net_upt.h cannot distribute with OSS yet and vmkapi headers can 23 * only include vmkapi headers. Make sure they are kept in sync! 24 */ 25 26 #ifndef _UPT1_DEFS_H_ 27 #define _UPT1_DEFS_H_ 28 29 #define UPT1_MAX_TX_QUEUES 64 30 #define UPT1_MAX_RX_QUEUES 64 31 32 #define UPT1_MAX_INTRS (UPT1_MAX_TX_QUEUES + UPT1_MAX_RX_QUEUES) 33 34 #pragma pack(1) 35 typedef struct UPT1_TxStats { 36 uint64_t TSOPktsTxOK; /* TSO pkts post-segmentation */ 37 uint64_t TSOBytesTxOK; 38 uint64_t ucastPktsTxOK; 39 uint64_t ucastBytesTxOK; 40 uint64_t mcastPktsTxOK; 41 uint64_t mcastBytesTxOK; 42 uint64_t bcastPktsTxOK; 43 uint64_t bcastBytesTxOK; 44 uint64_t pktsTxError; 45 uint64_t pktsTxDiscard; 46 } UPT1_TxStats; 47 #pragma pack() 48 49 #pragma pack(1) 50 typedef struct UPT1_RxStats { 51 uint64_t LROPktsRxOK; /* LRO pkts */ 52 uint64_t LROBytesRxOK; /* bytes from LRO pkts */ 53 /* the following counters are for pkts from the wire, i.e., pre-LRO */ 54 uint64_t ucastPktsRxOK; 55 uint64_t ucastBytesRxOK; 56 uint64_t mcastPktsRxOK; 57 uint64_t mcastBytesRxOK; 58 uint64_t bcastPktsRxOK; 59 uint64_t bcastBytesRxOK; 60 uint64_t pktsRxOutOfBuf; 61 uint64_t pktsRxError; 62 } UPT1_RxStats; 63 #pragma pack() 64 65 /* interrupt moderation level */ 66 #define UPT1_IML_NONE 0 /* no interrupt moderation */ 67 #define UPT1_IML_HIGHEST 7 /* least intr generated */ 68 #define UPT1_IML_ADAPTIVE 8 /* adpative intr moderation */ 69 70 /* values for UPT1_RSSConf.hashFunc */ 71 #define UPT1_RSS_HASH_TYPE_NONE 0x0 72 #define UPT1_RSS_HASH_TYPE_IPV4 0x01 73 #define UPT1_RSS_HASH_TYPE_TCP_IPV4 0x02 74 #define UPT1_RSS_HASH_TYPE_IPV6 0x04 75 #define UPT1_RSS_HASH_TYPE_TCP_IPV6 0x08 76 77 #define UPT1_RSS_HASH_FUNC_NONE 0x0 78 #define UPT1_RSS_HASH_FUNC_TOEPLITZ 0x01 79 80 #define UPT1_RSS_MAX_KEY_SIZE 40 81 #define UPT1_RSS_MAX_IND_TABLE_SIZE 128 82 83 #pragma pack(1) 84 typedef struct UPT1_RSSConf { 85 uint16_t hashType; 86 uint16_t hashFunc; 87 uint16_t hashKeySize; 88 uint16_t indTableSize; 89 uint8_t hashKey[UPT1_RSS_MAX_KEY_SIZE]; 90 uint8_t indTable[UPT1_RSS_MAX_IND_TABLE_SIZE]; 91 } UPT1_RSSConf; 92 #pragma pack() 93 94 /* features */ 95 #define UPT1_F_RXCSUM 0x0001 /* rx csum verification */ 96 #define UPT1_F_RSS 0x0002 97 #define UPT1_F_RXVLAN 0x0004 /* VLAN tag stripping */ 98 #define UPT1_F_LRO 0x0008 99 100 #endif /* _UPT1_DEFS_H_ */ 101