func: int oz_usb_send_isoc(void *hpd, u8 ep_num, struct urb *urb) struct oz_usb_ctx * usb_ctx = hpd ; struct oz_pd * pd = usb_ctx -> pd ; struct oz_elt_buf * eb ; int i ; int hdr_size ; u8 * data ; struct usb_iso_packet_descriptor * desc ; if ( pd -> mode & OZ_F_ISOC_NO_ELTS )  for (i = 0; i < urb->number_of_packets; i++) u8 * data ; hdr_size = sizeof ( struct oz_isoc_fixed ) - 1; eb = & pd -> elt_buff; i = 0; while ( i < urb -> number_of_packets )  struct oz_elt_info * ei = oz_elt_info_alloc ( eb ) ; struct oz_elt * elt ; int unit_size ; int rem ; if ( ei == NULL )  rem = MAX_ISOC_FIXED_DATA; elt = ( struct oz_elt * ) ei -> data; unit_size = urb -> iso_frame_desc [ i ] . length; data = ( ( u8 * ) ( elt + 1 ) ) + hdr_size; while ( i < urb -> number_of_packets )  desc = & urb -> iso_frame_desc [ i ]; if ( ( unit_size == desc -> length ) && ( desc -> length <= rem ) )  memcpy ( data , ( ( u8 * ) urb -> transfer_buffer ) + desc -> offset , unit_size ); data += unit_size; rem -= unit_size; desc -> status = 0; desc -> actual_length = desc -> length; i ++; 