static int kcs_driver_request(struct ipmi_softc *sc, struct ipmi_request *req, int timo) { int i, ok; ok = 0; for (i = 0; i < 3 && !ok; i++) ok = kcs_polled_request(sc, req); if (ok) req->ir_error = 0; else req->ir_error = EIO; return (req->ir_error); }
static void kcs_loop(void *arg) { struct ipmi_softc *sc = arg; struct ipmi_request *req; int i, ok; IPMI_LOCK(sc); while ((req = ipmi_dequeue_request(sc)) != NULL) { ok = 0; for (i = 0; i < 3 && !ok; i++) ok = kcs_polled_request(sc, req); if (ok) req->ir_error = 0; else req->ir_error = EIO; ipmi_complete_request(sc, req); } IPMI_UNLOCK(sc); kproc_exit(0); }