#include <asm/semaphore.h>
#include <asm/byteorder.h>
-#define DEBUG
+#undef DEBUG
#ifdef DEBUG
#define kaweth_dbg(format, arg...) printk(KERN_DEBUG __FILE__ ": " format "\n" ,##arg)
const struct usb_device_id *id /* from id_table */
);
static void kaweth_disconnect(struct usb_interface *intf);
-int kaweth_internal_control_msg(struct usb_device *usb_dev, unsigned int pipe,
- struct usb_ctrlrequest *cmd, void *data,
- int len, int timeout);
+static int kaweth_internal_control_msg(struct usb_device *usb_dev,
+ unsigned int pipe,
+ struct usb_ctrlrequest *cmd, void *data,
+ int len, int timeout);
/****************************************************************
* usb_device_id
__u8 reserved2;
eth_addr_t hw_addr;
__u32 statistics_mask;
- __u16 segment_size;
+ __le16 segment_size;
__u16 max_multicast_filters;
__u8 reserved3;
} __attribute__ ((packed));
int count = urb->actual_length;
int count2 = urb->transfer_buffer_length;
- __u16 pkt_len = le16_to_cpup((u16 *)kaweth->rx_buf);
+ __u16 pkt_len = le16_to_cpup((__le16 *)kaweth->rx_buf);
struct sk_buff *skb;
- if(unlikely(urb->status == -ECONNRESET || urb->status == -ECONNABORTED))
+ if(unlikely(urb->status == -ECONNRESET || urb->status == -ECONNABORTED || urb->status == -ESHUTDOWN))
/* we are killed - set a flag and wake the disconnect handler */
{
kaweth->end = 1;
INTBUFFERSIZE,
int_callback,
kaweth,
- HZ/4);
+ 8);
kaweth->irq_urb->transfer_dma = kaweth->intbufferhandle;
kaweth->irq_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
{
switch (cmd) {
case SIOCETHTOOL:
- return netdev_ethtool_ioctl(net, (void __user *)rq->ifr_data);
+ return netdev_ethtool_ioctl(net, rq->ifr_data);
}
return -EOPNOTSUPP;
}
static int kaweth_start_xmit(struct sk_buff *skb, struct net_device *net)
{
struct kaweth_device *kaweth = net->priv;
- u16 *private_header;
+ __le16 *private_header;
int res;
}
}
- private_header = (u16 *)__skb_push(skb, 2);
+ private_header = (__le16 *)__skb_push(skb, 2);
*private_header = cpu_to_le16(skb->len-2);
kaweth->tx_skb = skb;
init_waitqueue_head(&awd.wqh);
awd.done = 0;
- set_current_state(TASK_INTERRUPTIBLE);
add_wait_queue(&awd.wqh, &wait);
urb->context = &awd;
- status = usb_submit_urb(urb, GFP_ATOMIC);
+ status = usb_submit_urb(urb, GFP_NOIO);
if (status) {
// something went wrong
usb_free_urb(urb);
- set_current_state(TASK_RUNNING);
remove_wait_queue(&awd.wqh, &wait);
return status;
}
- while (timeout && !awd.done)
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ while (timeout && !awd.done) {
timeout = schedule_timeout(timeout);
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ }
set_current_state(TASK_RUNNING);
remove_wait_queue(&awd.wqh, &wait);
/*-------------------------------------------------------------------*/
// returns status (negative) or length (positive)
-int kaweth_internal_control_msg(struct usb_device *usb_dev, unsigned int pipe,
- struct usb_ctrlrequest *cmd, void *data, int len,
- int timeout)
+static int kaweth_internal_control_msg(struct usb_device *usb_dev,
+ unsigned int pipe,
+ struct usb_ctrlrequest *cmd, void *data,
+ int len, int timeout)
{
struct urb *urb;
int retv;
return -ENOMEM;
usb_fill_control_urb(urb, usb_dev, pipe, (unsigned char*)cmd, data,
- len, usb_api_blocking_completion,0);
+ len, usb_api_blocking_completion, NULL);
retv = usb_start_wait_urb(urb, timeout, &length);
if (retv < 0) {
/****************************************************************
* kaweth_init
****************************************************************/
-int __init kaweth_init(void)
+static int __init kaweth_init(void)
{
kaweth_dbg("Driver loading");
return usb_register(&kaweth_driver);
/****************************************************************
* kaweth_exit
****************************************************************/
-void __exit kaweth_exit(void)
+static void __exit kaweth_exit(void)
{
usb_deregister(&kaweth_driver);
}