diff options
Diffstat (limited to 'include/scsi')
| -rw-r--r-- | include/scsi/fc/fc_fip.h | 21 | ||||
| -rw-r--r-- | include/scsi/libfc.h | 1 | ||||
| -rw-r--r-- | include/scsi/libfcoe.h | 25 | ||||
| -rw-r--r-- | include/scsi/scsi_device.h | 1 | ||||
| -rw-r--r-- | include/scsi/scsi_host.h | 6 | 
5 files changed, 36 insertions, 18 deletions
| diff --git a/include/scsi/fc/fc_fip.h b/include/scsi/fc/fc_fip.h index ae25d4ab2548..9710254fd98c 100644 --- a/include/scsi/fc/fc_fip.h +++ b/include/scsi/fc/fc_fip.h @@ -22,7 +22,7 @@  /*   * This version is based on:   * http://www.t11.org/ftp/t11/pub/fc/bb-5/08-543v1.pdf - * and T11 FC-BB-6 10-019v4.pdf (June 2010 VN2VN proposal) + * and T11 FC-BB-6 13-091v5.pdf (December 2013 VN2VN proposal)   */  #define FIP_DEF_PRI	128	/* default selection priority */ @@ -109,8 +109,9 @@ enum fip_reset_subcode {   * Subcodes for FIP_OP_VLAN.   */  enum fip_vlan_subcode { -	FIP_SC_VL_REQ =	1,		/* request */ -	FIP_SC_VL_REP =	2,		/* reply */ +	FIP_SC_VL_REQ =	1,		/* vlan request */ +	FIP_SC_VL_NOTE = 2,		/* vlan notification */ +	FIP_SC_VL_VN2VN_NOTE = 3,	/* VN2VN vlan notification */  };  /* @@ -130,6 +131,8 @@ enum fip_vn2vn_subcode {  enum fip_flag {  	FIP_FL_FPMA =	0x8000,		/* supports FPMA fabric-provided MACs */  	FIP_FL_SPMA =	0x4000,		/* supports SPMA server-provided MACs */ +	FIP_FL_FCF =	0x0020,		/* originated from a controlling FCF */ +	FIP_FL_FDF =	0x0010,		/* originated from an FDF */  	FIP_FL_REC_OR_P2P = 0x0008,	/* configured addr or point-to-point */  	FIP_FL_AVAIL =	0x0004,		/* available for FLOGI/ELP */  	FIP_FL_SOL =	0x0002,		/* this is a solicited message */ @@ -161,7 +164,9 @@ enum fip_desc_type {  	FIP_DT_VLAN =	14,		/* vlan number */  	FIP_DT_FC4F =	15,		/* FC-4 features */  	FIP_DT_LIMIT,			/* max defined desc_type + 1 */ -	FIP_DT_VENDOR_BASE = 128,	/* first vendor-specific desc_type */ +	FIP_DT_NON_CRITICAL = 128,	/* First non-critical descriptor */ +	FIP_DT_CLR_VLINKS = 128,	/* Clear virtual links reason code */ +	FIP_DT_VENDOR_BASE = 241,	/* first vendor-specific desc_type */  };  /* @@ -259,6 +264,14 @@ enum fip_fka_flags {  /* FIP_DT_FKA flags */  /* + * FIP_DT_VLAN descriptor + */ +struct fip_vlan_desc { +	struct fip_desc fd_desc; +	__be16		fd_vlan; /* Note: highest 4 bytes are unused */ +} __attribute__((packed)); + +/*   * FIP_DT_FC4F - FC-4 features.   */  struct fip_fc4_feat { diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h index 93d14daf0994..7428a53257ca 100644 --- a/include/scsi/libfc.h +++ b/include/scsi/libfc.h @@ -878,6 +878,7 @@ struct fc_lport {  	struct libfc_function_template tt;  	u8			       link_up;  	u8			       qfull; +	u16			       vlan;  	enum fc_lport_state	       state;  	unsigned long		       boot_time;  	struct fc_host_statistics      host_stats; diff --git a/include/scsi/libfcoe.h b/include/scsi/libfcoe.h index de7e3ee60f0c..722d3264d3bf 100644 --- a/include/scsi/libfcoe.h +++ b/include/scsi/libfcoe.h @@ -78,10 +78,12 @@ enum fip_state {   * The mode is the state that is to be entered after link up.   * It must not change after fcoe_ctlr_init() sets it.   */ -#define FIP_MODE_AUTO		FIP_ST_AUTO -#define FIP_MODE_NON_FIP	FIP_ST_NON_FIP -#define FIP_MODE_FABRIC		FIP_ST_ENABLED -#define FIP_MODE_VN2VN		FIP_ST_VNMP_START +enum fip_mode { +	FIP_MODE_AUTO = FIP_ST_AUTO, +	FIP_MODE_NON_FIP, +	FIP_MODE_FABRIC, +	FIP_MODE_VN2VN, +};  /**   * struct fcoe_ctlr - FCoE Controller and FIP state @@ -108,8 +110,10 @@ enum fip_state {   * @flogi_req_send: send of FLOGI requested   * @flogi_count:   number of FLOGI attempts in AUTO mode.   * @map_dest:	   use the FC_MAP mode for destination MAC addresses. + * @fip_resp:	   start FIP VLAN discovery responder   * @spma:	   supports SPMA server-provided MACs mode   * @probe_tries:   number of FC_IDs probed + * @priority:      DCBx FCoE APP priority   * @dest_addr:	   MAC address of the selected FC forwarder.   * @ctl_src_addr:  the native MAC address of our local port.   * @send:	   LLD-supplied function to handle sending FIP Ethernet frames @@ -124,7 +128,7 @@ enum fip_state {   */  struct fcoe_ctlr {  	enum fip_state state; -	enum fip_state mode; +	enum fip_mode mode;  	struct fc_lport *lp;  	struct fcoe_fcf *sel_fcf;  	struct list_head fcfs; @@ -147,7 +151,8 @@ struct fcoe_ctlr {  	u16 flogi_oxid;  	u8 flogi_req_send;  	u8 flogi_count; -	u8 map_dest; +	bool map_dest; +	bool fip_resp;  	u8 spma;  	u8 probe_tries;  	u8 priority; @@ -311,7 +316,7 @@ struct fcoe_transport {  	struct list_head list;  	bool (*match) (struct net_device *device);  	int (*alloc) (struct net_device *device); -	int (*create) (struct net_device *device, enum fip_state fip_mode); +	int (*create) (struct net_device *device, enum fip_mode fip_mode);  	int (*destroy) (struct net_device *device);  	int (*enable) (struct net_device *device);  	int (*disable) (struct net_device *device); @@ -319,14 +324,16 @@ struct fcoe_transport {  /**   * struct fcoe_percpu_s - The context for FCoE receive thread(s) - * @thread:	    The thread context + * @kthread:	    The thread context (used by bnx2fc) + * @work:	    The work item (used by fcoe)   * @fcoe_rx_list:   The queue of pending packets to process   * @page:	    The memory page for calculating frame trailer CRCs   * @crc_eof_offset: The offset into the CRC page pointing to available   *		    memory for a new trailer   */  struct fcoe_percpu_s { -	struct task_struct *thread; +	struct task_struct *kthread; +	struct work_struct work;  	struct sk_buff_head fcoe_rx_list;  	struct page *crc_eof_page;  	int crc_eof_offset; diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index a6c346df290d..8a9563144890 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h @@ -94,7 +94,6 @@ struct scsi_device {  	spinlock_t list_lock;  	struct list_head cmd_list;	/* queue of in use SCSI Command structures */  	struct list_head starved_entry; -	struct scsi_cmnd *current_cmnd;	/* currently active command */  	unsigned short queue_depth;	/* How deep of a queue we want */  	unsigned short max_queue_depth;	/* max queue depth */  	unsigned short last_queue_full_depth; /* These two are used by */ diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index 76e9d278c334..0dee7afa93d6 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h @@ -495,9 +495,6 @@ struct scsi_host_template {  	 */  	unsigned int cmd_size;  	struct scsi_host_cmd_pool *cmd_pool; - -	/* temporary flag to disable blk-mq I/O path */ -	bool disable_blk_mq;  };  /* @@ -778,7 +775,8 @@ extern bool scsi_use_blk_mq;  static inline bool shost_use_blk_mq(struct Scsi_Host *shost)  { -	return shost->use_blk_mq; +	return scsi_use_blk_mq; +  }  extern int scsi_queue_work(struct Scsi_Host *, struct work_struct *); |