Lines Matching +full:cmd +full:- +full:timeout +full:- +full:ms

1 /*-
54 * 0 - disabled
55 * 1 - enable error messages (EPRINTF)
56 * 2 - enable error and debug messages (DPRINTF)
88 timo *= 10; /* Timeout is in milliseconds, we delay in 100us */ in opal_ipmi_recv()
94 err = opal_call(OPAL_IPMI_RECV, sc->sc_interface, in opal_ipmi_recv()
95 vtophys(sc->sc_msg), vtophys(msg_len)); in opal_ipmi_recv()
100 if (timo-- <= 0) { in opal_ipmi_recv()
101 sc->sc_timedout = 1; in opal_ipmi_recv()
112 sc->sc_msg->data[0], *msg_len); in opal_ipmi_recv()
130 sc->sc_msg->version = OPAL_IPMI_MSG_FORMAT_VERSION_1; in opal_ipmi_discard_msgs()
132 /* Wait up to 100ms for the 1st timedout message. */ in opal_ipmi_discard_msgs()
136 /* Wait only 10ms for the remaining messages. */ in opal_ipmi_discard_msgs()
141 sc->sc_timedout = 0; in opal_ipmi_discard_msgs()
155 if (sc->sc_timedout) in opal_ipmi_polled_request()
159 sc->sc_msg->version = OPAL_IPMI_MSG_FORMAT_VERSION_1; in opal_ipmi_polled_request()
160 sc->sc_msg->netfn = req->ir_addr; in opal_ipmi_polled_request()
161 sc->sc_msg->cmd = req->ir_command; in opal_ipmi_polled_request()
163 if (req->ir_requestlen > IPMI_MAX_RX) { in opal_ipmi_polled_request()
167 memcpy(sc->sc_msg->data, req->ir_request, req->ir_requestlen); in opal_ipmi_polled_request()
169 msg_len = sizeof(*sc->sc_msg) + req->ir_requestlen; in opal_ipmi_polled_request()
170 err = opal_call(OPAL_IPMI_SEND, sc->sc_interface, vtophys(sc->sc_msg), in opal_ipmi_polled_request()
173 DPRINTF("SEND: cmd=%02x netfn=%02x len=%ld -> %d", in opal_ipmi_polled_request()
174 sc->sc_msg->cmd, sc->sc_msg->netfn, msg_len, err); in opal_ipmi_polled_request()
197 req->ir_replylen = msg_len - sizeof(struct opal_ipmi_msg) - 1; in opal_ipmi_polled_request()
198 req->ir_replylen = min(req->ir_replylen, req->ir_replybuflen); in opal_ipmi_polled_request()
199 memcpy(req->ir_reply, &sc->sc_msg->data[1], req->ir_replylen); in opal_ipmi_polled_request()
200 req->ir_compcode = sc->sc_msg->data[0]; in opal_ipmi_polled_request()
210 if (!ofw_bus_is_compatible(dev, "ibm,opal-ipmi")) in opal_ipmi_probe()
225 IPMI_LOCK(&sc->ipmi); in opal_ipmi_loop()
226 while ((req = ipmi_dequeue_request(&sc->ipmi)) != NULL) { in opal_ipmi_loop()
227 IPMI_UNLOCK(&sc->ipmi); in opal_ipmi_loop()
230 IPMI_IO_LOCK(&sc->ipmi); in opal_ipmi_loop()
232 IPMI_IO_UNLOCK(&sc->ipmi); in opal_ipmi_loop()
234 req->ir_error = err == 0 ? 0 : EIO; in opal_ipmi_loop()
235 IPMI_LOCK(&sc->ipmi); in opal_ipmi_loop()
236 ipmi_complete_request(&sc->ipmi, req); in opal_ipmi_loop()
238 IPMI_UNLOCK(&sc->ipmi); in opal_ipmi_loop()
246 return (kproc_create(opal_ipmi_loop, sc, &sc->ipmi_kthread, 0, 0, in opal_ipmi_startup()
247 "%s: opal", device_get_nameunit(sc->ipmi_dev))); in opal_ipmi_startup()
257 IPMI_LOCK(&sc->ipmi); in opal_ipmi_driver_request()
259 IPMI_UNLOCK(&sc->ipmi); in opal_ipmi_driver_request()
264 req->ir_error = err; in opal_ipmi_driver_request()
277 if (OF_getencprop(ofw_bus_get_node(dev), "ibm,ipmi-interface-id", in opal_ipmi_attach()
282 sc->sc_interface = ifid; in opal_ipmi_attach()
283 sc->ipmi.ipmi_startup = opal_ipmi_startup; in opal_ipmi_attach()
284 sc->ipmi.ipmi_driver_request = opal_ipmi_driver_request; in opal_ipmi_attach()
285 sc->ipmi.ipmi_enqueue_request = ipmi_polled_enqueue_request; in opal_ipmi_attach()
286 sc->ipmi.ipmi_driver_requests_polled = 1; in opal_ipmi_attach()
287 sc->ipmi.ipmi_dev = dev; in opal_ipmi_attach()
289 sc->sc_msg = malloc(sizeof(struct opal_ipmi_msg) + IPMI_MAX_RX, M_IPMI, in opal_ipmi_attach()
307 free(sc->sc_msg, M_IPMI); in opal_ipmi_detach()