aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/plip.c
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
commitada47b5fe13d89735805b566185f4885f5a3f750 (patch)
tree644b88f8a71896307d71438e9b3af49126ffb22b /drivers/net/plip.c
parent43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff)
parent3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff)
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/net/plip.c')
-rw-r--r--drivers/net/plip.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/net/plip.c b/drivers/net/plip.c
index 00487f569cfd..9a2103a69e17 100644
--- a/drivers/net/plip.c
+++ b/drivers/net/plip.c
@@ -94,6 +94,7 @@ static const char version[] = "NET3 PLIP version 2.4-parport gniibe@mri.co.jp\n"
94#include <linux/fcntl.h> 94#include <linux/fcntl.h>
95#include <linux/interrupt.h> 95#include <linux/interrupt.h>
96#include <linux/string.h> 96#include <linux/string.h>
97#include <linux/slab.h>
97#include <linux/if_ether.h> 98#include <linux/if_ether.h>
98#include <linux/in.h> 99#include <linux/in.h>
99#include <linux/errno.h> 100#include <linux/errno.h>
@@ -372,8 +373,8 @@ plip_bh(struct work_struct *work)
372 373
373 nl->is_deferred = 0; 374 nl->is_deferred = 0;
374 f = connection_state_table[nl->connection]; 375 f = connection_state_table[nl->connection];
375 if ((r = (*f)(nl->dev, nl, snd, rcv)) != OK 376 if ((r = (*f)(nl->dev, nl, snd, rcv)) != OK &&
376 && (r = plip_bh_timeout_error(nl->dev, nl, snd, rcv, r)) != OK) { 377 (r = plip_bh_timeout_error(nl->dev, nl, snd, rcv, r)) != OK) {
377 nl->is_deferred = 1; 378 nl->is_deferred = 1;
378 schedule_delayed_work(&nl->deferred, 1); 379 schedule_delayed_work(&nl->deferred, 1);
379 } 380 }
@@ -416,9 +417,8 @@ plip_bh_timeout_error(struct net_device *dev, struct net_local *nl,
416 417
417 if (error != ERROR) { /* Timeout */ 418 if (error != ERROR) { /* Timeout */
418 nl->timeout_count++; 419 nl->timeout_count++;
419 if ((error == HS_TIMEOUT 420 if ((error == HS_TIMEOUT && nl->timeout_count <= 10) ||
420 && nl->timeout_count <= 10) 421 nl->timeout_count <= 3) {
421 || nl->timeout_count <= 3) {
422 spin_unlock_irq(&nl->lock); 422 spin_unlock_irq(&nl->lock);
423 /* Try again later */ 423 /* Try again later */
424 return TIMEOUT; 424 return TIMEOUT;
@@ -624,8 +624,8 @@ plip_receive_packet(struct net_device *dev, struct net_local *nl,
624 if (plip_receive(nibble_timeout, dev, 624 if (plip_receive(nibble_timeout, dev,
625 &rcv->nibble, &rcv->length.b.msb)) 625 &rcv->nibble, &rcv->length.b.msb))
626 return TIMEOUT; 626 return TIMEOUT;
627 if (rcv->length.h > dev->mtu + dev->hard_header_len 627 if (rcv->length.h > dev->mtu + dev->hard_header_len ||
628 || rcv->length.h < 8) { 628 rcv->length.h < 8) {
629 printk(KERN_WARNING "%s: bogus packet size %d.\n", dev->name, rcv->length.h); 629 printk(KERN_WARNING "%s: bogus packet size %d.\n", dev->name, rcv->length.h);
630 return ERROR; 630 return ERROR;
631 } 631 }