Home | History | Annotate | Download | only in igb
      1 /*
      2  * CDDL HEADER START
      3  *
      4  * Copyright(c) 2007-2009 Intel Corporation. All rights reserved.
      5  * The contents of this file are subject to the terms of the
      6  * Common Development and Distribution License (the "License").
      7  * You may not use this file except in compliance with the License.
      8  *
      9  * You can obtain a copy of the license at:
     10  *	http://www.opensolaris.org/os/licensing.
     11  * See the License for the specific language governing permissions
     12  * and limitations under the License.
     13  *
     14  * When using or redistributing this file, you may do so under the
     15  * License only. No other modification of this header is permitted.
     16  *
     17  * If applicable, add the following below this CDDL HEADER, with the
     18  * fields enclosed by brackets "[]" replaced with your own identifying
     19  * information: Portions Copyright [yyyy] [name of copyright owner]
     20  *
     21  * CDDL HEADER END
     22  */
     23 
     24 /*
     25  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     26  * Use is subject to license terms of the CDDL.
     27  */
     28 
     29 /* IntelVersion: 1.77 v2-9-8_2009-6-12 */
     30 
     31 #ifndef _IGB_82575_H
     32 #define	_IGB_82575_H
     33 
     34 #ifdef __cplusplus
     35 extern "C" {
     36 #endif
     37 
     38 #define	ID_LED_DEFAULT_82575_SERDES	((ID_LED_DEF1_DEF2 << 12) | \
     39 					(ID_LED_DEF1_DEF2 <<  8) | \
     40 					(ID_LED_DEF1_DEF2 <<  4) | \
     41 					(ID_LED_OFF1_ON2))
     42 
     43 /*
     44  * Receive Address Register Count
     45  * Number of high/low register pairs in the RAR.  The RAR (Receive Address
     46  * Registers) holds the directed and multicast addresses that we monitor.
     47  * These entries are also used for MAC-based filtering.
     48  */
     49 /*
     50  * For 82576, there are an additional set of RARs that begin at an offset
     51  * separate from the first set of RARs.
     52  */
     53 #define	E1000_RAR_ENTRIES_82575		16
     54 #define	E1000_RAR_ENTRIES_82576		24
     55 
     56 #ifdef E1000_BIT_FIELDS
     57 struct e1000_adv_data_desc {
     58 	u64 buffer_addr;	/* Address of the descriptor's data buffer */
     59 	union {
     60 		u32 data;
     61 		struct {
     62 			u32 datalen	:16;	/* Data buffer length */
     63 			u32 rsvd	:4;
     64 			u32 dtyp	:4;	/* Descriptor type */
     65 			u32 dcmd	:8;	/* Descriptor command */
     66 		} config;
     67 	} lower;
     68 	union {
     69 		u32 data;
     70 		struct {
     71 			u32 status	:4;	/* Descriptor status */
     72 			u32 idx		:4;
     73 			u32 popts	:6;	/* Packet Options */
     74 			u32 paylen	:18;	/* Payload length */
     75 		} options;
     76 	} upper;
     77 };
     78 
     79 #define	E1000_TXD_DTYP_ADV_C	0x2	/* Advanced Context Descriptor */
     80 #define	E1000_TXD_DTYP_ADV_D	0x3	/* Advanced Data Descriptor */
     81 #define	E1000_ADV_TXD_CMD_DEXT	0x20	/* Descriptor extension (0 = legacy) */
     82 #define	E1000_ADV_TUCMD_IPV4	0x2	/* IP Packet Type: 1=IPv4 */
     83 #define	E1000_ADV_TUCMD_IPV6	0x0	/* IP Packet Type: 0=IPv6 */
     84 #define	E1000_ADV_TUCMD_L4T_UDP	0x0	/* L4 Packet TYPE of UDP */
     85 #define	E1000_ADV_TUCMD_L4T_TCP	0x4	/* L4 Packet TYPE of TCP */
     86 #define	E1000_ADV_TUCMD_MKRREQ	0x10	/* Indicates markers are required */
     87 #define	E1000_ADV_DCMD_EOP	0x1	/* End of Packet */
     88 #define	E1000_ADV_DCMD_IFCS	0x2	/* Insert FCS (Ethernet CRC) */
     89 #define	E1000_ADV_DCMD_RS	0x8	/* Report Status */
     90 #define	E1000_ADV_DCMD_VLE	0x40	/* Add VLAN tag */
     91 #define	E1000_ADV_DCMD_TSE	0x80	/* TCP Seg enable */
     92 /* Extended Device Control */
     93 #define	E1000_CTRL_EXT_NSICR	0x00000001 /* Disable Intr Clear all on read */
     94 
     95 struct e1000_adv_context_desc {
     96 	union {
     97 		u32 ip_config;
     98 		struct {
     99 			u32 iplen	:9;
    100 			u32 maclen	:7;
    101 			u32 vlan_tag	:16;
    102 		} fields;
    103 	} ip_setup;
    104 	u32 seq_num;
    105 	union {
    106 		u64 l4_config;
    107 		struct {
    108 			u32 mkrloc	:9;
    109 			u32 tucmd	:11;
    110 			u32 dtyp	:4;
    111 			u32 adv		:8;
    112 			u32 rsvd	:4;
    113 			u32 idx		:4;
    114 			u32 l4len	:8;
    115 			u32 mss		:16;
    116 		} fields;
    117 	} l4_setup;
    118 };
    119 #endif
    120 
    121 /* SRRCTL bit definitions */
    122 #define	E1000_SRRCTL_BSIZEPKT_SHIFT			10 /* Shift _right_ */
    123 #define	E1000_SRRCTL_BSIZEHDRSIZE_MASK			0x00000F00
    124 #define	E1000_SRRCTL_BSIZEHDRSIZE_SHIFT			2 /* Shift _left_ */
    125 #define	E1000_SRRCTL_DESCTYPE_LEGACY			0x00000000
    126 #define	E1000_SRRCTL_DESCTYPE_ADV_ONEBUF		0x02000000
    127 #define	E1000_SRRCTL_DESCTYPE_HDR_SPLIT			0x04000000
    128 #define	E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS		0x0A000000
    129 #define	E1000_SRRCTL_DESCTYPE_HDR_REPLICATION		0x06000000
    130 #define	E1000_SRRCTL_DESCTYPE_HDR_REPLICATION_LARGE_PKT	0x08000000
    131 #define	E1000_SRRCTL_DESCTYPE_MASK			0x0E000000
    132 #define	E1000_SRRCTL_DROP_EN				0x80000000
    133 
    134 #define	E1000_SRRCTL_BSIZEPKT_MASK	0x0000007F
    135 #define	E1000_SRRCTL_BSIZEHDR_MASK	0x00003F00
    136 
    137 #define	E1000_TX_HEAD_WB_ENABLE		0x1
    138 #define	E1000_TX_SEQNUM_WB_ENABLE	0x2
    139 
    140 #define	E1000_MRQC_ENABLE_RSS_4Q		0x00000002
    141 #define	E1000_MRQC_ENABLE_VMDQ			0x00000003
    142 #define	E1000_MRQC_ENABLE_VMDQ_RSS_2Q		0x80000000
    143 #define	E1000_MRQC_RSS_FIELD_IPV4_UDP		0x00400000
    144 #define	E1000_MRQC_RSS_FIELD_IPV6_UDP		0x00800000
    145 #define	E1000_MRQC_RSS_FIELD_IPV6_UDP_EX	0x01000000
    146 
    147 #define	E1000_VMRCTL_MIRROR_PORT_SHIFT		8
    148 #define	E1000_VMRCTL_MIRROR_DSTPORT_MASK (7 << E1000_VMRCTL_MIRROR_PORT_SHIFT)
    149 #define	E1000_VMRCTL_POOL_MIRROR_ENABLE		(1 << 0)
    150 #define	E1000_VMRCTL_UPLINK_MIRROR_ENABLE	(1 << 1)
    151 #define	E1000_VMRCTL_DOWNLINK_MIRROR_ENABLE	(1 << 2)
    152 
    153 #define	E1000_EICR_TX_QUEUE ( \
    154     E1000_EICR_TX_QUEUE0 |    \
    155     E1000_EICR_TX_QUEUE1 |    \
    156     E1000_EICR_TX_QUEUE2 |    \
    157     E1000_EICR_TX_QUEUE3)
    158 
    159 #define	E1000_EICR_RX_QUEUE ( \
    160     E1000_EICR_RX_QUEUE0 |    \
    161     E1000_EICR_RX_QUEUE1 |    \
    162     E1000_EICR_RX_QUEUE2 |    \
    163     E1000_EICR_RX_QUEUE3)
    164 
    165 #define	E1000_EIMS_RX_QUEUE E1000_EICR_RX_QUEUE
    166 #define	E1000_EIMS_TX_QUEUE E1000_EICR_TX_QUEUE
    167 
    168 #define	EIMS_ENABLE_MASK ( \
    169     E1000_EIMS_RX_QUEUE  | \
    170     E1000_EIMS_TX_QUEUE  | \
    171     E1000_EIMS_TCP_TIMER | \
    172     E1000_EIMS_OTHER)
    173 
    174 /* Immediate Interrupt Rx (A.K.A. Low Latency Interrupt) */
    175 #define	E1000_IMIR_PORT_IM_EN	0x00010000	/* TCP port enable */
    176 #define	E1000_IMIR_PORT_BP	0x00020000	/* TCP port check bypass */
    177 #define	E1000_IMIREXT_SIZE_BP	0x00001000	/* Packet size bypass */
    178 #define	E1000_IMIREXT_CTRL_URG	0x00002000	/* Check URG bit in header */
    179 #define	E1000_IMIREXT_CTRL_ACK	0x00004000	/* Check ACK bit in header */
    180 #define	E1000_IMIREXT_CTRL_PSH	0x00008000	/* Check PSH bit in header */
    181 #define	E1000_IMIREXT_CTRL_RST	0x00010000	/* Check RST bit in header */
    182 #define	E1000_IMIREXT_CTRL_SYN	0x00020000	/* Check SYN bit in header */
    183 #define	E1000_IMIREXT_CTRL_FIN	0x00040000	/* Check FIN bit in header */
    184 #define	E1000_IMIREXT_CTRL_BP	0x00080000	/* Bypass check of ctrl bits */
    185 
    186 /* Receive Descriptor - Advanced */
    187 union e1000_adv_rx_desc {
    188 	struct {
    189 		u64 pkt_addr;	/* Packet buffer address */
    190 		u64 hdr_addr;	/* Header buffer address */
    191 	} read;
    192 	struct {
    193 		struct {
    194 			union {
    195 				u32 data;
    196 				struct {
    197 					/* RSS type, Packet type */
    198 					u16 pkt_info;
    199 					/* Split Header, header buffer length */
    200 					u16 hdr_info;
    201 				} hs_rss;
    202 			} lo_dword;
    203 			union {
    204 				u32 rss;	/* RSS Hash */
    205 				struct {
    206 					u16 ip_id;	/* IP id */
    207 					u16 csum;	/* Packet Checksum */
    208 				} csum_ip;
    209 			} hi_dword;
    210 		} lower;
    211 		struct {
    212 			u32 status_error;	/* ext status/error */
    213 			u16 length;		/* Packet length */
    214 			u16 vlan;		/* VLAN tag */
    215 		} upper;
    216 	} wb;		/* writeback */
    217 };
    218 
    219 #define	E1000_RXDADV_RSSTYPE_MASK	0x0000000F
    220 #define	E1000_RXDADV_RSSTYPE_SHIFT	12
    221 #define	E1000_RXDADV_HDRBUFLEN_MASK	0x7FE0
    222 #define	E1000_RXDADV_HDRBUFLEN_SHIFT	5
    223 #define	E1000_RXDADV_SPLITHEADER_EN	0x00001000
    224 #define	E1000_RXDADV_SPH		0x8000
    225 #define	E1000_RXDADV_ERR_HBO		0x00800000
    226 
    227 /* RSS Hash results */
    228 #define	E1000_RXDADV_RSSTYPE_NONE	0x00000000
    229 #define	E1000_RXDADV_RSSTYPE_IPV4_TCP	0x00000001
    230 #define	E1000_RXDADV_RSSTYPE_IPV4	0x00000002
    231 #define	E1000_RXDADV_RSSTYPE_IPV6_TCP	0x00000003
    232 #define	E1000_RXDADV_RSSTYPE_IPV6_EX	0x00000004
    233 #define	E1000_RXDADV_RSSTYPE_IPV6	0x00000005
    234 #define	E1000_RXDADV_RSSTYPE_IPV6_TCP_EX 0x00000006
    235 #define	E1000_RXDADV_RSSTYPE_IPV4_UDP	0x00000007
    236 #define	E1000_RXDADV_RSSTYPE_IPV6_UDP	0x00000008
    237 #define	E1000_RXDADV_RSSTYPE_IPV6_UDP_EX 0x00000009
    238 
    239 /* RSS Packet Types as indicated in the receive descriptor */
    240 #define	E1000_RXDADV_PKTTYPE_NONE	0x00000000
    241 #define	E1000_RXDADV_PKTTYPE_IPV4	0x00000010 /* IPV4 hdr present */
    242 #define	E1000_RXDADV_PKTTYPE_IPV4_EX	0x00000020 /* IPV4 hdr + extensions */
    243 #define	E1000_RXDADV_PKTTYPE_IPV6	0x00000040 /* IPV6 hdr present */
    244 #define	E1000_RXDADV_PKTTYPE_IPV6_EX	0x00000080 /* IPV6 hdr + extensions */
    245 #define	E1000_RXDADV_PKTTYPE_TCP	0x00000100 /* TCP hdr present */
    246 #define	E1000_RXDADV_PKTTYPE_UDP	0x00000200 /* UDP hdr present */
    247 #define	E1000_RXDADV_PKTTYPE_SCTP	0x00000400 /* SCTP hdr present */
    248 #define	E1000_RXDADV_PKTTYPE_NFS	0x00000800 /* NFS hdr present */
    249 
    250 #define	E1000_RXDADV_PKTTYPE_IPSEC_ESP	0x00001000 /* IPSec ESP */
    251 #define	E1000_RXDADV_PKTTYPE_IPSEC_AH	0x00002000 /* IPSec AH */
    252 #define	E1000_RXDADV_PKTTYPE_LINKSEC	0x00004000 /* LinkSec Encap */
    253 #define	E1000_RXDADV_PKTTYPE_ETQF	0x00008000 /* PKTTYPE is ETQF index */
    254 #define	E1000_RXDADV_PKTTYPE_ETQF_MASK	0x00000070 /* ETQF has 8 indices */
    255 #define	E1000_RXDADV_PKTTYPE_ETQF_SHIFT	4 /* Right-shift 4 bits */
    256 
    257 /* LinkSec results */
    258 /* Security Processing bit Indication */
    259 #define	E1000_RXDADV_LNKSEC_STATUS_SECP		0x00020000
    260 #define	E1000_RXDADV_LNKSEC_ERROR_BIT_MASK	0x18000000
    261 #define	E1000_RXDADV_LNKSEC_ERROR_NO_SA_MATCH	0x08000000
    262 #define	E1000_RXDADV_LNKSEC_ERROR_REPLAY_ERROR	0x10000000
    263 #define	E1000_RXDADV_LNKSEC_ERROR_BAD_SIG	0x18000000
    264 
    265 #define	E1000_RXDADV_IPSEC_STATUS_SECP		0x00020000
    266 #define	E1000_RXDADV_IPSEC_ERROR_BIT_MASK	0x18000000
    267 #define	E1000_RXDADV_IPSEC_ERROR_INVALID_PROTOCOL	0x08000000
    268 #define	E1000_RXDADV_IPSEC_ERROR_INVALID_LENGTH		0x10000000
    269 #define	E1000_RXDADV_IPSEC_ERROR_AUTHENTICATION_FAILED	0x18000000
    270 
    271 /* Transmit Descriptor - Advanced */
    272 union e1000_adv_tx_desc {
    273 	struct {
    274 		u64 buffer_addr;	/* Address of descriptor's data buf */
    275 		u32 cmd_type_len;
    276 		u32 olinfo_status;
    277 	} read;
    278 	struct {
    279 		u64 rsvd;	/* Reserved */
    280 		u32 nxtseq_seed;
    281 		u32 status;
    282 	} wb;
    283 };
    284 
    285 /* Adv Transmit Descriptor Config Masks */
    286 #define	E1000_ADVTXD_DTYP_CTXT	0x00200000 /* Advanced Context Descriptor */
    287 #define	E1000_ADVTXD_DTYP_DATA	0x00300000 /* Advanced Data Descriptor */
    288 #define	E1000_ADVTXD_DCMD_EOP	0x01000000 /* End of Packet */
    289 #define	E1000_ADVTXD_DCMD_IFCS	0x02000000 /* Insert FCS (Ethernet CRC) */
    290 #define	E1000_ADVTXD_DCMD_RS	0x08000000 /* Report Status */
    291 #define	E1000_ADVTXD_DCMD_DDTYP_ISCSI 0x10000000 /* DDP hdr type or iSCSI */
    292 #define	E1000_ADVTXD_DCMD_DEXT	0x20000000 /* Descriptor extension (1=Adv) */
    293 #define	E1000_ADVTXD_DCMD_VLE	0x40000000 /* VLAN pkt enable */
    294 #define	E1000_ADVTXD_DCMD_TSE	0x80000000 /* TCP Seg enable */
    295 #define	E1000_ADVTXD_MAC_LINKSEC 0x00040000 /* Apply LinkSec on packet */
    296 #define	E1000_ADVTXD_MAC_TSTAMP	0x00080000 /* IEEE1588 Timestamp packet */
    297 #define	E1000_ADVTXD_STAT_SN_CRC 0x00000002 /* NXTSEQ/SEED present in WB */
    298 #define	E1000_ADVTXD_IDX_SHIFT	4	/* Adv desc Index shift */
    299 #define	E1000_ADVTXD_POPTS_ISCO_1ST	0x00000000 /* 1st TSO of iSCSI PDU */
    300 #define	E1000_ADVTXD_POPTS_ISCO_MDL	0x00000800 /* Middle TSO of iSCSI PDU */
    301 #define	E1000_ADVTXD_POPTS_ISCO_LAST	0x00001000 /* Last TSO of iSCSI PDU */
    302 /* 1st&Last TSO-full iSCSI PDU */
    303 #define	E1000_ADVTXD_POPTS_ISCO_FULL	0x00001800
    304 #define	E1000_ADVTXD_POPTS_IPSEC	0x00000400 /* IPSec offload request */
    305 #define	E1000_ADVTXD_PAYLEN_SHIFT	14	/* Adv desc PAYLEN shift */
    306 
    307 /* Context descriptors */
    308 struct e1000_adv_tx_context_desc {
    309 	u32 vlan_macip_lens;
    310 	u32 seqnum_seed;
    311 	u32 type_tucmd_mlhl;
    312 	u32 mss_l4len_idx;
    313 };
    314 
    315 #define	E1000_ADVTXD_MACLEN_SHIFT	9 /* Adv ctxt desc mac len shift */
    316 #define	E1000_ADVTXD_VLAN_SHIFT		16 /* Adv ctxt vlan tag shift */
    317 #define	E1000_ADVTXD_TUCMD_IPV4		0x00000400 /* IP Packet Type: 1=IPv4 */
    318 #define	E1000_ADVTXD_TUCMD_IPV6		0x00000000 /* IP Packet Type: 0=IPv6 */
    319 #define	E1000_ADVTXD_TUCMD_L4T_UDP	0x00000000 /* L4 Packet TYPE of UDP */
    320 #define	E1000_ADVTXD_TUCMD_L4T_TCP	0x00000800 /* L4 Packet TYPE of TCP */
    321 #define	E1000_ADVTXD_TUCMD_L4T_SCTP	0x00001000 /* L4 Packet TYPE of SCTP */
    322 #define	E1000_ADVTXD_TUCMD_IPSEC_TYPE_ESP	0x00002000 /* IPSec Type ESP */
    323 /* IPSec Encrypt Enable for ESP */
    324 #define	E1000_ADVTXD_TUCMD_IPSEC_ENCRYPT_EN	0x00004000
    325 /* Req requires Markers and CRC */
    326 #define	E1000_ADVTXD_TUCMD_MKRREQ	0x00002000
    327 #define	E1000_ADVTXD_L4LEN_SHIFT	8	/* Adv ctxt L4LEN shift */
    328 #define	E1000_ADVTXD_MSS_SHIFT		16	/* Adv ctxt MSS shift */
    329 /* Adv ctxt IPSec SA IDX mask */
    330 #define	E1000_ADVTXD_IPSEC_SA_INDEX_MASK	0x000000FF
    331 /* Adv ctxt IPSec ESP len mask */
    332 #define	E1000_ADVTXD_IPSEC_ESP_LEN_MASK		0x000000FF
    333 
    334 /* Additional Transmit Descriptor Control definitions */
    335 /* Enable specific Tx Queue */
    336 #define	E1000_TXDCTL_QUEUE_ENABLE	0x02000000
    337 /* Tx Desc. write-back flushing */
    338 #define	E1000_TXDCTL_SWFLSH		0x04000000
    339 /* Tx Queue Arbitration Priority 0=low, 1=high */
    340 #define	E1000_TXDCTL_PRIORITY		0x08000000
    341 
    342 /* Additional Receive Descriptor Control definitions */
    343 /* Enable specific Rx Queue */
    344 #define	E1000_RXDCTL_QUEUE_ENABLE	0x02000000
    345 /* Rx Desc. write-back flushing */
    346 #define	E1000_RXDCTL_SWFLSH		0x04000000
    347 
    348 /* Direct Cache Access (DCA) definitions */
    349 #define	E1000_DCA_CTRL_DCA_ENABLE	0x00000000	/* DCA Enable */
    350 #define	E1000_DCA_CTRL_DCA_DISABLE	0x00000001	/* DCA Disable */
    351 
    352 #define	E1000_DCA_CTRL_DCA_MODE_CB1	0x00	/* DCA Mode CB1 */
    353 #define	E1000_DCA_CTRL_DCA_MODE_CB2	0x02	/* DCA Mode CB2 */
    354 
    355 #define	E1000_DCA_RXCTRL_CPUID_MASK 0x0000001F	/* Rx CPUID Mask */
    356 #define	E1000_DCA_RXCTRL_DESC_DCA_EN (1 << 5) /* DCA Rx Desc enable */
    357 #define	E1000_DCA_RXCTRL_HEAD_DCA_EN (1 << 6) /* DCA Rx Desc header enable */
    358 #define	E1000_DCA_RXCTRL_DATA_DCA_EN (1 << 7) /* DCA Rx Desc payload enable */
    359 
    360 #define	E1000_DCA_TXCTRL_CPUID_MASK 0x0000001F	/* Tx CPUID Mask */
    361 #define	E1000_DCA_TXCTRL_DESC_DCA_EN (1 << 5)	/* DCA Tx Desc enable */
    362 #define	E1000_DCA_TXCTRL_TX_WB_RO_EN (1 << 11)	/* Tx Desc writeback RO bit */
    363 
    364 #define	E1000_DCA_TXCTRL_CPUID_MASK_82576 0xFF000000 /* Tx CPUID Mask */
    365 #define	E1000_DCA_RXCTRL_CPUID_MASK_82576 0xFF000000 /* Rx CPUID Mask */
    366 #define	E1000_DCA_TXCTRL_CPUID_SHIFT_82576 24 /* Tx CPUID */
    367 #define	E1000_DCA_RXCTRL_CPUID_SHIFT_82576 24 /* Rx CPUID */
    368 
    369 /* Additional interrupt register bit definitions */
    370 #define	E1000_ICR_LSECPNS	0x00000020	/* PN threshold - server */
    371 #define	E1000_IMS_LSECPNS	E1000_ICR_LSECPNS /* PN threshold - server */
    372 #define	E1000_ICS_LSECPNS	E1000_ICR_LSECPNS /* PN threshold - server */
    373 
    374 /* ETQF register bit definitions */
    375 #define	E1000_ETQF_FILTER_ENABLE	(1 << 26)
    376 #define	E1000_ETQF_IMM_INT		(1 << 29)
    377 #define	E1000_ETQF_1588			(1 << 30)
    378 #define	E1000_ETQF_QUEUE_ENABLE		(1 << 31)
    379 /*
    380  * ETQF filter list: one static filter per filter consumer. This is
    381  *		to avoid filter collisions later. Add new filters
    382  *		here!!
    383  *
    384  * Current filters:
    385  *    EAPOL 802.1x (0x888e): Filter 0
    386  */
    387 #define	E1000_ETQF_FILTER_EAPOL		0
    388 
    389 #define	E1000_NVM_APME_82575		0x0400
    390 #define	MAX_NUM_VFS			8
    391 
    392 /* Per VF MAC spoof control */
    393 #define	E1000_DTXSWC_MAC_SPOOF_MASK	0x000000FF
    394 /* Per VF VLAN spoof control */
    395 #define	E1000_DTXSWC_VLAN_SPOOF_MASK	0x0000FF00
    396 #define	E1000_DTXSWC_LLE_MASK		0x00FF0000 /* Per VF Local LB enables */
    397 #define	E1000_DTXSWC_VLAN_SPOOF_SHIFT	8
    398 #define	E1000_DTXSWC_LLE_SHIFT		16
    399 #define	E1000_DTXSWC_VMDQ_LOOPBACK_EN	((u32)1 << 31) /* global VF LB enable */
    400 
    401 /* Easy defines for setting default pool, would normally be left a zero */
    402 #define	E1000_VT_CTL_DEFAULT_POOL_SHIFT	7
    403 #define	E1000_VT_CTL_DEFAULT_POOL_MASK	(0x7 << E1000_VT_CTL_DEFAULT_POOL_SHIFT)
    404 
    405 /* Other useful VMD_CTL register defines */
    406 #define	E1000_VT_CTL_IGNORE_MAC		(1 << 28)
    407 #define	E1000_VT_CTL_DISABLE_DEF_POOL	(1 << 29)
    408 #define	E1000_VT_CTL_VM_REPL_EN		(1 << 30)
    409 
    410 /* Per VM Offload register setup */
    411 #define	E1000_VMOLR_RLPML_MASK	0x00003FFF /* Long Packet Maximum Length mask */
    412 #define	E1000_VMOLR_LPE		0x00010000 /* Accept Long packet */
    413 #define	E1000_VMOLR_RSSE	0x00020000 /* Enable RSS */
    414 #define	E1000_VMOLR_AUPE	0x01000000 /* Accept untagged packets */
    415 #define	E1000_VMOLR_ROMPE	0x02000000 /* Accept overflow multicast */
    416 #define	E1000_VMOLR_ROPE	0x04000000 /* Accept overflow unicast */
    417 #define	E1000_VMOLR_BAM		0x08000000 /* Accept Broadcast packets */
    418 #define	E1000_VMOLR_MPME	0x10000000 /* Multicast promiscuous mode */
    419 #define	E1000_VMOLR_STRVLAN	0x40000000 /* Vlan stripping enable */
    420 #define	E1000_VMOLR_STRCRC	0x80000000 /* CRC stripping enable */
    421 
    422 #define	E1000_VLVF_ARRAY_SIZE		32
    423 #define	E1000_VLVF_VLANID_MASK		0x00000FFF
    424 #define	E1000_VLVF_POOLSEL_SHIFT	12
    425 #define	E1000_VLVF_POOLSEL_MASK		(0xFF << E1000_VLVF_POOLSEL_SHIFT)
    426 #define	E1000_VLVF_LVLAN		0x00100000
    427 #define	E1000_VLVF_VLANID_ENABLE	0x80000000
    428 
    429 #define	E1000_VF_INIT_TIMEOUT	200 /* Number of retries to clear RSTI */
    430 
    431 #define	E1000_IOVCTL		0x05BBC
    432 #define	E1000_IOVCTL_REUSE_VFQ	0x00000001
    433 
    434 #define	E1000_RPLOLR_STRVLAN	0x40000000
    435 
    436 #define	ALL_QUEUES		0xFFFF
    437 
    438 void e1000_vmdq_set_loopback_pf(struct e1000_hw *hw, bool enable);
    439 void e1000_vmdq_set_replication_pf(struct e1000_hw *hw, bool enable);
    440 
    441 #ifdef __cplusplus
    442 }
    443 #endif
    444 
    445 #endif	/* _IGB_82575_H */
    446