svn commit: r213149 - user/weongyo/usb/sys/dev/usb
Weongyo Jeong
weongyo at FreeBSD.org
Sat Sep 25 00:01:56 UTC 2010
Author: weongyo
Date: Sat Sep 25 00:01:55 2010
New Revision: 213149
URL: http://svn.freebsd.org/changeset/base/213149
Log:
Records the buffer length also at struct usb_page_cahce. It'd be used
to check the buffer boundary.
Modified:
user/weongyo/usb/sys/dev/usb/usb_busdma.c
user/weongyo/usb/sys/dev/usb/usb_busdma.h
user/weongyo/usb/sys/dev/usb/usb_transfer.c
Modified: user/weongyo/usb/sys/dev/usb/usb_busdma.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/usb_busdma.c Fri Sep 24 23:56:25 2010 (r213148)
+++ user/weongyo/usb/sys/dev/usb/usb_busdma.c Sat Sep 25 00:01:55 2010 (r213149)
@@ -503,6 +503,7 @@ usb_pc_alloc_mem(struct usb_page_cache *
}
/* setup page cache */
pc->buffer = ptr;
+ pc->buflen = size;
pc->page_start = pg;
pc->page_offset_buf = 0;
pc->page_offset_end = size;
@@ -536,6 +537,7 @@ usb_pc_alloc_mem(struct usb_page_cache *
error:
/* reset most of the page cache */
pc->buffer = NULL;
+ pc->buflen = 0;
pc->page_start = NULL;
pc->page_offset_buf = 0;
pc->page_offset_end = 0;
@@ -559,6 +561,7 @@ usb_pc_free_mem(struct usb_page_cache *p
bus_dmamem_free(pc->tag, pc->buffer, pc->map);
pc->buffer = NULL;
+ pc->buflen = 0;
}
}
Modified: user/weongyo/usb/sys/dev/usb/usb_busdma.h
==============================================================================
--- user/weongyo/usb/sys/dev/usb/usb_busdma.h Fri Sep 24 23:56:25 2010 (r213148)
+++ user/weongyo/usb/sys/dev/usb/usb_busdma.h Sat Sep 25 00:01:55 2010 (r213149)
@@ -90,6 +90,7 @@ struct usb_page_cache {
#endif
struct usb_dma_parent_tag *tag_parent; /* always set */
void *buffer; /* virtual buffer pointer */
+ int buflen;
#if USB_HAVE_BUSDMA
usb_size_t page_offset_buf;
usb_size_t page_offset_end;
Modified: user/weongyo/usb/sys/dev/usb/usb_transfer.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/usb_transfer.c Fri Sep 24 23:56:25 2010 (r213148)
+++ user/weongyo/usb/sys/dev/usb/usb_transfer.c Sat Sep 25 00:01:55 2010 (r213149)
@@ -284,6 +284,7 @@ usbd_transfer_setup_sub_malloc(struct us
return (1); /* failure */
}
pc->buffer = USB_ADD_BYTES(buf, y * size);
+ pc->buflen = size;
pc->page_start = pg;
mtx_lock(pc->tag_parent->mtx);
@@ -1888,6 +1889,7 @@ usbd_xfer_set_frame_data(struct usb_xfer
/* set virtual address to load and length */
xfer->frbuffers[frindex].buffer = ptr;
+ xfer->frbuffers[frindex].buflen = len;
usbd_xfer_set_frame_len(xfer, frindex, len);
}
@@ -1934,6 +1936,7 @@ usbd_xfer_set_frame_offset(struct usb_xf
/* set virtual address to load */
xfer->frbuffers[frindex].buffer =
USB_ADD_BYTES(xfer->local_buffer, offset);
+ xfer->frbuffers[frindex].buflen = xfer->local_buflen - offset;
}
void
More information about the svn-src-user
mailing list