summaryrefslogtreecommitdiff
path: root/sys/dev/usb
diff options
context:
space:
mode:
authorMarcus Glocker <mglocker@cvs.openbsd.org>2021-09-04 10:19:29 +0000
committerMarcus Glocker <mglocker@cvs.openbsd.org>2021-09-04 10:19:29 +0000
commitcdc3797ab97c08fbff5d27ef5f0e3f6addd25d52 (patch)
tree3bf13a7eb2438249a5edfc3dbd84658f3da6341a /sys/dev/usb
parent4b24b6ac9f7ac41d86b9e35a9f41234e71a69a8d (diff)
Revert list_move() to list_move_tail() change from last commit since it
turned out that it has a negative impact to isoc transfers timing with our driver implementation.
Diffstat (limited to 'sys/dev/usb')
-rw-r--r--sys/dev/usb/dwc2/dwc2_hcd.c12
-rw-r--r--sys/dev/usb/dwc2/dwc2_hcdddma.c4
-rw-r--r--sys/dev/usb/dwc2/dwc2_hcdintr.c10
-rw-r--r--sys/dev/usb/dwc2/dwc2_hcdqueue.c8
4 files changed, 15 insertions, 19 deletions
diff --git a/sys/dev/usb/dwc2/dwc2_hcd.c b/sys/dev/usb/dwc2/dwc2_hcd.c
index 9881c8953f9..8da32b4982a 100644
--- a/sys/dev/usb/dwc2/dwc2_hcd.c
+++ b/sys/dev/usb/dwc2/dwc2_hcd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dwc2_hcd.c,v 1.24 2021/07/27 13:36:59 mglocker Exp $ */
+/* $OpenBSD: dwc2_hcd.c,v 1.25 2021/09/04 10:19:28 mglocker Exp $ */
/* $NetBSD: dwc2_hcd.c,v 1.15 2014/11/24 10:14:14 skrll Exp $ */
/*
@@ -932,8 +932,7 @@ enum dwc2_transaction_type dwc2_hcd_select_transactions(
* periodic assigned schedule
*/
qh_ptr = qh_ptr->next;
- list_move_tail(&qh->qh_list_entry,
- &hsotg->periodic_sched_assigned);
+ list_move(&qh->qh_list_entry, &hsotg->periodic_sched_assigned);
ret_val = DWC2_TRANSACTION_PERIODIC;
}
@@ -982,7 +981,7 @@ enum dwc2_transaction_type dwc2_hcd_select_transactions(
* non-periodic active schedule
*/
qh_ptr = qh_ptr->next;
- list_move_tail(&qh->qh_list_entry,
+ list_move(&qh->qh_list_entry,
&hsotg->non_periodic_sched_active);
if (ret_val == DWC2_TRANSACTION_NONE)
@@ -1026,8 +1025,7 @@ STATIC int dwc2_queue_transaction(struct dwc2_hsotg *hsotg,
if (chan->do_split)
/* Put ourselves on the list to keep order straight */
- list_move_tail(&chan->split_order_list_entry,
- &hsotg->split_order);
+ list_move(&chan->split_order_list_entry, &hsotg->split_order);
if (hsotg->core_params->dma_enable > 0 && chan->qh) {
if (hsotg->core_params->dma_desc_enable > 0) {
@@ -1161,7 +1159,7 @@ STATIC void dwc2_process_periodic_channels(struct dwc2_hsotg *hsotg)
* Move the QH from the periodic assigned schedule to
* the periodic queued schedule
*/
- list_move_tail(&qh->qh_list_entry,
+ list_move(&qh->qh_list_entry,
&hsotg->periodic_sched_queued);
/* done queuing high bandwidth */
diff --git a/sys/dev/usb/dwc2/dwc2_hcdddma.c b/sys/dev/usb/dwc2/dwc2_hcdddma.c
index db1b6325bfa..a138cb2a2ff 100644
--- a/sys/dev/usb/dwc2/dwc2_hcdddma.c
+++ b/sys/dev/usb/dwc2/dwc2_hcdddma.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dwc2_hcdddma.c,v 1.18 2021/07/27 13:36:59 mglocker Exp $ */
+/* $OpenBSD: dwc2_hcdddma.c,v 1.19 2021/09/04 10:19:28 mglocker Exp $ */
/* $NetBSD: dwc2_hcdddma.c,v 1.6 2014/04/03 06:34:58 skrll Exp $ */
/*
@@ -1317,7 +1317,7 @@ void dwc2_hcd_complete_xfer_ddma(struct dwc2_hsotg *hsotg,
dwc2_hcd_qh_unlink(hsotg, qh);
} else {
/* Keep in assigned schedule to continue transfer */
- list_move_tail(&qh->qh_list_entry,
+ list_move(&qh->qh_list_entry,
&hsotg->periodic_sched_assigned);
/*
* If channel has been halted during giveback of urb
diff --git a/sys/dev/usb/dwc2/dwc2_hcdintr.c b/sys/dev/usb/dwc2/dwc2_hcdintr.c
index c9e414627c4..871564a984b 100644
--- a/sys/dev/usb/dwc2/dwc2_hcdintr.c
+++ b/sys/dev/usb/dwc2/dwc2_hcdintr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dwc2_hcdintr.c,v 1.12 2021/07/27 13:36:59 mglocker Exp $ */
+/* $OpenBSD: dwc2_hcdintr.c,v 1.13 2021/09/04 10:19:28 mglocker Exp $ */
/* $NetBSD: dwc2_hcdintr.c,v 1.11 2014/11/24 10:14:14 skrll Exp $ */
/*
@@ -154,8 +154,8 @@ STATIC void dwc2_sof_intr(struct dwc2_hsotg *hsotg)
* Move QH to the ready list to be executed next
* (micro)frame
*/
- list_move_tail(&qh->qh_list_entry,
- &hsotg->periodic_sched_ready);
+ list_move(&qh->qh_list_entry,
+ &hsotg->periodic_sched_ready);
}
tr_type = dwc2_hcd_select_transactions(hsotg);
if (tr_type != DWC2_TRANSACTION_NONE)
@@ -865,8 +865,8 @@ STATIC void dwc2_halt_channel(struct dwc2_hsotg *hsotg,
* halt to be queued when the periodic schedule is
* processed.
*/
- list_move_tail(&chan->qh->qh_list_entry,
- &hsotg->periodic_sched_assigned);
+ list_move(&chan->qh->qh_list_entry,
+ &hsotg->periodic_sched_assigned);
/*
* Make sure the Periodic Tx FIFO Empty interrupt is
diff --git a/sys/dev/usb/dwc2/dwc2_hcdqueue.c b/sys/dev/usb/dwc2/dwc2_hcdqueue.c
index 91c105a1b9e..172e4185204 100644
--- a/sys/dev/usb/dwc2/dwc2_hcdqueue.c
+++ b/sys/dev/usb/dwc2/dwc2_hcdqueue.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dwc2_hcdqueue.c,v 1.11 2021/07/27 13:36:59 mglocker Exp $ */
+/* $OpenBSD: dwc2_hcdqueue.c,v 1.12 2021/09/04 10:19:28 mglocker Exp $ */
/* $NetBSD: dwc2_hcdqueue.c,v 1.11 2014/09/03 10:00:08 skrll Exp $ */
/*
@@ -831,11 +831,9 @@ void dwc2_hcd_qh_deactivate(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh,
dwc2_frame_num_le(qh->sched_frame, frame_number)) ||
(hsotg->core_params->uframe_sched <= 0 &&
qh->sched_frame == frame_number))
- list_move_tail(&qh->qh_list_entry,
- &hsotg->periodic_sched_ready);
+ list_move(&qh->qh_list_entry, &hsotg->periodic_sched_ready);
else
- list_move_tail(&qh->qh_list_entry,
- &hsotg->periodic_sched_inactive);
+ list_move(&qh->qh_list_entry, &hsotg->periodic_sched_inactive);
}
/**