#ifndef __USBIP_VHCI_H
#define __USBIP_VHCI_H
#include <linux/device.h>
#include <linux/list.h>
#include <linux/spinlock.h>
#include <linux/sysfs.h>
#include <linux/types.h>
#include <linux/usb.h>
#include <linux/usb/hcd.h>
#include <linux/wait.h>
struct vhci_device { … };
struct vhci_priv { … };
struct vhci_unlink { … };
enum hub_speed { … };
#ifdef CONFIG_USBIP_VHCI_HC_PORTS
#define VHCI_HC_PORTS …
#else
#define VHCI_HC_PORTS …
#endif
#define VHCI_PORTS …
#ifdef CONFIG_USBIP_VHCI_NR_HCS
#define VHCI_NR_HCS …
#else
#define VHCI_NR_HCS …
#endif
#define MAX_STATUS_NAME …
struct vhci { … };
struct vhci_hcd { … };
extern int vhci_num_controllers;
extern struct vhci *vhcis;
extern struct attribute_group vhci_attr_group;
void rh_port_connect(struct vhci_device *vdev, enum usb_device_speed speed);
int vhci_init_attr_group(void);
void vhci_finish_attr_group(void);
struct urb *pickup_urb_and_free_priv(struct vhci_device *vdev, __u32 seqnum);
int vhci_rx_loop(void *data);
int vhci_tx_loop(void *data);
static inline __u32 port_to_rhport(__u32 port)
{ … }
static inline int port_to_pdev_nr(__u32 port)
{ … }
static inline struct vhci_hcd *hcd_to_vhci_hcd(struct usb_hcd *hcd)
{ … }
static inline struct device *hcd_dev(struct usb_hcd *hcd)
{ … }
static inline const char *hcd_name(struct usb_hcd *hcd)
{ … }
static inline struct usb_hcd *vhci_hcd_to_hcd(struct vhci_hcd *vhci_hcd)
{ … }
static inline struct vhci_hcd *vdev_to_vhci_hcd(struct vhci_device *vdev)
{ … }
#endif