Add detailed debugging printf's for SMIC under SMIC_DEBUG.
This commit is contained in:
parent
c95e8ccc74
commit
b4828cc1dd
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user