Lines Matching refs:sc

42 void tws_q_insert_tail(struct tws_softc *sc, struct tws_request *req, 
44 struct tws_request * tws_q_remove_request(struct tws_softc *sc,
46 struct tws_request *tws_q_remove_head(struct tws_softc *sc, u_int8_t q_type );
47 void tws_q_insert_head(struct tws_softc *sc, struct tws_request *req,
49 struct tws_request * tws_q_remove_tail(struct tws_softc *sc, u_int8_t q_type );
52 struct tws_sense *tws_find_sense_from_mfa(struct tws_softc *sc, u_int64_t mfa);
85 struct tws_softc *sc, char *desc, u_int64_t val1, u_int64_t val2)
88 struct tws_trace_rec *rec = (struct tws_trace_rec *)sc->trace_q.q;
92 head = sc->trace_q.head;
93 tail = sc->trace_q.tail;
104 tail = (tail+1) % sc->trace_q.depth;
107 sc->trace_q.overflow = 1;
108 sc->trace_q.head = (head+1) % sc->trace_q.depth;
110 sc->trace_q.tail = tail;
113 tws_circular_q_insert(sc, &sc->trace_q,
116 if ( sc->is64bit )
129 tws_log(struct tws_softc *sc, int index)
131 device_printf((sc)->tws_dev, array[index].fmt,
163 tws_write_reg(struct tws_softc *sc, int offset,
166 bus_space_tag_t bus_tag = sc->bus_tag;
167 bus_space_handle_t bus_handle = sc->bus_handle;
180 tws_read_reg(struct tws_softc *sc, int offset, int size)
182 bus_space_tag_t bus_tag = sc->bus_tag;
183 bus_space_handle_t bus_handle = sc->bus_handle;
199 tws_init_qs(struct tws_softc *sc)
202 mtx_lock(&sc->q_lock);
204 sc->q_head[i] = NULL;
205 sc->q_tail[i] = NULL;
207 mtx_unlock(&sc->q_lock);
213 tws_insert2_empty_q(struct tws_softc *sc, struct tws_request *req,
217 mtx_assert(&sc->q_lock, MA_OWNED);
219 sc->q_head[q_type] = sc->q_tail[q_type] = req;
225 tws_q_insert_head(struct tws_softc *sc, struct tws_request *req,
229 mtx_assert(&sc->q_lock, MA_OWNED);
230 if ( sc->q_head[q_type] == NULL ) {
231 tws_insert2_empty_q(sc, req, q_type);
233 req->next = sc->q_head[q_type];
235 sc->q_head[q_type]->prev = req;
236 sc->q_head[q_type] = req;
243 tws_q_insert_tail(struct tws_softc *sc, struct tws_request *req,
247 mtx_assert(&sc->q_lock, MA_OWNED);
248 if ( sc->q_tail[q_type] == NULL ) {
249 tws_insert2_empty_q(sc, req, q_type);
251 req->prev = sc->q_tail[q_type];
253 sc->q_tail[q_type]->next = req;
254 sc->q_tail[q_type] = req;
261 tws_q_remove_head(struct tws_softc *sc, u_int8_t q_type )
266 mtx_assert(&sc->q_lock, MA_OWNED);
267 r = sc->q_head[q_type];
272 sc->q_head[q_type] = sc->q_tail[q_type] = NULL;
274 sc->q_head[q_type] = r->next;
284 tws_q_remove_tail(struct tws_softc *sc, u_int8_t q_type )
289 mtx_assert(&sc->q_lock, MA_OWNED);
290 r = sc->q_tail[q_type];
295 sc->q_head[q_type] = sc->q_tail[q_type] = NULL;
297 sc->q_tail[q_type] = r->prev;
308 tws_q_remove_request(struct tws_softc *sc, struct tws_request *req,
314 mtx_assert(&sc->q_lock, MA_OWNED);
316 TWS_TRACE_DEBUG(sc, "null req", 0, q_type);
320 if ( req == sc->q_head[q_type] )
321 return(tws_q_remove_head(sc, q_type));
322 if ( req == sc->q_tail[q_type] )
323 return(tws_q_remove_tail(sc, q_type));
331 TWS_TRACE_DEBUG(sc, "invalid req", 0, q_type);
336 r = sc->q_head[q_type];
344 TWS_TRACE_DEBUG(sc, "req not in q", 0, req->request_id);
357 tws_find_sense_from_mfa(struct tws_softc *sc, u_int64_t mfa)
361 TWS_TRACE_DEBUG(sc, "entry",sc,mfa);
363 i = (mfa - sc->dma_mem_phys) / sizeof(struct tws_command_packet);
365 s = &sc->sense_bufs[i];
370 TWS_TRACE_DEBUG(sc, "return null",0,mfa);
382 struct tws_softc *sc = (struct tws_softc *)arg;
384 TWS_TRACE(sc, "reqs(in, out)", sc->stats.reqs_in, sc->stats.reqs_out);
385 TWS_TRACE(sc, "reqs(err, intrs)", sc->stats.reqs_errored
386 , sc->stats.num_intrs);
387 TWS_TRACE(sc, "reqs(ioctls, scsi)", sc->stats.ioctls
388 , sc->stats.scsi_ios);
389 callout_reset(&sc->stats_timer, 300 * hz, tws_print_stats, sc);