Add detailed debugging printf's for SMIC under SMIC_DEBUG.

This commit is contained in:
John Baldwin 2006-10-05 15:35:11 +00:00
parent c95e8ccc74
commit b4828cc1dd

View File

@ -247,28 +247,52 @@ smic_polled_request(struct ipmi_softc *sc, struct ipmi_request *req)
/* First, start the message with the address. */
if (!smic_start_write(sc, req->ir_addr))
return (0);
#ifdef SMIC_DEBUG
device_printf(sc->ipmi_dev, "SMIC: WRITE_START address: %02x\n",
req->ir_addr);
#endif
if (req->ir_requestlen == 0) {
/* Send the command as the last byte. */
if (!smic_write_last(sc, req->ir_command))
return (0);
#ifdef SMIC_DEBUG
device_printf(sc->ipmi_dev, "SMIC: Wrote command: %02x\n",
req->ir_command);
#endif
} else {
/* Send the command. */
if (!smic_write_next(sc, req->ir_command))
return (0);
#ifdef SMIC_DEBUG
device_printf(sc->ipmi_dev, "SMIC: Wrote command: %02x\n",
req->ir_command);
#endif
/* Send the payload. */
cp = req->ir_request;
for (i = 0; i < req->ir_requestlen - 1; i++)
for (i = 0; i < req->ir_requestlen - 1; i++) {
if (!smic_write_next(sc, *cp++))
return (0);
#ifdef SMIC_DEBUG
device_printf(sc->ipmi_dev, "SMIC: Wrote data: %02x\n",
cp[-1]);
#endif
}
if (!smic_write_last(sc, *cp))
return (0);
#ifdef SMIC_DEBUG
device_printf(sc->ipmi_dev, "SMIC: Write last data: %02x\n",
*cp);
#endif
}
/* Start the read phase by reading the NetFn/LUN. */
if (smic_start_read(sc, &data) != 1)
return (0);
#ifdef SMIC_DEBUG
device_printf(sc->ipmi_dev, "SMIC: Read address: %02x\n", data);
#endif
if (data != IPMI_REPLY_ADDR(req->ir_addr)) {
device_printf(sc->ipmi_dev, "SMIC: Reply address mismatch\n");
return (0);
@ -277,6 +301,9 @@ smic_polled_request(struct ipmi_softc *sc, struct ipmi_request *req)
/* Read the command. */
if (smic_read_byte(sc, &data) != 1)
return (0);
#ifdef SMIC_DEBUG
device_printf(sc->ipmi_dev, "SMIC: Read command: %02x\n", data);
#endif
if (data != req->ir_command) {
device_printf(sc->ipmi_dev, "SMIC: Command mismatch\n");
return (0);
@ -286,6 +313,10 @@ smic_polled_request(struct ipmi_softc *sc, struct ipmi_request *req)
state = smic_read_byte(sc, &req->ir_compcode);
if (state == 0)
return (0);
#ifdef SMIC_DEBUG
device_printf(sc->ipmi_dev, "SMIC: Read completion code: %02x\n",
req->ir_compcode);
#endif
/* Finally, read the reply from the BMC. */
i = 0;
@ -293,8 +324,16 @@ smic_polled_request(struct ipmi_softc *sc, struct ipmi_request *req)
state = smic_read_byte(sc, &data);
if (state == 0)
return (0);
if (i < req->ir_replybuflen)
if (i < req->ir_replybuflen) {
req->ir_reply[i] = data;
#ifdef SMIC_DEBUG
device_printf(sc->ipmi_dev, "SMIC: Read data: %02x\n",
data);
} else {
device_printf(sc->ipmi_dev,
"SMIC: Read short %02x byte %d\n", data, i + 1);
#endif
}
i++;
}
@ -302,7 +341,12 @@ smic_polled_request(struct ipmi_softc *sc, struct ipmi_request *req)
if (!smic_read_end(sc))
return (0);
req->ir_replylen = i;
#ifdef SMIC_DEBUG
device_printf(sc->ipmi_dev, "SMIC: READ finished (%d bytes)\n", i);
if (req->ir_replybuflen < i)
#else
if (req->ir_replybuflen < i && req->ir_replybuflen != 0)
#endif
device_printf(sc->ipmi_dev,
"SMIC: Read short: %zd buffer, %d actual\n",
req->ir_replybuflen, i);
@ -355,5 +399,9 @@ ipmi_smic_attach(struct ipmi_softc *sc)
return (ENXIO);
}
#ifdef SMIC_DEBUG
device_printf(sc->ipmi_dev, "SMIC: initial state: %02x\n", flags);
#endif
return (0);
}