linux/drivers/net/vmxnet3/upt1_defs.h
<<
>>
Prefs
   1/*
   2 * Linux driver for VMware's vmxnet3 ethernet NIC.
   3 *
   4 * Copyright (C) 2008-2016, VMware, Inc. All Rights Reserved.
   5 *
   6 * This program is free software; you can redistribute it and/or modify it
   7 * under the terms of the GNU General Public License as published by the
   8 * Free Software Foundation; version 2 of the License and no later version.
   9 *
  10 * This program is distributed in the hope that it will be useful, but
  11 * WITHOUT ANY WARRANTY; without even the implied warranty of
  12 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
  13 * NON INFRINGEMENT.  See the GNU General Public License for more
  14 * details.
  15 *
  16 * You should have received a copy of the GNU General Public License
  17 * along with this program; if not, write to the Free Software
  18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  19 *
  20 * The full GNU General Public License is included in this distribution in
  21 * the file called "COPYING".
  22 *
  23 * Maintained by: pv-drivers@vmware.com
  24 *
  25 */
  26
  27#ifndef _UPT1_DEFS_H
  28#define _UPT1_DEFS_H
  29
  30struct UPT1_TxStats {
  31        u64                     TSOPktsTxOK;  /* TSO pkts post-segmentation */
  32        u64                     TSOBytesTxOK;
  33        u64                     ucastPktsTxOK;
  34        u64                     ucastBytesTxOK;
  35        u64                     mcastPktsTxOK;
  36        u64                     mcastBytesTxOK;
  37        u64                     bcastPktsTxOK;
  38        u64                     bcastBytesTxOK;
  39        u64                     pktsTxError;
  40        u64                     pktsTxDiscard;
  41};
  42
  43struct UPT1_RxStats {
  44        u64                     LROPktsRxOK;    /* LRO pkts */
  45        u64                     LROBytesRxOK;   /* bytes from LRO pkts */
  46        /* the following counters are for pkts from the wire, i.e., pre-LRO */
  47        u64                     ucastPktsRxOK;
  48        u64                     ucastBytesRxOK;
  49        u64                     mcastPktsRxOK;
  50        u64                     mcastBytesRxOK;
  51        u64                     bcastPktsRxOK;
  52        u64                     bcastBytesRxOK;
  53        u64                     pktsRxOutOfBuf;
  54        u64                     pktsRxError;
  55};
  56
  57/* interrupt moderation level */
  58enum {
  59        UPT1_IML_NONE           = 0, /* no interrupt moderation */
  60        UPT1_IML_HIGHEST        = 7, /* least intr generated */
  61        UPT1_IML_ADAPTIVE       = 8, /* adpative intr moderation */
  62};
  63/* values for UPT1_RSSConf.hashFunc */
  64enum {
  65        UPT1_RSS_HASH_TYPE_NONE      = 0x0,
  66        UPT1_RSS_HASH_TYPE_IPV4      = 0x01,
  67        UPT1_RSS_HASH_TYPE_TCP_IPV4  = 0x02,
  68        UPT1_RSS_HASH_TYPE_IPV6      = 0x04,
  69        UPT1_RSS_HASH_TYPE_TCP_IPV6  = 0x08,
  70};
  71
  72enum {
  73        UPT1_RSS_HASH_FUNC_NONE      = 0x0,
  74        UPT1_RSS_HASH_FUNC_TOEPLITZ  = 0x01,
  75};
  76
  77#define UPT1_RSS_MAX_KEY_SIZE        40
  78#define UPT1_RSS_MAX_IND_TABLE_SIZE  128
  79
  80struct UPT1_RSSConf {
  81        u16                     hashType;
  82        u16                     hashFunc;
  83        u16                     hashKeySize;
  84        u16                     indTableSize;
  85        u8                      hashKey[UPT1_RSS_MAX_KEY_SIZE];
  86        u8                      indTable[UPT1_RSS_MAX_IND_TABLE_SIZE];
  87};
  88
  89/* features */
  90enum {
  91        UPT1_F_RXCSUM           = cpu_to_le64(0x0001),   /* rx csum verification */
  92        UPT1_F_RSS              = cpu_to_le64(0x0002),
  93        UPT1_F_RXVLAN           = cpu_to_le64(0x0004),   /* VLAN tag stripping */
  94        UPT1_F_LRO              = cpu_to_le64(0x0008),
  95};
  96#endif
  97