kaweth: Clean up code
The driver kaweth yields a -EBUSY error when starting, and a -ETIME error when shutting down. These errors are avoided, and the RX status is further checked for other potential errors. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
54cb2284dc
commit
710b523ac5
@ -31,7 +31,6 @@
|
||||
****************************************************************/
|
||||
|
||||
/* TODO:
|
||||
* Fix in_interrupt() problem
|
||||
* Develop test procedures for USB net interfaces
|
||||
* Run test procedures
|
||||
* Fix bugs from previous two steps
|
||||
@ -606,14 +605,30 @@ static void kaweth_usb_receive(struct urb *urb)
|
||||
|
||||
struct sk_buff *skb;
|
||||
|
||||
if(unlikely(status == -ECONNRESET || status == -ESHUTDOWN))
|
||||
/* we are killed - set a flag and wake the disconnect handler */
|
||||
{
|
||||
if (unlikely(status == -EPIPE)) {
|
||||
kaweth->stats.rx_errors++;
|
||||
kaweth->end = 1;
|
||||
wake_up(&kaweth->term_wait);
|
||||
dbg("Status was -EPIPE.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (unlikely(status == -ECONNRESET || status == -ESHUTDOWN)) {
|
||||
/* we are killed - set a flag and wake the disconnect handler */
|
||||
kaweth->end = 1;
|
||||
wake_up(&kaweth->term_wait);
|
||||
dbg("Status was -ECONNRESET or -ESHUTDOWN.");
|
||||
return;
|
||||
}
|
||||
if (unlikely(status == -EPROTO || status == -ETIME ||
|
||||
status == -EILSEQ)) {
|
||||
kaweth->stats.rx_errors++;
|
||||
dbg("Status was -EPROTO, -ETIME, or -EILSEQ.");
|
||||
return;
|
||||
}
|
||||
if (unlikely(status == -EOVERFLOW)) {
|
||||
kaweth->stats.rx_errors++;
|
||||
dbg("Status was -EOVERFLOW.");
|
||||
}
|
||||
spin_lock(&kaweth->device_lock);
|
||||
if (IS_BLOCKED(kaweth->status)) {
|
||||
spin_unlock(&kaweth->device_lock);
|
||||
@ -883,13 +898,16 @@ static void kaweth_set_rx_mode(struct net_device *net)
|
||||
****************************************************************/
|
||||
static void kaweth_async_set_rx_mode(struct kaweth_device *kaweth)
|
||||
{
|
||||
int result;
|
||||
__u16 packet_filter_bitmap = kaweth->packet_filter_bitmap;
|
||||
|
||||
kaweth->packet_filter_bitmap = 0;
|
||||
if (packet_filter_bitmap == 0)
|
||||
return;
|
||||
|
||||
{
|
||||
int result;
|
||||
if (in_interrupt())
|
||||
return;
|
||||
|
||||
result = kaweth_control(kaweth,
|
||||
usb_sndctrlpipe(kaweth->dev, 0),
|
||||
KAWETH_COMMAND_SET_PACKET_FILTER,
|
||||
@ -906,7 +924,6 @@ static void kaweth_async_set_rx_mode(struct kaweth_device *kaweth)
|
||||
else {
|
||||
dbg("Set Rx mode to %d", packet_filter_bitmap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************
|
||||
|
Loading…
Reference in New Issue
Block a user