Lines Matching refs:req

61 	struct ipmi_request *req;  in ipmi_alloc_request()  local
63 req = kmem_zalloc(sizeof (struct ipmi_request) + requestlen + replylen, in ipmi_alloc_request()
65 req->ir_sz = sizeof (struct ipmi_request) + requestlen + replylen; in ipmi_alloc_request()
66 req->ir_owner = dev; in ipmi_alloc_request()
67 req->ir_msgid = msgid; in ipmi_alloc_request()
68 req->ir_addr = addr; in ipmi_alloc_request()
69 req->ir_command = command; in ipmi_alloc_request()
71 req->ir_request = (uchar_t *)&req[1]; in ipmi_alloc_request()
72 req->ir_requestlen = requestlen; in ipmi_alloc_request()
75 req->ir_reply = (uchar_t *)&req[1] + requestlen; in ipmi_alloc_request()
76 req->ir_replybuflen = replylen; in ipmi_alloc_request()
79 cv_init(&req->ir_cv, NULL, CV_DEFAULT, NULL); in ipmi_alloc_request()
80 req->ir_status = IRS_ALLOCATED; in ipmi_alloc_request()
82 return (req); in ipmi_alloc_request()
87 ipmi_free_request(struct ipmi_request *req) in ipmi_free_request() argument
89 if (req == NULL) in ipmi_free_request()
92 cv_destroy(&req->ir_cv); in ipmi_free_request()
94 kmem_free(req, req->ir_sz); in ipmi_free_request()
100 ipmi_complete_request(struct ipmi_softc *sc, struct ipmi_request *req) in ipmi_complete_request() argument
106 if (req->ir_status == IRS_CANCELED) { in ipmi_complete_request()
107 ASSERT(req->ir_owner == NULL); in ipmi_complete_request()
108 ipmi_free_request(req); in ipmi_complete_request()
112 req->ir_status = IRS_COMPLETED; in ipmi_complete_request()
118 if (req->ir_owner == NULL) { in ipmi_complete_request()
119 cv_signal(&req->ir_cv); in ipmi_complete_request()
121 dev = req->ir_owner; in ipmi_complete_request()
122 TAILQ_INSERT_TAIL(&dev->ipmi_completed_requests, req, ir_link); in ipmi_complete_request()
139 struct ipmi_request *req = *preq; in ipmi_submit_driver_request() local
141 ASSERT(req->ir_owner == NULL); in ipmi_submit_driver_request()
144 error = sc->ipmi_enqueue_request(sc, req); in ipmi_submit_driver_request()
151 while (req->ir_status != IRS_COMPLETED && error >= 0) in ipmi_submit_driver_request()
153 cv_wait(&req->ir_cv, &sc->ipmi_lock); in ipmi_submit_driver_request()
155 error = cv_timedwait(&req->ir_cv, &sc->ipmi_lock, in ipmi_submit_driver_request()
158 switch (req->ir_status) { in ipmi_submit_driver_request()
160 TAILQ_REMOVE(&sc->ipmi_pending_requests, req, ir_link); in ipmi_submit_driver_request()
161 req->ir_status = IRS_CANCELED; in ipmi_submit_driver_request()
165 req->ir_status = IRS_CANCELED; in ipmi_submit_driver_request()
170 error = req->ir_error; in ipmi_submit_driver_request()
190 struct ipmi_request *req; in ipmi_dequeue_request() local
199 req = TAILQ_FIRST(&sc->ipmi_pending_requests); in ipmi_dequeue_request()
200 TAILQ_REMOVE(&sc->ipmi_pending_requests, req, ir_link); in ipmi_dequeue_request()
201 req->ir_status = IRS_PROCESSED; in ipmi_dequeue_request()
203 if (req->ir_owner != NULL) in ipmi_dequeue_request()
204 req->ir_owner->ipmi_status |= IPMI_BUSY; in ipmi_dequeue_request()
206 return (req); in ipmi_dequeue_request()
210 ipmi_polled_enqueue_request(struct ipmi_softc *sc, struct ipmi_request *req) in ipmi_polled_enqueue_request() argument
215 TAILQ_INSERT_TAIL(&sc->ipmi_pending_requests, req, ir_link); in ipmi_polled_enqueue_request()
216 req->ir_status = IRS_QUEUED; in ipmi_polled_enqueue_request()
233 struct ipmi_request *req; in ipmi_startup() local
249 req = ipmi_alloc_driver_request(IPMI_ADDR(IPMI_APP_REQUEST, 0), in ipmi_startup()
252 error = ipmi_submit_driver_request(sc, &req, MAX_TIMEOUT); in ipmi_startup()
255 ipmi_free_request(req); in ipmi_startup()
259 ipmi_free_request(req); in ipmi_startup()
261 } else if (req->ir_compcode != 0) { in ipmi_startup()
264 req->ir_compcode); in ipmi_startup()
265 ipmi_free_request(req); in ipmi_startup()
267 } else if (req->ir_replylen < 5) { in ipmi_startup()
269 req->ir_replylen); in ipmi_startup()
270 ipmi_free_request(req); in ipmi_startup()
276 req->ir_reply[1] & 0x0f, req->ir_reply[2] & 0x7f, in ipmi_startup()
277 req->ir_reply[3] >> 4, req->ir_reply[3] & 0x0f, in ipmi_startup()
278 req->ir_reply[4] & 0x0f, req->ir_reply[4] >> 4); in ipmi_startup()
280 ipmi_free_request(req); in ipmi_startup()
282 req = ipmi_alloc_driver_request(IPMI_ADDR(IPMI_APP_REQUEST, 0), in ipmi_startup()
285 if ((error = ipmi_submit_driver_request(sc, &req, 0)) != 0) { in ipmi_startup()
287 ipmi_free_request(req); in ipmi_startup()
292 if (req->ir_compcode == 0xc0) { in ipmi_startup()
295 if (req->ir_compcode == 0xc1) { in ipmi_startup()
298 ipmi_free_request(req); in ipmi_startup()
301 req = ipmi_alloc_driver_request(IPMI_ADDR(IPMI_APP_REQUEST, 0), in ipmi_startup()
303 req->ir_request[0] = (uchar_t)i; in ipmi_startup()
305 if (ipmi_submit_driver_request(sc, &req, 0) != 0) { in ipmi_startup()
306 ipmi_free_request(req); in ipmi_startup()
310 if (req->ir_compcode != 0) { in ipmi_startup()
311 ipmi_free_request(req); in ipmi_startup()
314 ipmi_free_request(req); in ipmi_startup()
319 req = ipmi_alloc_driver_request(IPMI_ADDR(IPMI_APP_REQUEST, 0), in ipmi_startup()
322 if ((error = ipmi_submit_driver_request(sc, &req, 0)) != 0) { in ipmi_startup()
324 ipmi_free_request(req); in ipmi_startup()
328 if (req->ir_compcode == 0x00) { in ipmi_startup()
336 ipmi_free_request(req); in ipmi_startup()