Lines Matching defs:req

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