Lines Matching refs:sense
34 * 24 and 32 byte sense ERP functions
294 * sense sense data of the actual error
302 dasd_3990_erp_action_4(struct dasd_ccw_req * erp, char *sense)
319 if (sense && (sense[25] == 0x1D)) { /* state change pending */
328 } else if (sense && (sense[25] == 0x1E)) { /* busy */
350 * 24 byte sense ERP functions (only)
385 * Does a analysis of the sense data (message Format)
389 * sense current sense data
395 dasd_3990_handle_env_data(struct dasd_ccw_req * erp, char *sense)
399 char msg_format = (sense[7] & 0xF0);
400 char msg_no = (sense[7] & 0x0F);
406 if (sense[1] & 0x10) { /* check message to operator bit */
450 "... %02x\n", sense[8]);
471 sense[8]);
493 "device = %02x\n", sense[4]);
595 sense[8]);
1026 * sense current sense data
1032 dasd_3990_erp_com_rej(struct dasd_ccw_req * erp, char *sense)
1040 if (sense[2] & SNS2_ENV_DATA_PRESENT) {
1045 dasd_3990_handle_env_data(erp, sense);
1049 } else if (sense[1] & SNS1_WRITE_INHIBITED) {
1053 } else if (sense[7] == SNS7_INVALID_ON_SEC) {
1055 /* suppress dump of sense data for this error */
1123 dasd_3990_erp_equip_check(struct dasd_ccw_req * erp, char *sense)
1130 if (sense[1] & SNS1_WRITE_INHIBITED) {
1141 } else if (sense[2] & SNS2_ENV_DATA_PRESENT) {
1146 dasd_3990_handle_env_data(erp, sense);
1148 erp = dasd_3990_erp_action_4(erp, sense);
1150 } else if (sense[1] & SNS1_PERM_ERR) {
1182 dasd_3990_erp_data_check(struct dasd_ccw_req * erp, char *sense)
1189 if (sense[2] & SNS2_CORRECTABLE) { /* correctable data check */
1200 } else if (sense[2] & SNS2_ENV_DATA_PRESENT) {
1206 erp = dasd_3990_erp_action_4(erp, sense);
1208 } else if (sense[1] & SNS1_PERM_ERR) {
1241 dasd_3990_erp_overrun(struct dasd_ccw_req * erp, char *sense)
1270 dasd_3990_erp_inv_format(struct dasd_ccw_req * erp, char *sense)
1277 if (sense[2] & SNS2_ENV_DATA_PRESENT) {
1283 dasd_3990_handle_env_data(erp, sense);
1285 erp = dasd_3990_erp_action_4(erp, sense);
1312 dasd_3990_erp_EOC(struct dasd_ccw_req * default_erp, char *sense)
1337 dasd_3990_erp_env_data(struct dasd_ccw_req * erp, char *sense)
1346 dasd_3990_handle_env_data(erp, sense);
1349 if (sense[7] != 0x0F) {
1350 erp = dasd_3990_erp_action_4(erp, sense);
1372 dasd_3990_erp_no_rec(struct dasd_ccw_req * default_erp, char *sense)
1441 char *sense;
1446 sense = dasd_get_sense(&erp->refers->irb);
1450 if (!test_bit(DASD_FLAG_OFFLINE, &cqr->startdev->flags) && sense
1451 && (sense[0] == 0x10) && (sense[7] == 0x0F)
1452 && (sense[8] == 0x67)) {
1483 * Does a detailed inspection of the 24 byte sense data
1487 * sense sense data of the actual error
1494 dasd_3990_erp_inspect_24(struct dasd_ccw_req * erp, char *sense)
1499 /* Check sense for .... */
1501 if ((erp_filled == NULL) && (sense[0] & SNS0_CMD_REJECT)) {
1502 erp_filled = dasd_3990_erp_com_rej(erp, sense);
1505 if ((erp_filled == NULL) && (sense[0] & SNS0_INTERVENTION_REQ)) {
1509 if ((erp_filled == NULL) && (sense[0] & SNS0_BUS_OUT_CHECK)) {
1513 if ((erp_filled == NULL) && (sense[0] & SNS0_EQUIPMENT_CHECK)) {
1514 erp_filled = dasd_3990_erp_equip_check(erp, sense);
1517 if ((erp_filled == NULL) && (sense[0] & SNS0_DATA_CHECK)) {
1518 erp_filled = dasd_3990_erp_data_check(erp, sense);
1521 if ((erp_filled == NULL) && (sense[0] & SNS0_OVERRUN)) {
1522 erp_filled = dasd_3990_erp_overrun(erp, sense);
1525 if ((erp_filled == NULL) && (sense[1] & SNS1_INV_TRACK_FORMAT)) {
1526 erp_filled = dasd_3990_erp_inv_format(erp, sense);
1529 if ((erp_filled == NULL) && (sense[1] & SNS1_EOC)) {
1530 erp_filled = dasd_3990_erp_EOC(erp, sense);
1533 if ((erp_filled == NULL) && (sense[2] & SNS2_ENV_DATA_PRESENT)) {
1534 erp_filled = dasd_3990_erp_env_data(erp, sense);
1537 if ((erp_filled == NULL) && (sense[1] & SNS1_NO_REC_FOUND)) {
1538 erp_filled = dasd_3990_erp_no_rec(erp, sense);
1541 if ((erp_filled == NULL) && (sense[1] & SNS1_FILE_PROTECTED)) {
1556 * 32 byte sense ERP functions (only)
1569 * sense current sense data
1574 dasd_3990_erp_action_10_32(struct dasd_ccw_req * erp, char *sense)
1601 * sense current sense data
1608 dasd_3990_erp_action_1B_32(struct dasd_ccw_req * default_erp, char *sense)
1634 "32 bit sense, action 1B is not defined"
1640 if (sense[1] & 0x01) {
1685 if ((sense[3] == 0x01) && (LO_data[1] & 0x01)) {
1690 if ((sense[7] & 0x3F) == 0x01) {
1694 } else if ((sense[7] & 0x3F) == 0x03) {
1699 LO_data[0] = sense[7]; /* operation */
1702 LO_data[1] = sense[8]; /* auxiliary */
1703 LO_data[2] = sense[9];
1704 LO_data[3] = sense[3]; /* count */
1705 LO_data[4] = sense[29]; /* seek_addr.cyl */
1706 LO_data[5] = sense[30]; /* seek_addr.cyl 2nd byte */
1707 LO_data[7] = sense[31]; /* seek_addr.head 2nd byte */
1709 memcpy(&(LO_data[8]), &(sense[11]), 8);
1762 * sense current sense data
1767 dasd_3990_update_1B(struct dasd_ccw_req * previous_erp, char *sense)
1790 "32 bit sense, action 1B, update,"
1796 if (sense[1] & 0x01) {
1822 /* update the LO with the new returned sense data */
1825 if ((sense[3] == 0x01) && (LO_data[1] & 0x01)) {
1832 if ((sense[7] & 0x3F) == 0x01) {
1836 } else if ((sense[7] & 0x3F) == 0x03) {
1841 LO_data[0] = sense[7]; /* operation */
1844 LO_data[1] = sense[8]; /* auxiliary */
1845 LO_data[2] = sense[9];
1846 LO_data[3] = sense[3]; /* count */
1847 LO_data[4] = sense[29]; /* seek_addr.cyl */
1848 LO_data[5] = sense[30]; /* seek_addr.cyl 2nd byte */
1849 LO_data[7] = sense[31]; /* seek_addr.head 2nd byte */
1851 memcpy(&(LO_data[8]), &(sense[11]), 8);
1871 * by the sense data. This makes enqueueing of the request
1875 * sense sense data of the actual error
1883 dasd_3990_erp_compound_retry(struct dasd_ccw_req * erp, char *sense)
1886 switch (sense[25] & 0x03) {
1919 * sense sense data of the actual error
1927 dasd_3990_erp_compound_path(struct dasd_ccw_req * erp, char *sense)
1929 if (sense[25] & DASD_SENSE_BIT_3) {
1952 * sense sense data of the actual error
1960 dasd_3990_erp_compound_code(struct dasd_ccw_req * erp, char *sense)
1963 if (sense[25] & DASD_SENSE_BIT_2) {
1965 switch (sense[28]) {
2000 * sense sense data of the actual error
2008 dasd_3990_erp_compound_config(struct dasd_ccw_req * erp, char *sense)
2011 if ((sense[25] & DASD_SENSE_BIT_1) && (sense[26] & DASD_SENSE_BIT_2)) {
2035 * sense sense data of the actual error
2043 dasd_3990_erp_compound(struct dasd_ccw_req * erp, char *sense)
2049 dasd_3990_erp_compound_path(erp, sense);
2055 erp = dasd_3990_erp_compound_code(erp, sense);
2061 dasd_3990_erp_compound_config(erp, sense);
2079 * sense sense data of the actual error
2085 dasd_3990_erp_handle_sim(struct dasd_device *device, char *sense)
2088 if ((sense[24] & DASD_SIM_MSG_TO_OP) || (sense[1] & 0x10)) {
2091 "%02x%02x%02x%02x\n", sense[22],
2092 sense[23], sense[11], sense[12]);
2093 } else if (sense[24] & DASD_SIM_LOG) {
2096 "%02x%02x%02x%02x\n", sense[22],
2097 sense[23], sense[11], sense[12]);
2105 * Does a detailed inspection of the 32 byte sense data
2109 * sense sense data of the actual error
2117 dasd_3990_erp_inspect_32(struct dasd_ccw_req * erp, char *sense)
2124 /* check for SIM sense data */
2125 if ((sense[6] & DASD_SIM_SENSE) == DASD_SIM_SENSE)
2126 dasd_3990_erp_handle_sim(device, sense);
2128 if (sense[25] & DASD_SENSE_BIT_0) {
2131 dasd_3990_erp_compound_retry(erp, sense);
2136 switch (sense[25]) {
2165 erp = dasd_3990_erp_action_10_32(erp, sense);
2180 erp = dasd_3990_erp_action_1B_32(erp, sense);
2199 erp = dasd_3990_erp_action_4(erp, sense);
2206 erp = dasd_3990_erp_action_4(erp, sense);
2278 * main ERP control functions (24 and 32 byte sense)
2315 * Does a detailed inspection for sense data by calling either
2328 char *sense;
2335 /* sense data are located in the refers record of the
2339 sense = dasd_get_sense(&erp->refers->irb);
2340 if (!sense)
2342 /* distinguish between 24 and 32 byte sense data */
2343 else if (sense[27] & DASD_SENSE_BIT_0) {
2345 /* inspect the 24 byte sense data */
2346 erp_new = dasd_3990_erp_inspect_24(erp, sense);
2350 /* inspect the 32 byte sense data */
2351 erp_new = dasd_3990_erp_inspect_32(erp, sense);
2353 } /* end distinguish between 24 and 32 byte sense data */
2368 * TSB so the original sense data will not be changed.
2457 * determined based on the sense data.
2478 /* inspect sense, determine specific ERP if possible */
2493 * This means that the failed CCW and the relevant sense data
2495 * I don't distinguish between 24 and 32 byte sense because in case of
2496 * 24 byte sense byte 25 and 27 is set as well.
2517 /* one request has sense data, the other not -> no match, return 0 */
2520 /* no sense data in both cases -> check cstat for IFCC */
2528 /* check sense data; byte 0-2,25,27 */
2534 return 0; /* sense doesn't match */
2585 * DASD_3990_ERP_FURTHER_ERP (24 & 32 byte sense)
2605 char *sense = dasd_get_sense(&erp->irb);
2607 /* check for 24 byte sense ERP */
2622 if (sense && !(sense[2] & DASD_SENSE_BIT_0)) {
2627 switch (sense[25]) {
2647 sense[25]);
2651 /* check for 32 byte sense ERP */
2652 } else if (sense &&
2658 erp = dasd_3990_erp_compound(erp, sense);
2723 char *sense = dasd_get_sense(&erp->refers->irb);
2726 if (sense && erp->function == dasd_3990_erp_action_4) {
2728 erp = dasd_3990_erp_action_4(erp, sense);
2730 } else if (sense &&
2733 erp = dasd_3990_update_1B(erp, sense);
2735 } else if (sense && erp->function == dasd_3990_erp_int_req) {