1dee1ad47SJeff Kirsher /*******************************************************************************
2dee1ad47SJeff Kirsher 
3dee1ad47SJeff Kirsher   Intel 10 Gigabit PCI Express Linux driver
494971820SDon Skidmore   Copyright(c) 1999 - 2012 Intel Corporation.
5dee1ad47SJeff Kirsher 
6dee1ad47SJeff Kirsher   This program is free software; you can redistribute it and/or modify it
7dee1ad47SJeff Kirsher   under the terms and conditions of the GNU General Public License,
8dee1ad47SJeff Kirsher   version 2, as published by the Free Software Foundation.
9dee1ad47SJeff Kirsher 
10dee1ad47SJeff Kirsher   This program is distributed in the hope it will be useful, but WITHOUT
11dee1ad47SJeff Kirsher   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12dee1ad47SJeff Kirsher   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13dee1ad47SJeff Kirsher   more details.
14dee1ad47SJeff Kirsher 
15dee1ad47SJeff Kirsher   You should have received a copy of the GNU General Public License along with
16dee1ad47SJeff Kirsher   this program; if not, write to the Free Software Foundation, Inc.,
17dee1ad47SJeff Kirsher   51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18dee1ad47SJeff Kirsher 
19dee1ad47SJeff Kirsher   The full GNU General Public License is included in this distribution in
20dee1ad47SJeff Kirsher   the file called "COPYING".
21dee1ad47SJeff Kirsher 
22dee1ad47SJeff Kirsher   Contact Information:
23dee1ad47SJeff Kirsher   e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
24dee1ad47SJeff Kirsher   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25dee1ad47SJeff Kirsher 
26dee1ad47SJeff Kirsher *******************************************************************************/
27dee1ad47SJeff Kirsher 
28dee1ad47SJeff Kirsher #ifndef _IXGBE_FCOE_H
29dee1ad47SJeff Kirsher #define _IXGBE_FCOE_H
30dee1ad47SJeff Kirsher 
31dee1ad47SJeff Kirsher #include <scsi/fc/fc_fs.h>
32dee1ad47SJeff Kirsher #include <scsi/fc/fc_fcoe.h>
33dee1ad47SJeff Kirsher 
34dee1ad47SJeff Kirsher /* shift bits within STAT fo FCSTAT */
35dee1ad47SJeff Kirsher #define IXGBE_RXDADV_FCSTAT_SHIFT	4
36dee1ad47SJeff Kirsher 
37dee1ad47SJeff Kirsher /* ddp user buffer */
38dee1ad47SJeff Kirsher #define IXGBE_BUFFCNT_MAX	256	/* 8 bits bufcnt */
39dee1ad47SJeff Kirsher #define IXGBE_FCPTR_ALIGN	16
40dee1ad47SJeff Kirsher #define IXGBE_FCPTR_MAX	(IXGBE_BUFFCNT_MAX * sizeof(dma_addr_t))
41dee1ad47SJeff Kirsher #define IXGBE_FCBUFF_4KB	0x0
42dee1ad47SJeff Kirsher #define IXGBE_FCBUFF_8KB	0x1
43dee1ad47SJeff Kirsher #define IXGBE_FCBUFF_16KB	0x2
44dee1ad47SJeff Kirsher #define IXGBE_FCBUFF_64KB	0x3
45dee1ad47SJeff Kirsher #define IXGBE_FCBUFF_MAX	65536	/* 64KB max */
46dee1ad47SJeff Kirsher #define IXGBE_FCBUFF_MIN	4096	/* 4KB min */
47dee1ad47SJeff Kirsher #define IXGBE_FCOE_DDP_MAX	512	/* 9 bits xid */
48dee1ad47SJeff Kirsher 
49dee1ad47SJeff Kirsher /* Default traffic class to use for FCoE */
50dee1ad47SJeff Kirsher #define IXGBE_FCOE_DEFTC	3
51dee1ad47SJeff Kirsher 
52dee1ad47SJeff Kirsher /* fcerr */
53dee1ad47SJeff Kirsher #define IXGBE_FCERR_BADCRC       0x00100000
54dee1ad47SJeff Kirsher 
55dee1ad47SJeff Kirsher /* FCoE DDP for target mode */
56dee1ad47SJeff Kirsher #define __IXGBE_FCOE_TARGET	1
57dee1ad47SJeff Kirsher 
58dee1ad47SJeff Kirsher struct ixgbe_fcoe_ddp {
59dee1ad47SJeff Kirsher 	int len;
60dee1ad47SJeff Kirsher 	u32 err;
61dee1ad47SJeff Kirsher 	unsigned int sgc;
62dee1ad47SJeff Kirsher 	struct scatterlist *sgl;
63dee1ad47SJeff Kirsher 	dma_addr_t udp;
64dee1ad47SJeff Kirsher 	u64 *udl;
651bf91cdcSAlexander Duyck 	struct dma_pool *pool;
66dee1ad47SJeff Kirsher };
67dee1ad47SJeff Kirsher 
68dee1ad47SJeff Kirsher struct ixgbe_fcoe {
691bf91cdcSAlexander Duyck 	struct dma_pool **pool;
70dee1ad47SJeff Kirsher 	atomic_t refcnt;
71dee1ad47SJeff Kirsher 	spinlock_t lock;
72dee1ad47SJeff Kirsher 	struct ixgbe_fcoe_ddp ddp[IXGBE_FCOE_DDP_MAX];
73dee1ad47SJeff Kirsher 	unsigned char *extra_ddp_buffer;
74dee1ad47SJeff Kirsher 	dma_addr_t extra_ddp_buffer_dma;
75dee1ad47SJeff Kirsher 	unsigned long mode;
767b859ebcSAmir Hanania 	u64 __percpu *pcpu_noddp;
777b859ebcSAmir Hanania 	u64 __percpu *pcpu_noddp_ext_buff;
78dee1ad47SJeff Kirsher #ifdef CONFIG_IXGBE_DCB
79dee1ad47SJeff Kirsher 	u8 up;
80dee1ad47SJeff Kirsher #endif
81dee1ad47SJeff Kirsher };
82dee1ad47SJeff Kirsher 
83dee1ad47SJeff Kirsher #endif /* _IXGBE_FCOE_H */
84