Lines Matching refs:req
69 #define IPMI_INIT_DRIVER_REQUEST(req, addr, cmd, reqlen, replylen) \ argument
70 bzero((req), sizeof(struct ipmi_request)); \
71 ipmi_init_request((req), NULL, 0, (addr), (cmd), (reqlen), (replylen))
73 #define IPMI_ALLOC_DRIVER_REQUEST(req, addr, cmd, reqlen, replylen) \ argument
74 (req) = __builtin_alloca(sizeof(struct ipmi_request) + \
76 IPMI_INIT_DRIVER_REQUEST((req), (addr), (cmd), (reqlen), \
194 struct ipmi_request *req; in ipmi_purge_completed_requests() local
197 req = TAILQ_FIRST(&dev->ipmi_completed_requests); in ipmi_purge_completed_requests()
198 TAILQ_REMOVE(&dev->ipmi_completed_requests, req, ir_link); in ipmi_purge_completed_requests()
200 ipmi_free_request(req); in ipmi_purge_completed_requests()
207 struct ipmi_request *req, *nreq; in ipmi_dtor() local
217 TAILQ_FOREACH_SAFE(req, &sc->ipmi_pending_requests, ir_link, in ipmi_dtor()
219 if (req->ir_owner == dev) { in ipmi_dtor()
220 TAILQ_REMOVE(&sc->ipmi_pending_requests, req, in ipmi_dtor()
223 ipmi_free_request(req); in ipmi_dtor()
266 struct ipmi_request *req; in ipmi_ipmb_send_message() local
270 IPMI_ALLOC_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0), in ipmi_ipmb_send_message()
272 req->ir_request[0] = channel; in ipmi_ipmb_send_message()
273 req->ir_request[1] = slave_addr; in ipmi_ipmb_send_message()
274 req->ir_request[2] = IPMI_ADDR(netfn, 0); in ipmi_ipmb_send_message()
275 req->ir_request[3] = ipmi_ipmb_checksum(&req->ir_request[1], 2); in ipmi_ipmb_send_message()
276 req->ir_request[4] = sc->ipmi_address; in ipmi_ipmb_send_message()
277 req->ir_request[5] = IPMI_ADDR(seq, sc->ipmi_lun); in ipmi_ipmb_send_message()
278 req->ir_request[6] = command; in ipmi_ipmb_send_message()
280 bcopy(data, &req->ir_request[7], data_len); in ipmi_ipmb_send_message()
281 temp[data_len + 7] = ipmi_ipmb_checksum(&req->ir_request[4], in ipmi_ipmb_send_message()
284 ipmi_submit_driver_request(sc, req); in ipmi_ipmb_send_message()
285 error = req->ir_error; in ipmi_ipmb_send_message()
293 struct ipmi_request *req; in ipmi_handle_attn() local
297 IPMI_ALLOC_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0), in ipmi_handle_attn()
300 ipmi_submit_driver_request(sc, req); in ipmi_handle_attn()
302 if (req->ir_error == 0 && req->ir_compcode == 0) { in ipmi_handle_attn()
303 if (req->ir_reply[0] & IPMI_MSG_BUFFER_FULL) { in ipmi_handle_attn()
306 if (req->ir_reply[0] & IPMI_WDT_PRE_TIMEOUT) { in ipmi_handle_attn()
310 if (req->ir_reply[0] & IPMI_MSG_AVAILABLE) { in ipmi_handle_attn()
311 IPMI_ALLOC_DRIVER_REQUEST(req, in ipmi_handle_attn()
319 error = req->ir_error; in ipmi_handle_attn()
332 struct ipmi_req *req = (struct ipmi_req *)data; in ipmi_ioctl() local
339 struct ipmi_req req; in ipmi_ioctl() member
355 req = &thunk32.req; in ipmi_ioctl()
356 req->addr = PTRIN(req32->addr); in ipmi_ioctl()
357 req->addr_len = req32->addr_len; in ipmi_ioctl()
358 req->msgid = req32->msgid; in ipmi_ioctl()
359 req->msg.netfn = req32->msg.netfn; in ipmi_ioctl()
360 req->msg.cmd = req32->msg.cmd; in ipmi_ioctl()
361 req->msg.data_len = req32->msg.data_len; in ipmi_ioctl()
362 req->msg.data = PTRIN(req32->msg.data); in ipmi_ioctl()
383 error = copyin(req->addr, &addr, sizeof(addr)); in ipmi_ioctl()
398 kreq = ipmi_alloc_request(dev, req->msgid, in ipmi_ioctl()
399 IPMI_ADDR(req->msg.netfn, 0), req->msg.cmd, in ipmi_ioctl()
400 req->msg.data_len, IPMI_MAX_RX); in ipmi_ioctl()
401 error = copyin(req->msg.data, kreq->ir_request, in ipmi_ioctl()
402 req->msg.data_len); in ipmi_ioctl()
525 ipmi_init_request(struct ipmi_request *req, struct ipmi_device *dev, long msgid, in ipmi_init_request() argument
529 req->ir_owner = dev; in ipmi_init_request()
530 req->ir_msgid = msgid; in ipmi_init_request()
531 req->ir_addr = addr; in ipmi_init_request()
532 req->ir_command = command; in ipmi_init_request()
534 req->ir_request = (char *)&req[1]; in ipmi_init_request()
535 req->ir_requestlen = requestlen; in ipmi_init_request()
538 req->ir_reply = (char *)&req[1] + requestlen; in ipmi_init_request()
539 req->ir_replybuflen = replylen; in ipmi_init_request()
548 struct ipmi_request *req; in ipmi_alloc_request() local
550 req = malloc(sizeof(struct ipmi_request) + requestlen + replylen, in ipmi_alloc_request()
552 ipmi_init_request(req, dev, msgid, addr, command, requestlen, replylen); in ipmi_alloc_request()
553 return (req); in ipmi_alloc_request()
558 ipmi_free_request(struct ipmi_request *req) in ipmi_free_request() argument
561 free(req, M_IPMI); in ipmi_free_request()
566 ipmi_complete_request(struct ipmi_softc *sc, struct ipmi_request *req) in ipmi_complete_request() argument
576 if (req->ir_owner == NULL) in ipmi_complete_request()
577 wakeup(req); in ipmi_complete_request()
579 dev = req->ir_owner; in ipmi_complete_request()
580 TAILQ_INSERT_TAIL(&dev->ipmi_completed_requests, req, ir_link); in ipmi_complete_request()
589 ipmi_submit_driver_request(struct ipmi_softc *sc, struct ipmi_request *req, in ipmi_submit_driver_request() argument
593 return (sc->ipmi_driver_request(sc, req, timo)); in ipmi_submit_driver_request()
605 struct ipmi_request *req; in ipmi_dequeue_request() local
614 req = TAILQ_FIRST(&sc->ipmi_pending_requests); in ipmi_dequeue_request()
615 TAILQ_REMOVE(&sc->ipmi_pending_requests, req, ir_link); in ipmi_dequeue_request()
616 return (req); in ipmi_dequeue_request()
621 ipmi_polled_enqueue_request(struct ipmi_softc *sc, struct ipmi_request *req) in ipmi_polled_enqueue_request() argument
626 TAILQ_INSERT_TAIL(&sc->ipmi_pending_requests, req, ir_link); in ipmi_polled_enqueue_request()
638 struct ipmi_request *req; in ipmi_reset_watchdog() local
641 IPMI_ALLOC_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0), in ipmi_reset_watchdog()
643 error = ipmi_submit_driver_request(sc, req, 0); in ipmi_reset_watchdog()
646 } else if (req->ir_compcode == 0x80) { in ipmi_reset_watchdog()
648 } else if (req->ir_compcode != 0) { in ipmi_reset_watchdog()
650 req->ir_compcode); in ipmi_reset_watchdog()
659 struct ipmi_request *req; in ipmi_set_watchdog() local
665 IPMI_ALLOC_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0), in ipmi_set_watchdog()
668 req->ir_request[0] = IPMI_SET_WD_TIMER_DONT_STOP in ipmi_set_watchdog()
670 req->ir_request[1] = (wd_timer_actions & 0xff); in ipmi_set_watchdog()
671 req->ir_request[2] = min(0xff, in ipmi_set_watchdog()
673 req->ir_request[3] = 0; /* Timer use */ in ipmi_set_watchdog()
674 req->ir_request[4] = (sec * 10) & 0xff; in ipmi_set_watchdog()
675 req->ir_request[5] = (sec * 10) >> 8; in ipmi_set_watchdog()
677 req->ir_request[0] = IPMI_SET_WD_TIMER_SMS_OS; in ipmi_set_watchdog()
678 req->ir_request[1] = 0; in ipmi_set_watchdog()
679 req->ir_request[2] = 0; in ipmi_set_watchdog()
680 req->ir_request[3] = 0; /* Timer use */ in ipmi_set_watchdog()
681 req->ir_request[4] = 0; in ipmi_set_watchdog()
682 req->ir_request[5] = 0; in ipmi_set_watchdog()
684 error = ipmi_submit_driver_request(sc, req, 0); in ipmi_set_watchdog()
687 } else if (req->ir_compcode != 0) { in ipmi_set_watchdog()
689 req->ir_compcode); in ipmi_set_watchdog()
797 struct ipmi_request *req; in ipmi_power_cycle() local
811 IPMI_ALLOC_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_CHASSIS_REQUEST, 0), in ipmi_power_cycle()
813 req->ir_request[0] = IPMI_CC_POWER_CYCLE; in ipmi_power_cycle()
815 ipmi_submit_driver_request(sc, req, MAX_TIMEOUT); in ipmi_power_cycle()
817 if (req->ir_error != 0 || req->ir_compcode != 0) { in ipmi_power_cycle()
819 req->ir_error, req->ir_compcode); in ipmi_power_cycle()
836 struct ipmi_request *req; in ipmi_startup() local
858 IPMI_ALLOC_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0), in ipmi_startup()
861 error = ipmi_submit_driver_request(sc, req, MAX_TIMEOUT); in ipmi_startup()
868 } else if (req->ir_compcode != 0) { in ipmi_startup()
871 req->ir_compcode); in ipmi_startup()
873 } else if (req->ir_replylen < 5) { in ipmi_startup()
875 req->ir_replylen); in ipmi_startup()
881 req->ir_reply[1] & 0x0f, in ipmi_startup()
882 req->ir_reply[2] & 0x7f, req->ir_reply[3] >> 4, req->ir_reply[3] & 0x0f, in ipmi_startup()
883 req->ir_reply[4] & 0x0f, req->ir_reply[4] >> 4, req->ir_reply[5]); in ipmi_startup()
885 sc->ipmi_dev_support = req->ir_reply[5]; in ipmi_startup()
887 IPMI_INIT_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0), in ipmi_startup()
890 ipmi_submit_driver_request(sc, req, 0); in ipmi_startup()
893 if (req->ir_compcode == 0xc0) { in ipmi_startup()
896 if (req->ir_compcode == 0xc1) { in ipmi_startup()
901 IPMI_INIT_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0), in ipmi_startup()
903 req->ir_request[0] = i; in ipmi_startup()
905 error = ipmi_submit_driver_request(sc, req, 0); in ipmi_startup()
907 if (error != 0 || req->ir_compcode != 0) in ipmi_startup()
917 IPMI_INIT_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0), in ipmi_startup()
920 error = ipmi_submit_driver_request(sc, req, 0); in ipmi_startup()
922 if (error == 0 && req->ir_compcode == 0x00) { in ipmi_startup()