diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-06 13:24:49 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-06 13:24:49 -0700 |
commit | 22eb5aa6c7940861f9603581665b9d9a1c60be30 (patch) | |
tree | 22890bcebae5647bcc1a29e7b544a1c5de2b1f8b /drivers/scsi/cxgb3i/cxgb3i_init.c | |
parent | d7ca6f8cdffa5765e486edb3dada9121fba8e6aa (diff) | |
parent | 015640edb1f346e0b2eda703587c4cd1c310ec1d (diff) | |
download | op-kernel-dev-22eb5aa6c7940861f9603581665b9d9a1c60be30.zip op-kernel-dev-22eb5aa6c7940861f9603581665b9d9a1c60be30.tar.gz |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (74 commits)
[SCSI] sg: fix q->queue_lock on scsi_error_handler path
[SCSI] replace __inline with inline
[SCSI] a2091: make 2 functions static
[SCSI] a3000: make 2 functions static
[SCSI] ses: #if 0 the unused ses_match_host()
[SCSI] use kmem_cache_zalloc instead of kmem_cache_alloc/memset
[SCSI] sg: fix iovec bugs introduced by the block layer conversion
[SCSI] qlogicpti: use request_firmware
[SCSI] advansys: use request_firmware
[SCSI] qla1280: use request_firmware
[SCSI] libiscsi: fix iscsi pool error path
[SCSI] cxgb3i: call ddp release function directly
[SCSI] cxgb3i: merge cxgb3i_ddp into cxgb3i module
[SCSI] cxgb3i: close all tcp connections upon chip reset
[SCSI] cxgb3i: re-read ddp settings information after chip reset
[SCSI] cxgb3i: re-initialize ddp settings after chip reset
[SCSI] cxgb3i: subscribe to error notification from cxgb3 driver
[SCSI] aacraid driver update
[SCSI] mptsas: remove unneeded check
[SCSI] config: Make need for SCSI_CDROM clearer
...
Diffstat (limited to 'drivers/scsi/cxgb3i/cxgb3i_init.c')
-rw-r--r-- | drivers/scsi/cxgb3i/cxgb3i_init.c | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/drivers/scsi/cxgb3i/cxgb3i_init.c b/drivers/scsi/cxgb3i/cxgb3i_init.c index 1ce9f24..042d9bc 100644 --- a/drivers/scsi/cxgb3i/cxgb3i_init.c +++ b/drivers/scsi/cxgb3i/cxgb3i_init.c @@ -12,8 +12,8 @@ #include "cxgb3i.h" #define DRV_MODULE_NAME "cxgb3i" -#define DRV_MODULE_VERSION "1.0.1" -#define DRV_MODULE_RELDATE "Jan. 2009" +#define DRV_MODULE_VERSION "1.0.2" +#define DRV_MODULE_RELDATE "Mar. 2009" static char version[] = "Chelsio S3xx iSCSI Driver " DRV_MODULE_NAME @@ -26,6 +26,7 @@ MODULE_VERSION(DRV_MODULE_VERSION); static void open_s3_dev(struct t3cdev *); static void close_s3_dev(struct t3cdev *); +static void s3_err_handler(struct t3cdev *tdev, u32 status, u32 error); static cxgb3_cpl_handler_func cxgb3i_cpl_handlers[NUM_CPL_CMDS]; static struct cxgb3_client t3c_client = { @@ -33,6 +34,7 @@ static struct cxgb3_client t3c_client = { .handlers = cxgb3i_cpl_handlers, .add = open_s3_dev, .remove = close_s3_dev, + .err_handler = s3_err_handler, }; /** @@ -48,8 +50,9 @@ static void open_s3_dev(struct t3cdev *t3dev) vers_printed = 1; } + cxgb3i_ddp_init(t3dev); cxgb3i_sdev_add(t3dev, &t3c_client); - cxgb3i_adapter_add(t3dev); + cxgb3i_adapter_open(t3dev); } /** @@ -58,8 +61,28 @@ static void open_s3_dev(struct t3cdev *t3dev) */ static void close_s3_dev(struct t3cdev *t3dev) { - cxgb3i_adapter_remove(t3dev); + cxgb3i_adapter_close(t3dev); cxgb3i_sdev_remove(t3dev); + cxgb3i_ddp_cleanup(t3dev); +} + +static void s3_err_handler(struct t3cdev *tdev, u32 status, u32 error) +{ + struct cxgb3i_adapter *snic = cxgb3i_adapter_find_by_tdev(tdev); + + cxgb3i_log_info("snic 0x%p, tdev 0x%p, status 0x%x, err 0x%x.\n", + snic, tdev, status, error); + if (!snic) + return; + + switch (status) { + case OFFLOAD_STATUS_DOWN: + snic->flags |= CXGB3I_ADAPTER_FLAG_RESET; + break; + case OFFLOAD_STATUS_UP: + snic->flags &= ~CXGB3I_ADAPTER_FLAG_RESET; + break; + } } /** |