Lines Matching defs:qset

61  * Return the 'period' to use for this qset.  The minimum interval for
65 static int qset_get_period(struct whc *whc, struct whc_qset *qset)
67 uint8_t bInterval = qset->ep->desc.bInterval;
76 static void qset_insert_in_sw_list(struct whc *whc, struct whc_qset *qset)
80 period = qset_get_period(whc, qset);
82 qset_clear(whc, qset);
83 list_move(&qset->list_node, &whc->periodic_list[period]);
84 qset->in_sw_list = true;
87 static void pzl_qset_remove(struct whc *whc, struct whc_qset *qset)
89 list_move(&qset->list_node, &whc->periodic_removed_list);
90 qset->in_hw_list = false;
91 qset->in_sw_list = false;
96 * in a qset.
103 static enum whc_update pzl_process_qset(struct whc *whc, struct whc_qset *qset)
108 while (qset->ntds) {
112 t = qset->td_start;
113 td = &qset->qtd[qset->td_start];
124 process_halted_qtd(whc, qset, td);
126 because the qset was either removed or
133 process_inactive_qtd(whc, qset, td);
136 if (!qset->remove)
137 update |= qset_add_qtds(whc, qset);
141 * If there are no qTDs in this qset, remove it from the PZL.
143 if (qset->remove && qset->ntds == 0) {
144 pzl_qset_remove(whc, qset);
209 struct whc_qset *qset, *t;
214 list_for_each_entry_safe(qset, t, &whc->periodic_list[period], list_node) {
215 whc_qset_set_link_ptr(&qset->qh.link, tmp_qh);
216 tmp_qh = qset->qset_dma;
217 qset->in_hw_list = true;
226 * Process each qset in the PZL in turn and then signal the WHC that
234 struct whc_qset *qset, *t;
241 list_for_each_entry_safe(qset, t, &whc->periodic_list[period], list_node) {
242 if (!qset->in_hw_list)
244 update |= pzl_process_qset(whc, qset);
264 * If the qset was to be reset, do so and reinsert it into the
269 list_for_each_entry_safe(qset, t, &whc->periodic_removed_list, list_node) {
270 qset_remove_complete(whc, qset);
271 if (qset->reset) {
272 qset_reset(whc, qset);
273 if (!list_empty(&qset->stds)) {
274 qset_insert_in_sw_list(whc, qset);
289 * The qset for the endpoint is obtained and the urb queued on to it.
295 struct whc_qset *qset;
307 qset = get_qset(whc, urb, GFP_ATOMIC);
308 if (qset == NULL)
311 err = qset_add_urb(whc, qset, urb, GFP_ATOMIC);
313 if (!qset->in_sw_list && !qset->remove)
314 qset_insert_in_sw_list(whc, qset);
327 * pzl_urb_dequeue - remove an URB (qset) from the periodic list
333 * queue, otherwise the qset must be removed so the qTDs can be safely
339 struct whc_qset *qset = wurb->qset;
351 list_for_each_entry_safe(std, t, &qset->stds, list_node) {
357 std->qtd = NULL; /* so this std is re-added when the qset is */
361 pzl_qset_remove(whc, qset);
367 qset_remove_urb(whc, qset, urb, status);
375 * pzl_qset_delete - delete a qset from the PZL
377 void pzl_qset_delete(struct whc *whc, struct whc_qset *qset)
379 qset->remove = 1;
381 qset_delete(whc, qset);