Lines Matching defs:req
66 #define IPMI_INIT_DRIVER_REQUEST(req, addr, cmd, reqlen, replylen) \
67 bzero((req), sizeof(struct ipmi_request)); \
68 ipmi_init_request((req), NULL, 0, (addr), (cmd), (reqlen), (replylen))
70 #define IPMI_ALLOC_DRIVER_REQUEST(req, addr, cmd, reqlen, replylen) \
71 (req) = __builtin_alloca(sizeof(struct ipmi_request) + \
73 IPMI_INIT_DRIVER_REQUEST((req), (addr), (cmd), (reqlen), \
185 struct ipmi_request *req;
188 req = TAILQ_FIRST(&dev->ipmi_completed_requests);
189 TAILQ_REMOVE(&dev->ipmi_completed_requests, req, ir_link);
191 ipmi_free_request(req);
198 struct ipmi_request *req, *nreq;
208 TAILQ_FOREACH_SAFE(req, &sc->ipmi_pending_requests_highpri, ir_link,
210 if (req->ir_owner == dev) {
211 TAILQ_REMOVE(&sc->ipmi_pending_requests_highpri, req,
214 ipmi_free_request(req);
217 TAILQ_FOREACH_SAFE(req, &sc->ipmi_pending_requests, ir_link,
219 if (req->ir_owner == dev) {
220 TAILQ_REMOVE(&sc->ipmi_pending_requests, req,
223 ipmi_free_request(req);
265 struct ipmi_req *req = (struct ipmi_req *)data;
272 struct ipmi_req req;
288 req = &thunk32.req;
289 req->addr = PTRIN(req32->addr);
290 req->addr_len = req32->addr_len;
291 req->msgid = req32->msgid;
292 req->msg.netfn = req32->msg.netfn;
293 req->msg.cmd = req32->msg.cmd;
294 req->msg.data_len = req32->msg.data_len;
295 req->msg.data = PTRIN(req32->msg.data);
313 error = copyin(req->addr, &addr, sizeof(addr));
321 kreq = ipmi_alloc_request(dev, req->msgid,
322 IPMI_ADDR(req->msg.netfn, saddr->lun & 0x3),
323 req->msg.cmd, req->msg.data_len, IPMI_MAX_RX);
324 error = copyin(req->msg.data, kreq->ir_request,
325 req->msg.data_len);
343 IPMI_SEND_MSG, req->msg.data_len + 8, IPMI_MAX_RX);
347 kreq->ir_request[2] = IPMI_ADDR(req->msg.netfn, iaddr->lun);
352 kreq->ir_request[6] = req->msg.cmd;
354 if (req->msg.data_len > 0) {
355 error = copyin(req->msg.data, &kreq->ir_request[7],
356 req->msg.data_len);
360 kreq->ir_request[req->msg.data_len + 7] =
362 req->msg.data_len + 3);
367 kreq = ipmi_alloc_request(dev, req->msgid,
371 kreq->ir_ipmb_addr = IPMI_ADDR(req->msg.netfn, 0);
372 kreq->ir_ipmb_command = req->msg.cmd;
504 ipmi_init_request(struct ipmi_request *req, struct ipmi_device *dev, long msgid,
508 req->ir_owner = dev;
509 req->ir_msgid = msgid;
510 req->ir_addr = addr;
511 req->ir_command = command;
513 req->ir_request = (char *)&req[1];
514 req->ir_requestlen = requestlen;
517 req->ir_reply = (char *)&req[1] + requestlen;
518 req->ir_replybuflen = replylen;
527 struct ipmi_request *req;
529 req = malloc(sizeof(struct ipmi_request) + requestlen + replylen,
531 ipmi_init_request(req, dev, msgid, addr, command, requestlen, replylen);
532 return (req);
537 ipmi_free_request(struct ipmi_request *req)
540 free(req, M_IPMI);
545 ipmi_complete_request(struct ipmi_softc *sc, struct ipmi_request *req)
555 if (req->ir_owner == NULL)
556 wakeup(req);
558 dev = req->ir_owner;
559 TAILQ_INSERT_TAIL(&dev->ipmi_completed_requests, req, ir_link);
568 ipmi_submit_driver_request(struct ipmi_softc *sc, struct ipmi_request *req)
571 return (sc->ipmi_driver_request(sc, req));
583 struct ipmi_request *req;
593 req = TAILQ_FIRST(&sc->ipmi_pending_requests_highpri);
594 if (req != NULL)
595 TAILQ_REMOVE(&sc->ipmi_pending_requests_highpri, req, ir_link);
597 req = TAILQ_FIRST(&sc->ipmi_pending_requests);
598 TAILQ_REMOVE(&sc->ipmi_pending_requests, req, ir_link);
600 return (req);
605 ipmi_polled_enqueue_request(struct ipmi_softc *sc, struct ipmi_request *req)
610 TAILQ_INSERT_TAIL(&sc->ipmi_pending_requests, req, ir_link);
616 ipmi_polled_enqueue_request_highpri(struct ipmi_softc *sc, struct ipmi_request *req)
621 TAILQ_INSERT_TAIL(&sc->ipmi_pending_requests_highpri, req, ir_link);
633 struct ipmi_request *req;
636 IPMI_ALLOC_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0),
638 error = ipmi_submit_driver_request(sc, req);
641 } else if (req->ir_compcode == 0x80) {
643 } else if (req->ir_compcode != 0) {
645 req->ir_compcode);
654 struct ipmi_request *req;
660 IPMI_ALLOC_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0),
663 req->ir_request[0] = IPMI_SET_WD_TIMER_DONT_STOP
665 req->ir_request[1] = (wd_timer_actions & 0xff);
666 req->ir_request[2] = min(0xff,
668 req->ir_request[3] = 0; /* Timer use */
669 req->ir_request[4] = (sec * 10) & 0xff;
670 req->ir_request[5] = (sec * 10) >> 8;
672 req->ir_request[0] = IPMI_SET_WD_TIMER_SMS_OS;
673 req->ir_request[1] = 0;
674 req->ir_request[2] = 0;
675 req->ir_request[3] = 0; /* Timer use */
676 req->ir_request[4] = 0;
677 req->ir_request[5] = 0;
679 error = ipmi_submit_driver_request(sc, req);
682 } else if (req->ir_compcode != 0) {
684 req->ir_compcode);
796 struct ipmi_request *req;
810 IPMI_ALLOC_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_CHASSIS_REQUEST, 0),
812 req->ir_request[0] = IPMI_CC_POWER_CYCLE;
814 ipmi_submit_driver_request(sc, req);
816 if (req->ir_error != 0 || req->ir_compcode != 0) {
818 req->ir_error, req->ir_compcode);
835 struct ipmi_request *req;
858 IPMI_ALLOC_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0),
861 error = ipmi_submit_driver_request(sc, req);
868 } else if (req->ir_compcode != 0) {
871 req->ir_compcode);
873 } else if (req->ir_replylen < 5) {
875 req->ir_replylen);
881 req->ir_reply[1] & 0x0f,
882 req->ir_reply[2] & 0x7f, req->ir_reply[3] >> 4, req->ir_reply[3] & 0x0f,
883 req->ir_reply[4] & 0x0f, req->ir_reply[4] >> 4, req->ir_reply[5]);
885 sc->ipmi_dev_support = req->ir_reply[5];
887 IPMI_INIT_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0),
890 ipmi_submit_driver_request(sc, req);
893 if (req->ir_compcode == 0xc0) {
896 if (req->ir_compcode == 0xc1) {
901 IPMI_INIT_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0),
903 req->ir_request[0] = i;
905 error = ipmi_submit_driver_request(sc, req);
907 if (error != 0 || req->ir_compcode != 0)
917 IPMI_INIT_DRIVER_REQUEST(req, IPMI_ADDR(IPMI_APP_REQUEST, 0),
920 error = ipmi_submit_driver_request(sc, req);
922 if (error == 0 && req->ir_compcode == 0x00) {