blob: 6e082688475a8f31352cefeebc46aff0ed3ba63e [file] [log] [blame]
Horst Hummel138c0142006-06-29 14:58:12 +02001/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07002 * File...........: linux/drivers/s390/block/dasd_9336_erp.c
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Bugreports.to..: <Linux390@de.ibm.com>
5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000
6 *
Linus Torvalds1da177e2005-04-16 15:20:36 -07007 */
8
9#define PRINTK_HEADER "dasd_erp(9336)"
10
11#include "dasd_int.h"
12
13
14/*
Horst Hummel138c0142006-06-29 14:58:12 +020015 * DASD_9336_ERP_EXAMINE
Linus Torvalds1da177e2005-04-16 15:20:36 -070016 *
17 * DESCRIPTION
Horst Hummel138c0142006-06-29 14:58:12 +020018 * Checks only for fatal/no/recover error.
Linus Torvalds1da177e2005-04-16 15:20:36 -070019 * A detailed examination of the sense data is done later outside
20 * the interrupt handler.
21 *
22 * The logic is based on the 'IBM 3880 Storage Control Reference' manual
23 * 'Chapter 7. 9336 Sense Data'.
24 *
25 * RETURN VALUES
Horst Hummel138c0142006-06-29 14:58:12 +020026 * dasd_era_none no error
Linus Torvalds1da177e2005-04-16 15:20:36 -070027 * dasd_era_fatal for all fatal (unrecoverable errors)
28 * dasd_era_recover for all others.
29 */
30dasd_era_t
31dasd_9336_erp_examine(struct dasd_ccw_req * cqr, struct irb * irb)
32{
33 /* check for successful execution first */
34 if (irb->scsw.cstat == 0x00 &&
35 irb->scsw.dstat == (DEV_STAT_CHN_END | DEV_STAT_DEV_END))
36 return dasd_era_none;
37
38 /* examine the 24 byte sense data */
39 return dasd_era_recover;
40
41} /* END dasd_9336_erp_examine */