Messages in this thread | | | Date | Fri, 7 May 1999 22:46:18 +0200 (MET DST) | From | Gerard Roudier <> | Subject | Re: sym/ncr53c8xx phase error: Some progress |
| |
On Fri, 7 May 1999, Shaw Carruthers wrote:
> Looking at the source code of ncr53c8xx.c at line 7525 I see: > > #if 0 > case 3: /* STATUS phase */ > nxtdsp = NCB_SCRIPT_PHYS (np, dispatch); > break; > #endif > case 6: /* MSG OUT phase */ > np->scripth->nxtdsp_go_on[0] = cpu_to_scr(dsp + 8); > if (dsp == NCB_SCRIPT_PHYS (np, send_ident)) { > cp->host_status = HS_BUSY; > nxtdsp = NCB_SCRIPTH_PHYS (np, clratn_go_on); > } > else if (dsp == NCB_SCRIPTH_PHYS (np, send_wdtr) || > dsp == NCB_SCRIPTH_PHYS (np, send_sdtr)) { > nxtdsp = NCB_SCRIPTH_PHYS (np, nego_bad_phase); > } > break; > #if 0 > case 7: /* MSG IN phase */ > nxtdsp = NCB_SCRIPT_PHYS (np, clrack); > break; > #endif > > > So code to handle these errors seems to be disabled. I tried enabling it > but I still got the problem.
No, it is not.
The PHASE number is the _interrupted_ phase, so you should have read:
case 2: /* COMMAND phase */ nxtdsp = NCB_SCRIPT_PHYS (np, dispatch); break;
If you want the driver to handle your problem as an unrecoverable error and then reset the SCSI BUS, you just have to #if 0 'case 2'.
The driver resets if STATUS phase is interrupted (#ifed 0) because the status is 1 byte long and this should only happen on SCSI parity error and so should never happen since this error is handled separately.
For the MSG IN phase (also #ifded 0), this also should never happen excepted on SCSI parity error, since the actual size of a message can be guessed by the driver, based on the first message byte value and on the message size transmitted by the target when the message is EXTENDED type.
So no phase mismatch without SCSI parity error should occur in either STATUS phase or MESSAGE IN phase, and then resetting the BUS if such situations is the better thing to do.
Gérard.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |