| From 17fe56b3294003385f4706221ad468bc0eb991dc Mon Sep 17 00:00:00 2001 |
| From: Felipe Balbi <felipe.balbi@linux.intel.com> |
| Date: Mon, 23 Jan 2017 14:20:09 +0200 |
| Subject: [PATCH 196/255] usb: host: xhci: use slightly better list helpers |
| |
| Replace list_entry() with list_first_entry() and list_for_each() with |
| list_for_each_entry(). This makes the code slightly more readable. |
| |
| Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> |
| Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| (cherry picked from commit 04861f83367eaa3f32e3a1433afe8274e9a5f7f1) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/usb/host/xhci-ring.c | 19 ++++++++++--------- |
| 1 file changed, 10 insertions(+), 9 deletions(-) |
| |
| --- a/drivers/usb/host/xhci-ring.c |
| +++ b/drivers/usb/host/xhci-ring.c |
| @@ -689,7 +689,6 @@ static void xhci_handle_cmd_stop_ep(stru |
| unsigned int ep_index; |
| struct xhci_ring *ep_ring; |
| struct xhci_virt_ep *ep; |
| - struct list_head *entry; |
| struct xhci_td *cur_td = NULL; |
| struct xhci_td *last_unlinked_td; |
| |
| @@ -706,6 +705,8 @@ static void xhci_handle_cmd_stop_ep(stru |
| memset(&deq_state, 0, sizeof(deq_state)); |
| ep_index = TRB_TO_EP_INDEX(le32_to_cpu(trb->generic.field[3])); |
| ep = &xhci->devs[slot_id]->eps[ep_index]; |
| + last_unlinked_td = list_last_entry(&ep->cancelled_td_list, |
| + struct xhci_td, cancelled_td_list); |
| |
| if (list_empty(&ep->cancelled_td_list)) { |
| xhci_stop_watchdog_timer_in_irq(xhci, ep); |
| @@ -719,8 +720,7 @@ static void xhci_handle_cmd_stop_ep(stru |
| * it. We're also in the event handler, so we can't get re-interrupted |
| * if another Stop Endpoint command completes |
| */ |
| - list_for_each(entry, &ep->cancelled_td_list) { |
| - cur_td = list_entry(entry, struct xhci_td, cancelled_td_list); |
| + list_for_each_entry(cur_td, &ep->cancelled_td_list, cancelled_td_list) { |
| xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, |
| "Removing canceled TD starting at 0x%llx (dma).", |
| (unsigned long long)xhci_trb_virt_to_dma( |
| @@ -762,7 +762,7 @@ remove_finished_td: |
| */ |
| list_del_init(&cur_td->td_list); |
| } |
| - last_unlinked_td = cur_td; |
| + |
| xhci_stop_watchdog_timer_in_irq(xhci, ep); |
| |
| /* If necessary, queue a Set Transfer Ring Dequeue Pointer command */ |
| @@ -784,7 +784,7 @@ remove_finished_td: |
| * So stop when we've completed the URB for the last TD we unlinked. |
| */ |
| do { |
| - cur_td = list_entry(ep->cancelled_td_list.next, |
| + cur_td = list_first_entry(&ep->cancelled_td_list, |
| struct xhci_td, cancelled_td_list); |
| list_del_init(&cur_td->cancelled_td_list); |
| |
| @@ -1338,7 +1338,7 @@ static void handle_cmd_completion(struct |
| return; |
| } |
| |
| - cmd = list_entry(xhci->cmd_list.next, struct xhci_command, cmd_list); |
| + cmd = list_first_entry(&xhci->cmd_list, struct xhci_command, cmd_list); |
| |
| cancel_delayed_work(&xhci->cmd_timer); |
| |
| @@ -1429,8 +1429,8 @@ static void handle_cmd_completion(struct |
| |
| /* restart timer if this wasn't the last command */ |
| if (!list_is_singular(&xhci->cmd_list)) { |
| - xhci->current_cmd = list_entry(cmd->cmd_list.next, |
| - struct xhci_command, cmd_list); |
| + xhci->current_cmd = list_first_entry(&cmd->cmd_list, |
| + struct xhci_command, cmd_list); |
| xhci_mod_cmd_timer(xhci, XHCI_CMD_DEFAULT_TIMEOUT); |
| } else if (xhci->current_cmd == cmd) { |
| xhci->current_cmd = NULL; |
| @@ -2424,7 +2424,8 @@ static int handle_tx_event(struct xhci_h |
| goto cleanup; |
| } |
| |
| - td = list_entry(ep_ring->td_list.next, struct xhci_td, td_list); |
| + td = list_first_entry(&ep_ring->td_list, struct xhci_td, |
| + td_list); |
| if (ep->skip) |
| td_num--; |
| |