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) {
1118 dasd_3990_erp_equip_check(struct dasd_ccw_req * erp, char *sense)
1125 if (sense[1] & SNS1_WRITE_INHIBITED) {
1136 } else if (sense[2] & SNS2_ENV_DATA_PRESENT) {
1141 dasd_3990_handle_env_data(erp, sense);
1143 erp = dasd_3990_erp_action_4(erp, sense);
1145 } else if (sense[1] & SNS1_PERM_ERR) {
1177 dasd_3990_erp_data_check(struct dasd_ccw_req * erp, char *sense)
1184 if (sense[2] & SNS2_CORRECTABLE) { /* correctable data check */
1195 } else if (sense[2] & SNS2_ENV_DATA_PRESENT) {
1201 erp = dasd_3990_erp_action_4(erp, sense);
1203 } else if (sense[1] & SNS1_PERM_ERR) {
1236 dasd_3990_erp_overrun(struct dasd_ccw_req * erp, char *sense)
1265 dasd_3990_erp_inv_format(struct dasd_ccw_req * erp, char *sense)
1272 if (sense[2] & SNS2_ENV_DATA_PRESENT) {
1278 dasd_3990_handle_env_data(erp, sense);
1280 erp = dasd_3990_erp_action_4(erp, sense);
1307 dasd_3990_erp_EOC(struct dasd_ccw_req * default_erp, char *sense)
1332 dasd_3990_erp_env_data(struct dasd_ccw_req * erp, char *sense)
1341 dasd_3990_handle_env_data(erp, sense);
1344 if (sense[7] != 0x0F) {
1345 erp = dasd_3990_erp_action_4(erp, sense);
1367 dasd_3990_erp_no_rec(struct dasd_ccw_req * default_erp, char *sense)
1436 char *sense;
1441 sense = dasd_get_sense(&erp->refers->irb);
1445 if (!test_bit(DASD_FLAG_OFFLINE, &cqr->startdev->flags) && sense
1446 && (sense[0] == 0x10) && (sense[7] == 0x0F)
1447 && (sense[8] == 0x67)) {
1478 * Does a detailed inspection of the 24 byte sense data
1482 * sense sense data of the actual error
1489 dasd_3990_erp_inspect_24(struct dasd_ccw_req * erp, char *sense)
1494 /* Check sense for .... */
1496 if ((erp_filled == NULL) && (sense[0] & SNS0_CMD_REJECT)) {
1497 erp_filled = dasd_3990_erp_com_rej(erp, sense);
1500 if ((erp_filled == NULL) && (sense[0] & SNS0_INTERVENTION_REQ)) {
1504 if ((erp_filled == NULL) && (sense[0] & SNS0_BUS_OUT_CHECK)) {
1508 if ((erp_filled == NULL) && (sense[0] & SNS0_EQUIPMENT_CHECK)) {
1509 erp_filled = dasd_3990_erp_equip_check(erp, sense);
1512 if ((erp_filled == NULL) && (sense[0] & SNS0_DATA_CHECK)) {
1513 erp_filled = dasd_3990_erp_data_check(erp, sense);
1516 if ((erp_filled == NULL) && (sense[0] & SNS0_OVERRUN)) {
1517 erp_filled = dasd_3990_erp_overrun(erp, sense);
1520 if ((erp_filled == NULL) && (sense[1] & SNS1_INV_TRACK_FORMAT)) {
1521 erp_filled = dasd_3990_erp_inv_format(erp, sense);
1524 if ((erp_filled == NULL) && (sense[1] & SNS1_EOC)) {
1525 erp_filled = dasd_3990_erp_EOC(erp, sense);
1528 if ((erp_filled == NULL) && (sense[2] & SNS2_ENV_DATA_PRESENT)) {
1529 erp_filled = dasd_3990_erp_env_data(erp, sense);
1532 if ((erp_filled == NULL) && (sense[1] & SNS1_NO_REC_FOUND)) {
1533 erp_filled = dasd_3990_erp_no_rec(erp, sense);
1536 if ((erp_filled == NULL) && (sense[1] & SNS1_FILE_PROTECTED)) {
1551 * 32 byte sense ERP functions (only)
1564 * sense current sense data
1569 dasd_3990_erp_action_10_32(struct dasd_ccw_req * erp, char *sense)
1596 * sense current sense data
1603 dasd_3990_erp_action_1B_32(struct dasd_ccw_req * default_erp, char *sense)
1629 "32 bit sense, action 1B is not defined"
1635 if (sense[1] & 0x01) {
1680 if ((sense[3] == 0x01) && (LO_data[1] & 0x01)) {
1685 if ((sense[7] & 0x3F) == 0x01) {
1689 } else if ((sense[7] & 0x3F) == 0x03) {
1694 LO_data[0] = sense[7]; /* operation */
1697 LO_data[1] = sense[8]; /* auxiliary */
1698 LO_data[2] = sense[9];
1699 LO_data[3] = sense[3]; /* count */
1700 LO_data[4] = sense[29]; /* seek_addr.cyl */
1701 LO_data[5] = sense[30]; /* seek_addr.cyl 2nd byte */
1702 LO_data[7] = sense[31]; /* seek_addr.head 2nd byte */
1704 memcpy(&(LO_data[8]), &(sense[11]), 8);
1757 * sense current sense data
1762 dasd_3990_update_1B(struct dasd_ccw_req * previous_erp, char *sense)
1785 "32 bit sense, action 1B, update,"
1791 if (sense[1] & 0x01) {
1817 /* update the LO with the new returned sense data */
1820 if ((sense[3] == 0x01) && (LO_data[1] & 0x01)) {
1827 if ((sense[7] & 0x3F) == 0x01) {
1831 } else if ((sense[7] & 0x3F) == 0x03) {
1836 LO_data[0] = sense[7]; /* operation */
1839 LO_data[1] = sense[8]; /* auxiliary */
1840 LO_data[2] = sense[9];
1841 LO_data[3] = sense[3]; /* count */
1842 LO_data[4] = sense[29]; /* seek_addr.cyl */
1843 LO_data[5] = sense[30]; /* seek_addr.cyl 2nd byte */
1844 LO_data[7] = sense[31]; /* seek_addr.head 2nd byte */
1846 memcpy(&(LO_data[8]), &(sense[11]), 8);
1866 * by the sense data. This makes enqueueing of the request
1870 * sense sense data of the actual error
1878 dasd_3990_erp_compound_retry(struct dasd_ccw_req * erp, char *sense)
1881 switch (sense[25] & 0x03) {
1914 * sense sense data of the actual error
1922 dasd_3990_erp_compound_path(struct dasd_ccw_req * erp, char *sense)
1924 if (sense[25] & DASD_SENSE_BIT_3) {
1947 * sense sense data of the actual error
1955 dasd_3990_erp_compound_code(struct dasd_ccw_req * erp, char *sense)
1958 if (sense[25] & DASD_SENSE_BIT_2) {
1960 switch (sense[28]) {
1995 * sense sense data of the actual error
2003 dasd_3990_erp_compound_config(struct dasd_ccw_req * erp, char *sense)
2006 if ((sense[25] & DASD_SENSE_BIT_1) && (sense[26] & DASD_SENSE_BIT_2)) {
2030 * sense sense data of the actual error
2038 dasd_3990_erp_compound(struct dasd_ccw_req * erp, char *sense)
2044 dasd_3990_erp_compound_path(erp, sense);
2050 erp = dasd_3990_erp_compound_code(erp, sense);
2056 dasd_3990_erp_compound_config(erp, sense);
2074 * sense sense data of the actual error
2080 dasd_3990_erp_handle_sim(struct dasd_device *device, char *sense)
2083 if ((sense[24] & DASD_SIM_MSG_TO_OP) || (sense[1] & 0x10)) {
2086 "%02x%02x%02x%02x\n", sense[22],
2087 sense[23], sense[11], sense[12]);
2088 } else if (sense[24] & DASD_SIM_LOG) {
2091 "%02x%02x%02x%02x\n", sense[22],
2092 sense[23], sense[11], sense[12]);
2100 * Does a detailed inspection of the 32 byte sense data
2104 * sense sense data of the actual error
2112 dasd_3990_erp_inspect_32(struct dasd_ccw_req * erp, char *sense)
2119 /* check for SIM sense data */
2120 if ((sense[6] & DASD_SIM_SENSE) == DASD_SIM_SENSE)
2121 dasd_3990_erp_handle_sim(device, sense);
2123 if (sense[25] & DASD_SENSE_BIT_0) {
2126 dasd_3990_erp_compound_retry(erp, sense);
2131 switch (sense[25]) {
2160 erp = dasd_3990_erp_action_10_32(erp, sense);
2175 erp = dasd_3990_erp_action_1B_32(erp, sense);
2194 erp = dasd_3990_erp_action_4(erp, sense);
2201 erp = dasd_3990_erp_action_4(erp, sense);
2273 * main ERP control functions (24 and 32 byte sense)
2310 * Does a detailed inspection for sense data by calling either
2323 char *sense;
2330 /* sense data are located in the refers record of the
2334 sense = dasd_get_sense(&erp->refers->irb);
2335 if (!sense)
2337 /* distinguish between 24 and 32 byte sense data */
2338 else if (sense[27] & DASD_SENSE_BIT_0) {
2340 /* inspect the 24 byte sense data */
2341 erp_new = dasd_3990_erp_inspect_24(erp, sense);
2345 /* inspect the 32 byte sense data */
2346 erp_new = dasd_3990_erp_inspect_32(erp, sense);
2348 } /* end distinguish between 24 and 32 byte sense data */
2363 * TSB so the original sense data will not be changed.
2452 * determined based on the sense data.
2473 /* inspect sense, determine specific ERP if possible */
2488 * This means that the failed CCW and the relevant sense data
2490 * I don't distinguish between 24 and 32 byte sense because in case of
2491 * 24 byte sense byte 25 and 27 is set as well.
2512 /* one request has sense data, the other not -> no match, return 0 */
2515 /* no sense data in both cases -> check cstat for IFCC */
2523 /* check sense data; byte 0-2,25,27 */
2529 return 0; /* sense doesn't match */
2580 * DASD_3990_ERP_FURTHER_ERP (24 & 32 byte sense)
2600 char *sense = dasd_get_sense(&erp->irb);
2602 /* check for 24 byte sense ERP */
2617 if (sense && !(sense[2] & DASD_SENSE_BIT_0)) {
2622 switch (sense[25]) {
2642 sense[25]);
2646 /* check for 32 byte sense ERP */
2647 } else if (sense &&
2653 erp = dasd_3990_erp_compound(erp, sense);
2718 char *sense = dasd_get_sense(&erp->refers->irb);
2721 if (sense && erp->function == dasd_3990_erp_action_4) {
2723 erp = dasd_3990_erp_action_4(erp, sense);
2725 } else if (sense &&
2728 erp = dasd_3990_update_1B(erp, sense);
2730 } else if (sense && erp->function == dasd_3990_erp_int_req) {