Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

usb_pipe_get_max_bulk_transfer_size(9f) [sunos man page]

usb_pipe_get_max_bulk_transfer_size(9F) 		   Kernel Functions for Drivers 		   usb_pipe_get_max_bulk_transfer_size(9F)

NAME
usb_pipe_get_max_bulk_transfer_size - Get maximum bulk transfer size SYNOPSIS
#include <sys/usb/usba.h> int usb_pipe_get_max_bulk_transfer_size(dev_info_t dip, size_t *size); INTERFACE LEVEL
Solaris DDI specific (Solaris DDI) PARAMETERS
dip Pointer to the device's dev_info structure. size Returns the bulk transfer size. DESCRIPTION
The usb_pipe_get_max_bulk_transfer_size() function returns the maximum data transfer size in bytes that the host controller driver can sup- port per bulk request. This information can be used to limit or break down larger requests to manageable sizes. RETURN VALUES
USB_SUCCESS Size is returned in size argument. USB_INVALID_ARGS dip and/or size argument is NULL. USB_FAILURE Size could not be returned. Zero is returned in size arg. CONTEXT
May be called from user, kernel or interrupt context. EXAMPLES
int xxx_attach(dev_info_t *dip, int command) { ... usb_pipe_get_max_bulk_transfer_size(dip, &state>max_xfer_size); ... } void xxx_minphys(struct buf bp) { ... if (bp->b_bcount > state->max_xfer_size) { bp->b_bcount = state->max_xfer_size; } ... } ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Architecture |PCI-based systems | +-----------------------------+-----------------------------+ |Interface stability |Evolving | +-----------------------------+-----------------------------+ |Availability |SUNWusb | +-----------------------------+-----------------------------+ SEE ALSO
attributes(5), usb_pipe_bulk_xfer(9F), usb_alloc_request(9F), usb_bulk_request(9S) SunOS 5.10 5 Jan 2004 usb_pipe_get_max_bulk_transfer_size(9F)

Check Out this Related Man Page

usb_pipe_bulk_xfer(9F)					   Kernel Functions for Drivers 				    usb_pipe_bulk_xfer(9F)

NAME
usb_pipe_bulk_xfer - USB bulk transfer function SYNOPSIS
#include <sys/usb/usba.h> int usb_pipe_bulk_xfer(usb_pipe_handle_t pipe_handle, usb_bulk_req_t *request, usb_flags_t flags); INTERFACE LEVEL
Solaris DDI specific (Solaris DDI) PARAMETERS
pipe_handle Bulk pipe handle on which request is made. request Pointer to bulk transfer request. flags USB_FLAGS_SLEEP is the only flag recognized. Wait for request to complete. DESCRIPTION
The usb_pipe_bulk_xfer() function requests the USBA framework to perform a transfer through a USB bulk pipe. The request is passed to the host controller driver (HCD), which performs the necessary transactions to complete the request. Requests are synchronous when USB_FLAGS_SLEEP has been specified in flags. Calls for synchronous requests will not return until their transaction has completed. Asyn- chronous requests (made without specifying the USB_FLAGS_SLEEP flag) notify the caller of their completion via a callback function. Requests for bulk transfers must have mblks attached to store data. Allocate an mblk for data when a request is allocated via usb_alloc_bulk_req(9F) by passing a positive value for the len argument. RETURN VALUES
USB_SUCCESS Transfer was successful. USB_INVALID_ARGS Request is NULL. USB_INVALID_CONTEXT Called from interrupt context with the USB_FLAGS_SLEEP flag set. USB_INVALID_REQUEST The request has been freed or otherwise invalidated. A set of conflicting attributes were specified. See usb_bulk_request(9S). The normal and/or exception callback was NULL and USB_FLAGS_SLEEP was not set. Data space is not provided to a bulk request: (bulk_data = NULL or bulk_len = 0) USB_INVALID_PIPE Pipe handle is NULL or invalid. Pipe is closing or closed. USB_PIPE_ERROR Pipe handle refers to a pipe which is in the USB_PIPE_STATE_ERROR state. USB_NO_RESOURCES Memory, descriptors or other resources are unavailable. USB_HC_HARDWARE_ERROR Host controller is in error state. USB_FAILURE An asynchronous transfer failed or an internal error occurred. A bulk request requested too much data: (length > usb_get_max_bulk_xfer size()) The pipe is in a unsuitable state (error, busy, not ready). Additional status information may be available in the bulk_completion_reason and bulk_cb_flags fields of the request. Please see usb_com- pletion_reason(9S) and usb_callback_flags(9S) for more information. CONTEXT
May be called from kernel or user context without regard to arguments. May be called from interrupt context only when the USB_FLAGS_SLEEP flag is clear. EXAMPLES
/* Allocate, initialize and issue a synchronous bulk request. */ usb_bulk_req_t bulk_req; mblk_t *mblk; bulk_req = usb_alloc_bulk_req(dip, bp->b_bcount, USB_FLAGS_SLEEP); bulk_req->bulk_attributes = USB_ATTRS_AUTOCLEARING; mblk = bulk_req->bulk_data; bcopy(buffer, mblk->b_wptr, bp->b_bcount); mblk->b_wptr += bp->b_bcount; if ((rval = usb_pipe_bulk_xfer(pipe, bulk_req, USB_FLAGS_SLEEP)) != USB_SUCCESS) { cmn_err (CE_WARN, "%s%d: Error writing bulk data.", ddi_driver_name(dip), ddi_get_instance(dip)); } ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Architecture |PCI-based systems | +-----------------------------+-----------------------------+ |Interface stability |Evolving | +-----------------------------+-----------------------------+ |Availability |SUNWusb | +-----------------------------+-----------------------------+ SEE ALSO
attributes(5), usb_alloc_request(9F), usb_get_cfg(9F), usb_get_status(9F), usb_pipe_ctrl_xfer(9F), usb_pipe_get_state(9F), usb_pipe_intr_xfer(9F), usb_pipe_isoc_xfer(9F), usb_pipe_open(9F), usb_pipe_reset(9F), usb_bulk_request(9S), usb_callback_flags(9S), usb_completion_reason(9S), usb_ctrl_request(9S), usb_intr_request(9S), usb_isoc_request(9S) SunOS 5.10 5 Jan 2004 usb_pipe_bulk_xfer(9F)
Man Page