/* * * Copyright (c) 2011, Microsoft Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, see <http://www.gnu.org/licenses/>. * * Authors: * Haiyang Zhang <haiyangz@microsoft.com> * Hank Janssen <hjanssen@microsoft.com> * K. Y. Srinivasan <kys@microsoft.com> * */#ifndef _HYPERV_NET_H#define _HYPERV_NET_H#include<linux/list.h>#include<linux/hyperv.h>#include<linux/rndis.h>/* RSS related */#define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203 /* query only */#define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204 /* query and set */#define NDIS_OBJECT_TYPE_RSS_CAPABILITIES 0x88#define NDIS_OBJECT_TYPE_RSS_PARAMETERS 0x89#define NDIS_OBJECT_TYPE_OFFLOAD 0xa7#define NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2 2#define NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 2structndis_obj_header{u8type;u8rev;u16size;}__packed;/* ndis_recv_scale_cap/cap_flag */#define NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS 0x01000000#define NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR 0x02000000#define NDIS_RSS_CAPS_CLASSIFICATION_AT_DPC 0x04000000#define NDIS_RSS_CAPS_USING_MSI_X 0x08000000#define NDIS_RSS_CAPS_RSS_AVAILABLE_ON_PORTS 0x10000000#define NDIS_RSS_CAPS_SUPPORTS_MSI_X 0x20000000#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV4 0x00000100#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6 0x00000200#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX 0x00000400structndis_recv_scale_cap{/* NDIS_RECEIVE_SCALE_CAPABILITIES */structndis_obj_headerhdr;u32cap_flag;u32num_int_msg;u32num_recv_que;u16num_indirect_tabent;}__packed;/* ndis_recv_scale_param flags */#define NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED 0x0001#define NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED 0x0002#define NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED 0x0004#define NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED 0x0008#define NDIS_RSS_PARAM_FLAG_DISABLE_RSS 0x0010/* Hash info bits */#define NDIS_HASH_FUNC_TOEPLITZ 0x00000001#define NDIS_HASH_IPV4 0x00000100#define NDIS_HASH_TCP_IPV4 0x00000200#define NDIS_HASH_IPV6 0x00000400#define NDIS_HASH_IPV6_EX 0x00000800#define NDIS_HASH_TCP_IPV6 0x00001000#define NDIS_HASH_TCP_IPV6_EX 0x00002000#define NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_2 (128 * 4)