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