diff options
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/block/dasd_3990_erp.c | 6 | ||||
-rw-r--r-- | drivers/s390/block/dasd_devmap.c | 2 | ||||
-rw-r--r-- | drivers/s390/block/dasd_eckd.c | 2 | ||||
-rw-r--r-- | drivers/s390/char/raw3270.c | 2 | ||||
-rw-r--r-- | drivers/s390/char/tape_char.c | 2 | ||||
-rw-r--r-- | drivers/s390/char/tty3270.c | 2 | ||||
-rw-r--r-- | drivers/s390/cio/device.c | 24 | ||||
-rw-r--r-- | drivers/s390/cio/device_fsm.c | 4 | ||||
-rw-r--r-- | drivers/s390/cio/qdio_main.c | 16 | ||||
-rw-r--r-- | drivers/s390/crypto/zcrypt_api.h | 2 | ||||
-rw-r--r-- | drivers/s390/net/claw.c | 2 | ||||
-rw-r--r-- | drivers/s390/net/ctcm_fsms.c | 2 | ||||
-rw-r--r-- | drivers/s390/net/lcs.c | 2 | ||||
-rw-r--r-- | drivers/s390/net/qeth_core_main.c | 2 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_fsf.c | 2 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_qdio.c | 2 |
16 files changed, 43 insertions, 31 deletions
diff --git a/drivers/s390/block/dasd_3990_erp.c b/drivers/s390/block/dasd_3990_erp.c index 1654a24817be..87a0cf160fe5 100644 --- a/drivers/s390/block/dasd_3990_erp.c +++ b/drivers/s390/block/dasd_3990_erp.c | |||
@@ -2207,7 +2207,7 @@ dasd_3990_erp_inspect_32(struct dasd_ccw_req * erp, char *sense) | |||
2207 | * DASD_3990_ERP_CONTROL_CHECK | 2207 | * DASD_3990_ERP_CONTROL_CHECK |
2208 | * | 2208 | * |
2209 | * DESCRIPTION | 2209 | * DESCRIPTION |
2210 | * Does a generic inspection if a control check occured and sets up | 2210 | * Does a generic inspection if a control check occurred and sets up |
2211 | * the related error recovery procedure | 2211 | * the related error recovery procedure |
2212 | * | 2212 | * |
2213 | * PARAMETER | 2213 | * PARAMETER |
@@ -2250,7 +2250,7 @@ dasd_3990_erp_inspect(struct dasd_ccw_req *erp) | |||
2250 | struct dasd_ccw_req *erp_new = NULL; | 2250 | struct dasd_ccw_req *erp_new = NULL; |
2251 | char *sense; | 2251 | char *sense; |
2252 | 2252 | ||
2253 | /* if this problem occured on an alias retry on base */ | 2253 | /* if this problem occurred on an alias retry on base */ |
2254 | erp_new = dasd_3990_erp_inspect_alias(erp); | 2254 | erp_new = dasd_3990_erp_inspect_alias(erp); |
2255 | if (erp_new) | 2255 | if (erp_new) |
2256 | return erp_new; | 2256 | return erp_new; |
@@ -2282,7 +2282,7 @@ dasd_3990_erp_inspect(struct dasd_ccw_req *erp) | |||
2282 | * DASD_3990_ERP_ADD_ERP | 2282 | * DASD_3990_ERP_ADD_ERP |
2283 | * | 2283 | * |
2284 | * DESCRIPTION | 2284 | * DESCRIPTION |
2285 | * This funtion adds an additional request block (ERP) to the head of | 2285 | * This function adds an additional request block (ERP) to the head of |
2286 | * the given cqr (or erp). | 2286 | * the given cqr (or erp). |
2287 | * For a command mode cqr the erp is initialized as an default erp | 2287 | * For a command mode cqr the erp is initialized as an default erp |
2288 | * (retry TIC). | 2288 | * (retry TIC). |
diff --git a/drivers/s390/block/dasd_devmap.c b/drivers/s390/block/dasd_devmap.c index cb6a67bc89ff..42e1bf35f689 100644 --- a/drivers/s390/block/dasd_devmap.c +++ b/drivers/s390/block/dasd_devmap.c | |||
@@ -302,7 +302,7 @@ dasd_parse_keyword( char *parsestring ) { | |||
302 | /* | 302 | /* |
303 | * Try to interprete the first element on the comma separated parse string | 303 | * Try to interprete the first element on the comma separated parse string |
304 | * as a device number or a range of devices. If the interpretation is | 304 | * as a device number or a range of devices. If the interpretation is |
305 | * successfull, create the matching dasd_devmap entries and return a pointer | 305 | * successful, create the matching dasd_devmap entries and return a pointer |
306 | * to the residual string. | 306 | * to the residual string. |
307 | * If interpretation fails or in case of an error, return an error code. | 307 | * If interpretation fails or in case of an error, return an error code. |
308 | */ | 308 | */ |
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index 459f2cbe80fc..db8005d9f2fd 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c | |||
@@ -2858,7 +2858,7 @@ static struct dasd_ccw_req *dasd_raw_build_cp(struct dasd_device *startdev, | |||
2858 | /* | 2858 | /* |
2859 | * struct PFX_eckd_data has up to 2 byte as extended parameter | 2859 | * struct PFX_eckd_data has up to 2 byte as extended parameter |
2860 | * this is needed for write full track and has to be mentioned | 2860 | * this is needed for write full track and has to be mentioned |
2861 | * seperately | 2861 | * separately |
2862 | * add 8 instead of 2 to keep 8 byte boundary | 2862 | * add 8 instead of 2 to keep 8 byte boundary |
2863 | */ | 2863 | */ |
2864 | pfx_datasize = sizeof(struct PFX_eckd_data) + 8; | 2864 | pfx_datasize = sizeof(struct PFX_eckd_data) + 8; |
diff --git a/drivers/s390/char/raw3270.c b/drivers/s390/char/raw3270.c index 4c023761946f..e21a5c39ef20 100644 --- a/drivers/s390/char/raw3270.c +++ b/drivers/s390/char/raw3270.c | |||
@@ -604,7 +604,7 @@ __raw3270_size_device(struct raw3270 *rp) | |||
604 | /* | 604 | /* |
605 | * To determine the size of the 3270 device we need to do: | 605 | * To determine the size of the 3270 device we need to do: |
606 | * 1) send a 'read partition' data stream to the device | 606 | * 1) send a 'read partition' data stream to the device |
607 | * 2) wait for the attn interrupt that preceeds the query reply | 607 | * 2) wait for the attn interrupt that precedes the query reply |
608 | * 3) do a read modified to get the query reply | 608 | * 3) do a read modified to get the query reply |
609 | * To make things worse we have to cope with intervention | 609 | * To make things worse we have to cope with intervention |
610 | * required (3270 device switched to 'stand-by') and command | 610 | * required (3270 device switched to 'stand-by') and command |
diff --git a/drivers/s390/char/tape_char.c b/drivers/s390/char/tape_char.c index e090a307fdee..87cd0ab242de 100644 --- a/drivers/s390/char/tape_char.c +++ b/drivers/s390/char/tape_char.c | |||
@@ -139,7 +139,7 @@ tapechar_read(struct file *filp, char __user *data, size_t count, loff_t *ppos) | |||
139 | /* | 139 | /* |
140 | * If the tape isn't terminated yet, do it now. And since we then | 140 | * If the tape isn't terminated yet, do it now. And since we then |
141 | * are at the end of the tape there wouldn't be anything to read | 141 | * are at the end of the tape there wouldn't be anything to read |
142 | * anyways. So we return immediatly. | 142 | * anyways. So we return immediately. |
143 | */ | 143 | */ |
144 | if(device->required_tapemarks) { | 144 | if(device->required_tapemarks) { |
145 | return tape_std_terminate_write(device); | 145 | return tape_std_terminate_write(device); |
diff --git a/drivers/s390/char/tty3270.c b/drivers/s390/char/tty3270.c index d33554df2b06..2db1482b406e 100644 --- a/drivers/s390/char/tty3270.c +++ b/drivers/s390/char/tty3270.c | |||
@@ -328,7 +328,7 @@ tty3270_write_callback(struct raw3270_request *rq, void *data) | |||
328 | 328 | ||
329 | tp = (struct tty3270 *) rq->view; | 329 | tp = (struct tty3270 *) rq->view; |
330 | if (rq->rc != 0) { | 330 | if (rq->rc != 0) { |
331 | /* Write wasn't successfull. Refresh all. */ | 331 | /* Write wasn't successful. Refresh all. */ |
332 | tp->update_flags = TTY_UPDATE_ALL; | 332 | tp->update_flags = TTY_UPDATE_ALL; |
333 | tty3270_set_timer(tp, 1); | 333 | tty3270_set_timer(tp, 1); |
334 | } | 334 | } |
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index df14c51f6532..8e04c00cf0ad 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c | |||
@@ -541,15 +541,24 @@ static ssize_t online_store (struct device *dev, struct device_attribute *attr, | |||
541 | int force, ret; | 541 | int force, ret; |
542 | unsigned long i; | 542 | unsigned long i; |
543 | 543 | ||
544 | if (!dev_fsm_final_state(cdev) && | 544 | /* Prevent conflict between multiple on-/offline processing requests. */ |
545 | cdev->private->state != DEV_STATE_DISCONNECTED) | ||
546 | return -EAGAIN; | ||
547 | if (atomic_cmpxchg(&cdev->private->onoff, 0, 1) != 0) | 545 | if (atomic_cmpxchg(&cdev->private->onoff, 0, 1) != 0) |
548 | return -EAGAIN; | 546 | return -EAGAIN; |
547 | /* Prevent conflict between internal I/Os and on-/offline processing. */ | ||
548 | if (!dev_fsm_final_state(cdev) && | ||
549 | cdev->private->state != DEV_STATE_DISCONNECTED) { | ||
550 | ret = -EAGAIN; | ||
551 | goto out_onoff; | ||
552 | } | ||
553 | /* Prevent conflict between pending work and on-/offline processing.*/ | ||
554 | if (work_pending(&cdev->private->todo_work)) { | ||
555 | ret = -EAGAIN; | ||
556 | goto out_onoff; | ||
557 | } | ||
549 | 558 | ||
550 | if (cdev->drv && !try_module_get(cdev->drv->driver.owner)) { | 559 | if (cdev->drv && !try_module_get(cdev->drv->driver.owner)) { |
551 | atomic_set(&cdev->private->onoff, 0); | 560 | ret = -EINVAL; |
552 | return -EINVAL; | 561 | goto out_onoff; |
553 | } | 562 | } |
554 | if (!strncmp(buf, "force\n", count)) { | 563 | if (!strncmp(buf, "force\n", count)) { |
555 | force = 1; | 564 | force = 1; |
@@ -574,6 +583,7 @@ static ssize_t online_store (struct device *dev, struct device_attribute *attr, | |||
574 | out: | 583 | out: |
575 | if (cdev->drv) | 584 | if (cdev->drv) |
576 | module_put(cdev->drv->driver.owner); | 585 | module_put(cdev->drv->driver.owner); |
586 | out_onoff: | ||
577 | atomic_set(&cdev->private->onoff, 0); | 587 | atomic_set(&cdev->private->onoff, 0); |
578 | return (ret < 0) ? ret : count; | 588 | return (ret < 0) ? ret : count; |
579 | } | 589 | } |
@@ -1311,10 +1321,12 @@ static int purge_fn(struct device *dev, void *data) | |||
1311 | 1321 | ||
1312 | spin_lock_irq(cdev->ccwlock); | 1322 | spin_lock_irq(cdev->ccwlock); |
1313 | if (is_blacklisted(id->ssid, id->devno) && | 1323 | if (is_blacklisted(id->ssid, id->devno) && |
1314 | (cdev->private->state == DEV_STATE_OFFLINE)) { | 1324 | (cdev->private->state == DEV_STATE_OFFLINE) && |
1325 | (atomic_cmpxchg(&cdev->private->onoff, 0, 1) == 0)) { | ||
1315 | CIO_MSG_EVENT(3, "ccw: purging 0.%x.%04x\n", id->ssid, | 1326 | CIO_MSG_EVENT(3, "ccw: purging 0.%x.%04x\n", id->ssid, |
1316 | id->devno); | 1327 | id->devno); |
1317 | ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); | 1328 | ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); |
1329 | atomic_set(&cdev->private->onoff, 0); | ||
1318 | } | 1330 | } |
1319 | spin_unlock_irq(cdev->ccwlock); | 1331 | spin_unlock_irq(cdev->ccwlock); |
1320 | /* Abort loop in case of pending signal. */ | 1332 | /* Abort loop in case of pending signal. */ |
diff --git a/drivers/s390/cio/device_fsm.c b/drivers/s390/cio/device_fsm.c index a845695ac314..6084103672b5 100644 --- a/drivers/s390/cio/device_fsm.c +++ b/drivers/s390/cio/device_fsm.c | |||
@@ -318,7 +318,7 @@ ccw_device_sense_id_done(struct ccw_device *cdev, int err) | |||
318 | 318 | ||
319 | /** | 319 | /** |
320 | * ccw_device_notify() - inform the device's driver about an event | 320 | * ccw_device_notify() - inform the device's driver about an event |
321 | * @cdev: device for which an event occured | 321 | * @cdev: device for which an event occurred |
322 | * @event: event that occurred | 322 | * @event: event that occurred |
323 | * | 323 | * |
324 | * Returns: | 324 | * Returns: |
@@ -688,7 +688,7 @@ ccw_device_online_verify(struct ccw_device *cdev, enum dev_event dev_event) | |||
688 | (scsw_stctl(&cdev->private->irb.scsw) & SCSW_STCTL_STATUS_PEND)) { | 688 | (scsw_stctl(&cdev->private->irb.scsw) & SCSW_STCTL_STATUS_PEND)) { |
689 | /* | 689 | /* |
690 | * No final status yet or final status not yet delivered | 690 | * No final status yet or final status not yet delivered |
691 | * to the device driver. Can't do path verfication now, | 691 | * to the device driver. Can't do path verification now, |
692 | * delay until final status was delivered. | 692 | * delay until final status was delivered. |
693 | */ | 693 | */ |
694 | cdev->private->flags.doverify = 1; | 694 | cdev->private->flags.doverify = 1; |
diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c index 479c665e9e7c..c532ba929ccd 100644 --- a/drivers/s390/cio/qdio_main.c +++ b/drivers/s390/cio/qdio_main.c | |||
@@ -1649,26 +1649,26 @@ static int __init init_QDIO(void) | |||
1649 | { | 1649 | { |
1650 | int rc; | 1650 | int rc; |
1651 | 1651 | ||
1652 | rc = qdio_setup_init(); | 1652 | rc = qdio_debug_init(); |
1653 | if (rc) | 1653 | if (rc) |
1654 | return rc; | 1654 | return rc; |
1655 | rc = qdio_setup_init(); | ||
1656 | if (rc) | ||
1657 | goto out_debug; | ||
1655 | rc = tiqdio_allocate_memory(); | 1658 | rc = tiqdio_allocate_memory(); |
1656 | if (rc) | 1659 | if (rc) |
1657 | goto out_cache; | 1660 | goto out_cache; |
1658 | rc = qdio_debug_init(); | ||
1659 | if (rc) | ||
1660 | goto out_ti; | ||
1661 | rc = tiqdio_register_thinints(); | 1661 | rc = tiqdio_register_thinints(); |
1662 | if (rc) | 1662 | if (rc) |
1663 | goto out_debug; | 1663 | goto out_ti; |
1664 | return 0; | 1664 | return 0; |
1665 | 1665 | ||
1666 | out_debug: | ||
1667 | qdio_debug_exit(); | ||
1668 | out_ti: | 1666 | out_ti: |
1669 | tiqdio_free_memory(); | 1667 | tiqdio_free_memory(); |
1670 | out_cache: | 1668 | out_cache: |
1671 | qdio_setup_exit(); | 1669 | qdio_setup_exit(); |
1670 | out_debug: | ||
1671 | qdio_debug_exit(); | ||
1672 | return rc; | 1672 | return rc; |
1673 | } | 1673 | } |
1674 | 1674 | ||
@@ -1676,8 +1676,8 @@ static void __exit exit_QDIO(void) | |||
1676 | { | 1676 | { |
1677 | tiqdio_unregister_thinints(); | 1677 | tiqdio_unregister_thinints(); |
1678 | tiqdio_free_memory(); | 1678 | tiqdio_free_memory(); |
1679 | qdio_debug_exit(); | ||
1680 | qdio_setup_exit(); | 1679 | qdio_setup_exit(); |
1680 | qdio_debug_exit(); | ||
1681 | } | 1681 | } |
1682 | 1682 | ||
1683 | module_init(init_QDIO); | 1683 | module_init(init_QDIO); |
diff --git a/drivers/s390/crypto/zcrypt_api.h b/drivers/s390/crypto/zcrypt_api.h index 88ebd114735b..9688f3985b07 100644 --- a/drivers/s390/crypto/zcrypt_api.h +++ b/drivers/s390/crypto/zcrypt_api.h | |||
@@ -76,7 +76,7 @@ struct ica_z90_status { | |||
76 | 76 | ||
77 | /** | 77 | /** |
78 | * Large random numbers are pulled in 4096 byte chunks from the crypto cards | 78 | * Large random numbers are pulled in 4096 byte chunks from the crypto cards |
79 | * and stored in a page. Be carefull when increasing this buffer due to size | 79 | * and stored in a page. Be careful when increasing this buffer due to size |
80 | * limitations for AP requests. | 80 | * limitations for AP requests. |
81 | */ | 81 | */ |
82 | #define ZCRYPT_RNG_BUFFER_SIZE 4096 | 82 | #define ZCRYPT_RNG_BUFFER_SIZE 4096 |
diff --git a/drivers/s390/net/claw.c b/drivers/s390/net/claw.c index 9feb62febb3d..da8aa75bb20b 100644 --- a/drivers/s390/net/claw.c +++ b/drivers/s390/net/claw.c | |||
@@ -779,7 +779,7 @@ claw_irq_handler(struct ccw_device *cdev, | |||
779 | case CLAW_START_WRITE: | 779 | case CLAW_START_WRITE: |
780 | if (p_ch->irb->scsw.cmd.dstat & DEV_STAT_UNIT_CHECK) { | 780 | if (p_ch->irb->scsw.cmd.dstat & DEV_STAT_UNIT_CHECK) { |
781 | dev_info(&cdev->dev, | 781 | dev_info(&cdev->dev, |
782 | "%s: Unit Check Occured in " | 782 | "%s: Unit Check Occurred in " |
783 | "write channel\n", dev->name); | 783 | "write channel\n", dev->name); |
784 | clear_bit(0, (void *)&p_ch->IO_active); | 784 | clear_bit(0, (void *)&p_ch->IO_active); |
785 | if (p_ch->irb->ecw[0] & 0x80) { | 785 | if (p_ch->irb->ecw[0] & 0x80) { |
diff --git a/drivers/s390/net/ctcm_fsms.c b/drivers/s390/net/ctcm_fsms.c index 8c921fc3511a..2d602207541b 100644 --- a/drivers/s390/net/ctcm_fsms.c +++ b/drivers/s390/net/ctcm_fsms.c | |||
@@ -184,7 +184,7 @@ static void ctcmpc_chx_resend(fsm_instance *, int, void *); | |||
184 | static void ctcmpc_chx_send_sweep(fsm_instance *fsm, int event, void *arg); | 184 | static void ctcmpc_chx_send_sweep(fsm_instance *fsm, int event, void *arg); |
185 | 185 | ||
186 | /** | 186 | /** |
187 | * Check return code of a preceeding ccw_device call, halt_IO etc... | 187 | * Check return code of a preceding ccw_device call, halt_IO etc... |
188 | * | 188 | * |
189 | * ch : The channel, the error belongs to. | 189 | * ch : The channel, the error belongs to. |
190 | * Returns the error code (!= 0) to inspect. | 190 | * Returns the error code (!= 0) to inspect. |
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c index 7fbc4adbb6d5..49d1cfc3217e 100644 --- a/drivers/s390/net/lcs.c +++ b/drivers/s390/net/lcs.c | |||
@@ -1123,7 +1123,7 @@ list_modified: | |||
1123 | list_for_each_entry_safe(ipm, tmp, &card->ipm_list, list){ | 1123 | list_for_each_entry_safe(ipm, tmp, &card->ipm_list, list){ |
1124 | switch (ipm->ipm_state) { | 1124 | switch (ipm->ipm_state) { |
1125 | case LCS_IPM_STATE_SET_REQUIRED: | 1125 | case LCS_IPM_STATE_SET_REQUIRED: |
1126 | /* del from ipm_list so noone else can tamper with | 1126 | /* del from ipm_list so no one else can tamper with |
1127 | * this entry */ | 1127 | * this entry */ |
1128 | list_del_init(&ipm->list); | 1128 | list_del_init(&ipm->list); |
1129 | spin_unlock_irqrestore(&card->ipm_lock, flags); | 1129 | spin_unlock_irqrestore(&card->ipm_lock, flags); |
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c index 10a3a3b4dd3e..85cc53117ea6 100644 --- a/drivers/s390/net/qeth_core_main.c +++ b/drivers/s390/net/qeth_core_main.c | |||
@@ -1107,7 +1107,7 @@ static int qeth_setup_card(struct qeth_card *card) | |||
1107 | INIT_LIST_HEAD(card->ip_tbd_list); | 1107 | INIT_LIST_HEAD(card->ip_tbd_list); |
1108 | INIT_LIST_HEAD(&card->cmd_waiter_list); | 1108 | INIT_LIST_HEAD(&card->cmd_waiter_list); |
1109 | init_waitqueue_head(&card->wait_q); | 1109 | init_waitqueue_head(&card->wait_q); |
1110 | /* intial options */ | 1110 | /* initial options */ |
1111 | qeth_set_intial_options(card); | 1111 | qeth_set_intial_options(card); |
1112 | /* IP address takeover */ | 1112 | /* IP address takeover */ |
1113 | INIT_LIST_HEAD(&card->ipato.entries); | 1113 | INIT_LIST_HEAD(&card->ipato.entries); |
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c index a0e05ef65924..8512b5c0ef82 100644 --- a/drivers/s390/scsi/zfcp_fsf.c +++ b/drivers/s390/scsi/zfcp_fsf.c | |||
@@ -1083,7 +1083,7 @@ static void zfcp_fsf_send_els_handler(struct zfcp_fsf_req *req) | |||
1083 | } | 1083 | } |
1084 | break; | 1084 | break; |
1085 | case FSF_SBAL_MISMATCH: | 1085 | case FSF_SBAL_MISMATCH: |
1086 | /* should never occure, avoided in zfcp_fsf_send_els */ | 1086 | /* should never occur, avoided in zfcp_fsf_send_els */ |
1087 | /* fall through */ | 1087 | /* fall through */ |
1088 | default: | 1088 | default: |
1089 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1089 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c index 8da5ed644c2b..98e97d90835b 100644 --- a/drivers/s390/scsi/zfcp_qdio.c +++ b/drivers/s390/scsi/zfcp_qdio.c | |||
@@ -391,7 +391,7 @@ int zfcp_qdio_open(struct zfcp_qdio *qdio) | |||
391 | if (do_QDIO(cdev, QDIO_FLAG_SYNC_INPUT, 0, 0, QDIO_MAX_BUFFERS_PER_Q)) | 391 | if (do_QDIO(cdev, QDIO_FLAG_SYNC_INPUT, 0, 0, QDIO_MAX_BUFFERS_PER_Q)) |
392 | goto failed_qdio; | 392 | goto failed_qdio; |
393 | 393 | ||
394 | /* set index of first avalable SBALS / number of available SBALS */ | 394 | /* set index of first available SBALS / number of available SBALS */ |
395 | qdio->req_q_idx = 0; | 395 | qdio->req_q_idx = 0; |
396 | atomic_set(&qdio->req_q_free, QDIO_MAX_BUFFERS_PER_Q); | 396 | atomic_set(&qdio->req_q_free, QDIO_MAX_BUFFERS_PER_Q); |
397 | atomic_set_mask(ZFCP_STATUS_ADAPTER_QDIOUP, &qdio->adapter->status); | 397 | atomic_set_mask(ZFCP_STATUS_ADAPTER_QDIOUP, &qdio->adapter->status); |