Index: ciss.c =================================================================== RCS file: /home/ncvs/src/sys/dev/ciss/ciss.c,v retrieving revision 1.84 diff -u -r1.84 ciss.c --- ciss.c 20 Oct 2007 23:23:14 -0000 1.84 +++ ciss.c 1 Nov 2007 14:30:15 -0000 @@ -183,6 +183,7 @@ /* periodic status monitoring */ static void ciss_periodic(void *arg); +static void ciss_nop_complete(struct ciss_request *cr); static void ciss_disable_adapter(struct ciss_softc *sc); static void ciss_notify_event(struct ciss_softc *sc); static void ciss_notify_complete(struct ciss_request *cr); @@ -3100,6 +3101,7 @@ */ if ((error = ciss_get_request(sc, &cr)) == 0) { cc = CISS_FIND_COMMAND(cr); + cr->cr_complete = ciss_nop_complete; cc->cdb.cdb_length = 1; cc->cdb.type = CISS_CDB_TYPE_MESSAGE; cc->cdb.attribute = CISS_CDB_ATTRIBUTE_SIMPLE; @@ -3107,11 +3109,9 @@ cc->cdb.timeout = 0; cc->cdb.cdb[0] = CISS_OPCODE_MESSAGE_NOP; - if ((error = ciss_synch_request(cr, 10 * 1000)) != 0) { + if ((error = ciss_start(cr)) != 0) { ciss_printf(sc, "SENDING NOP MESSAGE FAILED\n"); } - - ciss_release_request(cr); } /* @@ -3129,6 +3129,19 @@ callout_reset(&sc->ciss_periodic, CISS_HEARTBEAT_RATE * hz, ciss_periodic, sc); } +static void +ciss_nop_complete(struct ciss_request *cr) +{ + struct ciss_softc *sc; + + sc = cr->cr_sc; + if (ciss_report_request(cr, NULL, NULL) != 0) { + ciss_printf(sc, "SENDING NOP MESSAGE FAILED\n"); + } + + ciss_release_request(cr); +} + /************************************************************************ * Disable the adapter. *