diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-08-30 18:54:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-08-30 18:54:35 -0400 |
commit | 7c30b0653f1bcaf04f8abf24cad5c1e642a3da47 (patch) | |
tree | bf62b79a6edb86ff17ef5eb8cbfa04c9c0783ba5 /drivers | |
parent | 7288026b8671061aff7663b1766037b3f2573627 (diff) | |
parent | ee1377c3eef4238d89b2f99fa4d0bbbad3078b64 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
[STRIP]: Fix neighbour table refcount leak.
[IPV6]: ipv6_add_addr should install dstentry earlier
[NETLINK]: Call panic if nl_table allocation fails
[TCP]: Two RFC3465 Appropriate Byte Count fixes.
[IPV6]: SNMPv2 "ipv6IfStatsInAddrErrors" counter error
[E100]: Add module option to ignore bad EEPROM checksums.
[SCTP]: Fix sctp_primitive_ABORT() call in sctp_close().
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/e100.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/strip.c | 6 |
2 files changed, 9 insertions, 3 deletions
diff --git a/drivers/net/e100.c b/drivers/net/e100.c index 91ef5f2fd768..ce850f1078b5 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c | |||
@@ -173,8 +173,11 @@ MODULE_LICENSE("GPL"); | |||
173 | MODULE_VERSION(DRV_VERSION); | 173 | MODULE_VERSION(DRV_VERSION); |
174 | 174 | ||
175 | static int debug = 3; | 175 | static int debug = 3; |
176 | static int eeprom_bad_csum_allow = 0; | ||
176 | module_param(debug, int, 0); | 177 | module_param(debug, int, 0); |
178 | module_param(eeprom_bad_csum_allow, int, 0); | ||
177 | MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)"); | 179 | MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)"); |
180 | MODULE_PARM_DESC(eeprom_bad_csum_allow, "Allow bad eeprom checksums"); | ||
178 | #define DPRINTK(nlevel, klevel, fmt, args...) \ | 181 | #define DPRINTK(nlevel, klevel, fmt, args...) \ |
179 | (void)((NETIF_MSG_##nlevel & nic->msg_enable) && \ | 182 | (void)((NETIF_MSG_##nlevel & nic->msg_enable) && \ |
180 | printk(KERN_##klevel PFX "%s: %s: " fmt, nic->netdev->name, \ | 183 | printk(KERN_##klevel PFX "%s: %s: " fmt, nic->netdev->name, \ |
@@ -756,7 +759,8 @@ static int e100_eeprom_load(struct nic *nic) | |||
756 | checksum = le16_to_cpu(0xBABA - checksum); | 759 | checksum = le16_to_cpu(0xBABA - checksum); |
757 | if(checksum != nic->eeprom[nic->eeprom_wc - 1]) { | 760 | if(checksum != nic->eeprom[nic->eeprom_wc - 1]) { |
758 | DPRINTK(PROBE, ERR, "EEPROM corrupted\n"); | 761 | DPRINTK(PROBE, ERR, "EEPROM corrupted\n"); |
759 | return -EAGAIN; | 762 | if (!eeprom_bad_csum_allow) |
763 | return -EAGAIN; | ||
760 | } | 764 | } |
761 | 765 | ||
762 | return 0; | 766 | return 0; |
diff --git a/drivers/net/wireless/strip.c b/drivers/net/wireless/strip.c index fd31885c6844..ccaf28e8db0a 100644 --- a/drivers/net/wireless/strip.c +++ b/drivers/net/wireless/strip.c | |||
@@ -467,6 +467,7 @@ static int arp_query(unsigned char *haddr, u32 paddr, | |||
467 | struct net_device *dev) | 467 | struct net_device *dev) |
468 | { | 468 | { |
469 | struct neighbour *neighbor_entry; | 469 | struct neighbour *neighbor_entry; |
470 | int ret = 0; | ||
470 | 471 | ||
471 | neighbor_entry = neigh_lookup(&arp_tbl, &paddr, dev); | 472 | neighbor_entry = neigh_lookup(&arp_tbl, &paddr, dev); |
472 | 473 | ||
@@ -474,10 +475,11 @@ static int arp_query(unsigned char *haddr, u32 paddr, | |||
474 | neighbor_entry->used = jiffies; | 475 | neighbor_entry->used = jiffies; |
475 | if (neighbor_entry->nud_state & NUD_VALID) { | 476 | if (neighbor_entry->nud_state & NUD_VALID) { |
476 | memcpy(haddr, neighbor_entry->ha, dev->addr_len); | 477 | memcpy(haddr, neighbor_entry->ha, dev->addr_len); |
477 | return 1; | 478 | ret = 1; |
478 | } | 479 | } |
480 | neigh_release(neighbor_entry); | ||
479 | } | 481 | } |
480 | return 0; | 482 | return ret; |
481 | } | 483 | } |
482 | 484 | ||
483 | static void DumpData(char *msg, struct strip *strip_info, __u8 * ptr, | 485 | static void DumpData(char *msg, struct strip *strip_info, __u8 * ptr, |