|  | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | /* Copyright(c) 1999 - 2018 Intel Corporation. */ | 
|  |  | 
|  | #ifndef _IXGBE_FCOE_H | 
|  | #define _IXGBE_FCOE_H | 
|  |  | 
|  | #include <scsi/fc/fc_fs.h> | 
|  | #include <scsi/fc/fc_fcoe.h> | 
|  |  | 
|  | /* shift bits within STAT fo FCSTAT */ | 
|  | #define IXGBE_RXDADV_FCSTAT_SHIFT	4 | 
|  |  | 
|  | /* ddp user buffer */ | 
|  | #define IXGBE_BUFFCNT_MAX	256	/* 8 bits bufcnt */ | 
|  | #define IXGBE_FCPTR_ALIGN	16 | 
|  | #define IXGBE_FCPTR_MAX	(IXGBE_BUFFCNT_MAX * sizeof(dma_addr_t)) | 
|  | #define IXGBE_FCBUFF_4KB	0x0 | 
|  | #define IXGBE_FCBUFF_8KB	0x1 | 
|  | #define IXGBE_FCBUFF_16KB	0x2 | 
|  | #define IXGBE_FCBUFF_64KB	0x3 | 
|  | #define IXGBE_FCBUFF_MAX	65536	/* 64KB max */ | 
|  | #define IXGBE_FCBUFF_MIN	4096	/* 4KB min */ | 
|  | #define IXGBE_FCOE_DDP_MAX	512	/* 9 bits xid */ | 
|  | #define IXGBE_FCOE_DDP_MAX_X550	2048	/* 11 bits xid */ | 
|  |  | 
|  | /* Default traffic class to use for FCoE */ | 
|  | #define IXGBE_FCOE_DEFTC	3 | 
|  |  | 
|  | /* fcerr */ | 
|  | #define IXGBE_FCERR_BADCRC       0x00100000 | 
|  |  | 
|  | /* FCoE DDP for target mode */ | 
|  | #define __IXGBE_FCOE_TARGET	1 | 
|  |  | 
|  | struct ixgbe_fcoe_ddp { | 
|  | int len; | 
|  | u32 err; | 
|  | unsigned int sgc; | 
|  | struct scatterlist *sgl; | 
|  | dma_addr_t udp; | 
|  | u64 *udl; | 
|  | struct dma_pool *pool; | 
|  | }; | 
|  |  | 
|  | /* per cpu variables */ | 
|  | struct ixgbe_fcoe_ddp_pool { | 
|  | struct dma_pool *pool; | 
|  | u64 noddp; | 
|  | u64 noddp_ext_buff; | 
|  | }; | 
|  |  | 
|  | struct ixgbe_fcoe { | 
|  | struct ixgbe_fcoe_ddp_pool __percpu *ddp_pool; | 
|  | atomic_t refcnt; | 
|  | spinlock_t lock; | 
|  | struct ixgbe_fcoe_ddp ddp[IXGBE_FCOE_DDP_MAX_X550]; | 
|  | void *extra_ddp_buffer; | 
|  | dma_addr_t extra_ddp_buffer_dma; | 
|  | unsigned long mode; | 
|  | u8 up; | 
|  | }; | 
|  |  | 
|  | #endif /* _IXGBE_FCOE_H */ |