aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-11-13 22:25:38 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-11-13 22:25:38 -0500
commit0d522ee7499e4abe7189b2f1728e838959b8ddde (patch)
tree094f60e8bdb0083b58a43a0decbca59443a66e39 /include
parent5eea9be8b2478dbc2f9fb1cd6228a90e8dba804e (diff)
parent323f6226a816f0b01514d25fba5529e0e68636c3 (diff)
Merge tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull first round of SCSI updates from James Bottomley: "This patch set is driver updates for qla4xxx, scsi_debug, pm80xx, fcoe/libfc, eas2r, lpfc, be2iscsi and megaraid_sas plus some assorted bug fixes and cleanups" * tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (106 commits) [SCSI] scsi_error: Escalate to LUN reset if abort fails [SCSI] Add 'eh_deadline' to limit SCSI EH runtime [SCSI] remove check for 'resetting' [SCSI] dc395: Move 'last_reset' into internal host structure [SCSI] tmscsim: Move 'last_reset' into host structure [SCSI] advansys: Remove 'last_reset' references [SCSI] dpt_i2o: return SCSI_MLQUEUE_HOST_BUSY when in reset [SCSI] dpt_i2o: Remove DPTI_STATE_IOCTL [SCSI] megaraid_sas: Fix synchronization problem between sysPD IO path and AEN path [SCSI] lpfc: Fix typo on NULL assignment [SCSI] scsi_dh_alua: ALUA handler attach should succeed while TPG is transitioning [SCSI] scsi_dh_alua: ALUA check sense should retry device internal reset unit attention [SCSI] esas2r: Cleanup snprinf formatting of firmware version [SCSI] esas2r: Remove superfluous mask of pcie_cap_reg [SCSI] esas2r: Fixes for big-endian platforms [SCSI] esas2r: Directly call kernel functions for atomic bit operations [SCSI] lpfc 8.3.43: Update lpfc version to driver version 8.3.43 [SCSI] lpfc 8.3.43: Fixed not processing task management IOCB response status [SCSI] lpfc 8.3.43: Fixed spinlock hang. [SCSI] lpfc 8.3.43: Fixed invalid Total_Data_Placed value received for els and ct command responses ...
Diffstat (limited to 'include')
-rw-r--r--include/scsi/fc/fc_fc2.h2
-rw-r--r--include/scsi/iscsi_if.h17
-rw-r--r--include/scsi/libfc.h9
-rw-r--r--include/scsi/libfcoe.h7
-rw-r--r--include/scsi/scsi_host.h5
-rw-r--r--include/scsi/scsi_transport_iscsi.h1
6 files changed, 38 insertions, 3 deletions
diff --git a/include/scsi/fc/fc_fc2.h b/include/scsi/fc/fc_fc2.h
index f87777d0d5bd..0b2671431305 100644
--- a/include/scsi/fc/fc_fc2.h
+++ b/include/scsi/fc/fc_fc2.h
@@ -104,7 +104,7 @@ struct fc_esb {
104 * esb_e_stat - flags from FC-FS-2 T11/1619-D Rev 0.90. 104 * esb_e_stat - flags from FC-FS-2 T11/1619-D Rev 0.90.
105 */ 105 */
106#define ESB_ST_RESP (1 << 31) /* responder to exchange */ 106#define ESB_ST_RESP (1 << 31) /* responder to exchange */
107#define ESB_ST_SEQ_INIT (1 << 30) /* port holds sequence initiaive */ 107#define ESB_ST_SEQ_INIT (1 << 30) /* port holds sequence initiative */
108#define ESB_ST_COMPLETE (1 << 29) /* exchange is complete */ 108#define ESB_ST_COMPLETE (1 << 29) /* exchange is complete */
109#define ESB_ST_ABNORMAL (1 << 28) /* abnormal ending condition */ 109#define ESB_ST_ABNORMAL (1 << 28) /* abnormal ending condition */
110#define ESB_ST_REC_QUAL (1 << 26) /* recovery qualifier active */ 110#define ESB_ST_REC_QUAL (1 << 26) /* recovery qualifier active */
diff --git a/include/scsi/iscsi_if.h b/include/scsi/iscsi_if.h
index 13d81c5c4ebf..5d6ed6cf12cc 100644
--- a/include/scsi/iscsi_if.h
+++ b/include/scsi/iscsi_if.h
@@ -69,6 +69,7 @@ enum iscsi_uevent_e {
69 ISCSI_UEVENT_LOGIN_FLASHNODE = UEVENT_BASE + 28, 69 ISCSI_UEVENT_LOGIN_FLASHNODE = UEVENT_BASE + 28,
70 ISCSI_UEVENT_LOGOUT_FLASHNODE = UEVENT_BASE + 29, 70 ISCSI_UEVENT_LOGOUT_FLASHNODE = UEVENT_BASE + 29,
71 ISCSI_UEVENT_LOGOUT_FLASHNODE_SID = UEVENT_BASE + 30, 71 ISCSI_UEVENT_LOGOUT_FLASHNODE_SID = UEVENT_BASE + 30,
72 ISCSI_UEVENT_SET_CHAP = UEVENT_BASE + 31,
72 73
73 /* up events */ 74 /* up events */
74 ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1, 75 ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1,
@@ -309,8 +310,16 @@ enum iscsi_param_type {
309 ISCSI_HOST_PARAM, /* iscsi_host_param */ 310 ISCSI_HOST_PARAM, /* iscsi_host_param */
310 ISCSI_NET_PARAM, /* iscsi_net_param */ 311 ISCSI_NET_PARAM, /* iscsi_net_param */
311 ISCSI_FLASHNODE_PARAM, /* iscsi_flashnode_param */ 312 ISCSI_FLASHNODE_PARAM, /* iscsi_flashnode_param */
313 ISCSI_CHAP_PARAM, /* iscsi_chap_param */
312}; 314};
313 315
316/* structure for minimalist usecase */
317struct iscsi_param_info {
318 uint32_t len; /* Actual length of the param value */
319 uint16_t param; /* iscsi param */
320 uint8_t value[0]; /* length sized value follows */
321} __packed;
322
314struct iscsi_iface_param_info { 323struct iscsi_iface_param_info {
315 uint32_t iface_num; /* iface number, 0 - n */ 324 uint32_t iface_num; /* iface number, 0 - n */
316 uint32_t len; /* Actual length of the param */ 325 uint32_t len; /* Actual length of the param */
@@ -739,6 +748,14 @@ enum chap_type_e {
739 CHAP_TYPE_IN, 748 CHAP_TYPE_IN,
740}; 749};
741 750
751enum iscsi_chap_param {
752 ISCSI_CHAP_PARAM_INDEX,
753 ISCSI_CHAP_PARAM_CHAP_TYPE,
754 ISCSI_CHAP_PARAM_USERNAME,
755 ISCSI_CHAP_PARAM_PASSWORD,
756 ISCSI_CHAP_PARAM_PASSWORD_LEN
757};
758
742#define ISCSI_CHAP_AUTH_NAME_MAX_LEN 256 759#define ISCSI_CHAP_AUTH_NAME_MAX_LEN 256
743#define ISCSI_CHAP_AUTH_SECRET_MAX_LEN 256 760#define ISCSI_CHAP_AUTH_SECRET_MAX_LEN 256
744struct iscsi_chap_rec { 761struct iscsi_chap_rec {
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
index e1379b4e8faf..52beadf9a29b 100644
--- a/include/scsi/libfc.h
+++ b/include/scsi/libfc.h
@@ -410,6 +410,12 @@ struct fc_seq {
410 * @fh_type: The frame type 410 * @fh_type: The frame type
411 * @class: The class of service 411 * @class: The class of service
412 * @seq: The sequence in use on this exchange 412 * @seq: The sequence in use on this exchange
413 * @resp_active: Number of tasks that are concurrently executing @resp().
414 * @resp_task: If @resp_active > 0, either the task executing @resp(), the
415 * task that has been interrupted to execute the soft-IRQ
416 * executing @resp() or NULL if more than one task is executing
417 * @resp concurrently.
418 * @resp_wq: Waitqueue for the tasks waiting on @resp_active.
413 * @resp: Callback for responses on this exchange 419 * @resp: Callback for responses on this exchange
414 * @destructor: Called when destroying the exchange 420 * @destructor: Called when destroying the exchange
415 * @arg: Passed as a void pointer to the resp() callback 421 * @arg: Passed as a void pointer to the resp() callback
@@ -441,6 +447,9 @@ struct fc_exch {
441 u32 r_a_tov; 447 u32 r_a_tov;
442 u32 f_ctl; 448 u32 f_ctl;
443 struct fc_seq seq; 449 struct fc_seq seq;
450 int resp_active;
451 struct task_struct *resp_task;
452 wait_queue_head_t resp_wq;
444 void (*resp)(struct fc_seq *, struct fc_frame *, void *); 453 void (*resp)(struct fc_seq *, struct fc_frame *, void *);
445 void *arg; 454 void *arg;
446 void (*destructor)(struct fc_seq *, void *); 455 void (*destructor)(struct fc_seq *, void *);
diff --git a/include/scsi/libfcoe.h b/include/scsi/libfcoe.h
index 4427393115ea..de7e3ee60f0c 100644
--- a/include/scsi/libfcoe.h
+++ b/include/scsi/libfcoe.h
@@ -90,6 +90,7 @@ enum fip_state {
90 * @lp: &fc_lport: libfc local port. 90 * @lp: &fc_lport: libfc local port.
91 * @sel_fcf: currently selected FCF, or NULL. 91 * @sel_fcf: currently selected FCF, or NULL.
92 * @fcfs: list of discovered FCFs. 92 * @fcfs: list of discovered FCFs.
93 * @cdev: (Optional) pointer to sysfs fcoe_ctlr_device.
93 * @fcf_count: number of discovered FCF entries. 94 * @fcf_count: number of discovered FCF entries.
94 * @sol_time: time when a multicast solicitation was last sent. 95 * @sol_time: time when a multicast solicitation was last sent.
95 * @sel_time: time after which to select an FCF. 96 * @sel_time: time after which to select an FCF.
@@ -127,6 +128,7 @@ struct fcoe_ctlr {
127 struct fc_lport *lp; 128 struct fc_lport *lp;
128 struct fcoe_fcf *sel_fcf; 129 struct fcoe_fcf *sel_fcf;
129 struct list_head fcfs; 130 struct list_head fcfs;
131 struct fcoe_ctlr_device *cdev;
130 u16 fcf_count; 132 u16 fcf_count;
131 unsigned long sol_time; 133 unsigned long sol_time;
132 unsigned long sel_time; 134 unsigned long sel_time;
@@ -168,8 +170,11 @@ static inline void *fcoe_ctlr_priv(const struct fcoe_ctlr *ctlr)
168 return (void *)(ctlr + 1); 170 return (void *)(ctlr + 1);
169} 171}
170 172
173/*
174 * This assumes that the fcoe_ctlr (x) is allocated with the fcoe_ctlr_device.
175 */
171#define fcoe_ctlr_to_ctlr_dev(x) \ 176#define fcoe_ctlr_to_ctlr_dev(x) \
172 (struct fcoe_ctlr_device *)(((struct fcoe_ctlr_device *)(x)) - 1) 177 (x)->cdev
173 178
174/** 179/**
175 * struct fcoe_fcf - Fibre-Channel Forwarder 180 * struct fcoe_fcf - Fibre-Channel Forwarder
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h
index 755243572219..546084964d55 100644
--- a/include/scsi/scsi_host.h
+++ b/include/scsi/scsi_host.h
@@ -598,9 +598,12 @@ struct Scsi_Host {
598 unsigned int host_eh_scheduled; /* EH scheduled without command */ 598 unsigned int host_eh_scheduled; /* EH scheduled without command */
599 599
600 unsigned int host_no; /* Used for IOCTL_GET_IDLUN, /proc/scsi et al. */ 600 unsigned int host_no; /* Used for IOCTL_GET_IDLUN, /proc/scsi et al. */
601 int resetting; /* if set, it means that last_reset is a valid value */ 601
602 /* next two fields are used to bound the time spent in error handling */
603 int eh_deadline;
602 unsigned long last_reset; 604 unsigned long last_reset;
603 605
606
604 /* 607 /*
605 * These three parameters can be used to allow for wide scsi, 608 * These three parameters can be used to allow for wide scsi,
606 * and for host adapters that support multiple busses 609 * and for host adapters that support multiple busses
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h
index d0f1602985e7..fe7c8f3e93f8 100644
--- a/include/scsi/scsi_transport_iscsi.h
+++ b/include/scsi/scsi_transport_iscsi.h
@@ -152,6 +152,7 @@ struct iscsi_transport {
152 int (*get_chap) (struct Scsi_Host *shost, uint16_t chap_tbl_idx, 152 int (*get_chap) (struct Scsi_Host *shost, uint16_t chap_tbl_idx,
153 uint32_t *num_entries, char *buf); 153 uint32_t *num_entries, char *buf);
154 int (*delete_chap) (struct Scsi_Host *shost, uint16_t chap_tbl_idx); 154 int (*delete_chap) (struct Scsi_Host *shost, uint16_t chap_tbl_idx);
155 int (*set_chap) (struct Scsi_Host *shost, void *data, int len);
155 int (*get_flashnode_param) (struct iscsi_bus_flash_session *fnode_sess, 156 int (*get_flashnode_param) (struct iscsi_bus_flash_session *fnode_sess,
156 int param, char *buf); 157 int param, char *buf);
157 int (*set_flashnode_param) (struct iscsi_bus_flash_session *fnode_sess, 158 int (*set_flashnode_param) (struct iscsi_bus_flash_session *fnode_sess,