diff options
Diffstat (limited to 'drivers/net')
| -rw-r--r-- | drivers/net/3c59x.c | 7 | ||||
| -rw-r--r-- | drivers/net/bonding/bond_3ad.c | 3 | ||||
| -rw-r--r-- | drivers/net/bonding/bond_alb.c | 3 | ||||
| -rw-r--r-- | drivers/net/cxgb3/cxgb3_main.c | 2 | ||||
| -rw-r--r-- | drivers/net/eql.c | 2 | ||||
| -rw-r--r-- | drivers/net/ll_temac_main.c | 1 | ||||
| -rw-r--r-- | drivers/net/ll_temac_mdio.c | 1 | ||||
| -rw-r--r-- | drivers/net/pcmcia/pcnet_cs.c | 139 | ||||
| -rw-r--r-- | drivers/net/phy/mdio_bus.c | 4 | ||||
| -rw-r--r-- | drivers/net/ppp_generic.c | 9 | ||||
| -rw-r--r-- | drivers/net/r8169.c | 5 | ||||
| -rw-r--r-- | drivers/net/usb/hso.c | 2 |
12 files changed, 111 insertions, 67 deletions
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 85671adae455..fa42103b2874 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c | |||
| @@ -635,6 +635,9 @@ struct vortex_private { | |||
| 635 | must_free_region:1, /* Flag: if zero, Cardbus owns the I/O region */ | 635 | must_free_region:1, /* Flag: if zero, Cardbus owns the I/O region */ |
| 636 | large_frames:1, /* accept large frames */ | 636 | large_frames:1, /* accept large frames */ |
| 637 | handling_irq:1; /* private in_irq indicator */ | 637 | handling_irq:1; /* private in_irq indicator */ |
| 638 | /* {get|set}_wol operations are already serialized by rtnl. | ||
| 639 | * no additional locking is required for the enable_wol and acpi_set_WOL() | ||
| 640 | */ | ||
| 638 | int drv_flags; | 641 | int drv_flags; |
| 639 | u16 status_enable; | 642 | u16 status_enable; |
| 640 | u16 intr_enable; | 643 | u16 intr_enable; |
| @@ -2939,13 +2942,11 @@ static void vortex_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) | |||
| 2939 | { | 2942 | { |
| 2940 | struct vortex_private *vp = netdev_priv(dev); | 2943 | struct vortex_private *vp = netdev_priv(dev); |
| 2941 | 2944 | ||
| 2942 | spin_lock_irq(&vp->lock); | ||
| 2943 | wol->supported = WAKE_MAGIC; | 2945 | wol->supported = WAKE_MAGIC; |
| 2944 | 2946 | ||
| 2945 | wol->wolopts = 0; | 2947 | wol->wolopts = 0; |
| 2946 | if (vp->enable_wol) | 2948 | if (vp->enable_wol) |
| 2947 | wol->wolopts |= WAKE_MAGIC; | 2949 | wol->wolopts |= WAKE_MAGIC; |
| 2948 | spin_unlock_irq(&vp->lock); | ||
| 2949 | } | 2950 | } |
| 2950 | 2951 | ||
| 2951 | static int vortex_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) | 2952 | static int vortex_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) |
| @@ -2954,13 +2955,11 @@ static int vortex_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) | |||
| 2954 | if (wol->wolopts & ~WAKE_MAGIC) | 2955 | if (wol->wolopts & ~WAKE_MAGIC) |
| 2955 | return -EINVAL; | 2956 | return -EINVAL; |
| 2956 | 2957 | ||
| 2957 | spin_lock_irq(&vp->lock); | ||
| 2958 | if (wol->wolopts & WAKE_MAGIC) | 2958 | if (wol->wolopts & WAKE_MAGIC) |
| 2959 | vp->enable_wol = 1; | 2959 | vp->enable_wol = 1; |
| 2960 | else | 2960 | else |
| 2961 | vp->enable_wol = 0; | 2961 | vp->enable_wol = 0; |
| 2962 | acpi_set_WOL(dev); | 2962 | acpi_set_WOL(dev); |
| 2963 | spin_unlock_irq(&vp->lock); | ||
| 2964 | 2963 | ||
| 2965 | return 0; | 2964 | return 0; |
| 2966 | } | 2965 | } |
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index 822f586d72af..0ddf4c66afe2 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c | |||
| @@ -2466,6 +2466,9 @@ int bond_3ad_lacpdu_recv(struct sk_buff *skb, struct net_device *dev, struct pac | |||
| 2466 | if (!(dev->flags & IFF_MASTER)) | 2466 | if (!(dev->flags & IFF_MASTER)) |
| 2467 | goto out; | 2467 | goto out; |
| 2468 | 2468 | ||
| 2469 | if (!pskb_may_pull(skb, sizeof(struct lacpdu))) | ||
| 2470 | goto out; | ||
| 2471 | |||
| 2469 | read_lock(&bond->lock); | 2472 | read_lock(&bond->lock); |
| 2470 | slave = bond_get_slave_by_dev((struct bonding *)netdev_priv(dev), | 2473 | slave = bond_get_slave_by_dev((struct bonding *)netdev_priv(dev), |
| 2471 | orig_dev); | 2474 | orig_dev); |
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index c746b331771d..26bb118c4533 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c | |||
| @@ -362,6 +362,9 @@ static int rlb_arp_recv(struct sk_buff *skb, struct net_device *bond_dev, struct | |||
| 362 | goto out; | 362 | goto out; |
| 363 | } | 363 | } |
| 364 | 364 | ||
| 365 | if (!pskb_may_pull(skb, arp_hdr_len(bond_dev))) | ||
| 366 | goto out; | ||
| 367 | |||
| 365 | if (skb->len < sizeof(struct arp_pkt)) { | 368 | if (skb->len < sizeof(struct arp_pkt)) { |
| 366 | pr_debug("Packet is too small to be an ARP\n"); | 369 | pr_debug("Packet is too small to be an ARP\n"); |
| 367 | goto out; | 370 | goto out; |
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c index ad19585d960b..f208712c0b90 100644 --- a/drivers/net/cxgb3/cxgb3_main.c +++ b/drivers/net/cxgb3/cxgb3_main.c | |||
| @@ -2296,6 +2296,8 @@ static int cxgb_extension_ioctl(struct net_device *dev, void __user *useraddr) | |||
| 2296 | case CHELSIO_GET_QSET_NUM:{ | 2296 | case CHELSIO_GET_QSET_NUM:{ |
| 2297 | struct ch_reg edata; | 2297 | struct ch_reg edata; |
| 2298 | 2298 | ||
| 2299 | memset(&edata, 0, sizeof(struct ch_reg)); | ||
| 2300 | |||
| 2299 | edata.cmd = CHELSIO_GET_QSET_NUM; | 2301 | edata.cmd = CHELSIO_GET_QSET_NUM; |
| 2300 | edata.val = pi->nqsets; | 2302 | edata.val = pi->nqsets; |
| 2301 | if (copy_to_user(useraddr, &edata, sizeof(edata))) | 2303 | if (copy_to_user(useraddr, &edata, sizeof(edata))) |
diff --git a/drivers/net/eql.c b/drivers/net/eql.c index dda2c7944da9..0cb1cf9cf4b0 100644 --- a/drivers/net/eql.c +++ b/drivers/net/eql.c | |||
| @@ -555,6 +555,8 @@ static int eql_g_master_cfg(struct net_device *dev, master_config_t __user *mcp) | |||
| 555 | equalizer_t *eql; | 555 | equalizer_t *eql; |
| 556 | master_config_t mc; | 556 | master_config_t mc; |
| 557 | 557 | ||
| 558 | memset(&mc, 0, sizeof(master_config_t)); | ||
| 559 | |||
| 558 | if (eql_is_master(dev)) { | 560 | if (eql_is_master(dev)) { |
| 559 | eql = netdev_priv(dev); | 561 | eql = netdev_priv(dev); |
| 560 | mc.max_slaves = eql->max_slaves; | 562 | mc.max_slaves = eql->max_slaves; |
diff --git a/drivers/net/ll_temac_main.c b/drivers/net/ll_temac_main.c index bdf2149e5296..87f0a93b165c 100644 --- a/drivers/net/ll_temac_main.c +++ b/drivers/net/ll_temac_main.c | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | #include <linux/of_device.h> | 38 | #include <linux/of_device.h> |
| 39 | #include <linux/of_mdio.h> | 39 | #include <linux/of_mdio.h> |
| 40 | #include <linux/of_platform.h> | 40 | #include <linux/of_platform.h> |
| 41 | #include <linux/of_address.h> | ||
| 41 | #include <linux/skbuff.h> | 42 | #include <linux/skbuff.h> |
| 42 | #include <linux/spinlock.h> | 43 | #include <linux/spinlock.h> |
| 43 | #include <linux/tcp.h> /* needed for sizeof(tcphdr) */ | 44 | #include <linux/tcp.h> /* needed for sizeof(tcphdr) */ |
diff --git a/drivers/net/ll_temac_mdio.c b/drivers/net/ll_temac_mdio.c index 5ae28c975b38..8cf9d4f56bb2 100644 --- a/drivers/net/ll_temac_mdio.c +++ b/drivers/net/ll_temac_mdio.c | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | #include <linux/phy.h> | 10 | #include <linux/phy.h> |
| 11 | #include <linux/of.h> | 11 | #include <linux/of.h> |
| 12 | #include <linux/of_device.h> | 12 | #include <linux/of_device.h> |
| 13 | #include <linux/of_address.h> | ||
| 13 | #include <linux/slab.h> | 14 | #include <linux/slab.h> |
| 14 | #include <linux/of_mdio.h> | 15 | #include <linux/of_mdio.h> |
| 15 | 16 | ||
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c index 49279b0ee526..f9b509a6b09a 100644 --- a/drivers/net/pcmcia/pcnet_cs.c +++ b/drivers/net/pcmcia/pcnet_cs.c | |||
| @@ -508,7 +508,8 @@ static int pcnet_confcheck(struct pcmcia_device *p_dev, | |||
| 508 | unsigned int vcc, | 508 | unsigned int vcc, |
| 509 | void *priv_data) | 509 | void *priv_data) |
| 510 | { | 510 | { |
| 511 | int *has_shmem = priv_data; | 511 | int *priv = priv_data; |
| 512 | int try = (*priv & 0x1); | ||
| 512 | int i; | 513 | int i; |
| 513 | cistpl_io_t *io = &cfg->io; | 514 | cistpl_io_t *io = &cfg->io; |
| 514 | 515 | ||
| @@ -525,77 +526,103 @@ static int pcnet_confcheck(struct pcmcia_device *p_dev, | |||
| 525 | i = p_dev->resource[1]->end = 0; | 526 | i = p_dev->resource[1]->end = 0; |
| 526 | } | 527 | } |
| 527 | 528 | ||
| 528 | *has_shmem = ((cfg->mem.nwin == 1) && | 529 | *priv &= ((cfg->mem.nwin == 1) && |
| 529 | (cfg->mem.win[0].len >= 0x4000)); | 530 | (cfg->mem.win[0].len >= 0x4000)) ? 0x10 : ~0x10; |
| 531 | |||
| 530 | p_dev->resource[0]->start = io->win[i].base; | 532 | p_dev->resource[0]->start = io->win[i].base; |
| 531 | p_dev->resource[0]->end = io->win[i].len; | 533 | p_dev->resource[0]->end = io->win[i].len; |
| 532 | p_dev->io_lines = io->flags & CISTPL_IO_LINES_MASK; | 534 | if (!try) |
| 535 | p_dev->io_lines = io->flags & CISTPL_IO_LINES_MASK; | ||
| 536 | else | ||
| 537 | p_dev->io_lines = 16; | ||
| 533 | if (p_dev->resource[0]->end + p_dev->resource[1]->end >= 32) | 538 | if (p_dev->resource[0]->end + p_dev->resource[1]->end >= 32) |
| 534 | return try_io_port(p_dev); | 539 | return try_io_port(p_dev); |
| 535 | 540 | ||
| 536 | return 0; | 541 | return -EINVAL; |
| 542 | } | ||
| 543 | |||
| 544 | static hw_info_t *pcnet_try_config(struct pcmcia_device *link, | ||
| 545 | int *has_shmem, int try) | ||
| 546 | { | ||
| 547 | struct net_device *dev = link->priv; | ||
| 548 | hw_info_t *local_hw_info; | ||
| 549 | pcnet_dev_t *info = PRIV(dev); | ||
| 550 | int priv = try; | ||
| 551 | int ret; | ||
| 552 | |||
| 553 | ret = pcmcia_loop_config(link, pcnet_confcheck, &priv); | ||
| 554 | if (ret) { | ||
| 555 | dev_warn(&link->dev, "no useable port range found\n"); | ||
| 556 | return NULL; | ||
| 557 | } | ||
| 558 | *has_shmem = (priv & 0x10); | ||
| 559 | |||
| 560 | if (!link->irq) | ||
| 561 | return NULL; | ||
| 562 | |||
| 563 | if (resource_size(link->resource[1]) == 8) { | ||
| 564 | link->conf.Attributes |= CONF_ENABLE_SPKR; | ||
| 565 | link->conf.Status = CCSR_AUDIO_ENA; | ||
| 566 | } | ||
| 567 | if ((link->manf_id == MANFID_IBM) && | ||
| 568 | (link->card_id == PRODID_IBM_HOME_AND_AWAY)) | ||
| 569 | link->conf.ConfigIndex |= 0x10; | ||
| 570 | |||
| 571 | ret = pcmcia_request_configuration(link, &link->conf); | ||
| 572 | if (ret) | ||
| 573 | return NULL; | ||
| 574 | |||
| 575 | dev->irq = link->irq; | ||
| 576 | dev->base_addr = link->resource[0]->start; | ||
| 577 | |||
| 578 | if (info->flags & HAS_MISC_REG) { | ||
| 579 | if ((if_port == 1) || (if_port == 2)) | ||
| 580 | dev->if_port = if_port; | ||
| 581 | else | ||
| 582 | dev_notice(&link->dev, "invalid if_port requested\n"); | ||
| 583 | } else | ||
| 584 | dev->if_port = 0; | ||
| 585 | |||
| 586 | if ((link->conf.ConfigBase == 0x03c0) && | ||
| 587 | (link->manf_id == 0x149) && (link->card_id == 0xc1ab)) { | ||
| 588 | dev_info(&link->dev, | ||
| 589 | "this is an AX88190 card - use axnet_cs instead.\n"); | ||
| 590 | return NULL; | ||
| 591 | } | ||
| 592 | |||
| 593 | local_hw_info = get_hwinfo(link); | ||
| 594 | if (!local_hw_info) | ||
| 595 | local_hw_info = get_prom(link); | ||
| 596 | if (!local_hw_info) | ||
| 597 | local_hw_info = get_dl10019(link); | ||
| 598 | if (!local_hw_info) | ||
| 599 | local_hw_info = get_ax88190(link); | ||
| 600 | if (!local_hw_info) | ||
| 601 | local_hw_info = get_hwired(link); | ||
| 602 | |||
| 603 | return local_hw_info; | ||
| 537 | } | 604 | } |
| 538 | 605 | ||
| 539 | static int pcnet_config(struct pcmcia_device *link) | 606 | static int pcnet_config(struct pcmcia_device *link) |
| 540 | { | 607 | { |
| 541 | struct net_device *dev = link->priv; | 608 | struct net_device *dev = link->priv; |
| 542 | pcnet_dev_t *info = PRIV(dev); | 609 | pcnet_dev_t *info = PRIV(dev); |
| 543 | int ret, start_pg, stop_pg, cm_offset; | 610 | int start_pg, stop_pg, cm_offset; |
| 544 | int has_shmem = 0; | 611 | int has_shmem = 0; |
| 545 | hw_info_t *local_hw_info; | 612 | hw_info_t *local_hw_info; |
| 546 | 613 | ||
| 547 | dev_dbg(&link->dev, "pcnet_config\n"); | 614 | dev_dbg(&link->dev, "pcnet_config\n"); |
| 548 | 615 | ||
| 549 | ret = pcmcia_loop_config(link, pcnet_confcheck, &has_shmem); | 616 | local_hw_info = pcnet_try_config(link, &has_shmem, 0); |
| 550 | if (ret) | 617 | if (!local_hw_info) { |
| 551 | goto failed; | 618 | /* check whether forcing io_lines to 16 helps... */ |
| 552 | 619 | pcmcia_disable_device(link); | |
| 553 | if (!link->irq) | 620 | local_hw_info = pcnet_try_config(link, &has_shmem, 1); |
| 554 | goto failed; | 621 | if (local_hw_info == NULL) { |
| 555 | 622 | dev_notice(&link->dev, "unable to read hardware net" | |
| 556 | if (resource_size(link->resource[1]) == 8) { | 623 | " address for io base %#3lx\n", dev->base_addr); |
| 557 | link->conf.Attributes |= CONF_ENABLE_SPKR; | 624 | goto failed; |
| 558 | link->conf.Status = CCSR_AUDIO_ENA; | 625 | } |
| 559 | } | ||
| 560 | if ((link->manf_id == MANFID_IBM) && | ||
| 561 | (link->card_id == PRODID_IBM_HOME_AND_AWAY)) | ||
| 562 | link->conf.ConfigIndex |= 0x10; | ||
| 563 | |||
| 564 | ret = pcmcia_request_configuration(link, &link->conf); | ||
| 565 | if (ret) | ||
| 566 | goto failed; | ||
| 567 | dev->irq = link->irq; | ||
| 568 | dev->base_addr = link->resource[0]->start; | ||
| 569 | if (info->flags & HAS_MISC_REG) { | ||
| 570 | if ((if_port == 1) || (if_port == 2)) | ||
| 571 | dev->if_port = if_port; | ||
| 572 | else | ||
| 573 | printk(KERN_NOTICE "pcnet_cs: invalid if_port requested\n"); | ||
| 574 | } else { | ||
| 575 | dev->if_port = 0; | ||
| 576 | } | ||
| 577 | |||
| 578 | if ((link->conf.ConfigBase == 0x03c0) && | ||
| 579 | (link->manf_id == 0x149) && (link->card_id == 0xc1ab)) { | ||
| 580 | printk(KERN_INFO "pcnet_cs: this is an AX88190 card!\n"); | ||
| 581 | printk(KERN_INFO "pcnet_cs: use axnet_cs instead.\n"); | ||
| 582 | goto failed; | ||
| 583 | } | ||
| 584 | |||
| 585 | local_hw_info = get_hwinfo(link); | ||
| 586 | if (local_hw_info == NULL) | ||
| 587 | local_hw_info = get_prom(link); | ||
| 588 | if (local_hw_info == NULL) | ||
| 589 | local_hw_info = get_dl10019(link); | ||
| 590 | if (local_hw_info == NULL) | ||
| 591 | local_hw_info = get_ax88190(link); | ||
| 592 | if (local_hw_info == NULL) | ||
| 593 | local_hw_info = get_hwired(link); | ||
| 594 | |||
| 595 | if (local_hw_info == NULL) { | ||
| 596 | printk(KERN_NOTICE "pcnet_cs: unable to read hardware net" | ||
| 597 | " address for io base %#3lx\n", dev->base_addr); | ||
| 598 | goto failed; | ||
| 599 | } | 626 | } |
| 600 | 627 | ||
| 601 | info->flags = local_hw_info->flags; | 628 | info->flags = local_hw_info->flags; |
diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index 6a6b8199a0d6..6c58da2b882c 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c | |||
| @@ -308,7 +308,7 @@ static int mdio_bus_suspend(struct device *dev) | |||
| 308 | * may call phy routines that try to grab the same lock, and that may | 308 | * may call phy routines that try to grab the same lock, and that may |
| 309 | * lead to a deadlock. | 309 | * lead to a deadlock. |
| 310 | */ | 310 | */ |
| 311 | if (phydev->attached_dev) | 311 | if (phydev->attached_dev && phydev->adjust_link) |
| 312 | phy_stop_machine(phydev); | 312 | phy_stop_machine(phydev); |
| 313 | 313 | ||
| 314 | if (!mdio_bus_phy_may_suspend(phydev)) | 314 | if (!mdio_bus_phy_may_suspend(phydev)) |
| @@ -331,7 +331,7 @@ static int mdio_bus_resume(struct device *dev) | |||
| 331 | return ret; | 331 | return ret; |
| 332 | 332 | ||
| 333 | no_resume: | 333 | no_resume: |
| 334 | if (phydev->attached_dev) | 334 | if (phydev->attached_dev && phydev->adjust_link) |
| 335 | phy_start_machine(phydev, NULL); | 335 | phy_start_machine(phydev, NULL); |
| 336 | 336 | ||
| 337 | return 0; | 337 | return 0; |
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c index 6695a51e09e9..736b91703b3e 100644 --- a/drivers/net/ppp_generic.c +++ b/drivers/net/ppp_generic.c | |||
| @@ -1314,8 +1314,13 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb) | |||
| 1314 | hdrlen = (ppp->flags & SC_MP_XSHORTSEQ)? MPHDRLEN_SSN: MPHDRLEN; | 1314 | hdrlen = (ppp->flags & SC_MP_XSHORTSEQ)? MPHDRLEN_SSN: MPHDRLEN; |
| 1315 | i = 0; | 1315 | i = 0; |
| 1316 | list_for_each_entry(pch, &ppp->channels, clist) { | 1316 | list_for_each_entry(pch, &ppp->channels, clist) { |
| 1317 | navail += pch->avail = (pch->chan != NULL); | 1317 | if (pch->chan) { |
| 1318 | pch->speed = pch->chan->speed; | 1318 | pch->avail = 1; |
| 1319 | navail++; | ||
| 1320 | pch->speed = pch->chan->speed; | ||
| 1321 | } else { | ||
| 1322 | pch->avail = 0; | ||
| 1323 | } | ||
| 1319 | if (pch->avail) { | 1324 | if (pch->avail) { |
| 1320 | if (skb_queue_empty(&pch->file.xq) || | 1325 | if (skb_queue_empty(&pch->file.xq) || |
| 1321 | !pch->had_frag) { | 1326 | !pch->had_frag) { |
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index 078bbf4e6f19..a0da4a17b025 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
| @@ -2934,7 +2934,7 @@ static const struct rtl_cfg_info { | |||
| 2934 | .hw_start = rtl_hw_start_8168, | 2934 | .hw_start = rtl_hw_start_8168, |
| 2935 | .region = 2, | 2935 | .region = 2, |
| 2936 | .align = 8, | 2936 | .align = 8, |
| 2937 | .intr_event = SYSErr | LinkChg | RxOverflow | | 2937 | .intr_event = SYSErr | RxFIFOOver | LinkChg | RxOverflow | |
| 2938 | TxErr | TxOK | RxOK | RxErr, | 2938 | TxErr | TxOK | RxOK | RxErr, |
| 2939 | .napi_event = TxErr | TxOK | RxOK | RxOverflow, | 2939 | .napi_event = TxErr | TxOK | RxOK | RxOverflow, |
| 2940 | .features = RTL_FEATURE_GMII | RTL_FEATURE_MSI, | 2940 | .features = RTL_FEATURE_GMII | RTL_FEATURE_MSI, |
| @@ -4625,8 +4625,7 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance) | |||
| 4625 | } | 4625 | } |
| 4626 | 4626 | ||
| 4627 | /* Work around for rx fifo overflow */ | 4627 | /* Work around for rx fifo overflow */ |
| 4628 | if (unlikely(status & RxFIFOOver) && | 4628 | if (unlikely(status & RxFIFOOver)) { |
| 4629 | (tp->mac_version == RTL_GIGA_MAC_VER_11)) { | ||
| 4630 | netif_stop_queue(dev); | 4629 | netif_stop_queue(dev); |
| 4631 | rtl8169_tx_timeout(dev); | 4630 | rtl8169_tx_timeout(dev); |
| 4632 | break; | 4631 | break; |
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c index 6efca66b8766..1cd752f9a6e1 100644 --- a/drivers/net/usb/hso.c +++ b/drivers/net/usb/hso.c | |||
| @@ -1652,6 +1652,8 @@ static int hso_get_count(struct hso_serial *serial, | |||
| 1652 | struct uart_icount cnow; | 1652 | struct uart_icount cnow; |
| 1653 | struct hso_tiocmget *tiocmget = serial->tiocmget; | 1653 | struct hso_tiocmget *tiocmget = serial->tiocmget; |
| 1654 | 1654 | ||
| 1655 | memset(&icount, 0, sizeof(struct serial_icounter_struct)); | ||
| 1656 | |||
| 1655 | if (!tiocmget) | 1657 | if (!tiocmget) |
| 1656 | return -ENOENT; | 1658 | return -ENOENT; |
| 1657 | spin_lock_irq(&serial->serial_lock); | 1659 | spin_lock_irq(&serial->serial_lock); |
