diff options
Diffstat (limited to 'drivers/staging/usbip/usbip_common.c')
-rw-r--r-- | drivers/staging/usbip/usbip_common.c | 333 |
1 files changed, 147 insertions, 186 deletions
diff --git a/drivers/staging/usbip/usbip_common.c b/drivers/staging/usbip/usbip_common.c index 7b1fe45bf7dd..433a3b6207d6 100644 --- a/drivers/staging/usbip/usbip_common.c +++ b/drivers/staging/usbip/usbip_common.c @@ -17,53 +17,46 @@ * USA. */ -#include <linux/kernel.h> +#include <asm/byteorder.h> #include <linux/file.h> -#include <linux/tcp.h> -#include <linux/in.h> -#include <linux/kthread.h> +#include <linux/fs.h> +#include <linux/kernel.h> #include <linux/slab.h> -#include "usbip_common.h" +#include <net/sock.h> -/* version information */ -#define DRIVER_VERSION "1.0" -#define DRIVER_AUTHOR "Takahiro Hirofuchi <hirofuchi _at_ users.sourceforge.net>" -#define DRIVER_DESC "usbip common driver" +#include "usbip_common.h" -/*-------------------------------------------------------------------------*/ -/* debug routines */ +#define DRIVER_AUTHOR "Takahiro Hirofuchi <hirofuchi@users.sourceforge.net>" +#define DRIVER_DESC "USB/IP Core" -#ifdef CONFIG_USB_IP_DEBUG_ENABLE +#ifdef CONFIG_USBIP_DEBUG unsigned long usbip_debug_flag = 0xffffffff; #else unsigned long usbip_debug_flag; #endif EXPORT_SYMBOL_GPL(usbip_debug_flag); - /* FIXME */ struct device_attribute dev_attr_usbip_debug; EXPORT_SYMBOL_GPL(dev_attr_usbip_debug); - static ssize_t show_flag(struct device *dev, struct device_attribute *attr, - char *buf) + char *buf) { return sprintf(buf, "%lx\n", usbip_debug_flag); } static ssize_t store_flag(struct device *dev, struct device_attribute *attr, - const char *buf, size_t count) + const char *buf, size_t count) { sscanf(buf, "%lx", &usbip_debug_flag); - return count; } DEVICE_ATTR(usbip_debug, (S_IRUGO | S_IWUSR), show_flag, store_flag); static void usbip_dump_buffer(char *buff, int bufflen) { - print_hex_dump(KERN_DEBUG, "usb-ip", DUMP_PREFIX_OFFSET, 16, 4, + print_hex_dump(KERN_DEBUG, "usbip-core", DUMP_PREFIX_OFFSET, 16, 4, buff, bufflen, false); } @@ -74,29 +67,25 @@ static void usbip_dump_pipe(unsigned int p) unsigned char dev = usb_pipedevice(p); unsigned char dir = usb_pipein(p); - printk(KERN_DEBUG "dev(%d) ", dev); - printk(KERN_DEBUG "ep(%d) ", ep); - printk(KERN_DEBUG "%s ", dir ? "IN" : "OUT"); + pr_debug("dev(%d) ep(%d) [%s] ", dev, ep, dir ? "IN" : "OUT"); switch (type) { case PIPE_ISOCHRONOUS: - printk(KERN_DEBUG "%s ", "ISO"); + pr_debug("ISO\n"); break; case PIPE_INTERRUPT: - printk(KERN_DEBUG "%s ", "INT"); + pr_debug("INT\n"); break; case PIPE_CONTROL: - printk(KERN_DEBUG "%s ", "CTL"); + pr_debug("CTRL\n"); break; case PIPE_BULK: - printk(KERN_DEBUG "%s ", "BLK"); + pr_debug("BULK\n"); break; default: - printk(KERN_DEBUG "ERR"); + pr_debug("ERR\n"); + break; } - - printk(KERN_DEBUG "\n"); - } static void usbip_dump_usb_device(struct usb_device *udev) @@ -104,60 +93,59 @@ static void usbip_dump_usb_device(struct usb_device *udev) struct device *dev = &udev->dev; int i; - dev_dbg(dev, " devnum(%d) devpath(%s)", + dev_dbg(dev, " devnum(%d) devpath(%s) ", udev->devnum, udev->devpath); switch (udev->speed) { case USB_SPEED_HIGH: - printk(KERN_DEBUG " SPD_HIGH"); + pr_debug("SPD_HIGH "); break; case USB_SPEED_FULL: - printk(KERN_DEBUG " SPD_FULL"); + pr_debug("SPD_FULL "); break; case USB_SPEED_LOW: - printk(KERN_DEBUG " SPD_LOW"); + pr_debug("SPD_LOW "); break; case USB_SPEED_UNKNOWN: - printk(KERN_DEBUG " SPD_UNKNOWN"); + pr_debug("SPD_UNKNOWN "); break; default: - printk(KERN_DEBUG " SPD_ERROR"); + pr_debug("SPD_ERROR "); + break; } - printk(KERN_DEBUG " tt %p, ttport %d", udev->tt, udev->ttport); - printk(KERN_DEBUG "\n"); + pr_debug("tt %p, ttport %d\n", udev->tt, udev->ttport); dev_dbg(dev, " "); for (i = 0; i < 16; i++) - printk(KERN_DEBUG " %2u", i); - printk(KERN_DEBUG "\n"); + pr_debug(" %2u", i); + pr_debug("\n"); dev_dbg(dev, " toggle0(IN) :"); for (i = 0; i < 16; i++) - printk(KERN_DEBUG " %2u", (udev->toggle[0] & (1 << i)) ? 1 : 0); - printk(KERN_DEBUG "\n"); + pr_debug(" %2u", (udev->toggle[0] & (1 << i)) ? 1 : 0); + pr_debug("\n"); dev_dbg(dev, " toggle1(OUT):"); for (i = 0; i < 16; i++) - printk(KERN_DEBUG " %2u", (udev->toggle[1] & (1 << i)) ? 1 : 0); - printk(KERN_DEBUG "\n"); - + pr_debug(" %2u", (udev->toggle[1] & (1 << i)) ? 1 : 0); + pr_debug("\n"); dev_dbg(dev, " epmaxp_in :"); for (i = 0; i < 16; i++) { if (udev->ep_in[i]) - printk(KERN_DEBUG " %2u", - le16_to_cpu(udev->ep_in[i]->desc.wMaxPacketSize)); + pr_debug(" %2u", + le16_to_cpu(udev->ep_in[i]->desc.wMaxPacketSize)); } - printk(KERN_DEBUG "\n"); + pr_debug("\n"); dev_dbg(dev, " epmaxp_out :"); for (i = 0; i < 16; i++) { if (udev->ep_out[i]) - printk(KERN_DEBUG " %2u", - le16_to_cpu(udev->ep_out[i]->desc.wMaxPacketSize)); + pr_debug(" %2u", + le16_to_cpu(udev->ep_out[i]->desc.wMaxPacketSize)); } - printk(KERN_DEBUG "\n"); + pr_debug("\n"); dev_dbg(dev, "parent %p, bus %p\n", udev->parent, udev->bus); @@ -176,91 +164,84 @@ static void usbip_dump_request_type(__u8 rt) { switch (rt & USB_RECIP_MASK) { case USB_RECIP_DEVICE: - printk(KERN_DEBUG "DEVICE"); + pr_debug("DEVICE"); break; case USB_RECIP_INTERFACE: - printk(KERN_DEBUG "INTERF"); + pr_debug("INTERF"); break; case USB_RECIP_ENDPOINT: - printk(KERN_DEBUG "ENDPOI"); + pr_debug("ENDPOI"); break; case USB_RECIP_OTHER: - printk(KERN_DEBUG "OTHER "); + pr_debug("OTHER "); break; default: - printk(KERN_DEBUG "------"); + pr_debug("------"); + break; } } static void usbip_dump_usb_ctrlrequest(struct usb_ctrlrequest *cmd) { if (!cmd) { - printk(KERN_DEBUG " %s : null pointer\n", __func__); + pr_debug(" : null pointer\n"); return; } - printk(KERN_DEBUG " "); - printk(KERN_DEBUG "bRequestType(%02X) ", cmd->bRequestType); - printk(KERN_DEBUG "bRequest(%02X) " , cmd->bRequest); - printk(KERN_DEBUG "wValue(%04X) ", cmd->wValue); - printk(KERN_DEBUG "wIndex(%04X) ", cmd->wIndex); - printk(KERN_DEBUG "wLength(%04X) ", cmd->wLength); - - printk(KERN_DEBUG "\n "); + pr_debug(" "); + pr_debug("bRequestType(%02X) bRequest(%02X) wValue(%04X) wIndex(%04X) " + "wLength(%04X) ", cmd->bRequestType, cmd->bRequest, + cmd->wValue, cmd->wIndex, cmd->wLength); + pr_debug("\n "); if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_STANDARD) { - printk(KERN_DEBUG "STANDARD "); + pr_debug("STANDARD "); switch (cmd->bRequest) { case USB_REQ_GET_STATUS: - printk(KERN_DEBUG "GET_STATUS"); + pr_debug("GET_STATUS\n"); break; case USB_REQ_CLEAR_FEATURE: - printk(KERN_DEBUG "CLEAR_FEAT"); + pr_debug("CLEAR_FEAT\n"); break; case USB_REQ_SET_FEATURE: - printk(KERN_DEBUG "SET_FEAT "); + pr_debug("SET_FEAT \n"); break; case USB_REQ_SET_ADDRESS: - printk(KERN_DEBUG "SET_ADDRRS"); + pr_debug("SET_ADDRRS\n"); break; case USB_REQ_GET_DESCRIPTOR: - printk(KERN_DEBUG "GET_DESCRI"); + pr_debug("GET_DESCRI\n"); break; case USB_REQ_SET_DESCRIPTOR: - printk(KERN_DEBUG "SET_DESCRI"); + pr_debug("SET_DESCRI\n"); break; case USB_REQ_GET_CONFIGURATION: - printk(KERN_DEBUG "GET_CONFIG"); + pr_debug("GET_CONFIG\n"); break; case USB_REQ_SET_CONFIGURATION: - printk(KERN_DEBUG "SET_CONFIG"); + pr_debug("SET_CONFIG\n"); break; case USB_REQ_GET_INTERFACE: - printk(KERN_DEBUG "GET_INTERF"); + pr_debug("GET_INTERF\n"); break; case USB_REQ_SET_INTERFACE: - printk(KERN_DEBUG "SET_INTERF"); + pr_debug("SET_INTERF\n"); break; case USB_REQ_SYNCH_FRAME: - printk(KERN_DEBUG "SYNC_FRAME"); + pr_debug("SYNC_FRAME\n"); break; default: - printk(KERN_DEBUG "REQ(%02X) ", cmd->bRequest); + pr_debug("REQ(%02X) \n", cmd->bRequest); + break; } - - printk(KERN_DEBUG " "); usbip_dump_request_type(cmd->bRequestType); - - } else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_CLASS) - printk(KERN_DEBUG "CLASS "); - - else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_VENDOR) - printk(KERN_DEBUG "VENDOR "); - - else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_RESERVED) - printk(KERN_DEBUG "RESERVED"); - - printk(KERN_DEBUG "\n"); + } else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_CLASS) { + pr_debug("CLASS \n"); + } else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_VENDOR) { + pr_debug("VENDOR \n"); + } else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_RESERVED) { + pr_debug("RESERVED\n"); + } } void usbip_dump_urb(struct urb *urb) @@ -268,16 +249,15 @@ void usbip_dump_urb(struct urb *urb) struct device *dev; if (!urb) { - printk(KERN_DEBUG KBUILD_MODNAME - ":%s: urb: null pointer!!\n", __func__); + pr_debug("urb: null pointer!!\n"); return; } if (!urb->dev) { - printk(KERN_DEBUG KBUILD_MODNAME - ":%s: urb->dev: null pointer!!\n", __func__); + pr_debug("urb->dev: null pointer!!\n"); return; } + dev = &urb->dev->dev; dev_dbg(dev, " urb :%p\n", urb); @@ -298,7 +278,7 @@ void usbip_dump_urb(struct urb *urb) dev_dbg(dev, " setup_packet :%p\n", urb->setup_packet); if (urb->setup_packet && usb_pipetype(urb->pipe) == PIPE_CONTROL) - usbip_dump_usb_ctrlrequest( + usbip_dump_usb_ctrlrequest( (struct usb_ctrlrequest *)urb->setup_packet); dev_dbg(dev, " start_frame :%d\n", urb->start_frame); @@ -312,47 +292,48 @@ EXPORT_SYMBOL_GPL(usbip_dump_urb); void usbip_dump_header(struct usbip_header *pdu) { - usbip_udbg("BASE: cmd %u seq %u devid %u dir %u ep %u\n", - pdu->base.command, - pdu->base.seqnum, - pdu->base.devid, - pdu->base.direction, - pdu->base.ep); + pr_debug("BASE: cmd %u seq %u devid %u dir %u ep %u\n", + pdu->base.command, + pdu->base.seqnum, + pdu->base.devid, + pdu->base.direction, + pdu->base.ep); switch (pdu->base.command) { case USBIP_CMD_SUBMIT: - usbip_udbg("CMD_SUBMIT: " - "x_flags %u x_len %u sf %u #p %u iv %u\n", - pdu->u.cmd_submit.transfer_flags, - pdu->u.cmd_submit.transfer_buffer_length, - pdu->u.cmd_submit.start_frame, - pdu->u.cmd_submit.number_of_packets, - pdu->u.cmd_submit.interval); - break; + pr_debug("USBIP_CMD_SUBMIT: " + "x_flags %u x_len %u sf %u #p %d iv %d\n", + pdu->u.cmd_submit.transfer_flags, + pdu->u.cmd_submit.transfer_buffer_length, + pdu->u.cmd_submit.start_frame, + pdu->u.cmd_submit.number_of_packets, + pdu->u.cmd_submit.interval); + break; case USBIP_CMD_UNLINK: - usbip_udbg("CMD_UNLINK: seq %u\n", pdu->u.cmd_unlink.seqnum); + pr_debug("USBIP_CMD_UNLINK: seq %u\n", + pdu->u.cmd_unlink.seqnum); break; case USBIP_RET_SUBMIT: - usbip_udbg("RET_SUBMIT: st %d al %u sf %d #p %d ec %d\n", - pdu->u.ret_submit.status, - pdu->u.ret_submit.actual_length, - pdu->u.ret_submit.start_frame, - pdu->u.ret_submit.number_of_packets, - pdu->u.ret_submit.error_count); + pr_debug("USBIP_RET_SUBMIT: st %d al %u sf %d #p %d ec %d\n", + pdu->u.ret_submit.status, + pdu->u.ret_submit.actual_length, + pdu->u.ret_submit.start_frame, + pdu->u.ret_submit.number_of_packets, + pdu->u.ret_submit.error_count); + break; case USBIP_RET_UNLINK: - usbip_udbg("RET_UNLINK: status %d\n", pdu->u.ret_unlink.status); + pr_debug("USBIP_RET_UNLINK: status %d\n", + pdu->u.ret_unlink.status); break; default: /* NOT REACHED */ - usbip_udbg("UNKNOWN\n"); + pr_err("unknown command\n"); + break; } } EXPORT_SYMBOL_GPL(usbip_dump_header); -/*-------------------------------------------------------------------------*/ -/* socket routines */ - -/* Send/receive messages over TCP/IP. I refer drivers/block/nbd.c */ +/* Send/receive messages over TCP/IP. I refer drivers/block/nbd.c */ int usbip_xmit(int send, struct socket *sock, char *buf, int size, int msg_flags) { @@ -368,27 +349,24 @@ int usbip_xmit(int send, struct socket *sock, char *buf, usbip_dbg_xmit("enter\n"); if (!sock || !buf || !size) { - printk(KERN_ERR "%s: invalid arg, sock %p buff %p size %d\n", - __func__, sock, buf, size); + pr_err("invalid arg, sock %p buff %p size %d\n", sock, buf, + size); return -EINVAL; } - if (usbip_dbg_flag_xmit) { if (send) { if (!in_interrupt()) - printk(KERN_DEBUG "%-10s:", current->comm); + pr_debug("%-10s:", current->comm); else - printk(KERN_DEBUG "interrupt :"); + pr_debug("interrupt :"); - printk(KERN_DEBUG "%s: sending... , sock %p, buf %p, " - "size %d, msg_flags %d\n", __func__, - sock, buf, size, msg_flags); + pr_debug("sending... , sock %p, buf %p, size %d, " + "msg_flags %d\n", sock, buf, size, msg_flags); usbip_dump_buffer(buf, size); } } - do { sock->sk->sk_allocation = GFP_NOIO; iov.iov_base = buf; @@ -404,13 +382,12 @@ int usbip_xmit(int send, struct socket *sock, char *buf, result = kernel_sendmsg(sock, &msg, &iov, 1, size); else result = kernel_recvmsg(sock, &msg, &iov, 1, size, - MSG_WAITALL); + MSG_WAITALL); if (result <= 0) { - usbip_udbg("usbip_xmit: %s sock %p buf %p size %u ret " - "%d total %d\n", - send ? "send" : "receive", sock, buf, - size, result, total); + pr_debug("%s sock %p buf %p size %u ret %d total %d\n", + send ? "send" : "receive", sock, buf, size, + result, total); goto err; } @@ -420,24 +397,21 @@ int usbip_xmit(int send, struct socket *sock, char *buf, } while (size > 0); - if (usbip_dbg_flag_xmit) { if (!send) { if (!in_interrupt()) - printk(KERN_DEBUG "%-10s:", current->comm); + pr_debug("%-10s:", current->comm); else - printk(KERN_DEBUG "interrupt :"); + pr_debug("interrupt :"); - printk(KERN_DEBUG "usbip_xmit: receiving....\n"); + pr_debug("receiving....\n"); usbip_dump_buffer(bp, osize); - printk(KERN_DEBUG "usbip_xmit: received, osize %d ret " - "%d size %d total %d\n", osize, result, - size, total); + pr_debug("received, osize %d ret %d size %d total %d\n", + osize, result, size, total); } if (send) - printk(KERN_DEBUG "usbip_xmit: send, total %d\n", - total); + pr_debug("send, total %d\n", total); } return total; @@ -455,7 +429,7 @@ struct socket *sockfd_to_socket(unsigned int sockfd) file = fget(sockfd); if (!file) { - printk(KERN_ERR "%s: invalid sockfd\n", __func__); + pr_err("invalid sockfd\n"); return NULL; } @@ -470,11 +444,6 @@ struct socket *sockfd_to_socket(unsigned int sockfd) } EXPORT_SYMBOL_GPL(sockfd_to_socket); - - -/*-------------------------------------------------------------------------*/ -/* pdu routines */ - /* there may be more cases to tweak the flags. */ static unsigned int tweak_transfer_flags(unsigned int flags) { @@ -483,7 +452,7 @@ static unsigned int tweak_transfer_flags(unsigned int flags) } static void usbip_pack_cmd_submit(struct usbip_header *pdu, struct urb *urb, - int pack) + int pack) { struct usbip_header_cmd_submit *spdu = &pdu->u.cmd_submit; @@ -494,7 +463,7 @@ static void usbip_pack_cmd_submit(struct usbip_header *pdu, struct urb *urb, if (pack) { /* vhci_tx.c */ spdu->transfer_flags = - tweak_transfer_flags(urb->transfer_flags); + tweak_transfer_flags(urb->transfer_flags); spdu->transfer_buffer_length = urb->transfer_buffer_length; spdu->start_frame = urb->start_frame; spdu->number_of_packets = urb->number_of_packets; @@ -511,7 +480,7 @@ static void usbip_pack_cmd_submit(struct usbip_header *pdu, struct urb *urb, } static void usbip_pack_ret_submit(struct usbip_header *pdu, struct urb *urb, - int pack) + int pack) { struct usbip_header_ret_submit *rpdu = &pdu->u.ret_submit; @@ -534,9 +503,8 @@ static void usbip_pack_ret_submit(struct usbip_header *pdu, struct urb *urb, } } - void usbip_pack_pdu(struct usbip_header *pdu, struct urb *urb, int cmd, - int pack) + int pack) { switch (cmd) { case USBIP_CMD_SUBMIT: @@ -546,14 +514,13 @@ void usbip_pack_pdu(struct usbip_header *pdu, struct urb *urb, int cmd, usbip_pack_ret_submit(pdu, urb, pack); break; default: - err("unknown command"); - /* NOTREACHED */ - /* BUG(); */ + /* NOT REACHED */ + pr_err("unknown command\n"); + break; } } EXPORT_SYMBOL_GPL(usbip_pack_pdu); - static void correct_endian_basic(struct usbip_header_basic *base, int send) { if (send) { @@ -572,7 +539,7 @@ static void correct_endian_basic(struct usbip_header_basic *base, int send) } static void correct_endian_cmd_submit(struct usbip_header_cmd_submit *pdu, - int send) + int send) { if (send) { pdu->transfer_flags = cpu_to_be32(pdu->transfer_flags); @@ -592,7 +559,7 @@ static void correct_endian_cmd_submit(struct usbip_header_cmd_submit *pdu, } static void correct_endian_ret_submit(struct usbip_header_ret_submit *pdu, - int send) + int send) { if (send) { cpu_to_be32s(&pdu->status); @@ -604,13 +571,13 @@ static void correct_endian_ret_submit(struct usbip_header_ret_submit *pdu, be32_to_cpus(&pdu->status); be32_to_cpus(&pdu->actual_length); be32_to_cpus(&pdu->start_frame); - cpu_to_be32s(&pdu->number_of_packets); + be32_to_cpus(&pdu->number_of_packets); be32_to_cpus(&pdu->error_count); } } static void correct_endian_cmd_unlink(struct usbip_header_cmd_unlink *pdu, - int send) + int send) { if (send) pdu->seqnum = cpu_to_be32(pdu->seqnum); @@ -619,7 +586,7 @@ static void correct_endian_cmd_unlink(struct usbip_header_cmd_unlink *pdu, } static void correct_endian_ret_unlink(struct usbip_header_ret_unlink *pdu, - int send) + int send) { if (send) cpu_to_be32s(&pdu->status); @@ -653,16 +620,16 @@ void usbip_header_correct_endian(struct usbip_header *pdu, int send) correct_endian_ret_unlink(&pdu->u.ret_unlink, send); break; default: - /* NOTREACHED */ - err("unknown command in pdu header: %d", cmd); - /* BUG(); */ + /* NOT REACHED */ + pr_err("unknown command\n"); + break; } } EXPORT_SYMBOL_GPL(usbip_header_correct_endian); static void usbip_iso_pakcet_correct_endian( - struct usbip_iso_packet_descriptor *iso, - int send) + struct usbip_iso_packet_descriptor *iso, + int send) { /* does not need all members. but copy all simply. */ if (send) { @@ -679,7 +646,7 @@ static void usbip_iso_pakcet_correct_endian( } static void usbip_pack_iso(struct usbip_iso_packet_descriptor *iso, - struct usb_iso_packet_descriptor *uiso, int pack) + struct usb_iso_packet_descriptor *uiso, int pack) { if (pack) { iso->offset = uiso->offset; @@ -694,7 +661,6 @@ static void usbip_pack_iso(struct usbip_iso_packet_descriptor *iso, } } - /* must free buffer */ void *usbip_alloc_iso_desc_pdu(struct urb *urb, ssize_t *bufflen) { @@ -737,7 +703,7 @@ int usbip_recv_iso(struct usbip_device *ud, struct urb *urb) /* my Bluetooth dongle gets ISO URBs which are np = 0 */ if (np == 0) { - /* usbip_uinfo("iso np == 0\n"); */ + /* pr_info("iso np == 0\n"); */ /* usbip_dump_urb(urb); */ return 0; } @@ -760,7 +726,6 @@ int usbip_recv_iso(struct usbip_device *ud, struct urb *urb) return -EPIPE; } - for (i = 0; i < np; i++) { iso = buff + (i * sizeof(*iso)); @@ -773,8 +738,9 @@ int usbip_recv_iso(struct usbip_device *ud, struct urb *urb) if (total_length != urb->actual_length) { dev_err(&urb->dev->dev, - "total length of iso packets (%d) not equal to actual length of buffer (%d)\n", - total_length, urb->actual_length); + "total length of iso packets %d not equal to actual " + "length of buffer %d\n", + total_length, urb->actual_length); if (ud->side == USBIP_STUB) usbip_event_add(ud, SDEV_EVENT_ERROR_TCP); @@ -823,9 +789,10 @@ int usbip_pad_iso(struct usbip_device *ud, struct urb *urb) for (i = np-1; i > 0; i--) { actualoffset -= urb->iso_frame_desc[i].actual_length; memmove(urb->transfer_buffer + urb->iso_frame_desc[i].offset, - urb->transfer_buffer + actualoffset, - urb->iso_frame_desc[i].actual_length); + urb->transfer_buffer + actualoffset, + urb->iso_frame_desc[i].actual_length); } + return ret; } EXPORT_SYMBOL_GPL(usbip_pad_iso); @@ -872,13 +839,9 @@ int usbip_recv_xbuff(struct usbip_device *ud, struct urb *urb) } EXPORT_SYMBOL_GPL(usbip_recv_xbuff); - -/*-------------------------------------------------------------------------*/ - static int __init usbip_common_init(void) { - printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_DESC "" DRIVER_VERSION); - + pr_info(DRIVER_DESC " v" USBIP_VERSION "\n"); return 0; } @@ -887,12 +850,10 @@ static void __exit usbip_common_exit(void) return; } - - - module_init(usbip_common_init); module_exit(usbip_common_exit); MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); +MODULE_VERSION(USBIP_VERSION); |