Probe device.
561 unsigned int remainder;
562 unsigned int divisor;
574 memset ( ncm, 0,
sizeof ( *ncm ) );
581 DBGC ( ncm,
"NCM %p on %s\n", ncm, func->
name );
585 DBGC ( ncm,
"NCM %p could not describe: %s\n",
595 DBGC ( ncm,
"NCM %p has no Ethernet descriptor\n", ncm );
602 DBGC ( ncm,
"NCM %p could not fetch MAC address: %s\n",
610 sizeof ( params ) ) ) != 0 ) {
611 DBGC ( ncm,
"NCM %p could not get NTB parameters: %s\n",
613 goto err_ntb_parameters;
618 DBGC2 ( ncm,
"NCM %p maximum IN size is %zd bytes\n", ncm, ncm->
mtu );
621 divisor = ( params.out.divisor ?
626 DBGC2 ( ncm,
"NCM %p using %zd-byte transmit padding\n",
629 ETH_HLEN ) % divisor ) == remainder );
#define EINVAL
Invalid argument.
struct arbelprm_rc_send_wqe rc
An Ethernet Functional Descriptor.
unsigned int comms
Communications interface.
size_t mtu
Maximum supported NTB input size.
#define le32_to_cpu(value)
#define NCM_GET_NTB_PARAMETERS
Get NTB parameters.
struct usb_endpoint intr
Interrupt endpoint.
int usb_control(struct usb_device *usb, unsigned int request, unsigned int value, unsigned int index, void *data, size_t len)
Issue USB control transaction.
static void netdev_init(struct net_device *netdev, struct net_device_operations *op)
Initialise a network device.
static struct usb_endpoint_driver_operations ncm_in_operations
Bulk IN endpoint operations.
#define ENOMEM
Not enough space.
A USB interface descriptor.
struct usb_port * port
USB port.
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
static void netdev_put(struct net_device *netdev)
Drop reference to network device.
struct net_device * netdev
Network device.
void * priv
Driver private data.
struct ecm_ethernet_descriptor * ecm_ethernet_descriptor(struct usb_configuration_descriptor *config, struct usb_interface_descriptor *interface)
Locate Ethernet functional descriptor.
static void usb_refill_init(struct usb_endpoint *ep, size_t reserve, size_t len, unsigned int max)
Initialise USB endpoint refill.
static struct net_device * netdev
struct usb_device * usb
USB device.
static void usb_func_set_drvdata(struct usb_function *func, void *priv)
Set USB function driver private data.
void unregister_netdev(struct net_device *netdev)
Unregister network device.
struct usb_interface_descriptor * usb_interface_descriptor(struct usb_configuration_descriptor *config, unsigned int interface, unsigned int alternate)
Locate USB interface descriptor.
char * strerror(int errno)
Retrieve string representation of error number.
int register_netdev(struct net_device *netdev)
Register network device.
struct usbnet_device usbnet
USB network device.
static void netdev_nullify(struct net_device *netdev)
Stop using a network device.
struct usb_device * usb
USB device.
#define le16_to_cpu(value)
A CDC-NCM network device.
static struct usb_endpoint_driver_operations ncm_out_operations
Bulk OUT endpoint operations.
struct device * dev
Underlying hardware device.
static struct net_device_operations ncm_operations
CDC-NCM network device operations.
static void usbnet_init(struct usbnet_device *usbnet, struct usb_function *func, struct usb_endpoint_driver_operations *intr, struct usb_endpoint_driver_operations *in, struct usb_endpoint_driver_operations *out)
Initialise USB network device.
struct usb_hub * hub
USB hub.
int ecm_fetch_mac(struct usb_function *func, struct ecm_ethernet_descriptor *desc, struct net_device *netdev)
Get hardware MAC address.
struct net_device * alloc_etherdev(size_t priv_size)
Allocate Ethernet device.
int usbnet_describe(struct usbnet_device *usbnet, struct usb_configuration_descriptor *config)
Describe USB network device interfaces.
struct device dev
Generic device.
struct usb_bus * bus
USB bus.
size_t padding
Alignment padding required on transmitted packets.
#define NULL
NULL pointer (VOID *)
static struct usb_endpoint_driver_operations ncm_intr_operations
Interrupt endpoint operations.
#define NCM_INTR_COUNT
Interrupt ring buffer count.
struct usb_bus * bus
USB bus.
void * memset(void *dest, int character, size_t len) __nonnull