Changeset 1ed3eb4 in mainline for uspace/drv/bus/usb/xhci/transfers.c
- Timestamp:
- 2018-01-13T19:13:04Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2489353
- Parents:
- 001778c
- git-author:
- Ondřej Hlavatý <aearsis@…> (2018-01-13 19:12:34)
- git-committer:
- Ondřej Hlavatý <aearsis@…> (2018-01-13 19:13:04)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/xhci/transfers.c
r001778c r1ed3eb4 258 258 259 259 const usb_endpoint_t ep_num = ep_dci / 2; 260 xhci_endpoint_t *ep = xhci_device_get_endpoint(dev, ep_num); 261 if (!ep) { 262 usb_log_error("Transfer event on dropped endpoint %u of device " 263 XHCI_DEV_FMT, ep_num, XHCI_DEV_ARGS(*dev)); 260 const usb_endpoint_t dir = ep_dci % 2 ? USB_DIRECTION_IN : USB_DIRECTION_OUT; 261 endpoint_t *ep_base = bus_find_endpoint(&dev->base, ep_num, dir); 262 if (!ep_base) { 263 usb_log_error("Transfer event on dropped endpoint %u %s of device " 264 XHCI_DEV_FMT, ep_num, usb_str_direction(dir), XHCI_DEV_ARGS(*dev)); 264 265 return ENOENT; 265 266 } 266 // No need to add reference for endpoint, it is held by the transfer batch.267 xhci_endpoint_t *ep = xhci_endpoint_get(ep_base); 267 268 268 269 /* FIXME: This is racy. Do we care? */ … … 270 271 271 272 if (ep->base.transfer_type == USB_TRANSFER_ISOCHRONOUS) { 272 return isoch_handle_transfer_event(hc, ep, trb); 273 isoch_handle_transfer_event(hc, ep, trb); 274 endpoint_del_ref(&ep->base); 275 return EOK; 273 276 } 274 277 … … 277 280 if (!batch) { 278 281 fibril_mutex_unlock(&ep->base.guard); 282 endpoint_del_ref(&ep->base); 279 283 return ENOENT; 280 284 } … … 305 309 306 310 usb_transfer_batch_finish(batch); 311 endpoint_del_ref(&ep->base); 307 312 return EOK; 308 313 }
Note:
See TracChangeset
for help on using the changeset viewer.