aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/3c501.c8
-rw-r--r--drivers/net/3c503.c15
-rw-r--r--drivers/net/3c507.c4
-rw-r--r--drivers/net/3c509.c10
-rw-r--r--drivers/net/3c515.c13
-rw-r--r--drivers/net/3c527.c4
-rw-r--r--drivers/net/3c59x.c4
-rw-r--r--drivers/net/8139cp.c4
-rw-r--r--drivers/net/8139too.c12
-rw-r--r--drivers/net/appletalk/ipddp.c12
-rw-r--r--drivers/net/arcnet/arc-rimi.c6
-rw-r--r--drivers/net/arcnet/arcnet.c14
-rw-r--r--drivers/net/at1700.c16
-rw-r--r--drivers/net/atarilance.c4
-rw-r--r--drivers/net/atlx/atl1.c8
-rw-r--r--drivers/net/atp.c4
-rw-r--r--drivers/net/benet/be_main.c4
-rw-r--r--drivers/net/bfin_mac.c12
-rw-r--r--drivers/net/bmac.c4
-rw-r--r--drivers/net/bnx2x_link.c4
-rw-r--r--drivers/net/bonding/bond_3ad.c24
-rw-r--r--drivers/net/bonding/bond_main.c4
-rw-r--r--drivers/net/bonding/bonding.h4
-rw-r--r--drivers/net/can/usb/ems_usb.c8
-rw-r--r--drivers/net/cxgb3/cxgb3_main.c26
-rw-r--r--drivers/net/dl2k.c4
-rw-r--r--drivers/net/dm9000.c4
-rw-r--r--drivers/net/e1000/e1000_main.c4
-rw-r--r--drivers/net/e1000e/netdev.c8
-rw-r--r--drivers/net/e2100.c6
-rw-r--r--drivers/net/ehea/ehea_main.c20
-rw-r--r--drivers/net/ehea/ehea_qmr.c4
-rw-r--r--drivers/net/epic100.c8
-rw-r--r--drivers/net/fealnx.c12
-rw-r--r--drivers/net/gianfar_sysfs.c4
-rw-r--r--drivers/net/hamachi.c10
-rw-r--r--drivers/net/hamradio/bpqether.c5
-rw-r--r--drivers/net/hamradio/dmascc.c8
-rw-r--r--drivers/net/hp-plus.c4
-rw-r--r--drivers/net/hp100.c4
-rw-r--r--drivers/net/ibm_newemac/core.c24
-rw-r--r--drivers/net/igb/igb_main.c5
-rw-r--r--drivers/net/igbvf/netdev.c4
-rw-r--r--drivers/net/irda/irda-usb.c8
-rw-r--r--drivers/net/irda/stir4200.c12
-rw-r--r--drivers/net/irda/via-ircc.c16
-rw-r--r--drivers/net/irda/vlsi_ir.c16
-rw-r--r--drivers/net/isa-skeleton.c6
-rw-r--r--drivers/net/iseries_veth.c42
-rw-r--r--drivers/net/jazzsonic.c4
-rw-r--r--drivers/net/jme.c12
-rw-r--r--drivers/net/lance.c12
-rw-r--r--drivers/net/lib8390.c12
-rw-r--r--drivers/net/ll_temac_main.c4
-rw-r--r--drivers/net/mac89x0.c4
-rw-r--r--drivers/net/mace.c4
-rw-r--r--drivers/net/myri10ge/myri10ge.c16
-rw-r--r--drivers/net/natsemi.c28
-rw-r--r--drivers/net/netxen/netxen_nic_ethtool.c32
-rw-r--r--drivers/net/netxen/netxen_nic_hw.c16
-rw-r--r--drivers/net/ni52.c4
-rw-r--r--drivers/net/ns83820.c24
-rw-r--r--drivers/net/pci-skeleton.c12
-rw-r--r--drivers/net/pcmcia/axnet_cs.c4
-rw-r--r--drivers/net/pcmcia/fmvj18x_cs.c20
-rw-r--r--drivers/net/pcmcia/pcnet_cs.c4
-rw-r--r--drivers/net/pcmcia/smc91c92_cs.c8
-rw-r--r--drivers/net/pcmcia/xirc2ps_cs.c16
-rw-r--r--drivers/net/pcnet32.c20
-rw-r--r--drivers/net/phy/phy.c18
-rw-r--r--drivers/net/plip.c13
-rw-r--r--drivers/net/ppp_async.c12
-rw-r--r--drivers/net/ppp_deflate.c44
-rw-r--r--drivers/net/ppp_generic.c66
-rw-r--r--drivers/net/ppp_mppe.c8
-rw-r--r--drivers/net/ppp_synctty.c4
-rw-r--r--drivers/net/pppoe.c4
-rw-r--r--drivers/net/qla3xxx.c8
-rw-r--r--drivers/net/qlge/qlge_main.c4
-rw-r--r--drivers/net/r6040.c3
-rw-r--r--drivers/net/r8169.c4
-rw-r--r--drivers/net/s6gmac.c6
-rw-r--r--drivers/net/sc92031.c14
-rw-r--r--drivers/net/skge.c23
-rw-r--r--drivers/net/sky2.c32
-rw-r--r--drivers/net/slip.c8
-rw-r--r--drivers/net/smc-mca.c6
-rw-r--r--drivers/net/smc91x.h10
-rw-r--r--drivers/net/smsc911x.c4
-rw-r--r--drivers/net/starfire.c8
-rw-r--r--drivers/net/stmmac/stmmac_main.c3
-rw-r--r--drivers/net/sundance.c16
-rw-r--r--drivers/net/sungem.h4
-rw-r--r--drivers/net/sunhme.c6
-rw-r--r--drivers/net/tehuti.c14
-rw-r--r--drivers/net/tg3.c13
-rw-r--r--drivers/net/tlan.c4
-rw-r--r--drivers/net/tokenring/lanstreamer.c8
-rw-r--r--drivers/net/tokenring/smctr.c86
-rw-r--r--drivers/net/tokenring/tms380tr.c24
-rw-r--r--drivers/net/tulip/21142.c8
-rw-r--r--drivers/net/tulip/de2104x.c6
-rw-r--r--drivers/net/tulip/eeprom.c8
-rw-r--r--drivers/net/tulip/interrupt.c16
-rw-r--r--drivers/net/tulip/media.c4
-rw-r--r--drivers/net/tulip/pnic2.c6
-rw-r--r--drivers/net/tulip/tulip_core.c22
-rw-r--r--drivers/net/tulip/winbond-840.c8
-rw-r--r--drivers/net/typhoon.c4
-rw-r--r--drivers/net/ucc_geth.c24
-rw-r--r--drivers/net/usb/asix.c12
-rw-r--r--drivers/net/usb/catc.c4
-rw-r--r--drivers/net/usb/cdc-phonet.c8
-rw-r--r--drivers/net/usb/cdc_eem.c4
-rw-r--r--drivers/net/usb/cdc_ether.c32
-rw-r--r--drivers/net/usb/hso.c34
-rw-r--r--drivers/net/usb/mcs7830.c4
-rw-r--r--drivers/net/usb/rndis_host.c10
-rw-r--r--drivers/net/usb/usbnet.c48
-rw-r--r--drivers/net/usb/zaurus.c4
-rw-r--r--drivers/net/via-rhine.c10
-rw-r--r--drivers/net/via-velocity.c16
-rw-r--r--drivers/net/virtio_net.c10
-rw-r--r--drivers/net/vmxnet3/vmxnet3_drv.c4
-rw-r--r--drivers/net/vxge/vxge-main.c6
-rw-r--r--drivers/net/vxge/vxge-traffic.c20
-rw-r--r--drivers/net/wan/farsync.c12
-rw-r--r--drivers/net/wan/pc300_drv.c17
-rw-r--r--drivers/net/wan/sbni.c28
-rw-r--r--drivers/net/wan/x25_asy.c4
-rw-r--r--drivers/net/yellowfin.c8
-rw-r--r--drivers/net/znet.c4
132 files changed, 799 insertions, 805 deletions
diff --git a/drivers/net/3c501.c b/drivers/net/3c501.c
index 62ceb2b4820c..4d4cad393dce 100644
--- a/drivers/net/3c501.c
+++ b/drivers/net/3c501.c
@@ -249,11 +249,11 @@ static int __init el1_probe1(struct net_device *dev, int ioaddr)
249 * for the Sager NP943 prefix. 249 * for the Sager NP943 prefix.
250 */ 250 */
251 251
252 if (station_addr[0] == 0x02 && station_addr[1] == 0x60 252 if (station_addr[0] == 0x02 && station_addr[1] == 0x60 &&
253 && station_addr[2] == 0x8c) 253 station_addr[2] == 0x8c)
254 mname = "3c501"; 254 mname = "3c501";
255 else if (station_addr[0] == 0x00 && station_addr[1] == 0x80 255 else if (station_addr[0] == 0x00 && station_addr[1] == 0x80 &&
256 && station_addr[2] == 0xC8) 256 station_addr[2] == 0xC8)
257 mname = "NP943"; 257 mname = "NP943";
258 else { 258 else {
259 release_region(ioaddr, EL1_IO_EXTENT); 259 release_region(ioaddr, EL1_IO_EXTENT);
diff --git a/drivers/net/3c503.c b/drivers/net/3c503.c
index c71e12d05f6e..66e0323c1839 100644
--- a/drivers/net/3c503.c
+++ b/drivers/net/3c503.c
@@ -214,8 +214,8 @@ el2_probe1(struct net_device *dev, int ioaddr)
214 iobase_reg = inb(ioaddr+0x403); 214 iobase_reg = inb(ioaddr+0x403);
215 membase_reg = inb(ioaddr+0x404); 215 membase_reg = inb(ioaddr+0x404);
216 /* ASIC location registers should be 0 or have only a single bit set. */ 216 /* ASIC location registers should be 0 or have only a single bit set. */
217 if ( (iobase_reg & (iobase_reg - 1)) 217 if ((iobase_reg & (iobase_reg - 1)) ||
218 || (membase_reg & (membase_reg - 1))) { 218 (membase_reg & (membase_reg - 1))) {
219 retval = -ENODEV; 219 retval = -ENODEV;
220 goto out1; 220 goto out1;
221 } 221 }
@@ -291,8 +291,8 @@ el2_probe1(struct net_device *dev, int ioaddr)
291 writel(0xba5eba5e, mem_base); 291 writel(0xba5eba5e, mem_base);
292 for (i = sizeof(test_val); i < EL2_MEMSIZE; i+=sizeof(test_val)) { 292 for (i = sizeof(test_val); i < EL2_MEMSIZE; i+=sizeof(test_val)) {
293 writel(test_val, mem_base + i); 293 writel(test_val, mem_base + i);
294 if (readl(mem_base) != 0xba5eba5e 294 if (readl(mem_base) != 0xba5eba5e ||
295 || readl(mem_base + i) != test_val) { 295 readl(mem_base + i) != test_val) {
296 pr_warning("3c503: memory failure or memory address conflict.\n"); 296 pr_warning("3c503: memory failure or memory address conflict.\n");
297 dev->mem_start = 0; 297 dev->mem_start = 0;
298 ei_status.name = "3c503-PIO"; 298 ei_status.name = "3c503-PIO";
@@ -397,9 +397,10 @@ el2_open(struct net_device *dev)
397 unsigned long cookie = probe_irq_on(); 397 unsigned long cookie = probe_irq_on();
398 outb_p(0x04 << ((*irqp == 9) ? 2 : *irqp), E33G_IDCFR); 398 outb_p(0x04 << ((*irqp == 9) ? 2 : *irqp), E33G_IDCFR);
399 outb_p(0x00, E33G_IDCFR); 399 outb_p(0x00, E33G_IDCFR);
400 if (*irqp == probe_irq_off(cookie) /* It's a good IRQ line! */ 400 if (*irqp == probe_irq_off(cookie) && /* It's a good IRQ line! */
401 && ((retval = request_irq(dev->irq = *irqp, 401 ((retval = request_irq(dev->irq = *irqp,
402 eip_interrupt, 0, dev->name, dev)) == 0)) 402 eip_interrupt, 0,
403 dev->name, dev)) == 0))
403 break; 404 break;
404 } else { 405 } else {
405 if (retval != -EBUSY) 406 if (retval != -EBUSY)
diff --git a/drivers/net/3c507.c b/drivers/net/3c507.c
index 605f1d17a8f3..fbc231153e55 100644
--- a/drivers/net/3c507.c
+++ b/drivers/net/3c507.c
@@ -836,8 +836,8 @@ static void el16_rx(struct net_device *dev)
836 void __iomem *data_frame = lp->base + data_buffer_addr; 836 void __iomem *data_frame = lp->base + data_buffer_addr;
837 ushort pkt_len = readw(data_frame); 837 ushort pkt_len = readw(data_frame);
838 838
839 if (rfd_cmd != 0 || data_buffer_addr != rx_head + 22 839 if (rfd_cmd != 0 || data_buffer_addr != rx_head + 22 ||
840 || (pkt_len & 0xC000) != 0xC000) { 840 (pkt_len & 0xC000) != 0xC000) {
841 pr_err("%s: Rx frame at %#x corrupted, " 841 pr_err("%s: Rx frame at %#x corrupted, "
842 "status %04x cmd %04x next %04x " 842 "status %04x cmd %04x next %04x "
843 "data-buf @%04x %04x.\n", 843 "data-buf @%04x %04x.\n",
diff --git a/drivers/net/3c509.c b/drivers/net/3c509.c
index 8d4ce0964073..9d85efce5916 100644
--- a/drivers/net/3c509.c
+++ b/drivers/net/3c509.c
@@ -253,9 +253,9 @@ static int el3_isa_id_sequence(__be16 *phys_addr)
253 This check is needed in order not to register them twice. */ 253 This check is needed in order not to register them twice. */
254 for (i = 0; i < el3_cards; i++) { 254 for (i = 0; i < el3_cards; i++) {
255 struct el3_private *lp = netdev_priv(el3_devs[i]); 255 struct el3_private *lp = netdev_priv(el3_devs[i]);
256 if (lp->type == EL3_PNP 256 if (lp->type == EL3_PNP &&
257 && !memcmp(phys_addr, el3_devs[i]->dev_addr, 257 !memcmp(phys_addr, el3_devs[i]->dev_addr,
258 ETH_ALEN)) { 258 ETH_ALEN)) {
259 if (el3_debug > 3) 259 if (el3_debug > 3)
260 pr_debug("3c509 with address %02x %02x %02x %02x %02x %02x was found by ISAPnP\n", 260 pr_debug("3c509 with address %02x %02x %02x %02x %02x %02x was found by ISAPnP\n",
261 phys_addr[0] & 0xff, phys_addr[0] >> 8, 261 phys_addr[0] & 0xff, phys_addr[0] >> 8,
@@ -835,8 +835,8 @@ el3_start_xmit(struct sk_buff *skb, struct net_device *dev)
835#ifndef final_version 835#ifndef final_version
836 { /* Error-checking code, delete someday. */ 836 { /* Error-checking code, delete someday. */
837 ushort status = inw(ioaddr + EL3_STATUS); 837 ushort status = inw(ioaddr + EL3_STATUS);
838 if (status & 0x0001 /* IRQ line active, missed one. */ 838 if (status & 0x0001 && /* IRQ line active, missed one. */
839 && inw(ioaddr + EL3_STATUS) & 1) { /* Make sure. */ 839 inw(ioaddr + EL3_STATUS) & 1) { /* Make sure. */
840 pr_debug("%s: Missed interrupt, status then %04x now %04x" 840 pr_debug("%s: Missed interrupt, status then %04x now %04x"
841 " Tx %2.2x Rx %4.4x.\n", dev->name, status, 841 " Tx %2.2x Rx %4.4x.\n", dev->name, status,
842 inw(ioaddr + EL3_STATUS), inb(ioaddr + TX_STATUS), 842 inw(ioaddr + EL3_STATUS), inb(ioaddr + TX_STATUS),
diff --git a/drivers/net/3c515.c b/drivers/net/3c515.c
index 37faf36e2457..063b049ffe55 100644
--- a/drivers/net/3c515.c
+++ b/drivers/net/3c515.c
@@ -764,10 +764,11 @@ static int corkscrew_open(struct net_device *dev)
764 /* Use the now-standard shared IRQ implementation. */ 764 /* Use the now-standard shared IRQ implementation. */
765 if (vp->capabilities == 0x11c7) { 765 if (vp->capabilities == 0x11c7) {
766 /* Corkscrew: Cannot share ISA resources. */ 766 /* Corkscrew: Cannot share ISA resources. */
767 if (dev->irq == 0 767 if (dev->irq == 0 ||
768 || dev->dma == 0 768 dev->dma == 0 ||
769 || request_irq(dev->irq, corkscrew_interrupt, 0, 769 request_irq(dev->irq, corkscrew_interrupt, 0,
770 vp->product_name, dev)) return -EAGAIN; 770 vp->product_name, dev))
771 return -EAGAIN;
771 enable_dma(dev->dma); 772 enable_dma(dev->dma);
772 set_dma_mode(dev->dma, DMA_MODE_CASCADE); 773 set_dma_mode(dev->dma, DMA_MODE_CASCADE);
773 } else if (request_irq(dev->irq, corkscrew_interrupt, IRQF_SHARED, 774 } else if (request_irq(dev->irq, corkscrew_interrupt, IRQF_SHARED,
@@ -1368,8 +1369,8 @@ static int boomerang_rx(struct net_device *dev)
1368 1369
1369 /* Check if the packet is long enough to just accept without 1370 /* Check if the packet is long enough to just accept without
1370 copying to a properly sized skbuff. */ 1371 copying to a properly sized skbuff. */
1371 if (pkt_len < rx_copybreak 1372 if (pkt_len < rx_copybreak &&
1372 && (skb = dev_alloc_skb(pkt_len + 4)) != NULL) { 1373 (skb = dev_alloc_skb(pkt_len + 4)) != NULL) {
1373 skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */ 1374 skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */
1374 /* 'skb_put()' points to the start of sk_buff data area. */ 1375 /* 'skb_put()' points to the start of sk_buff data area. */
1375 memcpy(skb_put(skb, pkt_len), 1376 memcpy(skb_put(skb, pkt_len),
diff --git a/drivers/net/3c527.c b/drivers/net/3c527.c
index d91c3464fe72..36c4191e7bca 100644
--- a/drivers/net/3c527.c
+++ b/drivers/net/3c527.c
@@ -1168,8 +1168,8 @@ static void mc32_rx_ring(struct net_device *dev)
1168 1168
1169 /* Try to save time by avoiding a copy on big frames */ 1169 /* Try to save time by avoiding a copy on big frames */
1170 1170
1171 if ((length > RX_COPYBREAK) 1171 if ((length > RX_COPYBREAK) &&
1172 && ((newskb=dev_alloc_skb(1532)) != NULL)) 1172 ((newskb=dev_alloc_skb(1532)) != NULL))
1173 { 1173 {
1174 skb=lp->rx_ring[rx_ring_tail].skb; 1174 skb=lp->rx_ring[rx_ring_tail].skb;
1175 skb_put(skb, length); 1175 skb_put(skb, length);
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
index 32031eaf4910..78b7167a8ce3 100644
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
@@ -1942,8 +1942,8 @@ vortex_error(struct net_device *dev, int status)
1942 if (status & TxComplete) { /* Really "TxError" for us. */ 1942 if (status & TxComplete) { /* Really "TxError" for us. */
1943 tx_status = ioread8(ioaddr + TxStatus); 1943 tx_status = ioread8(ioaddr + TxStatus);
1944 /* Presumably a tx-timeout. We must merely re-enable. */ 1944 /* Presumably a tx-timeout. We must merely re-enable. */
1945 if (vortex_debug > 2 1945 if (vortex_debug > 2 ||
1946 || (tx_status != 0x88 && vortex_debug > 0)) { 1946 (tx_status != 0x88 && vortex_debug > 0)) {
1947 pr_err("%s: Transmit error, Tx status register %2.2x.\n", 1947 pr_err("%s: Transmit error, Tx status register %2.2x.\n",
1948 dev->name, tx_status); 1948 dev->name, tx_status);
1949 if (tx_status == 0x82) { 1949 if (tx_status == 0x82) {
diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c
index ab451bb8995a..3f452bcbfb9e 100644
--- a/drivers/net/8139cp.c
+++ b/drivers/net/8139cp.c
@@ -909,8 +909,8 @@ static void __cp_set_rx_mode (struct net_device *dev)
909 AcceptBroadcast | AcceptMulticast | AcceptMyPhys | 909 AcceptBroadcast | AcceptMulticast | AcceptMyPhys |
910 AcceptAllPhys; 910 AcceptAllPhys;
911 mc_filter[1] = mc_filter[0] = 0xffffffff; 911 mc_filter[1] = mc_filter[0] = 0xffffffff;
912 } else if ((dev->mc_count > multicast_filter_limit) 912 } else if ((dev->mc_count > multicast_filter_limit) ||
913 || (dev->flags & IFF_ALLMULTI)) { 913 (dev->flags & IFF_ALLMULTI)) {
914 /* Too many to filter perfectly -- accept all multicasts. */ 914 /* Too many to filter perfectly -- accept all multicasts. */
915 rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys; 915 rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
916 mc_filter[1] = mc_filter[0] = 0xffffffff; 916 mc_filter[1] = mc_filter[0] = 0xffffffff;
diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
index 7e333f73b228..25f7339daabd 100644
--- a/drivers/net/8139too.c
+++ b/drivers/net/8139too.c
@@ -1549,8 +1549,8 @@ static inline void rtl8139_thread_iter (struct net_device *dev,
1549 mii_lpa = mdio_read (dev, tp->phys[0], MII_LPA); 1549 mii_lpa = mdio_read (dev, tp->phys[0], MII_LPA);
1550 1550
1551 if (!tp->mii.force_media && mii_lpa != 0xffff) { 1551 if (!tp->mii.force_media && mii_lpa != 0xffff) {
1552 int duplex = (mii_lpa & LPA_100FULL) 1552 int duplex = ((mii_lpa & LPA_100FULL) ||
1553 || (mii_lpa & 0x01C0) == 0x0040; 1553 (mii_lpa & 0x01C0) == 0x0040);
1554 if (tp->mii.full_duplex != duplex) { 1554 if (tp->mii.full_duplex != duplex) {
1555 tp->mii.full_duplex = duplex; 1555 tp->mii.full_duplex = duplex;
1556 1556
@@ -1936,8 +1936,8 @@ static int rtl8139_rx(struct net_device *dev, struct rtl8139_private *tp,
1936 RTL_R16 (RxBufAddr), 1936 RTL_R16 (RxBufAddr),
1937 RTL_R16 (RxBufPtr), RTL_R8 (ChipCmd)); 1937 RTL_R16 (RxBufPtr), RTL_R8 (ChipCmd));
1938 1938
1939 while (netif_running(dev) && received < budget 1939 while (netif_running(dev) && received < budget &&
1940 && (RTL_R8 (ChipCmd) & RxBufEmpty) == 0) { 1940 (RTL_R8 (ChipCmd) & RxBufEmpty) == 0) {
1941 u32 ring_offset = cur_rx % RX_BUF_LEN; 1941 u32 ring_offset = cur_rx % RX_BUF_LEN;
1942 u32 rx_status; 1942 u32 rx_status;
1943 unsigned int pkt_size; 1943 unsigned int pkt_size;
@@ -2521,8 +2521,8 @@ static void __set_rx_mode (struct net_device *dev)
2521 AcceptBroadcast | AcceptMulticast | AcceptMyPhys | 2521 AcceptBroadcast | AcceptMulticast | AcceptMyPhys |
2522 AcceptAllPhys; 2522 AcceptAllPhys;
2523 mc_filter[1] = mc_filter[0] = 0xffffffff; 2523 mc_filter[1] = mc_filter[0] = 0xffffffff;
2524 } else if ((dev->mc_count > multicast_filter_limit) 2524 } else if ((dev->mc_count > multicast_filter_limit) ||
2525 || (dev->flags & IFF_ALLMULTI)) { 2525 (dev->flags & IFF_ALLMULTI)) {
2526 /* Too many to filter perfectly -- accept all multicasts. */ 2526 /* Too many to filter perfectly -- accept all multicasts. */
2527 rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys; 2527 rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
2528 mc_filter[1] = mc_filter[0] = 0xffffffff; 2528 mc_filter[1] = mc_filter[0] = 0xffffffff;
diff --git a/drivers/net/appletalk/ipddp.c b/drivers/net/appletalk/ipddp.c
index aaf14d306a4a..eb0448b03f41 100644
--- a/drivers/net/appletalk/ipddp.c
+++ b/drivers/net/appletalk/ipddp.c
@@ -230,9 +230,9 @@ static int ipddp_delete(struct ipddp_route *rt)
230 spin_lock_bh(&ipddp_route_lock); 230 spin_lock_bh(&ipddp_route_lock);
231 while((tmp = *r) != NULL) 231 while((tmp = *r) != NULL)
232 { 232 {
233 if(tmp->ip == rt->ip 233 if(tmp->ip == rt->ip &&
234 && tmp->at.s_net == rt->at.s_net 234 tmp->at.s_net == rt->at.s_net &&
235 && tmp->at.s_node == rt->at.s_node) 235 tmp->at.s_node == rt->at.s_node)
236 { 236 {
237 *r = tmp->next; 237 *r = tmp->next;
238 spin_unlock_bh(&ipddp_route_lock); 238 spin_unlock_bh(&ipddp_route_lock);
@@ -255,9 +255,9 @@ static struct ipddp_route* __ipddp_find_route(struct ipddp_route *rt)
255 255
256 for(f = ipddp_route_list; f != NULL; f = f->next) 256 for(f = ipddp_route_list; f != NULL; f = f->next)
257 { 257 {
258 if(f->ip == rt->ip 258 if(f->ip == rt->ip &&
259 && f->at.s_net == rt->at.s_net 259 f->at.s_net == rt->at.s_net &&
260 && f->at.s_node == rt->at.s_node) 260 f->at.s_node == rt->at.s_node)
261 return (f); 261 return (f);
262 } 262 }
263 263
diff --git a/drivers/net/arcnet/arc-rimi.c b/drivers/net/arcnet/arc-rimi.c
index c5b988140a91..e6afab2455b1 100644
--- a/drivers/net/arcnet/arc-rimi.c
+++ b/drivers/net/arcnet/arc-rimi.c
@@ -174,9 +174,9 @@ static int __init arcrimi_found(struct net_device *dev)
174 * 2k (or there are no mirrors at all) but on some, it's 4k. 174 * 2k (or there are no mirrors at all) but on some, it's 4k.
175 */ 175 */
176 mirror_size = MIRROR_SIZE; 176 mirror_size = MIRROR_SIZE;
177 if (readb(p) == TESTvalue 177 if (readb(p) == TESTvalue &&
178 && check_mirror(shmem - MIRROR_SIZE, MIRROR_SIZE) == 0 178 check_mirror(shmem - MIRROR_SIZE, MIRROR_SIZE) == 0 &&
179 && check_mirror(shmem - 2 * MIRROR_SIZE, MIRROR_SIZE) == 1) 179 check_mirror(shmem - 2 * MIRROR_SIZE, MIRROR_SIZE) == 1)
180 mirror_size = 2 * MIRROR_SIZE; 180 mirror_size = 2 * MIRROR_SIZE;
181 181
182 first_mirror = shmem - mirror_size; 182 first_mirror = shmem - mirror_size;
diff --git a/drivers/net/arcnet/arcnet.c b/drivers/net/arcnet/arcnet.c
index 75a572560909..d8f029303754 100644
--- a/drivers/net/arcnet/arcnet.c
+++ b/drivers/net/arcnet/arcnet.c
@@ -301,8 +301,8 @@ static int choose_mtu(void)
301 301
302 /* choose the smallest MTU of all available encaps */ 302 /* choose the smallest MTU of all available encaps */
303 for (count = 0; count < 256; count++) { 303 for (count = 0; count < 256; count++) {
304 if (arc_proto_map[count] != &arc_proto_null 304 if (arc_proto_map[count] != &arc_proto_null &&
305 && arc_proto_map[count]->mtu < mtu) { 305 arc_proto_map[count]->mtu < mtu) {
306 mtu = arc_proto_map[count]->mtu; 306 mtu = arc_proto_map[count]->mtu;
307 } 307 }
308 } 308 }
@@ -953,13 +953,13 @@ irqreturn_t arcnet_interrupt(int irq, void *dev_id)
953 * > RECON_THRESHOLD/min; 953 * > RECON_THRESHOLD/min;
954 * then print a warning message. 954 * then print a warning message.
955 */ 955 */
956 if (!lp->network_down 956 if (!lp->network_down &&
957 && (lp->last_recon - lp->first_recon) <= HZ * 60 957 (lp->last_recon - lp->first_recon) <= HZ * 60 &&
958 && lp->num_recons >= RECON_THRESHOLD) { 958 lp->num_recons >= RECON_THRESHOLD) {
959 lp->network_down = 1; 959 lp->network_down = 1;
960 BUGMSG(D_NORMAL, "many reconfigurations detected: cabling problem?\n"); 960 BUGMSG(D_NORMAL, "many reconfigurations detected: cabling problem?\n");
961 } else if (!lp->network_down 961 } else if (!lp->network_down &&
962 && lp->last_recon - lp->first_recon > HZ * 60) { 962 lp->last_recon - lp->first_recon > HZ * 60) {
963 /* reset counters if we've gone for over a minute. */ 963 /* reset counters if we've gone for over a minute. */
964 lp->first_recon = lp->last_recon; 964 lp->first_recon = lp->last_recon;
965 lp->num_recons = 1; 965 lp->num_recons = 1;
diff --git a/drivers/net/at1700.c b/drivers/net/at1700.c
index d4ab69f032be..b14f4799d5d1 100644
--- a/drivers/net/at1700.c
+++ b/drivers/net/at1700.c
@@ -350,13 +350,13 @@ static int __init at1700_probe1(struct net_device *dev, int ioaddr)
350 slot = -1; 350 slot = -1;
351 /* We must check for the EEPROM-config boards first, else accessing 351 /* We must check for the EEPROM-config boards first, else accessing
352 IOCONFIG0 will move the board! */ 352 IOCONFIG0 will move the board! */
353 if (at1700_probe_list[inb(ioaddr + IOCONFIG1) & 0x07] == ioaddr 353 if (at1700_probe_list[inb(ioaddr + IOCONFIG1) & 0x07] == ioaddr &&
354 && read_eeprom(ioaddr, 4) == 0x0000 354 read_eeprom(ioaddr, 4) == 0x0000 &&
355 && (read_eeprom(ioaddr, 5) & 0xff00) == 0xF400) 355 (read_eeprom(ioaddr, 5) & 0xff00) == 0xF400)
356 is_at1700 = 1; 356 is_at1700 = 1;
357 else if (inb(ioaddr + SAPROM ) == 0x00 357 else if (inb(ioaddr + SAPROM ) == 0x00 &&
358 && inb(ioaddr + SAPROM + 1) == 0x00 358 inb(ioaddr + SAPROM + 1) == 0x00 &&
359 && inb(ioaddr + SAPROM + 2) == 0x0e) 359 inb(ioaddr + SAPROM + 2) == 0x0e)
360 is_fmv18x = 1; 360 is_fmv18x = 1;
361 else { 361 else {
362 goto err_out; 362 goto err_out;
@@ -839,8 +839,8 @@ set_rx_mode(struct net_device *dev)
839 if (dev->flags & IFF_PROMISC) { 839 if (dev->flags & IFF_PROMISC) {
840 memset(mc_filter, 0xff, sizeof(mc_filter)); 840 memset(mc_filter, 0xff, sizeof(mc_filter));
841 outb(3, ioaddr + RX_MODE); /* Enable promiscuous mode */ 841 outb(3, ioaddr + RX_MODE); /* Enable promiscuous mode */
842 } else if (dev->mc_count > MC_FILTERBREAK 842 } else if (dev->mc_count > MC_FILTERBREAK ||
843 || (dev->flags & IFF_ALLMULTI)) { 843 (dev->flags & IFF_ALLMULTI)) {
844 /* Too many to filter perfectly -- accept all multicasts. */ 844 /* Too many to filter perfectly -- accept all multicasts. */
845 memset(mc_filter, 0xff, sizeof(mc_filter)); 845 memset(mc_filter, 0xff, sizeof(mc_filter));
846 outb(2, ioaddr + RX_MODE); /* Use normal mode. */ 846 outb(2, ioaddr + RX_MODE); /* Use normal mode. */
diff --git a/drivers/net/atarilance.c b/drivers/net/atarilance.c
index 0c0deceb6938..c5721cb38265 100644
--- a/drivers/net/atarilance.c
+++ b/drivers/net/atarilance.c
@@ -930,8 +930,8 @@ static irqreturn_t lance_interrupt( int irq, void *dev_id )
930 } 930 }
931#endif 931#endif
932 932
933 if (lp->tx_full && (netif_queue_stopped(dev)) 933 if (lp->tx_full && (netif_queue_stopped(dev)) &&
934 && dirty_tx > lp->cur_tx - TX_RING_SIZE + 2) { 934 dirty_tx > lp->cur_tx - TX_RING_SIZE + 2) {
935 /* The ring is no longer full, clear tbusy. */ 935 /* The ring is no longer full, clear tbusy. */
936 lp->tx_full = 0; 936 lp->tx_full = 0;
937 netif_wake_queue (dev); 937 netif_wake_queue (dev);
diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c
index e547f788a266..b6cf3263127c 100644
--- a/drivers/net/atlx/atl1.c
+++ b/drivers/net/atlx/atl1.c
@@ -1344,8 +1344,8 @@ static u32 atl1_check_link(struct atl1_adapter *adapter)
1344 1344
1345 /* link result is our setting */ 1345 /* link result is our setting */
1346 if (!reconfig) { 1346 if (!reconfig) {
1347 if (adapter->link_speed != speed 1347 if (adapter->link_speed != speed ||
1348 || adapter->link_duplex != duplex) { 1348 adapter->link_duplex != duplex) {
1349 adapter->link_speed = speed; 1349 adapter->link_speed = speed;
1350 adapter->link_duplex = duplex; 1350 adapter->link_duplex = duplex;
1351 atl1_setup_mac_ctrl(adapter); 1351 atl1_setup_mac_ctrl(adapter);
@@ -2087,8 +2087,8 @@ static void atl1_intr_tx(struct atl1_adapter *adapter)
2087 } 2087 }
2088 atomic_set(&tpd_ring->next_to_clean, sw_tpd_next_to_clean); 2088 atomic_set(&tpd_ring->next_to_clean, sw_tpd_next_to_clean);
2089 2089
2090 if (netif_queue_stopped(adapter->netdev) 2090 if (netif_queue_stopped(adapter->netdev) &&
2091 && netif_carrier_ok(adapter->netdev)) 2091 netif_carrier_ok(adapter->netdev))
2092 netif_wake_queue(adapter->netdev); 2092 netif_wake_queue(adapter->netdev);
2093} 2093}
2094 2094
diff --git a/drivers/net/atp.c b/drivers/net/atp.c
index 001791775be3..2f8261c9614a 100644
--- a/drivers/net/atp.c
+++ b/drivers/net/atp.c
@@ -673,8 +673,8 @@ static irqreturn_t atp_interrupt(int irq, void *dev_instance)
673 netif_wake_queue(dev); /* Inform upper layers. */ 673 netif_wake_queue(dev); /* Inform upper layers. */
674 } 674 }
675 num_tx_since_rx++; 675 num_tx_since_rx++;
676 } else if (num_tx_since_rx > 8 676 } else if (num_tx_since_rx > 8 &&
677 && time_after(jiffies, dev->last_rx + HZ)) { 677 time_after(jiffies, dev->last_rx + HZ)) {
678 if (net_debug > 2) 678 if (net_debug > 2)
679 printk(KERN_DEBUG "%s: Missed packet? No Rx after %d Tx and " 679 printk(KERN_DEBUG "%s: Missed packet? No Rx after %d Tx and "
680 "%ld jiffies status %02x CMR1 %02x.\n", dev->name, 680 "%ld jiffies status %02x CMR1 %02x.\n", dev->name,
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index 84f686f41b53..957a0f7f2764 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -2382,8 +2382,8 @@ static struct pci_driver be_driver = {
2382 2382
2383static int __init be_init_module(void) 2383static int __init be_init_module(void)
2384{ 2384{
2385 if (rx_frag_size != 8192 && rx_frag_size != 4096 2385 if (rx_frag_size != 8192 && rx_frag_size != 4096 &&
2386 && rx_frag_size != 2048) { 2386 rx_frag_size != 2048) {
2387 printk(KERN_WARNING DRV_NAME 2387 printk(KERN_WARNING DRV_NAME
2388 " : Module param rx_frag_size must be 2048/4096/8192." 2388 " : Module param rx_frag_size must be 2048/4096/8192."
2389 " Using 2048\n"); 2389 " Using 2048\n");
diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c
index 14bd3801f7d3..8ffea3990d07 100644
--- a/drivers/net/bfin_mac.c
+++ b/drivers/net/bfin_mac.c
@@ -554,8 +554,8 @@ static void adjust_tx_list(void)
554{ 554{
555 int timeout_cnt = MAX_TIMEOUT_CNT; 555 int timeout_cnt = MAX_TIMEOUT_CNT;
556 556
557 if (tx_list_head->status.status_word != 0 557 if (tx_list_head->status.status_word != 0 &&
558 && current_tx_ptr != tx_list_head) { 558 current_tx_ptr != tx_list_head) {
559 goto adjust_head; /* released something, just return; */ 559 goto adjust_head; /* released something, just return; */
560 } 560 }
561 561
@@ -567,8 +567,8 @@ static void adjust_tx_list(void)
567 if (current_tx_ptr->next->next == tx_list_head) { 567 if (current_tx_ptr->next->next == tx_list_head) {
568 while (tx_list_head->status.status_word == 0) { 568 while (tx_list_head->status.status_word == 0) {
569 udelay(10); 569 udelay(10);
570 if (tx_list_head->status.status_word != 0 570 if (tx_list_head->status.status_word != 0 ||
571 || !(bfin_read_DMA2_IRQ_STATUS() & DMA_RUN)) { 571 !(bfin_read_DMA2_IRQ_STATUS() & DMA_RUN)) {
572 goto adjust_head; 572 goto adjust_head;
573 } 573 }
574 if (timeout_cnt-- < 0) { 574 if (timeout_cnt-- < 0) {
@@ -596,8 +596,8 @@ adjust_head:
596 ": no sk_buff in a transmitted frame!\n"); 596 ": no sk_buff in a transmitted frame!\n");
597 } 597 }
598 tx_list_head = tx_list_head->next; 598 tx_list_head = tx_list_head->next;
599 } while (tx_list_head->status.status_word != 0 599 } while (tx_list_head->status.status_word != 0 &&
600 && current_tx_ptr != tx_list_head); 600 current_tx_ptr != tx_list_head);
601 return; 601 return;
602 602
603} 603}
diff --git a/drivers/net/bmac.c b/drivers/net/bmac.c
index 406f06424251..9b587c344194 100644
--- a/drivers/net/bmac.c
+++ b/drivers/net/bmac.c
@@ -438,8 +438,8 @@ bmac_init_phy(struct net_device *dev)
438 438
439 ctrl = bmac_mif_read(dev, 0); 439 ctrl = bmac_mif_read(dev, 0);
440 capable = ((bmac_mif_read(dev, 1) & 0xf800) >> 6) | 1; 440 capable = ((bmac_mif_read(dev, 1) & 0xf800) >> 6) | 1;
441 if (bmac_mif_read(dev, 4) != capable 441 if (bmac_mif_read(dev, 4) != capable ||
442 || (ctrl & 0x1000) == 0) { 442 (ctrl & 0x1000) == 0) {
443 bmac_mif_write(dev, 4, capable); 443 bmac_mif_write(dev, 4, capable);
444 bmac_mif_write(dev, 0, 0x1200); 444 bmac_mif_write(dev, 0, 0x1200);
445 } else 445 } else
diff --git a/drivers/net/bnx2x_link.c b/drivers/net/bnx2x_link.c
index 41b9b7bd3d8e..cf5778919b4b 100644
--- a/drivers/net/bnx2x_link.c
+++ b/drivers/net/bnx2x_link.c
@@ -4717,8 +4717,8 @@ static u8 bnx2x_ext_phy_is_link_up(struct link_params *params,
4717 0xc809, &val1); 4717 0xc809, &val1);
4718 4718
4719 DP(NETIF_MSG_LINK, "8705 1.c809 val=0x%x\n", val1); 4719 DP(NETIF_MSG_LINK, "8705 1.c809 val=0x%x\n", val1);
4720 ext_phy_link_up = ((rx_sd & 0x1) && (val1 & (1<<9)) 4720 ext_phy_link_up = ((rx_sd & 0x1) && (val1 & (1<<9)) &&
4721 && ((val1 & (1<<8)) == 0)); 4721 ((val1 & (1<<8)) == 0));
4722 if (ext_phy_link_up) 4722 if (ext_phy_link_up)
4723 vars->line_speed = SPEED_10000; 4723 vars->line_speed = SPEED_10000;
4724 break; 4724 break;
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
index 88c3fe80b355..d69e6838f21e 100644
--- a/drivers/net/bonding/bond_3ad.c
+++ b/drivers/net/bonding/bond_3ad.c
@@ -561,12 +561,12 @@ static void __update_selected(struct lacpdu *lacpdu, struct port *port)
561 const struct port_params *partner = &port->partner_oper; 561 const struct port_params *partner = &port->partner_oper;
562 562
563 // check if any parameter is different 563 // check if any parameter is different
564 if (ntohs(lacpdu->actor_port) != partner->port_number 564 if (ntohs(lacpdu->actor_port) != partner->port_number ||
565 || ntohs(lacpdu->actor_port_priority) != partner->port_priority 565 ntohs(lacpdu->actor_port_priority) != partner->port_priority ||
566 || MAC_ADDRESS_COMPARE(&lacpdu->actor_system, &partner->system) 566 MAC_ADDRESS_COMPARE(&lacpdu->actor_system, &partner->system) ||
567 || ntohs(lacpdu->actor_system_priority) != partner->system_priority 567 ntohs(lacpdu->actor_system_priority) != partner->system_priority ||
568 || ntohs(lacpdu->actor_key) != partner->key 568 ntohs(lacpdu->actor_key) != partner->key ||
569 || (lacpdu->actor_state & AD_STATE_AGGREGATION) != (partner->port_state & AD_STATE_AGGREGATION)) { 569 (lacpdu->actor_state & AD_STATE_AGGREGATION) != (partner->port_state & AD_STATE_AGGREGATION)) {
570 // update the state machine Selected variable 570 // update the state machine Selected variable
571 port->sm_vars &= ~AD_PORT_SELECTED; 571 port->sm_vars &= ~AD_PORT_SELECTED;
572 } 572 }
@@ -592,12 +592,12 @@ static void __update_default_selected(struct port *port)
592 const struct port_params *oper = &port->partner_oper; 592 const struct port_params *oper = &port->partner_oper;
593 593
594 // check if any parameter is different 594 // check if any parameter is different
595 if (admin->port_number != oper->port_number 595 if (admin->port_number != oper->port_number ||
596 || admin->port_priority != oper->port_priority 596 admin->port_priority != oper->port_priority ||
597 || MAC_ADDRESS_COMPARE(&admin->system, &oper->system) 597 MAC_ADDRESS_COMPARE(&admin->system, &oper->system) ||
598 || admin->system_priority != oper->system_priority 598 admin->system_priority != oper->system_priority ||
599 || admin->key != oper->key 599 admin->key != oper->key ||
600 || (admin->port_state & AD_STATE_AGGREGATION) 600 (admin->port_state & AD_STATE_AGGREGATION)
601 != (oper->port_state & AD_STATE_AGGREGATION)) { 601 != (oper->port_state & AD_STATE_AGGREGATION)) {
602 // update the state machine Selected variable 602 // update the state machine Selected variable
603 port->sm_vars &= ~AD_PORT_SELECTED; 603 port->sm_vars &= ~AD_PORT_SELECTED;
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index ac3fe20abf8f..af9b9c4eb496 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1852,8 +1852,8 @@ int bond_release(struct net_device *bond_dev, struct net_device *slave_dev)
1852 } 1852 }
1853 1853
1854 if (!bond->params.fail_over_mac) { 1854 if (!bond->params.fail_over_mac) {
1855 if (!compare_ether_addr(bond_dev->dev_addr, slave->perm_hwaddr) 1855 if (!compare_ether_addr(bond_dev->dev_addr, slave->perm_hwaddr) &&
1856 && bond->slave_cnt > 1) 1856 bond->slave_cnt > 1)
1857 pr_warning(DRV_NAME 1857 pr_warning(DRV_NAME
1858 ": %s: Warning: the permanent HWaddr of %s - " 1858 ": %s: Warning: the permanent HWaddr of %s - "
1859 "%pM - is still in use by %s. " 1859 "%pM - is still in use by %s. "
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
index a51ae7dc8d51..558ec1352527 100644
--- a/drivers/net/bonding/bonding.h
+++ b/drivers/net/bonding/bonding.h
@@ -254,8 +254,8 @@ static inline struct bonding *bond_get_bond_by_slave(struct slave *slave)
254 254
255static inline bool bond_is_lb(const struct bonding *bond) 255static inline bool bond_is_lb(const struct bonding *bond)
256{ 256{
257 return bond->params.mode == BOND_MODE_TLB 257 return (bond->params.mode == BOND_MODE_TLB ||
258 || bond->params.mode == BOND_MODE_ALB; 258 bond->params.mode == BOND_MODE_ALB);
259} 259}
260 260
261#define BOND_PRI_RESELECT_ALWAYS 0 261#define BOND_PRI_RESELECT_ALWAYS 0
diff --git a/drivers/net/can/usb/ems_usb.c b/drivers/net/can/usb/ems_usb.c
index 3e4419054c81..591eb0eb1c2b 100644
--- a/drivers/net/can/usb/ems_usb.c
+++ b/drivers/net/can/usb/ems_usb.c
@@ -318,12 +318,12 @@ static void ems_usb_rx_can_msg(struct ems_usb *dev, struct ems_cpc_msg *msg)
318 cf->can_id = le32_to_cpu(msg->msg.can_msg.id); 318 cf->can_id = le32_to_cpu(msg->msg.can_msg.id);
319 cf->can_dlc = min_t(u8, msg->msg.can_msg.length, 8); 319 cf->can_dlc = min_t(u8, msg->msg.can_msg.length, 8);
320 320
321 if (msg->type == CPC_MSG_TYPE_EXT_CAN_FRAME 321 if (msg->type == CPC_MSG_TYPE_EXT_CAN_FRAME ||
322 || msg->type == CPC_MSG_TYPE_EXT_RTR_FRAME) 322 msg->type == CPC_MSG_TYPE_EXT_RTR_FRAME)
323 cf->can_id |= CAN_EFF_FLAG; 323 cf->can_id |= CAN_EFF_FLAG;
324 324
325 if (msg->type == CPC_MSG_TYPE_RTR_FRAME 325 if (msg->type == CPC_MSG_TYPE_RTR_FRAME ||
326 || msg->type == CPC_MSG_TYPE_EXT_RTR_FRAME) { 326 msg->type == CPC_MSG_TYPE_EXT_RTR_FRAME) {
327 cf->can_id |= CAN_RTR_FLAG; 327 cf->can_id |= CAN_RTR_FLAG;
328 } else { 328 } else {
329 for (i = 0; i < cf->can_dlc; i++) 329 for (i = 0; i < cf->can_dlc; i++)
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c
index b1a5a00a78cd..cef3f882e2b6 100644
--- a/drivers/net/cxgb3/cxgb3_main.c
+++ b/drivers/net/cxgb3/cxgb3_main.c
@@ -2117,19 +2117,19 @@ static int cxgb_extension_ioctl(struct net_device *dev, void __user *useraddr)
2117 if (t.qset_idx >= SGE_QSETS) 2117 if (t.qset_idx >= SGE_QSETS)
2118 return -EINVAL; 2118 return -EINVAL;
2119 if (!in_range(t.intr_lat, 0, M_NEWTIMER) || 2119 if (!in_range(t.intr_lat, 0, M_NEWTIMER) ||
2120 !in_range(t.cong_thres, 0, 255) || 2120 !in_range(t.cong_thres, 0, 255) ||
2121 !in_range(t.txq_size[0], MIN_TXQ_ENTRIES, 2121 !in_range(t.txq_size[0], MIN_TXQ_ENTRIES,
2122 MAX_TXQ_ENTRIES) || 2122 MAX_TXQ_ENTRIES) ||
2123 !in_range(t.txq_size[1], MIN_TXQ_ENTRIES, 2123 !in_range(t.txq_size[1], MIN_TXQ_ENTRIES,
2124 MAX_TXQ_ENTRIES) || 2124 MAX_TXQ_ENTRIES) ||
2125 !in_range(t.txq_size[2], MIN_CTRL_TXQ_ENTRIES, 2125 !in_range(t.txq_size[2], MIN_CTRL_TXQ_ENTRIES,
2126 MAX_CTRL_TXQ_ENTRIES) || 2126 MAX_CTRL_TXQ_ENTRIES) ||
2127 !in_range(t.fl_size[0], MIN_FL_ENTRIES, 2127 !in_range(t.fl_size[0], MIN_FL_ENTRIES,
2128 MAX_RX_BUFFERS) 2128 MAX_RX_BUFFERS) ||
2129 || !in_range(t.fl_size[1], MIN_FL_ENTRIES, 2129 !in_range(t.fl_size[1], MIN_FL_ENTRIES,
2130 MAX_RX_JUMBO_BUFFERS) 2130 MAX_RX_JUMBO_BUFFERS) ||
2131 || !in_range(t.rspq_size, MIN_RSPQ_ENTRIES, 2131 !in_range(t.rspq_size, MIN_RSPQ_ENTRIES,
2132 MAX_RSPQ_ENTRIES)) 2132 MAX_RSPQ_ENTRIES))
2133 return -EINVAL; 2133 return -EINVAL;
2134 2134
2135 if ((adapter->flags & FULL_INIT_DONE) && t.lro > 0) 2135 if ((adapter->flags & FULL_INIT_DONE) && t.lro > 0)
diff --git a/drivers/net/dl2k.c b/drivers/net/dl2k.c
index a2f1860fdd16..2a8b6a7c0b87 100644
--- a/drivers/net/dl2k.c
+++ b/drivers/net/dl2k.c
@@ -163,8 +163,8 @@ rio_probe1 (struct pci_dev *pdev, const struct pci_device_id *ent)
163 strcmp (media[card_idx], "4") == 0) { 163 strcmp (media[card_idx], "4") == 0) {
164 np->speed = 100; 164 np->speed = 100;
165 np->full_duplex = 1; 165 np->full_duplex = 1;
166 } else if (strcmp (media[card_idx], "100mbps_hd") == 0 166 } else if (strcmp (media[card_idx], "100mbps_hd") == 0 ||
167 || strcmp (media[card_idx], "3") == 0) { 167 strcmp (media[card_idx], "3") == 0) {
168 np->speed = 100; 168 np->speed = 100;
169 np->full_duplex = 0; 169 np->full_duplex = 0;
170 } else if (strcmp (media[card_idx], "10mbps_fd") == 0 || 170 } else if (strcmp (media[card_idx], "10mbps_fd") == 0 ||
diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c
index 81590fbb9943..0cbe3c0e7c06 100644
--- a/drivers/net/dm9000.c
+++ b/drivers/net/dm9000.c
@@ -1024,8 +1024,8 @@ dm9000_rx(struct net_device *dev)
1024 } 1024 }
1025 1025
1026 /* Move data from DM9000 */ 1026 /* Move data from DM9000 */
1027 if (GoodPacket 1027 if (GoodPacket &&
1028 && ((skb = dev_alloc_skb(RxLen + 4)) != NULL)) { 1028 ((skb = dev_alloc_skb(RxLen + 4)) != NULL)) {
1029 skb_reserve(skb, 2); 1029 skb_reserve(skb, 2);
1030 rdptr = (u8 *) skb_put(skb, RxLen - 4); 1030 rdptr = (u8 *) skb_put(skb, RxLen - 4);
1031 1031
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index b9d86f8b3fdb..7e855f9bbd97 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -3507,8 +3507,8 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
3507 adapter->detect_tx_hung = false; 3507 adapter->detect_tx_hung = false;
3508 if (tx_ring->buffer_info[eop].time_stamp && 3508 if (tx_ring->buffer_info[eop].time_stamp &&
3509 time_after(jiffies, tx_ring->buffer_info[eop].time_stamp + 3509 time_after(jiffies, tx_ring->buffer_info[eop].time_stamp +
3510 (adapter->tx_timeout_factor * HZ)) 3510 (adapter->tx_timeout_factor * HZ)) &&
3511 && !(er32(STATUS) & E1000_STATUS_TXOFF)) { 3511 !(er32(STATUS) & E1000_STATUS_TXOFF)) {
3512 3512
3513 /* detected Tx unit hang */ 3513 /* detected Tx unit hang */
3514 DPRINTK(DRV, ERR, "Detected Tx Unit Hang\n" 3514 DPRINTK(DRV, ERR, "Detected Tx Unit Hang\n"
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index 941c5f9d0dd9..c3105c5087e0 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -679,8 +679,8 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter)
679 adapter->detect_tx_hung = 0; 679 adapter->detect_tx_hung = 0;
680 if (tx_ring->buffer_info[i].time_stamp && 680 if (tx_ring->buffer_info[i].time_stamp &&
681 time_after(jiffies, tx_ring->buffer_info[i].time_stamp 681 time_after(jiffies, tx_ring->buffer_info[i].time_stamp
682 + (adapter->tx_timeout_factor * HZ)) 682 + (adapter->tx_timeout_factor * HZ)) &&
683 && !(er32(STATUS) & E1000_STATUS_TXOFF)) { 683 !(er32(STATUS) & E1000_STATUS_TXOFF)) {
684 schedule_work(&adapter->print_hang_task); 684 schedule_work(&adapter->print_hang_task);
685 netif_stop_queue(netdev); 685 netif_stop_queue(netdev);
686 } 686 }
@@ -4046,8 +4046,8 @@ static int e1000_transfer_dhcp_info(struct e1000_adapter *adapter,
4046 u16 length, offset; 4046 u16 length, offset;
4047 4047
4048 if (vlan_tx_tag_present(skb)) { 4048 if (vlan_tx_tag_present(skb)) {
4049 if (!((vlan_tx_tag_get(skb) == adapter->hw.mng_cookie.vlan_id) 4049 if (!((vlan_tx_tag_get(skb) == adapter->hw.mng_cookie.vlan_id) &&
4050 && (adapter->hw.mng_cookie.status & 4050 (adapter->hw.mng_cookie.status &
4051 E1000_MNG_DHCP_COOKIE_STATUS_VLAN))) 4051 E1000_MNG_DHCP_COOKIE_STATUS_VLAN)))
4052 return 0; 4052 return 0;
4053 } 4053 }
diff --git a/drivers/net/e2100.c b/drivers/net/e2100.c
index d2f6ee1a6290..ca93c9a9d372 100644
--- a/drivers/net/e2100.c
+++ b/drivers/net/e2100.c
@@ -186,9 +186,9 @@ static int __init e21_probe1(struct net_device *dev, int ioaddr)
186 return -EBUSY; 186 return -EBUSY;
187 187
188 /* First check the station address for the Ctron prefix. */ 188 /* First check the station address for the Ctron prefix. */
189 if (inb(ioaddr + E21_SAPROM + 0) != 0x00 189 if (inb(ioaddr + E21_SAPROM + 0) != 0x00 ||
190 || inb(ioaddr + E21_SAPROM + 1) != 0x00 190 inb(ioaddr + E21_SAPROM + 1) != 0x00 ||
191 || inb(ioaddr + E21_SAPROM + 2) != 0x1d) { 191 inb(ioaddr + E21_SAPROM + 2) != 0x1d) {
192 retval = -ENODEV; 192 retval = -ENODEV;
193 goto out; 193 goto out;
194 } 194 }
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index 7f8fcc2fa748..7b62336e6736 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -189,8 +189,8 @@ static void ehea_update_firmware_handles(void)
189 for (k = 0; k < EHEA_MAX_PORTS; k++) { 189 for (k = 0; k < EHEA_MAX_PORTS; k++) {
190 struct ehea_port *port = adapter->port[k]; 190 struct ehea_port *port = adapter->port[k];
191 191
192 if (!port || (port->state != EHEA_PORT_UP) 192 if (!port || (port->state != EHEA_PORT_UP) ||
193 || (num_ports == 0)) 193 (num_ports == 0))
194 continue; 194 continue;
195 195
196 for (l = 0; 196 for (l = 0;
@@ -657,8 +657,8 @@ static int get_skb_hdr(struct sk_buff *skb, void **iphdr,
657static void ehea_proc_skb(struct ehea_port_res *pr, struct ehea_cqe *cqe, 657static void ehea_proc_skb(struct ehea_port_res *pr, struct ehea_cqe *cqe,
658 struct sk_buff *skb) 658 struct sk_buff *skb)
659{ 659{
660 int vlan_extracted = (cqe->status & EHEA_CQE_VLAN_TAG_XTRACT) 660 int vlan_extracted = ((cqe->status & EHEA_CQE_VLAN_TAG_XTRACT) &&
661 && pr->port->vgrp; 661 pr->port->vgrp);
662 662
663 if (use_lro) { 663 if (use_lro) {
664 if (vlan_extracted) 664 if (vlan_extracted)
@@ -1389,8 +1389,8 @@ out:
1389 1389
1390int ehea_rem_smrs(struct ehea_port_res *pr) 1390int ehea_rem_smrs(struct ehea_port_res *pr)
1391{ 1391{
1392 if ((ehea_rem_mr(&pr->send_mr)) 1392 if ((ehea_rem_mr(&pr->send_mr)) ||
1393 || (ehea_rem_mr(&pr->recv_mr))) 1393 (ehea_rem_mr(&pr->recv_mr)))
1394 return -EIO; 1394 return -EIO;
1395 else 1395 else
1396 return 0; 1396 return 0;
@@ -2031,8 +2031,8 @@ static void ehea_xmit2(struct sk_buff *skb, struct net_device *dev,
2031 write_ip_start_end(swqe, skb); 2031 write_ip_start_end(swqe, skb);
2032 2032
2033 if (iph->protocol == IPPROTO_UDP) { 2033 if (iph->protocol == IPPROTO_UDP) {
2034 if ((iph->frag_off & IP_MF) 2034 if ((iph->frag_off & IP_MF) ||
2035 || (iph->frag_off & IP_OFFSET)) 2035 (iph->frag_off & IP_OFFSET))
2036 /* IP fragment, so don't change cs */ 2036 /* IP fragment, so don't change cs */
2037 swqe->tx_control &= ~EHEA_SWQE_TCP_CHECKSUM; 2037 swqe->tx_control &= ~EHEA_SWQE_TCP_CHECKSUM;
2038 else 2038 else
@@ -2077,8 +2077,8 @@ static void ehea_xmit3(struct sk_buff *skb, struct net_device *dev,
2077 write_tcp_offset_end(swqe, skb); 2077 write_tcp_offset_end(swqe, skb);
2078 2078
2079 } else if (iph->protocol == IPPROTO_UDP) { 2079 } else if (iph->protocol == IPPROTO_UDP) {
2080 if ((iph->frag_off & IP_MF) 2080 if ((iph->frag_off & IP_MF) ||
2081 || (iph->frag_off & IP_OFFSET)) 2081 (iph->frag_off & IP_OFFSET))
2082 /* IP fragment, so don't change cs */ 2082 /* IP fragment, so don't change cs */
2083 swqe->tx_control |= EHEA_SWQE_CRC 2083 swqe->tx_control |= EHEA_SWQE_CRC
2084 | EHEA_SWQE_IMM_DATA_PRESENT; 2084 | EHEA_SWQE_IMM_DATA_PRESENT;
diff --git a/drivers/net/ehea/ehea_qmr.c b/drivers/net/ehea/ehea_qmr.c
index bc7c5b7abb88..18d405f78c0f 100644
--- a/drivers/net/ehea/ehea_qmr.c
+++ b/drivers/net/ehea/ehea_qmr.c
@@ -837,8 +837,8 @@ static u64 ehea_reg_mr_section(int top, int dir, int idx, u64 *pt,
837 hret = ehea_h_register_rpage_mr(adapter->handle, mr->handle, 0, 837 hret = ehea_h_register_rpage_mr(adapter->handle, mr->handle, 0,
838 0, pt_abs, EHEA_MAX_RPAGE); 838 0, pt_abs, EHEA_MAX_RPAGE);
839 839
840 if ((hret != H_SUCCESS) 840 if ((hret != H_SUCCESS) &&
841 && (hret != H_PAGE_REGISTERED)) { 841 (hret != H_PAGE_REGISTERED)) {
842 ehea_h_free_resource(adapter->handle, mr->handle, 842 ehea_h_free_resource(adapter->handle, mr->handle,
843 FORCE_FREE); 843 FORCE_FREE);
844 ehea_error("register_rpage_mr failed"); 844 ehea_error("register_rpage_mr failed");
diff --git a/drivers/net/epic100.c b/drivers/net/epic100.c
index 703b4c8e9b4d..41494f7b2ec8 100644
--- a/drivers/net/epic100.c
+++ b/drivers/net/epic100.c
@@ -630,8 +630,8 @@ static int mdio_read(struct net_device *dev, int phy_id, int location)
630 barrier(); 630 barrier();
631 if ((inl(ioaddr + MIICtrl) & MII_READOP) == 0) { 631 if ((inl(ioaddr + MIICtrl) & MII_READOP) == 0) {
632 /* Work around read failure bug. */ 632 /* Work around read failure bug. */
633 if (phy_id == 1 && location < 6 633 if (phy_id == 1 && location < 6 &&
634 && inw(ioaddr + MIIData) == 0xffff) { 634 inw(ioaddr + MIIData) == 0xffff) {
635 outl(read_cmd, ioaddr + MIICtrl); 635 outl(read_cmd, ioaddr + MIICtrl);
636 continue; 636 continue;
637 } 637 }
@@ -1205,8 +1205,8 @@ static int epic_rx(struct net_device *dev, int budget)
1205 } 1205 }
1206 /* Check if the packet is long enough to accept without copying 1206 /* Check if the packet is long enough to accept without copying
1207 to a minimally-sized skbuff. */ 1207 to a minimally-sized skbuff. */
1208 if (pkt_len < rx_copybreak 1208 if (pkt_len < rx_copybreak &&
1209 && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { 1209 (skb = dev_alloc_skb(pkt_len + 2)) != NULL) {
1210 skb_reserve(skb, 2); /* 16 byte align the IP header */ 1210 skb_reserve(skb, 2); /* 16 byte align the IP header */
1211 pci_dma_sync_single_for_cpu(ep->pci_dev, 1211 pci_dma_sync_single_for_cpu(ep->pci_dev,
1212 ep->rx_ring[entry].bufaddr, 1212 ep->rx_ring[entry].bufaddr,
diff --git a/drivers/net/fealnx.c b/drivers/net/fealnx.c
index e173515790c0..dac4e595589e 100644
--- a/drivers/net/fealnx.c
+++ b/drivers/net/fealnx.c
@@ -1629,8 +1629,8 @@ static int netdev_rx(struct net_device *dev)
1629 if (debug) 1629 if (debug)
1630 printk(KERN_DEBUG " netdev_rx() status was %8.8x.\n", rx_status); 1630 printk(KERN_DEBUG " netdev_rx() status was %8.8x.\n", rx_status);
1631 1631
1632 if ((!((rx_status & RXFSD) && (rx_status & RXLSD))) 1632 if ((!((rx_status & RXFSD) && (rx_status & RXLSD))) ||
1633 || (rx_status & ErrorSummary)) { 1633 (rx_status & ErrorSummary)) {
1634 if (rx_status & ErrorSummary) { /* there was a fatal error */ 1634 if (rx_status & ErrorSummary) { /* there was a fatal error */
1635 if (debug) 1635 if (debug)
1636 printk(KERN_DEBUG 1636 printk(KERN_DEBUG
@@ -1655,8 +1655,8 @@ static int netdev_rx(struct net_device *dev)
1655 cur = np->cur_rx; 1655 cur = np->cur_rx;
1656 while (desno <= np->really_rx_count) { 1656 while (desno <= np->really_rx_count) {
1657 ++desno; 1657 ++desno;
1658 if ((!(cur->status & RXOWN)) 1658 if ((!(cur->status & RXOWN)) &&
1659 && (cur->status & RXLSD)) 1659 (cur->status & RXLSD))
1660 break; 1660 break;
1661 /* goto next rx descriptor */ 1661 /* goto next rx descriptor */
1662 cur = cur->next_desc_logical; 1662 cur = cur->next_desc_logical;
@@ -1786,8 +1786,8 @@ static void __set_rx_mode(struct net_device *dev)
1786 if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */ 1786 if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
1787 memset(mc_filter, 0xff, sizeof(mc_filter)); 1787 memset(mc_filter, 0xff, sizeof(mc_filter));
1788 rx_mode = CR_W_PROM | CR_W_AB | CR_W_AM; 1788 rx_mode = CR_W_PROM | CR_W_AB | CR_W_AM;
1789 } else if ((dev->mc_count > multicast_filter_limit) 1789 } else if ((dev->mc_count > multicast_filter_limit) ||
1790 || (dev->flags & IFF_ALLMULTI)) { 1790 (dev->flags & IFF_ALLMULTI)) {
1791 /* Too many to match, or accept all multicasts. */ 1791 /* Too many to match, or accept all multicasts. */
1792 memset(mc_filter, 0xff, sizeof(mc_filter)); 1792 memset(mc_filter, 0xff, sizeof(mc_filter));
1793 rx_mode = CR_W_AB | CR_W_AM; 1793 rx_mode = CR_W_AB | CR_W_AM;
diff --git a/drivers/net/gianfar_sysfs.c b/drivers/net/gianfar_sysfs.c
index b31c9c8876e6..b98c6c512299 100644
--- a/drivers/net/gianfar_sysfs.c
+++ b/drivers/net/gianfar_sysfs.c
@@ -62,8 +62,8 @@ static ssize_t gfar_set_bd_stash(struct device *dev,
62 /* Find out the new setting */ 62 /* Find out the new setting */
63 if (!strncmp("on", buf, count - 1) || !strncmp("1", buf, count - 1)) 63 if (!strncmp("on", buf, count - 1) || !strncmp("1", buf, count - 1))
64 new_setting = 1; 64 new_setting = 1;
65 else if (!strncmp("off", buf, count - 1) 65 else if (!strncmp("off", buf, count - 1) ||
66 || !strncmp("0", buf, count - 1)) 66 !strncmp("0", buf, count - 1))
67 new_setting = 0; 67 new_setting = 0;
68 else 68 else
69 return count; 69 return count;
diff --git a/drivers/net/hamachi.c b/drivers/net/hamachi.c
index 5d8c6333070e..ea85075a89a2 100644
--- a/drivers/net/hamachi.c
+++ b/drivers/net/hamachi.c
@@ -1566,8 +1566,8 @@ static int hamachi_rx(struct net_device *dev)
1566#endif 1566#endif
1567 /* Check if the packet is long enough to accept without copying 1567 /* Check if the packet is long enough to accept without copying
1568 to a minimally-sized skbuff. */ 1568 to a minimally-sized skbuff. */
1569 if (pkt_len < rx_copybreak 1569 if (pkt_len < rx_copybreak &&
1570 && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { 1570 (skb = dev_alloc_skb(pkt_len + 2)) != NULL) {
1571#ifdef RX_CHECKSUM 1571#ifdef RX_CHECKSUM
1572 printk(KERN_ERR "%s: rx_copybreak non-zero " 1572 printk(KERN_ERR "%s: rx_copybreak non-zero "
1573 "not good with RX_CHECKSUM\n", dev->name); 1573 "not good with RX_CHECKSUM\n", dev->name);
@@ -1722,10 +1722,10 @@ static void hamachi_error(struct net_device *dev, int intr_status)
1722 readl(ioaddr + 0x370); 1722 readl(ioaddr + 0x370);
1723 readl(ioaddr + 0x3F0); 1723 readl(ioaddr + 0x3F0);
1724 } 1724 }
1725 if ((intr_status & ~(LinkChange|StatsMax|NegotiationChange|IntrRxDone|IntrTxDone)) 1725 if ((intr_status & ~(LinkChange|StatsMax|NegotiationChange|IntrRxDone|IntrTxDone)) &&
1726 && hamachi_debug) 1726 hamachi_debug)
1727 printk(KERN_ERR "%s: Something Wicked happened! %4.4x.\n", 1727 printk(KERN_ERR "%s: Something Wicked happened! %4.4x.\n",
1728 dev->name, intr_status); 1728 dev->name, intr_status);
1729 /* Hmmmmm, it's not clear how to recover from PCI faults. */ 1729 /* Hmmmmm, it's not clear how to recover from PCI faults. */
1730 if (intr_status & (IntrTxPCIErr | IntrTxPCIFault)) 1730 if (intr_status & (IntrTxPCIErr | IntrTxPCIFault))
1731 hmp->stats.tx_fifo_errors++; 1731 hmp->stats.tx_fifo_errors++;
diff --git a/drivers/net/hamradio/bpqether.c b/drivers/net/hamradio/bpqether.c
index 76abed9a70b1..ae5f11c8fc13 100644
--- a/drivers/net/hamradio/bpqether.c
+++ b/drivers/net/hamradio/bpqether.c
@@ -167,10 +167,7 @@ static inline struct net_device *bpq_get_ax25_dev(struct net_device *dev)
167 167
168static inline int dev_is_ethdev(struct net_device *dev) 168static inline int dev_is_ethdev(struct net_device *dev)
169{ 169{
170 return ( 170 return (dev->type == ARPHRD_ETHER && strncmp(dev->name, "dummy", 5));
171 dev->type == ARPHRD_ETHER
172 && strncmp(dev->name, "dummy", 5)
173 );
174} 171}
175 172
176/* ------------------------------------------------------------------------ */ 173/* ------------------------------------------------------------------------ */
diff --git a/drivers/net/hamradio/dmascc.c b/drivers/net/hamradio/dmascc.c
index 950f3bb21f9d..9ee76b42668f 100644
--- a/drivers/net/hamradio/dmascc.c
+++ b/drivers/net/hamradio/dmascc.c
@@ -331,8 +331,8 @@ static int __init dmascc_init(void)
331 for (i = 0; i < MAX_NUM_DEVS && io[i]; i++) { 331 for (i = 0; i < MAX_NUM_DEVS && io[i]; i++) {
332 j = (io[i] - 332 j = (io[i] -
333 hw[h].io_region) / hw[h].io_delta; 333 hw[h].io_region) / hw[h].io_delta;
334 if (j >= 0 && j < hw[h].num_devs 334 if (j >= 0 && j < hw[h].num_devs &&
335 && hw[h].io_region + 335 hw[h].io_region +
336 j * hw[h].io_delta == io[i]) { 336 j * hw[h].io_delta == io[i]) {
337 base[j] = io[i]; 337 base[j] = io[i];
338 } 338 }
@@ -396,8 +396,8 @@ static int __init dmascc_init(void)
396 t_val = 396 t_val =
397 inb(t1[i]) + (inb(t1[i]) << 8); 397 inb(t1[i]) + (inb(t1[i]) << 8);
398 /* Also check whether counter did wrap */ 398 /* Also check whether counter did wrap */
399 if (t_val == 0 399 if (t_val == 0 ||
400 || t_val > TMR_0_HZ / HZ * 10) 400 t_val > TMR_0_HZ / HZ * 10)
401 counting[i] = 0; 401 counting[i] = 0;
402 delay[i] = jiffies - start[i]; 402 delay[i] = jiffies - start[i];
403 } 403 }
diff --git a/drivers/net/hp-plus.c b/drivers/net/hp-plus.c
index 0486cbe01adb..efdbcad63c67 100644
--- a/drivers/net/hp-plus.c
+++ b/drivers/net/hp-plus.c
@@ -187,8 +187,8 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr)
187 return -EBUSY; 187 return -EBUSY;
188 188
189 /* Check for the HP+ signature, 50 48 0x 53. */ 189 /* Check for the HP+ signature, 50 48 0x 53. */
190 if (inw(ioaddr + HP_ID) != 0x4850 190 if (inw(ioaddr + HP_ID) != 0x4850 ||
191 || (inw(ioaddr + HP_PAGING) & 0xfff0) != 0x5300) { 191 (inw(ioaddr + HP_PAGING) & 0xfff0) != 0x5300) {
192 retval = -ENODEV; 192 retval = -ENODEV;
193 goto out; 193 goto out;
194 } 194 }
diff --git a/drivers/net/hp100.c b/drivers/net/hp100.c
index dd8665138062..90f890e7c5e1 100644
--- a/drivers/net/hp100.c
+++ b/drivers/net/hp100.c
@@ -993,8 +993,8 @@ static void hp100_mmuinit(struct net_device *dev)
993 if (lp->mode == 1) { /* only needed for Busmaster */ 993 if (lp->mode == 1) { /* only needed for Busmaster */
994 int xmit_stop, recv_stop; 994 int xmit_stop, recv_stop;
995 995
996 if ((lp->chip == HP100_CHIPID_RAINIER) 996 if ((lp->chip == HP100_CHIPID_RAINIER) ||
997 || (lp->chip == HP100_CHIPID_SHASTA)) { 997 (lp->chip == HP100_CHIPID_SHASTA)) {
998 int pdl_stop; 998 int pdl_stop;
999 999
1000 /* 1000 /*
diff --git a/drivers/net/ibm_newemac/core.c b/drivers/net/ibm_newemac/core.c
index af117c626e73..fb5e019169ee 100644
--- a/drivers/net/ibm_newemac/core.c
+++ b/drivers/net/ibm_newemac/core.c
@@ -1976,27 +1976,27 @@ static int emac_ethtool_set_settings(struct net_device *ndev,
1976 if (cmd->autoneg == AUTONEG_DISABLE) { 1976 if (cmd->autoneg == AUTONEG_DISABLE) {
1977 switch (cmd->speed) { 1977 switch (cmd->speed) {
1978 case SPEED_10: 1978 case SPEED_10:
1979 if (cmd->duplex == DUPLEX_HALF 1979 if (cmd->duplex == DUPLEX_HALF &&
1980 && !(f & SUPPORTED_10baseT_Half)) 1980 !(f & SUPPORTED_10baseT_Half))
1981 return -EINVAL; 1981 return -EINVAL;
1982 if (cmd->duplex == DUPLEX_FULL 1982 if (cmd->duplex == DUPLEX_FULL &&
1983 && !(f & SUPPORTED_10baseT_Full)) 1983 !(f & SUPPORTED_10baseT_Full))
1984 return -EINVAL; 1984 return -EINVAL;
1985 break; 1985 break;
1986 case SPEED_100: 1986 case SPEED_100:
1987 if (cmd->duplex == DUPLEX_HALF 1987 if (cmd->duplex == DUPLEX_HALF &&
1988 && !(f & SUPPORTED_100baseT_Half)) 1988 !(f & SUPPORTED_100baseT_Half))
1989 return -EINVAL; 1989 return -EINVAL;
1990 if (cmd->duplex == DUPLEX_FULL 1990 if (cmd->duplex == DUPLEX_FULL &&
1991 && !(f & SUPPORTED_100baseT_Full)) 1991 !(f & SUPPORTED_100baseT_Full))
1992 return -EINVAL; 1992 return -EINVAL;
1993 break; 1993 break;
1994 case SPEED_1000: 1994 case SPEED_1000:
1995 if (cmd->duplex == DUPLEX_HALF 1995 if (cmd->duplex == DUPLEX_HALF &&
1996 && !(f & SUPPORTED_1000baseT_Half)) 1996 !(f & SUPPORTED_1000baseT_Half))
1997 return -EINVAL; 1997 return -EINVAL;
1998 if (cmd->duplex == DUPLEX_FULL 1998 if (cmd->duplex == DUPLEX_FULL &&
1999 && !(f & SUPPORTED_1000baseT_Full)) 1999 !(f & SUPPORTED_1000baseT_Full))
2000 return -EINVAL; 2000 return -EINVAL;
2001 break; 2001 break;
2002 default: 2002 default:
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index e57b32d3fde4..16349ba68736 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -4974,9 +4974,8 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector)
4974 tx_ring->detect_tx_hung = false; 4974 tx_ring->detect_tx_hung = false;
4975 if (tx_ring->buffer_info[i].time_stamp && 4975 if (tx_ring->buffer_info[i].time_stamp &&
4976 time_after(jiffies, tx_ring->buffer_info[i].time_stamp + 4976 time_after(jiffies, tx_ring->buffer_info[i].time_stamp +
4977 (adapter->tx_timeout_factor * HZ)) 4977 (adapter->tx_timeout_factor * HZ)) &&
4978 && !(rd32(E1000_STATUS) & 4978 !(rd32(E1000_STATUS) & E1000_STATUS_TXOFF)) {
4979 E1000_STATUS_TXOFF)) {
4980 4979
4981 /* detected Tx unit hang */ 4980 /* detected Tx unit hang */
4982 dev_err(&tx_ring->pdev->dev, 4981 dev_err(&tx_ring->pdev->dev,
diff --git a/drivers/net/igbvf/netdev.c b/drivers/net/igbvf/netdev.c
index cf26f92e3235..a127620dc653 100644
--- a/drivers/net/igbvf/netdev.c
+++ b/drivers/net/igbvf/netdev.c
@@ -827,8 +827,8 @@ static bool igbvf_clean_tx_irq(struct igbvf_ring *tx_ring)
827 adapter->detect_tx_hung = false; 827 adapter->detect_tx_hung = false;
828 if (tx_ring->buffer_info[i].time_stamp && 828 if (tx_ring->buffer_info[i].time_stamp &&
829 time_after(jiffies, tx_ring->buffer_info[i].time_stamp + 829 time_after(jiffies, tx_ring->buffer_info[i].time_stamp +
830 (adapter->tx_timeout_factor * HZ)) 830 (adapter->tx_timeout_factor * HZ)) &&
831 && !(er32(STATUS) & E1000_STATUS_TXOFF)) { 831 !(er32(STATUS) & E1000_STATUS_TXOFF)) {
832 832
833 tx_desc = IGBVF_TX_DESC_ADV(*tx_ring, i); 833 tx_desc = IGBVF_TX_DESC_ADV(*tx_ring, i);
834 /* detected Tx unit hang */ 834 /* detected Tx unit hang */
diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c
index ae6eab3e5eed..e8e33bb9d876 100644
--- a/drivers/net/irda/irda-usb.c
+++ b/drivers/net/irda/irda-usb.c
@@ -1124,11 +1124,11 @@ static int stir421x_patch_device(struct irda_usb_cb *self)
1124 * The actual image starts after the "STMP" keyword 1124 * The actual image starts after the "STMP" keyword
1125 * so forward to the firmware header tag 1125 * so forward to the firmware header tag
1126 */ 1126 */
1127 for (i = 0; (fw->data[i] != STIR421X_PATCH_END_OF_HDR_TAG) 1127 for (i = 0; (fw->data[i] != STIR421X_PATCH_END_OF_HDR_TAG) &&
1128 && (i < fw->size); i++) ; 1128 (i < fw->size); i++) ;
1129 /* here we check for the out of buffer case */ 1129 /* here we check for the out of buffer case */
1130 if ((STIR421X_PATCH_END_OF_HDR_TAG == fw->data[i]) 1130 if ((STIR421X_PATCH_END_OF_HDR_TAG == fw->data[i]) &&
1131 && (i < STIR421X_PATCH_CODE_OFFSET)) { 1131 (i < STIR421X_PATCH_CODE_OFFSET)) {
1132 if (!memcmp(fw->data + i + 1, STIR421X_PATCH_STMP_TAG, 1132 if (!memcmp(fw->data + i + 1, STIR421X_PATCH_STMP_TAG,
1133 sizeof(STIR421X_PATCH_STMP_TAG) - 1)) { 1133 sizeof(STIR421X_PATCH_STMP_TAG) - 1)) {
1134 1134
diff --git a/drivers/net/irda/stir4200.c b/drivers/net/irda/stir4200.c
index 528767dec9d7..e5698fa30a4f 100644
--- a/drivers/net/irda/stir4200.c
+++ b/drivers/net/irda/stir4200.c
@@ -612,16 +612,16 @@ static int fifo_txwait(struct stir_cb *stir, int space)
612 pr_debug("fifo status 0x%lx count %lu\n", status, count); 612 pr_debug("fifo status 0x%lx count %lu\n", status, count);
613 613
614 /* is fifo receiving already, or empty */ 614 /* is fifo receiving already, or empty */
615 if (!(status & FIFOCTL_DIR) 615 if (!(status & FIFOCTL_DIR) ||
616 || (status & FIFOCTL_EMPTY)) 616 (status & FIFOCTL_EMPTY))
617 return 0; 617 return 0;
618 618
619 if (signal_pending(current)) 619 if (signal_pending(current))
620 return -EINTR; 620 return -EINTR;
621 621
622 /* shutting down? */ 622 /* shutting down? */
623 if (!netif_running(stir->netdev) 623 if (!netif_running(stir->netdev) ||
624 || !netif_device_present(stir->netdev)) 624 !netif_device_present(stir->netdev))
625 return -ESHUTDOWN; 625 return -ESHUTDOWN;
626 626
627 /* only waiting for some space */ 627 /* only waiting for some space */
@@ -776,8 +776,8 @@ static int stir_transmit_thread(void *arg)
776 } 776 }
777 777
778 /* nothing to send? start receiving */ 778 /* nothing to send? start receiving */
779 if (!stir->receiving 779 if (!stir->receiving &&
780 && irda_device_txqueue_empty(dev)) { 780 irda_device_txqueue_empty(dev)) {
781 /* Wait otherwise chip gets confused. */ 781 /* Wait otherwise chip gets confused. */
782 if (fifo_txwait(stir, -1)) 782 if (fifo_txwait(stir, -1))
783 break; 783 break;
diff --git a/drivers/net/irda/via-ircc.c b/drivers/net/irda/via-ircc.c
index a5ca71cec028..fddb4efd5453 100644
--- a/drivers/net/irda/via-ircc.c
+++ b/drivers/net/irda/via-ircc.c
@@ -1185,8 +1185,8 @@ F01_E */
1185 * if frame size,data ptr,or skb ptr are wrong ,the get next 1185 * if frame size,data ptr,or skb ptr are wrong ,the get next
1186 * entry. 1186 * entry.
1187 */ 1187 */
1188 if ((skb == NULL) || (skb->data == NULL) 1188 if ((skb == NULL) || (skb->data == NULL) ||
1189 || (self->rx_buff.data == NULL) || (len < 6)) { 1189 (self->rx_buff.data == NULL) || (len < 6)) {
1190 self->netdev->stats.rx_dropped++; 1190 self->netdev->stats.rx_dropped++;
1191 return TRUE; 1191 return TRUE;
1192 } 1192 }
@@ -1284,8 +1284,8 @@ static int RxTimerHandler(struct via_ircc_cb *self, int iobase)
1284 self->RetryCount++; 1284 self->RetryCount++;
1285 1285
1286 if ((self->RetryCount >= 1) || 1286 if ((self->RetryCount >= 1) ||
1287 ((st_fifo->pending_bytes + 2048) > self->rx_buff.truesize) 1287 ((st_fifo->pending_bytes + 2048) > self->rx_buff.truesize) ||
1288 || (st_fifo->len >= (MAX_RX_WINDOW))) { 1288 (st_fifo->len >= (MAX_RX_WINDOW))) {
1289 while (st_fifo->len > 0) { //upload frame 1289 while (st_fifo->len > 0) { //upload frame
1290 // Put this entry back in fifo 1290 // Put this entry back in fifo
1291 if (st_fifo->head > MAX_RX_WINDOW) 1291 if (st_fifo->head > MAX_RX_WINDOW)
@@ -1300,8 +1300,8 @@ static int RxTimerHandler(struct via_ircc_cb *self, int iobase)
1300 * if frame size, data ptr, or skb ptr are wrong, 1300 * if frame size, data ptr, or skb ptr are wrong,
1301 * then get next entry. 1301 * then get next entry.
1302 */ 1302 */
1303 if ((skb == NULL) || (skb->data == NULL) 1303 if ((skb == NULL) || (skb->data == NULL) ||
1304 || (self->rx_buff.data == NULL) || (len < 6)) { 1304 (self->rx_buff.data == NULL) || (len < 6)) {
1305 self->netdev->stats.rx_dropped++; 1305 self->netdev->stats.rx_dropped++;
1306 continue; 1306 continue;
1307 } 1307 }
@@ -1332,8 +1332,8 @@ static int RxTimerHandler(struct via_ircc_cb *self, int iobase)
1332 * if frame is receive complete at this routine ,then upload 1332 * if frame is receive complete at this routine ,then upload
1333 * frame. 1333 * frame.
1334 */ 1334 */
1335 if ((GetRXStatus(iobase) & 0x10) 1335 if ((GetRXStatus(iobase) & 0x10) &&
1336 && (RxCurCount(iobase, self) != self->RxLastCount)) { 1336 (RxCurCount(iobase, self) != self->RxLastCount)) {
1337 upload_rxdata(self, iobase); 1337 upload_rxdata(self, iobase);
1338 if (irda_device_txqueue_empty(self->netdev)) 1338 if (irda_device_txqueue_empty(self->netdev))
1339 via_ircc_dma_receive(self); 1339 via_ircc_dma_receive(self);
diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c
index 7cfb8b6593c6..bd3c6b5ee76a 100644
--- a/drivers/net/irda/vlsi_ir.c
+++ b/drivers/net/irda/vlsi_ir.c
@@ -431,8 +431,8 @@ static struct vlsi_ring *vlsi_alloc_ring(struct pci_dev *pdev, struct ring_descr
431 memset(rd, 0, sizeof(*rd)); 431 memset(rd, 0, sizeof(*rd));
432 rd->hw = hwmap + i; 432 rd->hw = hwmap + i;
433 rd->buf = kmalloc(len, GFP_KERNEL|GFP_DMA); 433 rd->buf = kmalloc(len, GFP_KERNEL|GFP_DMA);
434 if (rd->buf == NULL 434 if (rd->buf == NULL ||
435 || !(busaddr = pci_map_single(pdev, rd->buf, len, dir))) { 435 !(busaddr = pci_map_single(pdev, rd->buf, len, dir))) {
436 if (rd->buf) { 436 if (rd->buf) {
437 IRDA_ERROR("%s: failed to create PCI-MAP for %p", 437 IRDA_ERROR("%s: failed to create PCI-MAP for %p",
438 __func__, rd->buf); 438 __func__, rd->buf);
@@ -955,8 +955,8 @@ static netdev_tx_t vlsi_hard_start_xmit(struct sk_buff *skb,
955 } 955 }
956 for(;;) { 956 for(;;) {
957 do_gettimeofday(&now); 957 do_gettimeofday(&now);
958 if (now.tv_sec > ready.tv_sec 958 if (now.tv_sec > ready.tv_sec ||
959 || (now.tv_sec==ready.tv_sec && now.tv_usec>=ready.tv_usec)) 959 (now.tv_sec==ready.tv_sec && now.tv_usec>=ready.tv_usec))
960 break; 960 break;
961 udelay(100); 961 udelay(100);
962 /* must not sleep here - called under netif_tx_lock! */ 962 /* must not sleep here - called under netif_tx_lock! */
@@ -1594,8 +1594,8 @@ static int vlsi_irda_init(struct net_device *ndev)
1594 * see include file for details why we need these 2 masks, in this order! 1594 * see include file for details why we need these 2 masks, in this order!
1595 */ 1595 */
1596 1596
1597 if (pci_set_dma_mask(pdev,DMA_MASK_USED_BY_HW) 1597 if (pci_set_dma_mask(pdev,DMA_MASK_USED_BY_HW) ||
1598 || pci_set_dma_mask(pdev,DMA_MASK_MSTRPAGE)) { 1598 pci_set_dma_mask(pdev,DMA_MASK_MSTRPAGE)) {
1599 IRDA_ERROR("%s: aborting due to PCI BM-DMA address limitations\n", __func__); 1599 IRDA_ERROR("%s: aborting due to PCI BM-DMA address limitations\n", __func__);
1600 return -1; 1600 return -1;
1601 } 1601 }
@@ -1641,8 +1641,8 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1641 IRDA_MESSAGE("%s: IrDA PCI controller %s detected\n", 1641 IRDA_MESSAGE("%s: IrDA PCI controller %s detected\n",
1642 drivername, pci_name(pdev)); 1642 drivername, pci_name(pdev));
1643 1643
1644 if ( !pci_resource_start(pdev,0) 1644 if ( !pci_resource_start(pdev,0) ||
1645 || !(pci_resource_flags(pdev,0) & IORESOURCE_IO) ) { 1645 !(pci_resource_flags(pdev,0) & IORESOURCE_IO) ) {
1646 IRDA_ERROR("%s: bar 0 invalid", __func__); 1646 IRDA_ERROR("%s: bar 0 invalid", __func__);
1647 goto out_disable; 1647 goto out_disable;
1648 } 1648 }
diff --git a/drivers/net/isa-skeleton.c b/drivers/net/isa-skeleton.c
index 0e71e2a93160..04d0502726c0 100644
--- a/drivers/net/isa-skeleton.c
+++ b/drivers/net/isa-skeleton.c
@@ -214,9 +214,9 @@ static int __init netcard_probe1(struct net_device *dev, int ioaddr)
214 * contains the manufacturer's unique code. That might be a good probe 214 * contains the manufacturer's unique code. That might be a good probe
215 * method. Ideally you would add additional checks. 215 * method. Ideally you would add additional checks.
216 */ 216 */
217 if (inb(ioaddr + 0) != SA_ADDR0 217 if (inb(ioaddr + 0) != SA_ADDR0 ||
218 || inb(ioaddr + 1) != SA_ADDR1 218 inb(ioaddr + 1) != SA_ADDR1 ||
219 || inb(ioaddr + 2) != SA_ADDR2) 219 inb(ioaddr + 2) != SA_ADDR2)
220 goto out; 220 goto out;
221 221
222 if (net_debug && version_printed++ == 0) 222 if (net_debug && version_printed++ == 0)
diff --git a/drivers/net/iseries_veth.c b/drivers/net/iseries_veth.c
index aa7286bc4364..49997194bdd0 100644
--- a/drivers/net/iseries_veth.c
+++ b/drivers/net/iseries_veth.c
@@ -604,10 +604,10 @@ static int veth_process_caps(struct veth_lpar_connection *cnx)
604 /* Convert timer to jiffies */ 604 /* Convert timer to jiffies */
605 cnx->ack_timeout = remote_caps->ack_timeout * HZ / 1000000; 605 cnx->ack_timeout = remote_caps->ack_timeout * HZ / 1000000;
606 606
607 if ( (remote_caps->num_buffers == 0) 607 if ( (remote_caps->num_buffers == 0) ||
608 || (remote_caps->ack_threshold > VETH_MAX_ACKS_PER_MSG) 608 (remote_caps->ack_threshold > VETH_MAX_ACKS_PER_MSG) ||
609 || (remote_caps->ack_threshold == 0) 609 (remote_caps->ack_threshold == 0) ||
610 || (cnx->ack_timeout == 0) ) { 610 (cnx->ack_timeout == 0) ) {
611 veth_error("Received incompatible capabilities from LPAR %d.\n", 611 veth_error("Received incompatible capabilities from LPAR %d.\n",
612 cnx->remote_lp); 612 cnx->remote_lp);
613 return HvLpEvent_Rc_InvalidSubtypeData; 613 return HvLpEvent_Rc_InvalidSubtypeData;
@@ -714,8 +714,8 @@ static void veth_statemachine(struct work_struct *work)
714 cnx->state |= VETH_STATE_OPEN; 714 cnx->state |= VETH_STATE_OPEN;
715 } 715 }
716 716
717 if ( (cnx->state & VETH_STATE_OPEN) 717 if ( (cnx->state & VETH_STATE_OPEN) &&
718 && !(cnx->state & VETH_STATE_SENTMON) ) { 718 !(cnx->state & VETH_STATE_SENTMON) ) {
719 rc = veth_signalevent(cnx, VETH_EVENT_MONITOR, 719 rc = veth_signalevent(cnx, VETH_EVENT_MONITOR,
720 HvLpEvent_AckInd_DoAck, 720 HvLpEvent_AckInd_DoAck,
721 HvLpEvent_AckType_DeferredAck, 721 HvLpEvent_AckType_DeferredAck,
@@ -724,8 +724,8 @@ static void veth_statemachine(struct work_struct *work)
724 if (rc == HvLpEvent_Rc_Good) { 724 if (rc == HvLpEvent_Rc_Good) {
725 cnx->state |= VETH_STATE_SENTMON; 725 cnx->state |= VETH_STATE_SENTMON;
726 } else { 726 } else {
727 if ( (rc != HvLpEvent_Rc_PartitionDead) 727 if ( (rc != HvLpEvent_Rc_PartitionDead) &&
728 && (rc != HvLpEvent_Rc_PathClosed) ) 728 (rc != HvLpEvent_Rc_PathClosed) )
729 veth_error("Error sending monitor to LPAR %d, " 729 veth_error("Error sending monitor to LPAR %d, "
730 "rc = %d\n", rlp, rc); 730 "rc = %d\n", rlp, rc);
731 731
@@ -735,8 +735,8 @@ static void veth_statemachine(struct work_struct *work)
735 } 735 }
736 } 736 }
737 737
738 if ( (cnx->state & VETH_STATE_OPEN) 738 if ( (cnx->state & VETH_STATE_OPEN) &&
739 && !(cnx->state & VETH_STATE_SENTCAPS)) { 739 !(cnx->state & VETH_STATE_SENTCAPS)) {
740 u64 *rawcap = (u64 *)&cnx->local_caps; 740 u64 *rawcap = (u64 *)&cnx->local_caps;
741 741
742 rc = veth_signalevent(cnx, VETH_EVENT_CAP, 742 rc = veth_signalevent(cnx, VETH_EVENT_CAP,
@@ -748,8 +748,8 @@ static void veth_statemachine(struct work_struct *work)
748 if (rc == HvLpEvent_Rc_Good) { 748 if (rc == HvLpEvent_Rc_Good) {
749 cnx->state |= VETH_STATE_SENTCAPS; 749 cnx->state |= VETH_STATE_SENTCAPS;
750 } else { 750 } else {
751 if ( (rc != HvLpEvent_Rc_PartitionDead) 751 if ( (rc != HvLpEvent_Rc_PartitionDead) &&
752 && (rc != HvLpEvent_Rc_PathClosed) ) 752 (rc != HvLpEvent_Rc_PathClosed) )
753 veth_error("Error sending caps to LPAR %d, " 753 veth_error("Error sending caps to LPAR %d, "
754 "rc = %d\n", rlp, rc); 754 "rc = %d\n", rlp, rc);
755 755
@@ -759,8 +759,8 @@ static void veth_statemachine(struct work_struct *work)
759 } 759 }
760 } 760 }
761 761
762 if ((cnx->state & VETH_STATE_GOTCAPS) 762 if ((cnx->state & VETH_STATE_GOTCAPS) &&
763 && !(cnx->state & VETH_STATE_SENTCAPACK)) { 763 !(cnx->state & VETH_STATE_SENTCAPACK)) {
764 struct veth_cap_data *remote_caps = &cnx->remote_caps; 764 struct veth_cap_data *remote_caps = &cnx->remote_caps;
765 765
766 memcpy(remote_caps, &cnx->cap_event.u.caps_data, 766 memcpy(remote_caps, &cnx->cap_event.u.caps_data,
@@ -783,9 +783,9 @@ static void veth_statemachine(struct work_struct *work)
783 goto cant_cope; 783 goto cant_cope;
784 } 784 }
785 785
786 if ((cnx->state & VETH_STATE_GOTCAPACK) 786 if ((cnx->state & VETH_STATE_GOTCAPACK) &&
787 && (cnx->state & VETH_STATE_GOTCAPS) 787 (cnx->state & VETH_STATE_GOTCAPS) &&
788 && !(cnx->state & VETH_STATE_READY)) { 788 !(cnx->state & VETH_STATE_READY)) {
789 if (cnx->cap_ack_event.base_event.xRc == HvLpEvent_Rc_Good) { 789 if (cnx->cap_ack_event.base_event.xRc == HvLpEvent_Rc_Good) {
790 /* Start the ACK timer */ 790 /* Start the ACK timer */
791 cnx->ack_timer.expires = jiffies + cnx->ack_timeout; 791 cnx->ack_timer.expires = jiffies + cnx->ack_timeout;
@@ -818,8 +818,8 @@ static int veth_init_connection(u8 rlp)
818 struct veth_msg *msgs; 818 struct veth_msg *msgs;
819 int i; 819 int i;
820 820
821 if ( (rlp == this_lp) 821 if ( (rlp == this_lp) ||
822 || ! HvLpConfig_doLpsCommunicateOnVirtualLan(this_lp, rlp) ) 822 ! HvLpConfig_doLpsCommunicateOnVirtualLan(this_lp, rlp) )
823 return 0; 823 return 0;
824 824
825 cnx = kzalloc(sizeof(*cnx), GFP_KERNEL); 825 cnx = kzalloc(sizeof(*cnx), GFP_KERNEL);
@@ -1538,8 +1538,8 @@ static void veth_receive(struct veth_lpar_connection *cnx,
1538 cnx->pending_acks[cnx->num_pending_acks++] = 1538 cnx->pending_acks[cnx->num_pending_acks++] =
1539 event->base_event.xCorrelationToken; 1539 event->base_event.xCorrelationToken;
1540 1540
1541 if ( (cnx->num_pending_acks >= cnx->remote_caps.ack_threshold) 1541 if ( (cnx->num_pending_acks >= cnx->remote_caps.ack_threshold) ||
1542 || (cnx->num_pending_acks >= VETH_MAX_ACKS_PER_MSG) ) 1542 (cnx->num_pending_acks >= VETH_MAX_ACKS_PER_MSG) )
1543 veth_flush_acks(cnx); 1543 veth_flush_acks(cnx);
1544 1544
1545 spin_unlock_irqrestore(&cnx->lock, flags); 1545 spin_unlock_irqrestore(&cnx->lock, flags);
diff --git a/drivers/net/jazzsonic.c b/drivers/net/jazzsonic.c
index 35d5bed450da..f47d4d663b19 100644
--- a/drivers/net/jazzsonic.c
+++ b/drivers/net/jazzsonic.c
@@ -130,8 +130,8 @@ static int __devinit sonic_probe1(struct net_device *dev)
130 printk("SONIC Silicon Revision = 0x%04x\n",silicon_revision); 130 printk("SONIC Silicon Revision = 0x%04x\n",silicon_revision);
131 131
132 i = 0; 132 i = 0;
133 while (known_revisions[i] != 0xffff 133 while (known_revisions[i] != 0xffff &&
134 && known_revisions[i] != silicon_revision) 134 known_revisions[i] != silicon_revision)
135 i++; 135 i++;
136 136
137 if (known_revisions[i] == 0xffff) { 137 if (known_revisions[i] == 0xffff) {
diff --git a/drivers/net/jme.c b/drivers/net/jme.c
index 6c1b92fa0b0c..792b88fc3574 100644
--- a/drivers/net/jme.c
+++ b/drivers/net/jme.c
@@ -1050,8 +1050,8 @@ jme_dynamic_pcc(struct jme_adapter *jme)
1050 1050
1051 if ((NET_STAT(jme).rx_bytes - dpi->last_bytes) > PCC_P3_THRESHOLD) 1051 if ((NET_STAT(jme).rx_bytes - dpi->last_bytes) > PCC_P3_THRESHOLD)
1052 jme_attempt_pcc(dpi, PCC_P3); 1052 jme_attempt_pcc(dpi, PCC_P3);
1053 else if ((NET_STAT(jme).rx_packets - dpi->last_pkts) > PCC_P2_THRESHOLD 1053 else if ((NET_STAT(jme).rx_packets - dpi->last_pkts) > PCC_P2_THRESHOLD ||
1054 || dpi->intr_cnt > PCC_INTR_THRESHOLD) 1054 dpi->intr_cnt > PCC_INTR_THRESHOLD)
1055 jme_attempt_pcc(dpi, PCC_P2); 1055 jme_attempt_pcc(dpi, PCC_P2);
1056 else 1056 else
1057 jme_attempt_pcc(dpi, PCC_P1); 1057 jme_attempt_pcc(dpi, PCC_P1);
@@ -2199,8 +2199,8 @@ jme_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *ecmd)
2199 if (netif_running(netdev)) 2199 if (netif_running(netdev))
2200 return -EBUSY; 2200 return -EBUSY;
2201 2201
2202 if (ecmd->use_adaptive_rx_coalesce 2202 if (ecmd->use_adaptive_rx_coalesce &&
2203 && test_bit(JME_FLAG_POLL, &jme->flags)) { 2203 test_bit(JME_FLAG_POLL, &jme->flags)) {
2204 clear_bit(JME_FLAG_POLL, &jme->flags); 2204 clear_bit(JME_FLAG_POLL, &jme->flags);
2205 jme->jme_rx = netif_rx; 2205 jme->jme_rx = netif_rx;
2206 jme->jme_vlan_rx = vlan_hwaccel_rx; 2206 jme->jme_vlan_rx = vlan_hwaccel_rx;
@@ -2209,8 +2209,8 @@ jme_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *ecmd)
2209 dpi->cnt = 0; 2209 dpi->cnt = 0;
2210 jme_set_rx_pcc(jme, PCC_P1); 2210 jme_set_rx_pcc(jme, PCC_P1);
2211 jme_interrupt_mode(jme); 2211 jme_interrupt_mode(jme);
2212 } else if (!(ecmd->use_adaptive_rx_coalesce) 2212 } else if (!(ecmd->use_adaptive_rx_coalesce) &&
2213 && !(test_bit(JME_FLAG_POLL, &jme->flags))) { 2213 !(test_bit(JME_FLAG_POLL, &jme->flags))) {
2214 set_bit(JME_FLAG_POLL, &jme->flags); 2214 set_bit(JME_FLAG_POLL, &jme->flags);
2215 jme->jme_rx = netif_receive_skb; 2215 jme->jme_rx = netif_receive_skb;
2216 jme->jme_vlan_rx = vlan_hwaccel_receive_skb; 2216 jme->jme_vlan_rx = vlan_hwaccel_receive_skb;
diff --git a/drivers/net/lance.c b/drivers/net/lance.c
index 7b2c42992c35..8d7d3d4625f6 100644
--- a/drivers/net/lance.c
+++ b/drivers/net/lance.c
@@ -493,14 +493,14 @@ static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int
493 static const short ioaddr_table[] = { 0x300, 0x320, 0x340, 0x360}; 493 static const short ioaddr_table[] = { 0x300, 0x320, 0x340, 0x360};
494 int hp_port = (readl(bios + 1) & 1) ? 0x499 : 0x99; 494 int hp_port = (readl(bios + 1) & 1) ? 0x499 : 0x99;
495 /* We can have boards other than the built-in! Verify this is on-board. */ 495 /* We can have boards other than the built-in! Verify this is on-board. */
496 if ((inb(hp_port) & 0xc0) == 0x80 496 if ((inb(hp_port) & 0xc0) == 0x80 &&
497 && ioaddr_table[inb(hp_port) & 3] == ioaddr) 497 ioaddr_table[inb(hp_port) & 3] == ioaddr)
498 hp_builtin = hp_port; 498 hp_builtin = hp_port;
499 } 499 }
500 iounmap(bios); 500 iounmap(bios);
501 /* We also recognize the HP Vectra on-board here, but check below. */ 501 /* We also recognize the HP Vectra on-board here, but check below. */
502 hpJ2405A = (inb(ioaddr) == 0x08 && inb(ioaddr+1) == 0x00 502 hpJ2405A = (inb(ioaddr) == 0x08 && inb(ioaddr+1) == 0x00 &&
503 && inb(ioaddr+2) == 0x09); 503 inb(ioaddr+2) == 0x09);
504 504
505 /* Reset the LANCE. */ 505 /* Reset the LANCE. */
506 reset_val = inw(ioaddr+LANCE_RESET); /* Reset the LANCE */ 506 reset_val = inw(ioaddr+LANCE_RESET); /* Reset the LANCE */
@@ -1035,8 +1035,8 @@ static irqreturn_t lance_interrupt(int irq, void *dev_id)
1035 spin_lock (&lp->devlock); 1035 spin_lock (&lp->devlock);
1036 1036
1037 outw(0x00, dev->base_addr + LANCE_ADDR); 1037 outw(0x00, dev->base_addr + LANCE_ADDR);
1038 while ((csr0 = inw(dev->base_addr + LANCE_DATA)) & 0x8600 1038 while ((csr0 = inw(dev->base_addr + LANCE_DATA)) & 0x8600 &&
1039 && --boguscnt >= 0) { 1039 --boguscnt >= 0) {
1040 /* Acknowledge all of the current interrupt sources ASAP. */ 1040 /* Acknowledge all of the current interrupt sources ASAP. */
1041 outw(csr0 & ~0x004f, dev->base_addr + LANCE_DATA); 1041 outw(csr0 & ~0x004f, dev->base_addr + LANCE_DATA);
1042 1042
diff --git a/drivers/net/lib8390.c b/drivers/net/lib8390.c
index 256119882b1e..57f25848fe80 100644
--- a/drivers/net/lib8390.c
+++ b/drivers/net/lib8390.c
@@ -464,8 +464,8 @@ static irqreturn_t __ei_interrupt(int irq, void *dev_id)
464 ei_inb_p(e8390_base + EN0_ISR)); 464 ei_inb_p(e8390_base + EN0_ISR));
465 465
466 /* !!Assumption!! -- we stay in page 0. Don't break this. */ 466 /* !!Assumption!! -- we stay in page 0. Don't break this. */
467 while ((interrupts = ei_inb_p(e8390_base + EN0_ISR)) != 0 467 while ((interrupts = ei_inb_p(e8390_base + EN0_ISR)) != 0 &&
468 && ++nr_serviced < MAX_SERVICE) 468 ++nr_serviced < MAX_SERVICE)
469 { 469 {
470 if (!netif_running(dev)) { 470 if (!netif_running(dev)) {
471 printk(KERN_WARNING "%s: interrupt from stopped card\n", dev->name); 471 printk(KERN_WARNING "%s: interrupt from stopped card\n", dev->name);
@@ -721,10 +721,10 @@ static void ei_receive(struct net_device *dev)
721 /* Check for bogosity warned by 3c503 book: the status byte is never 721 /* Check for bogosity warned by 3c503 book: the status byte is never
722 written. This happened a lot during testing! This code should be 722 written. This happened a lot during testing! This code should be
723 cleaned up someday. */ 723 cleaned up someday. */
724 if (rx_frame.next != next_frame 724 if (rx_frame.next != next_frame &&
725 && rx_frame.next != next_frame + 1 725 rx_frame.next != next_frame + 1 &&
726 && rx_frame.next != next_frame - num_rx_pages 726 rx_frame.next != next_frame - num_rx_pages &&
727 && rx_frame.next != next_frame + 1 - num_rx_pages) { 727 rx_frame.next != next_frame + 1 - num_rx_pages) {
728 ei_local->current_page = rxing_page; 728 ei_local->current_page = rxing_page;
729 ei_outb(ei_local->current_page-1, e8390_base+EN0_BOUNDARY); 729 ei_outb(ei_local->current_page-1, e8390_base+EN0_BOUNDARY);
730 dev->stats.rx_errors++; 730 dev->stats.rx_errors++;
diff --git a/drivers/net/ll_temac_main.c b/drivers/net/ll_temac_main.c
index f2a197fd47a5..336e7c7a9275 100644
--- a/drivers/net/ll_temac_main.c
+++ b/drivers/net/ll_temac_main.c
@@ -231,8 +231,8 @@ static void temac_set_multicast_list(struct net_device *ndev)
231 int i; 231 int i;
232 232
233 mutex_lock(&lp->indirect_mutex); 233 mutex_lock(&lp->indirect_mutex);
234 if (ndev->flags & (IFF_ALLMULTI | IFF_PROMISC) 234 if (ndev->flags & (IFF_ALLMULTI | IFF_PROMISC) ||
235 || ndev->mc_count > MULTICAST_CAM_TABLE_NUM) { 235 ndev->mc_count > MULTICAST_CAM_TABLE_NUM) {
236 /* 236 /*
237 * We must make the kernel realise we had to move 237 * We must make the kernel realise we had to move
238 * into promisc mode or we start all out war on 238 * into promisc mode or we start all out war on
diff --git a/drivers/net/mac89x0.c b/drivers/net/mac89x0.c
index c244ec34fc43..23b633e2ac42 100644
--- a/drivers/net/mac89x0.c
+++ b/drivers/net/mac89x0.c
@@ -222,8 +222,8 @@ struct net_device * __init mac89x0_probe(int unit)
222 int card_present; 222 int card_present;
223 223
224 local_irq_save(flags); 224 local_irq_save(flags);
225 card_present = hwreg_present((void*) ioaddr+4) 225 card_present = (hwreg_present((void*) ioaddr+4) &&
226 && hwreg_present((void*) ioaddr + DATA_PORT); 226 hwreg_present((void*) ioaddr + DATA_PORT));
227 local_irq_restore(flags); 227 local_irq_restore(flags);
228 228
229 if (!card_present) 229 if (!card_present)
diff --git a/drivers/net/mace.c b/drivers/net/mace.c
index 7d7577b598ea..d9fbad386389 100644
--- a/drivers/net/mace.c
+++ b/drivers/net/mace.c
@@ -897,8 +897,8 @@ static irqreturn_t mace_rxdma_intr(int irq, void *dev_id)
897 if (next >= N_RX_RING) 897 if (next >= N_RX_RING)
898 next = 0; 898 next = 0;
899 np = mp->rx_cmds + next; 899 np = mp->rx_cmds + next;
900 if (next != mp->rx_fill 900 if (next != mp->rx_fill &&
901 && (ld_le16(&np->xfer_status) & ACTIVE) != 0) { 901 (ld_le16(&np->xfer_status) & ACTIVE) != 0) {
902 printk(KERN_DEBUG "mace: lost a status word\n"); 902 printk(KERN_DEBUG "mace: lost a status word\n");
903 ++mace_lost_status; 903 ++mace_lost_status;
904 } else 904 } else
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 85e1b6a3ac1b..d38921906bb7 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -410,8 +410,8 @@ myri10ge_send_cmd(struct myri10ge_priv *mgp, u32 cmd,
410 * and try to get the completion quickly 410 * and try to get the completion quickly
411 * (1ms will be enough for those commands) */ 411 * (1ms will be enough for those commands) */
412 for (sleep_total = 0; 412 for (sleep_total = 0;
413 sleep_total < 1000 413 sleep_total < 1000 &&
414 && response->result == htonl(MYRI10GE_NO_RESPONSE_RESULT); 414 response->result == htonl(MYRI10GE_NO_RESPONSE_RESULT);
415 sleep_total += 10) { 415 sleep_total += 10) {
416 udelay(10); 416 udelay(10);
417 mb(); 417 mb();
@@ -419,8 +419,8 @@ myri10ge_send_cmd(struct myri10ge_priv *mgp, u32 cmd,
419 } else { 419 } else {
420 /* use msleep for most command */ 420 /* use msleep for most command */
421 for (sleep_total = 0; 421 for (sleep_total = 0;
422 sleep_total < 15 422 sleep_total < 15 &&
423 && response->result == htonl(MYRI10GE_NO_RESPONSE_RESULT); 423 response->result == htonl(MYRI10GE_NO_RESPONSE_RESULT);
424 sleep_total++) 424 sleep_total++)
425 msleep(1); 425 msleep(1);
426 } 426 }
@@ -557,8 +557,8 @@ myri10ge_validate_firmware(struct myri10ge_priv *mgp,
557 sscanf(mgp->fw_version, "%d.%d.%d", &mgp->fw_ver_major, 557 sscanf(mgp->fw_version, "%d.%d.%d", &mgp->fw_ver_major,
558 &mgp->fw_ver_minor, &mgp->fw_ver_tiny); 558 &mgp->fw_ver_minor, &mgp->fw_ver_tiny);
559 559
560 if (!(mgp->fw_ver_major == MXGEFW_VERSION_MAJOR 560 if (!(mgp->fw_ver_major == MXGEFW_VERSION_MAJOR &&
561 && mgp->fw_ver_minor == MXGEFW_VERSION_MINOR)) { 561 mgp->fw_ver_minor == MXGEFW_VERSION_MINOR)) {
562 dev_err(dev, "Found firmware version %s\n", mgp->fw_version); 562 dev_err(dev, "Found firmware version %s\n", mgp->fw_version);
563 dev_err(dev, "Driver needs %d.%d\n", MXGEFW_VERSION_MAJOR, 563 dev_err(dev, "Driver needs %d.%d\n", MXGEFW_VERSION_MAJOR,
564 MXGEFW_VERSION_MINOR); 564 MXGEFW_VERSION_MINOR);
@@ -1412,8 +1412,8 @@ myri10ge_tx_done(struct myri10ge_slice_state *ss, int mcp_index)
1412 } 1412 }
1413 1413
1414 /* start the queue if we've stopped it */ 1414 /* start the queue if we've stopped it */
1415 if (netif_tx_queue_stopped(dev_queue) 1415 if (netif_tx_queue_stopped(dev_queue) &&
1416 && tx->req - tx->done < (tx->mask >> 1)) { 1416 tx->req - tx->done < (tx->mask >> 1)) {
1417 tx->wake_queue++; 1417 tx->wake_queue++;
1418 netif_tx_wake_queue(dev_queue); 1418 netif_tx_wake_queue(dev_queue);
1419 } 1419 }
diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c
index 9a8d3ab4709b..797fe164ce27 100644
--- a/drivers/net/natsemi.c
+++ b/drivers/net/natsemi.c
@@ -683,8 +683,8 @@ static ssize_t natsemi_set_dspcfg_workaround(struct device *dev,
683 /* Find out the new setting */ 683 /* Find out the new setting */
684 if (!strncmp("on", buf, count - 1) || !strncmp("1", buf, count - 1)) 684 if (!strncmp("on", buf, count - 1) || !strncmp("1", buf, count - 1))
685 new_setting = 1; 685 new_setting = 1;
686 else if (!strncmp("off", buf, count - 1) 686 else if (!strncmp("off", buf, count - 1) ||
687 || !strncmp("0", buf, count - 1)) 687 !strncmp("0", buf, count - 1))
688 new_setting = 0; 688 new_setting = 0;
689 else 689 else
690 return count; 690 return count;
@@ -757,8 +757,8 @@ static void __devinit natsemi_init_media (struct net_device *dev)
757 np->autoneg = (tmp & BMCR_ANENABLE)? AUTONEG_ENABLE: AUTONEG_DISABLE; 757 np->autoneg = (tmp & BMCR_ANENABLE)? AUTONEG_ENABLE: AUTONEG_DISABLE;
758 np->advertising= mdio_read(dev, MII_ADVERTISE); 758 np->advertising= mdio_read(dev, MII_ADVERTISE);
759 759
760 if ((np->advertising & ADVERTISE_ALL) != ADVERTISE_ALL 760 if ((np->advertising & ADVERTISE_ALL) != ADVERTISE_ALL &&
761 && netif_msg_probe(np)) { 761 netif_msg_probe(np)) {
762 printk(KERN_INFO "natsemi %s: Transceiver default autonegotiation %s " 762 printk(KERN_INFO "natsemi %s: Transceiver default autonegotiation %s "
763 "10%s %s duplex.\n", 763 "10%s %s duplex.\n",
764 pci_name(np->pci_dev), 764 pci_name(np->pci_dev),
@@ -1153,8 +1153,8 @@ static void init_phy_fixup(struct net_device *dev)
1153 tmp = mdio_read(dev, MII_BMCR); 1153 tmp = mdio_read(dev, MII_BMCR);
1154 if (np->autoneg == AUTONEG_ENABLE) { 1154 if (np->autoneg == AUTONEG_ENABLE) {
1155 /* renegotiate if something changed */ 1155 /* renegotiate if something changed */
1156 if ((tmp & BMCR_ANENABLE) == 0 1156 if ((tmp & BMCR_ANENABLE) == 0 ||
1157 || np->advertising != mdio_read(dev, MII_ADVERTISE)) 1157 np->advertising != mdio_read(dev, MII_ADVERTISE))
1158 { 1158 {
1159 /* turn on autonegotiation and force negotiation */ 1159 /* turn on autonegotiation and force negotiation */
1160 tmp |= (BMCR_ANENABLE | BMCR_ANRESTART); 1160 tmp |= (BMCR_ANENABLE | BMCR_ANRESTART);
@@ -2164,8 +2164,8 @@ static void netdev_tx_done(struct net_device *dev)
2164 dev_kfree_skb_irq(np->tx_skbuff[entry]); 2164 dev_kfree_skb_irq(np->tx_skbuff[entry]);
2165 np->tx_skbuff[entry] = NULL; 2165 np->tx_skbuff[entry] = NULL;
2166 } 2166 }
2167 if (netif_queue_stopped(dev) 2167 if (netif_queue_stopped(dev) &&
2168 && np->cur_tx - np->dirty_tx < TX_QUEUE_LEN - 4) { 2168 np->cur_tx - np->dirty_tx < TX_QUEUE_LEN - 4) {
2169 /* The ring is no longer full, wake queue. */ 2169 /* The ring is no longer full, wake queue. */
2170 netif_wake_queue(dev); 2170 netif_wake_queue(dev);
2171 } 2171 }
@@ -2343,8 +2343,8 @@ static void netdev_rx(struct net_device *dev, int *work_done, int work_to_do)
2343 /* Omit CRC size. */ 2343 /* Omit CRC size. */
2344 /* Check if the packet is long enough to accept 2344 /* Check if the packet is long enough to accept
2345 * without copying to a minimally-sized skbuff. */ 2345 * without copying to a minimally-sized skbuff. */
2346 if (pkt_len < rx_copybreak 2346 if (pkt_len < rx_copybreak &&
2347 && (skb = dev_alloc_skb(pkt_len + RX_OFFSET)) != NULL) { 2347 (skb = dev_alloc_skb(pkt_len + RX_OFFSET)) != NULL) {
2348 /* 16 byte align the IP header */ 2348 /* 16 byte align the IP header */
2349 skb_reserve(skb, RX_OFFSET); 2349 skb_reserve(skb, RX_OFFSET);
2350 pci_dma_sync_single_for_cpu(np->pci_dev, 2350 pci_dma_sync_single_for_cpu(np->pci_dev,
@@ -2390,8 +2390,8 @@ static void netdev_error(struct net_device *dev, int intr_status)
2390 spin_lock(&np->lock); 2390 spin_lock(&np->lock);
2391 if (intr_status & LinkChange) { 2391 if (intr_status & LinkChange) {
2392 u16 lpa = mdio_read(dev, MII_LPA); 2392 u16 lpa = mdio_read(dev, MII_LPA);
2393 if (mdio_read(dev, MII_BMCR) & BMCR_ANENABLE 2393 if (mdio_read(dev, MII_BMCR) & BMCR_ANENABLE &&
2394 && netif_msg_link(np)) { 2394 netif_msg_link(np)) {
2395 printk(KERN_INFO 2395 printk(KERN_INFO
2396 "%s: Autonegotiation advertising" 2396 "%s: Autonegotiation advertising"
2397 " %#04x partner %#04x.\n", dev->name, 2397 " %#04x partner %#04x.\n", dev->name,
@@ -2488,8 +2488,8 @@ static void __set_rx_mode(struct net_device *dev)
2488 if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */ 2488 if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
2489 rx_mode = RxFilterEnable | AcceptBroadcast 2489 rx_mode = RxFilterEnable | AcceptBroadcast
2490 | AcceptAllMulticast | AcceptAllPhys | AcceptMyPhys; 2490 | AcceptAllMulticast | AcceptAllPhys | AcceptMyPhys;
2491 } else if ((dev->mc_count > multicast_filter_limit) 2491 } else if ((dev->mc_count > multicast_filter_limit) ||
2492 || (dev->flags & IFF_ALLMULTI)) { 2492 (dev->flags & IFF_ALLMULTI)) {
2493 rx_mode = RxFilterEnable | AcceptBroadcast 2493 rx_mode = RxFilterEnable | AcceptBroadcast
2494 | AcceptAllMulticast | AcceptMyPhys; 2494 | AcceptAllMulticast | AcceptMyPhys;
2495 } else { 2495 } else {
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c
index c86095eb5d9e..ddd704ae0188 100644
--- a/drivers/net/netxen/netxen_nic_ethtool.c
+++ b/drivers/net/netxen/netxen_nic_ethtool.c
@@ -257,18 +257,18 @@ netxen_nic_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
257 /* read which mode */ 257 /* read which mode */
258 if (adapter->ahw.port_type == NETXEN_NIC_GBE) { 258 if (adapter->ahw.port_type == NETXEN_NIC_GBE) {
259 /* autonegotiation */ 259 /* autonegotiation */
260 if (adapter->phy_write 260 if (adapter->phy_write &&
261 && adapter->phy_write(adapter, 261 adapter->phy_write(adapter,
262 NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG, 262 NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG,
263 ecmd->autoneg) != 0) 263 ecmd->autoneg) != 0)
264 return -EIO; 264 return -EIO;
265 else 265 else
266 adapter->link_autoneg = ecmd->autoneg; 266 adapter->link_autoneg = ecmd->autoneg;
267 267
268 if (adapter->phy_read 268 if (adapter->phy_read &&
269 && adapter->phy_read(adapter, 269 adapter->phy_read(adapter,
270 NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS, 270 NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
271 &status) != 0) 271 &status) != 0)
272 return -EIO; 272 return -EIO;
273 273
274 /* speed */ 274 /* speed */
@@ -288,10 +288,10 @@ netxen_nic_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
288 netxen_clear_phy_duplex(status); 288 netxen_clear_phy_duplex(status);
289 if (ecmd->duplex == DUPLEX_FULL) 289 if (ecmd->duplex == DUPLEX_FULL)
290 netxen_set_phy_duplex(status); 290 netxen_set_phy_duplex(status);
291 if (adapter->phy_write 291 if (adapter->phy_write &&
292 && adapter->phy_write(adapter, 292 adapter->phy_write(adapter,
293 NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS, 293 NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
294 *((int *)&status)) != 0) 294 *((int *)&status)) != 0)
295 return -EIO; 295 return -EIO;
296 else { 296 else {
297 adapter->link_speed = ecmd->speed; 297 adapter->link_speed = ecmd->speed;
@@ -442,10 +442,10 @@ static u32 netxen_nic_test_link(struct net_device *dev)
442 442
443 /* read which mode */ 443 /* read which mode */
444 if (adapter->ahw.port_type == NETXEN_NIC_GBE) { 444 if (adapter->ahw.port_type == NETXEN_NIC_GBE) {
445 if (adapter->phy_read 445 if (adapter->phy_read &&
446 && adapter->phy_read(adapter, 446 adapter->phy_read(adapter,
447 NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS, 447 NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
448 &status) != 0) 448 &status) != 0)
449 return -EIO; 449 return -EIO;
450 else { 450 else {
451 val = netxen_get_phy_link(status); 451 val = netxen_get_phy_link(status);
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c
index 89bd5194e37a..2e364fee3cbb 100644
--- a/drivers/net/netxen/netxen_nic_hw.c
+++ b/drivers/net/netxen/netxen_nic_hw.c
@@ -1936,10 +1936,10 @@ void netxen_nic_set_link_parameters(struct netxen_adapter *adapter)
1936 return; 1936 return;
1937 } 1937 }
1938 1938
1939 if (adapter->phy_read 1939 if (adapter->phy_read &&
1940 && adapter->phy_read(adapter, 1940 adapter->phy_read(adapter,
1941 NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS, 1941 NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
1942 &status) == 0) { 1942 &status) == 0) {
1943 if (netxen_get_phy_link(status)) { 1943 if (netxen_get_phy_link(status)) {
1944 switch (netxen_get_phy_speed(status)) { 1944 switch (netxen_get_phy_speed(status)) {
1945 case 0: 1945 case 0:
@@ -1966,10 +1966,10 @@ void netxen_nic_set_link_parameters(struct netxen_adapter *adapter)
1966 adapter->link_duplex = -1; 1966 adapter->link_duplex = -1;
1967 break; 1967 break;
1968 } 1968 }
1969 if (adapter->phy_read 1969 if (adapter->phy_read &&
1970 && adapter->phy_read(adapter, 1970 adapter->phy_read(adapter,
1971 NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG, 1971 NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG,
1972 &autoneg) != 0) 1972 &autoneg) != 0)
1973 adapter->link_autoneg = autoneg; 1973 adapter->link_autoneg = autoneg;
1974 } else 1974 } else
1975 goto link_down; 1975 goto link_down;
diff --git a/drivers/net/ni52.c b/drivers/net/ni52.c
index 305f4ba36999..b42f5e522f90 100644
--- a/drivers/net/ni52.c
+++ b/drivers/net/ni52.c
@@ -477,8 +477,8 @@ static int __init ni52_probe1(struct net_device *dev, int ioaddr)
477 for (i = 0; i < ETH_ALEN; i++) 477 for (i = 0; i < ETH_ALEN; i++)
478 dev->dev_addr[i] = inb(dev->base_addr+i); 478 dev->dev_addr[i] = inb(dev->base_addr+i);
479 479
480 if (dev->dev_addr[0] != NI52_ADDR0 || dev->dev_addr[1] != NI52_ADDR1 480 if (dev->dev_addr[0] != NI52_ADDR0 || dev->dev_addr[1] != NI52_ADDR1 ||
481 || dev->dev_addr[2] != NI52_ADDR2) { 481 dev->dev_addr[2] != NI52_ADDR2) {
482 retval = -ENODEV; 482 retval = -ENODEV;
483 goto out; 483 goto out;
484 } 484 }
diff --git a/drivers/net/ns83820.c b/drivers/net/ns83820.c
index 57fd483dbb1f..1f6327d41536 100644
--- a/drivers/net/ns83820.c
+++ b/drivers/net/ns83820.c
@@ -648,8 +648,8 @@ static void phy_intr(struct net_device *ndev)
648 dprintk("phy_intr: tbisr=%08x, tanar=%08x, tanlpar=%08x\n", 648 dprintk("phy_intr: tbisr=%08x, tanar=%08x, tanlpar=%08x\n",
649 tbisr, tanar, tanlpar); 649 tbisr, tanar, tanlpar);
650 650
651 if ( (fullduplex = (tanlpar & TANAR_FULL_DUP) 651 if ( (fullduplex = (tanlpar & TANAR_FULL_DUP) &&
652 && (tanar & TANAR_FULL_DUP)) ) { 652 (tanar & TANAR_FULL_DUP)) ) {
653 653
654 /* both of us are full duplex */ 654 /* both of us are full duplex */
655 writel(readl(dev->base + TXCFG) 655 writel(readl(dev->base + TXCFG)
@@ -661,12 +661,12 @@ static void phy_intr(struct net_device *ndev)
661 writel(readl(dev->base + GPIOR) | GPIOR_GP1_OUT, 661 writel(readl(dev->base + GPIOR) | GPIOR_GP1_OUT,
662 dev->base + GPIOR); 662 dev->base + GPIOR);
663 663
664 } else if(((tanlpar & TANAR_HALF_DUP) 664 } else if (((tanlpar & TANAR_HALF_DUP) &&
665 && (tanar & TANAR_HALF_DUP)) 665 (tanar & TANAR_HALF_DUP)) ||
666 || ((tanlpar & TANAR_FULL_DUP) 666 ((tanlpar & TANAR_FULL_DUP) &&
667 && (tanar & TANAR_HALF_DUP)) 667 (tanar & TANAR_HALF_DUP)) ||
668 || ((tanlpar & TANAR_HALF_DUP) 668 ((tanlpar & TANAR_HALF_DUP) &&
669 && (tanar & TANAR_FULL_DUP))) { 669 (tanar & TANAR_FULL_DUP))) {
670 670
671 /* one or both of us are half duplex */ 671 /* one or both of us are half duplex */
672 writel((readl(dev->base + TXCFG) 672 writel((readl(dev->base + TXCFG)
@@ -720,16 +720,16 @@ static void phy_intr(struct net_device *ndev)
720 720
721 newlinkstate = (cfg & CFG_LNKSTS) ? LINK_UP : LINK_DOWN; 721 newlinkstate = (cfg & CFG_LNKSTS) ? LINK_UP : LINK_DOWN;
722 722
723 if (newlinkstate & LINK_UP 723 if (newlinkstate & LINK_UP &&
724 && dev->linkstate != newlinkstate) { 724 dev->linkstate != newlinkstate) {
725 netif_start_queue(ndev); 725 netif_start_queue(ndev);
726 netif_wake_queue(ndev); 726 netif_wake_queue(ndev);
727 printk(KERN_INFO "%s: link now %s mbps, %s duplex and up.\n", 727 printk(KERN_INFO "%s: link now %s mbps, %s duplex and up.\n",
728 ndev->name, 728 ndev->name,
729 speeds[speed], 729 speeds[speed],
730 fullduplex ? "full" : "half"); 730 fullduplex ? "full" : "half");
731 } else if (newlinkstate & LINK_DOWN 731 } else if (newlinkstate & LINK_DOWN &&
732 && dev->linkstate != newlinkstate) { 732 dev->linkstate != newlinkstate) {
733 netif_stop_queue(ndev); 733 netif_stop_queue(ndev);
734 printk(KERN_INFO "%s: link now down.\n", ndev->name); 734 printk(KERN_INFO "%s: link now down.\n", ndev->name);
735 } 735 }
diff --git a/drivers/net/pci-skeleton.c b/drivers/net/pci-skeleton.c
index 0c44b48f1384..480af402affd 100644
--- a/drivers/net/pci-skeleton.c
+++ b/drivers/net/pci-skeleton.c
@@ -1225,8 +1225,8 @@ static void netdrv_timer (unsigned long data)
1225 mii_lpa = mdio_read (dev, tp->phys[0], MII_LPA); 1225 mii_lpa = mdio_read (dev, tp->phys[0], MII_LPA);
1226 1226
1227 if (!tp->duplex_lock && mii_lpa != 0xffff) { 1227 if (!tp->duplex_lock && mii_lpa != 0xffff) {
1228 int duplex = (mii_lpa & LPA_100FULL) 1228 int duplex = ((mii_lpa & LPA_100FULL) ||
1229 || (mii_lpa & 0x01C0) == 0x0040; 1229 (mii_lpa & 0x01C0) == 0x0040);
1230 if (tp->full_duplex != duplex) { 1230 if (tp->full_duplex != duplex) {
1231 tp->full_duplex = duplex; 1231 tp->full_duplex = duplex;
1232 printk (KERN_INFO 1232 printk (KERN_INFO
@@ -1612,8 +1612,8 @@ static void netdrv_weird_interrupt (struct net_device *dev,
1612 (tp->drv_flags & HAS_LNK_CHNG)) { 1612 (tp->drv_flags & HAS_LNK_CHNG)) {
1613 /* Really link-change on new chips. */ 1613 /* Really link-change on new chips. */
1614 int lpar = NETDRV_R16 (NWayLPAR); 1614 int lpar = NETDRV_R16 (NWayLPAR);
1615 int duplex = (lpar & 0x0100) || (lpar & 0x01C0) == 0x0040 1615 int duplex = ((lpar & 0x0100) || (lpar & 0x01C0) == 0x0040 ||
1616 || tp->duplex_lock; 1616 tp->duplex_lock);
1617 if (tp->full_duplex != duplex) { 1617 if (tp->full_duplex != duplex) {
1618 tp->full_duplex = duplex; 1618 tp->full_duplex = duplex;
1619 NETDRV_W8 (Cfg9346, Cfg9346_Unlock); 1619 NETDRV_W8 (Cfg9346, Cfg9346_Unlock);
@@ -1820,8 +1820,8 @@ static void netdrv_set_rx_mode (struct net_device *dev)
1820 AcceptBroadcast | AcceptMulticast | AcceptMyPhys | 1820 AcceptBroadcast | AcceptMulticast | AcceptMyPhys |
1821 AcceptAllPhys; 1821 AcceptAllPhys;
1822 mc_filter[1] = mc_filter[0] = 0xffffffff; 1822 mc_filter[1] = mc_filter[0] = 0xffffffff;
1823 } else if ((dev->mc_count > multicast_filter_limit) 1823 } else if ((dev->mc_count > multicast_filter_limit) ||
1824 || (dev->flags & IFF_ALLMULTI)) { 1824 (dev->flags & IFF_ALLMULTI)) {
1825 /* Too many to filter perfectly -- accept all multicasts. */ 1825 /* Too many to filter perfectly -- accept all multicasts. */
1826 rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys; 1826 rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
1827 mc_filter[1] = mc_filter[0] = 0xffffffff; 1827 mc_filter[1] = mc_filter[0] = 0xffffffff;
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c
index 3131a59a8d32..ca711f46814e 100644
--- a/drivers/net/pcmcia/axnet_cs.c
+++ b/drivers/net/pcmcia/axnet_cs.c
@@ -1232,8 +1232,8 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id)
1232 ei_local->irqlock = 1; 1232 ei_local->irqlock = 1;
1233 1233
1234 /* !!Assumption!! -- we stay in page 0. Don't break this. */ 1234 /* !!Assumption!! -- we stay in page 0. Don't break this. */
1235 while ((interrupts = inb_p(e8390_base + EN0_ISR)) != 0 1235 while ((interrupts = inb_p(e8390_base + EN0_ISR)) != 0 &&
1236 && ++nr_serviced < MAX_SERVICE) 1236 ++nr_serviced < MAX_SERVICE)
1237 { 1237 {
1238 if (!netif_running(dev) || (interrupts == 0xff)) { 1238 if (!netif_running(dev) || (interrupts == 0xff)) {
1239 if (ei_debug > 1) 1239 if (ei_debug > 1)
diff --git a/drivers/net/pcmcia/fmvj18x_cs.c b/drivers/net/pcmcia/fmvj18x_cs.c
index 57e09616330a..a6961215cd56 100644
--- a/drivers/net/pcmcia/fmvj18x_cs.c
+++ b/drivers/net/pcmcia/fmvj18x_cs.c
@@ -371,9 +371,9 @@ static int fmvj18x_config(struct pcmcia_device *link)
371 switch (link->manf_id) { 371 switch (link->manf_id) {
372 case MANFID_TDK: 372 case MANFID_TDK:
373 cardtype = TDK; 373 cardtype = TDK;
374 if (link->card_id == PRODID_TDK_GN3410 374 if (link->card_id == PRODID_TDK_GN3410 ||
375 || link->card_id == PRODID_TDK_NP9610 375 link->card_id == PRODID_TDK_NP9610 ||
376 || link->card_id == PRODID_TDK_MN3200) { 376 link->card_id == PRODID_TDK_MN3200) {
377 /* MultiFunction Card */ 377 /* MultiFunction Card */
378 link->conf.ConfigBase = 0x800; 378 link->conf.ConfigBase = 0x800;
379 link->conf.ConfigIndex = 0x47; 379 link->conf.ConfigIndex = 0x47;
@@ -590,11 +590,11 @@ static int fmvj18x_get_hwinfo(struct pcmcia_device *link, u_char *node_id)
590 */ 590 */
591 for (i = 0; i < 0x200; i++) { 591 for (i = 0; i < 0x200; i++) {
592 if (readb(base+i*2) == 0x22) { 592 if (readb(base+i*2) == 0x22) {
593 if (readb(base+(i-1)*2) == 0xff 593 if (readb(base+(i-1)*2) == 0xff &&
594 && readb(base+(i+5)*2) == 0x04 594 readb(base+(i+5)*2) == 0x04 &&
595 && readb(base+(i+6)*2) == 0x06 595 readb(base+(i+6)*2) == 0x06 &&
596 && readb(base+(i+13)*2) == 0xff) 596 readb(base+(i+13)*2) == 0xff)
597 break; 597 break;
598 } 598 }
599 } 599 }
600 600
@@ -1219,8 +1219,8 @@ static void set_rx_mode(struct net_device *dev)
1219 if (dev->flags & IFF_PROMISC) { 1219 if (dev->flags & IFF_PROMISC) {
1220 memset(mc_filter, 0xff, sizeof(mc_filter)); 1220 memset(mc_filter, 0xff, sizeof(mc_filter));
1221 outb(3, ioaddr + RX_MODE); /* Enable promiscuous mode */ 1221 outb(3, ioaddr + RX_MODE); /* Enable promiscuous mode */
1222 } else if (dev->mc_count > MC_FILTERBREAK 1222 } else if (dev->mc_count > MC_FILTERBREAK ||
1223 || (dev->flags & IFF_ALLMULTI)) { 1223 (dev->flags & IFF_ALLMULTI)) {
1224 /* Too many to filter perfectly -- accept all multicasts. */ 1224 /* Too many to filter perfectly -- accept all multicasts. */
1225 memset(mc_filter, 0xff, sizeof(mc_filter)); 1225 memset(mc_filter, 0xff, sizeof(mc_filter));
1226 outb(2, ioaddr + RX_MODE); /* Use normal mode. */ 1226 outb(2, ioaddr + RX_MODE); /* Use normal mode. */
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c
index 469684474b72..347eaee855c0 100644
--- a/drivers/net/pcmcia/pcnet_cs.c
+++ b/drivers/net/pcmcia/pcnet_cs.c
@@ -601,8 +601,8 @@ static int pcnet_config(struct pcmcia_device *link)
601 dev->if_port = 0; 601 dev->if_port = 0;
602 } 602 }
603 603
604 if ((link->conf.ConfigBase == 0x03c0) 604 if ((link->conf.ConfigBase == 0x03c0) &&
605 && (link->manf_id == 0x149) && (link->card_id == 0xc1ab)) { 605 (link->manf_id == 0x149) && (link->card_id == 0xc1ab)) {
606 printk(KERN_INFO "pcnet_cs: this is an AX88190 card!\n"); 606 printk(KERN_INFO "pcnet_cs: this is an AX88190 card!\n");
607 printk(KERN_INFO "pcnet_cs: use axnet_cs instead.\n"); 607 printk(KERN_INFO "pcnet_cs: use axnet_cs instead.\n");
608 goto failed; 608 goto failed;
diff --git a/drivers/net/pcmcia/smc91c92_cs.c b/drivers/net/pcmcia/smc91c92_cs.c
index 7bde2cd34c7e..117b083a10cb 100644
--- a/drivers/net/pcmcia/smc91c92_cs.c
+++ b/drivers/net/pcmcia/smc91c92_cs.c
@@ -526,10 +526,10 @@ static int mhz_mfc_config(struct pcmcia_device *link)
526 mem.CardOffset = link->conf.ConfigBase; 526 mem.CardOffset = link->conf.ConfigBase;
527 i = pcmcia_map_mem_page(link->win, &mem); 527 i = pcmcia_map_mem_page(link->win, &mem);
528 528
529 if ((i == 0) 529 if ((i == 0) &&
530 && (smc->manfid == MANFID_MEGAHERTZ) 530 (smc->manfid == MANFID_MEGAHERTZ) &&
531 && (smc->cardid == PRODID_MEGAHERTZ_EM3288)) 531 (smc->cardid == PRODID_MEGAHERTZ_EM3288))
532 mhz_3288_power(link); 532 mhz_3288_power(link);
533 533
534free_cfg_mem: 534free_cfg_mem:
535 kfree(cfg_mem); 535 kfree(cfg_mem);
diff --git a/drivers/net/pcmcia/xirc2ps_cs.c b/drivers/net/pcmcia/xirc2ps_cs.c
index cf8423102538..187da21f720b 100644
--- a/drivers/net/pcmcia/xirc2ps_cs.c
+++ b/drivers/net/pcmcia/xirc2ps_cs.c
@@ -421,9 +421,9 @@ PrintRegisters(struct net_device *dev)
421 printk("\n"); 421 printk("\n");
422 } 422 }
423 for (page=0x40 ; page <= 0x5f; page++) { 423 for (page=0x40 ; page <= 0x5f; page++) {
424 if (page == 0x43 || (page >= 0x46 && page <= 0x4f) 424 if (page == 0x43 || (page >= 0x46 && page <= 0x4f) ||
425 || (page >= 0x51 && page <=0x5e)) 425 (page >= 0x51 && page <=0x5e))
426 continue; 426 continue;
427 printk(KDBG_XIRC "Register page %2x: ", page); 427 printk(KDBG_XIRC "Register page %2x: ", page);
428 SelectPage(page); 428 SelectPage(page);
429 for (i = 8; i < 16; i++) 429 for (i = 8; i < 16; i++)
@@ -834,9 +834,9 @@ xirc2ps_config(struct pcmcia_device * link)
834 /* Once I saw two CISTPL_FUNCE_LAN_NODE_ID entries: 834 /* Once I saw two CISTPL_FUNCE_LAN_NODE_ID entries:
835 * the first one with a length of zero the second correct - 835 * the first one with a length of zero the second correct -
836 * so I skip all entries with length 0 */ 836 * so I skip all entries with length 0 */
837 if (parse.funce.type == CISTPL_FUNCE_LAN_NODE_ID 837 if (parse.funce.type == CISTPL_FUNCE_LAN_NODE_ID &&
838 && ((cistpl_lan_node_id_t *)parse.funce.data)->nb) 838 ((cistpl_lan_node_id_t *)parse.funce.data)->nb)
839 break; 839 break;
840 } 840 }
841 if (err) { /* not found: try to get the node-id from tuple 0x89 */ 841 if (err) { /* not found: try to get the node-id from tuple 0x89 */
842 tuple.DesiredTuple = 0x89; /* data layout looks like tuple 0x22 */ 842 tuple.DesiredTuple = 0x89; /* data layout looks like tuple 0x22 */
@@ -852,8 +852,8 @@ xirc2ps_config(struct pcmcia_device * link)
852 tuple.DesiredTuple = CISTPL_FUNCE; 852 tuple.DesiredTuple = CISTPL_FUNCE;
853 for (err = first_tuple(link, &tuple, &parse); !err; 853 for (err = first_tuple(link, &tuple, &parse); !err;
854 err = next_tuple(link, &tuple, &parse)) { 854 err = next_tuple(link, &tuple, &parse)) {
855 if (parse.funce.type == 0x02 && parse.funce.data[0] == 1 855 if (parse.funce.type == 0x02 && parse.funce.data[0] == 1 &&
856 && parse.funce.data[1] == 6 && tuple.TupleDataLen == 13) { 856 parse.funce.data[1] == 6 && tuple.TupleDataLen == 13) {
857 buf[1] = 4; 857 buf[1] = 4;
858 memcpy(&parse, buf+1, 8); 858 memcpy(&parse, buf+1, 8);
859 break; 859 break;
diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c
index 076f23a10517..dcc67a35e8f2 100644
--- a/drivers/net/pcnet32.c
+++ b/drivers/net/pcnet32.c
@@ -1515,8 +1515,8 @@ static void __devinit pcnet32_probe_vlbus(unsigned int *pcnet32_portlist)
1515 if (request_region 1515 if (request_region
1516 (ioaddr, PCNET32_TOTAL_SIZE, "pcnet32_probe_vlbus")) { 1516 (ioaddr, PCNET32_TOTAL_SIZE, "pcnet32_probe_vlbus")) {
1517 /* check if there is really a pcnet chip on that ioaddr */ 1517 /* check if there is really a pcnet chip on that ioaddr */
1518 if ((inb(ioaddr + 14) == 0x57) 1518 if ((inb(ioaddr + 14) == 0x57) &&
1519 && (inb(ioaddr + 15) == 0x57)) { 1519 (inb(ioaddr + 15) == 0x57)) {
1520 pcnet32_probe1(ioaddr, 0, NULL); 1520 pcnet32_probe1(ioaddr, 0, NULL);
1521 } else { 1521 } else {
1522 release_region(ioaddr, PCNET32_TOTAL_SIZE); 1522 release_region(ioaddr, PCNET32_TOTAL_SIZE);
@@ -1610,8 +1610,8 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
1610 a = &pcnet32_wio; 1610 a = &pcnet32_wio;
1611 } else { 1611 } else {
1612 pcnet32_dwio_reset(ioaddr); 1612 pcnet32_dwio_reset(ioaddr);
1613 if (pcnet32_dwio_read_csr(ioaddr, 0) == 4 1613 if (pcnet32_dwio_read_csr(ioaddr, 0) == 4 &&
1614 && pcnet32_dwio_check(ioaddr)) { 1614 pcnet32_dwio_check(ioaddr)) {
1615 a = &pcnet32_dwio; 1615 a = &pcnet32_dwio;
1616 } else { 1616 } else {
1617 if (pcnet32_debug & NETIF_MSG_PROBE) 1617 if (pcnet32_debug & NETIF_MSG_PROBE)
@@ -1750,8 +1750,8 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
1750 for (i = 0; i < 6; i++) 1750 for (i = 0; i < 6; i++)
1751 promaddr[i] = inb(ioaddr + i); 1751 promaddr[i] = inb(ioaddr + i);
1752 1752
1753 if (memcmp(promaddr, dev->dev_addr, 6) 1753 if (memcmp(promaddr, dev->dev_addr, 6) ||
1754 || !is_valid_ether_addr(dev->dev_addr)) { 1754 !is_valid_ether_addr(dev->dev_addr)) {
1755 if (is_valid_ether_addr(promaddr)) { 1755 if (is_valid_ether_addr(promaddr)) {
1756 if (pcnet32_debug & NETIF_MSG_PROBE) { 1756 if (pcnet32_debug & NETIF_MSG_PROBE) {
1757 printk(" warning: CSR address invalid,\n"); 1757 printk(" warning: CSR address invalid,\n");
@@ -1840,8 +1840,8 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
1840 lp->mii = mii; 1840 lp->mii = mii;
1841 lp->chip_version = chip_version; 1841 lp->chip_version = chip_version;
1842 lp->msg_enable = pcnet32_debug; 1842 lp->msg_enable = pcnet32_debug;
1843 if ((cards_found >= MAX_UNITS) 1843 if ((cards_found >= MAX_UNITS) ||
1844 || (options[cards_found] >= sizeof(options_mapping))) 1844 (options[cards_found] >= sizeof(options_mapping)))
1845 lp->options = PCNET32_PORT_ASEL; 1845 lp->options = PCNET32_PORT_ASEL;
1846 else 1846 else
1847 lp->options = options_mapping[options[cards_found]]; 1847 lp->options = options_mapping[options[cards_found]];
@@ -1866,8 +1866,8 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
1866 goto err_free_ring; 1866 goto err_free_ring;
1867 } 1867 }
1868 /* detect special T1/E1 WAN card by checking for MAC address */ 1868 /* detect special T1/E1 WAN card by checking for MAC address */
1869 if (dev->dev_addr[0] == 0x00 && dev->dev_addr[1] == 0xe0 1869 if (dev->dev_addr[0] == 0x00 && dev->dev_addr[1] == 0xe0 &&
1870 && dev->dev_addr[2] == 0x75) 1870 dev->dev_addr[2] == 0x75)
1871 lp->options = PCNET32_PORT_FD | PCNET32_PORT_GPSI; 1871 lp->options = PCNET32_PORT_FD | PCNET32_PORT_GPSI;
1872 1872
1873 lp->init_block->mode = cpu_to_le16(0x0003); /* Disable Rx and Tx. */ 1873 lp->init_block->mode = cpu_to_le16(0x0003); /* Disable Rx and Tx. */
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 6b71b0034060..b0e9f9c51721 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -254,12 +254,12 @@ int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd)
254 if (cmd->autoneg == AUTONEG_ENABLE && cmd->advertising == 0) 254 if (cmd->autoneg == AUTONEG_ENABLE && cmd->advertising == 0)
255 return -EINVAL; 255 return -EINVAL;
256 256
257 if (cmd->autoneg == AUTONEG_DISABLE 257 if (cmd->autoneg == AUTONEG_DISABLE &&
258 && ((cmd->speed != SPEED_1000 258 ((cmd->speed != SPEED_1000 &&
259 && cmd->speed != SPEED_100 259 cmd->speed != SPEED_100 &&
260 && cmd->speed != SPEED_10) 260 cmd->speed != SPEED_10) ||
261 || (cmd->duplex != DUPLEX_HALF 261 (cmd->duplex != DUPLEX_HALF &&
262 && cmd->duplex != DUPLEX_FULL))) 262 cmd->duplex != DUPLEX_FULL)))
263 return -EINVAL; 263 return -EINVAL;
264 264
265 phydev->autoneg = cmd->autoneg; 265 phydev->autoneg = cmd->autoneg;
@@ -353,9 +353,9 @@ int phy_mii_ioctl(struct phy_device *phydev,
353 353
354 phy_write(phydev, mii_data->reg_num, val); 354 phy_write(phydev, mii_data->reg_num, val);
355 355
356 if (mii_data->reg_num == MII_BMCR 356 if (mii_data->reg_num == MII_BMCR &&
357 && val & BMCR_RESET 357 val & BMCR_RESET &&
358 && phydev->drv->config_init) { 358 phydev->drv->config_init) {
359 phy_scan_fixups(phydev); 359 phy_scan_fixups(phydev);
360 phydev->drv->config_init(phydev); 360 phydev->drv->config_init(phydev);
361 } 361 }
diff --git a/drivers/net/plip.c b/drivers/net/plip.c
index 00487f569cfd..3327e9fc7b51 100644
--- a/drivers/net/plip.c
+++ b/drivers/net/plip.c
@@ -372,8 +372,8 @@ plip_bh(struct work_struct *work)
372 372
373 nl->is_deferred = 0; 373 nl->is_deferred = 0;
374 f = connection_state_table[nl->connection]; 374 f = connection_state_table[nl->connection];
375 if ((r = (*f)(nl->dev, nl, snd, rcv)) != OK 375 if ((r = (*f)(nl->dev, nl, snd, rcv)) != OK &&
376 && (r = plip_bh_timeout_error(nl->dev, nl, snd, rcv, r)) != OK) { 376 (r = plip_bh_timeout_error(nl->dev, nl, snd, rcv, r)) != OK) {
377 nl->is_deferred = 1; 377 nl->is_deferred = 1;
378 schedule_delayed_work(&nl->deferred, 1); 378 schedule_delayed_work(&nl->deferred, 1);
379 } 379 }
@@ -416,9 +416,8 @@ plip_bh_timeout_error(struct net_device *dev, struct net_local *nl,
416 416
417 if (error != ERROR) { /* Timeout */ 417 if (error != ERROR) { /* Timeout */
418 nl->timeout_count++; 418 nl->timeout_count++;
419 if ((error == HS_TIMEOUT 419 if ((error == HS_TIMEOUT && nl->timeout_count <= 10) ||
420 && nl->timeout_count <= 10) 420 nl->timeout_count <= 3) {
421 || nl->timeout_count <= 3) {
422 spin_unlock_irq(&nl->lock); 421 spin_unlock_irq(&nl->lock);
423 /* Try again later */ 422 /* Try again later */
424 return TIMEOUT; 423 return TIMEOUT;
@@ -624,8 +623,8 @@ plip_receive_packet(struct net_device *dev, struct net_local *nl,
624 if (plip_receive(nibble_timeout, dev, 623 if (plip_receive(nibble_timeout, dev,
625 &rcv->nibble, &rcv->length.b.msb)) 624 &rcv->nibble, &rcv->length.b.msb))
626 return TIMEOUT; 625 return TIMEOUT;
627 if (rcv->length.h > dev->mtu + dev->hard_header_len 626 if (rcv->length.h > dev->mtu + dev->hard_header_len ||
628 || rcv->length.h < 8) { 627 rcv->length.h < 8) {
629 printk(KERN_WARNING "%s: bogus packet size %d.\n", dev->name, rcv->length.h); 628 printk(KERN_WARNING "%s: bogus packet size %d.\n", dev->name, rcv->length.h);
630 return ERROR; 629 return ERROR;
631 } 630 }
diff --git a/drivers/net/ppp_async.c b/drivers/net/ppp_async.c
index c311fa6597f5..6a375ea4947d 100644
--- a/drivers/net/ppp_async.c
+++ b/drivers/net/ppp_async.c
@@ -558,8 +558,8 @@ ppp_async_encode(struct asyncppp *ap)
558 * Start of a new packet - insert the leading FLAG 558 * Start of a new packet - insert the leading FLAG
559 * character if necessary. 559 * character if necessary.
560 */ 560 */
561 if (islcp || flag_time == 0 561 if (islcp || flag_time == 0 ||
562 || time_after_eq(jiffies, ap->last_xmit + flag_time)) 562 time_after_eq(jiffies, ap->last_xmit + flag_time))
563 *buf++ = PPP_FLAG; 563 *buf++ = PPP_FLAG;
564 ap->last_xmit = jiffies; 564 ap->last_xmit = jiffies;
565 fcs = PPP_INITFCS; 565 fcs = PPP_INITFCS;
@@ -696,8 +696,8 @@ ppp_async_push(struct asyncppp *ap)
696 */ 696 */
697 clear_bit(XMIT_BUSY, &ap->xmit_flags); 697 clear_bit(XMIT_BUSY, &ap->xmit_flags);
698 /* any more work to do? if not, exit the loop */ 698 /* any more work to do? if not, exit the loop */
699 if (!(test_bit(XMIT_WAKEUP, &ap->xmit_flags) 699 if (!(test_bit(XMIT_WAKEUP, &ap->xmit_flags) ||
700 || (!tty_stuffed && ap->tpkt))) 700 (!tty_stuffed && ap->tpkt)))
701 break; 701 break;
702 /* more work to do, see if we can do it now */ 702 /* more work to do, see if we can do it now */
703 if (test_and_set_bit(XMIT_BUSY, &ap->xmit_flags)) 703 if (test_and_set_bit(XMIT_BUSY, &ap->xmit_flags))
@@ -754,8 +754,8 @@ scan_ordinary(struct asyncppp *ap, const unsigned char *buf, int count)
754 754
755 for (i = 0; i < count; ++i) { 755 for (i = 0; i < count; ++i) {
756 c = buf[i]; 756 c = buf[i];
757 if (c == PPP_ESCAPE || c == PPP_FLAG 757 if (c == PPP_ESCAPE || c == PPP_FLAG ||
758 || (c < 0x20 && (ap->raccm & (1 << c)) != 0)) 758 (c < 0x20 && (ap->raccm & (1 << c)) != 0))
759 break; 759 break;
760 } 760 }
761 return i; 761 return i;
diff --git a/drivers/net/ppp_deflate.c b/drivers/net/ppp_deflate.c
index 034c1c650bcb..695bc83e0cfd 100644
--- a/drivers/net/ppp_deflate.c
+++ b/drivers/net/ppp_deflate.c
@@ -111,11 +111,11 @@ static void *z_comp_alloc(unsigned char *options, int opt_len)
111 struct ppp_deflate_state *state; 111 struct ppp_deflate_state *state;
112 int w_size; 112 int w_size;
113 113
114 if (opt_len != CILEN_DEFLATE 114 if (opt_len != CILEN_DEFLATE ||
115 || (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT) 115 (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT) ||
116 || options[1] != CILEN_DEFLATE 116 options[1] != CILEN_DEFLATE ||
117 || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL 117 DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL ||
118 || options[3] != DEFLATE_CHK_SEQUENCE) 118 options[3] != DEFLATE_CHK_SEQUENCE)
119 return NULL; 119 return NULL;
120 w_size = DEFLATE_SIZE(options[2]); 120 w_size = DEFLATE_SIZE(options[2]);
121 if (w_size < DEFLATE_MIN_SIZE || w_size > DEFLATE_MAX_SIZE) 121 if (w_size < DEFLATE_MIN_SIZE || w_size > DEFLATE_MAX_SIZE)
@@ -163,12 +163,12 @@ static int z_comp_init(void *arg, unsigned char *options, int opt_len,
163{ 163{
164 struct ppp_deflate_state *state = (struct ppp_deflate_state *) arg; 164 struct ppp_deflate_state *state = (struct ppp_deflate_state *) arg;
165 165
166 if (opt_len < CILEN_DEFLATE 166 if (opt_len < CILEN_DEFLATE ||
167 || (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT) 167 (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT) ||
168 || options[1] != CILEN_DEFLATE 168 options[1] != CILEN_DEFLATE ||
169 || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL 169 DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL ||
170 || DEFLATE_SIZE(options[2]) != state->w_size 170 DEFLATE_SIZE(options[2]) != state->w_size ||
171 || options[3] != DEFLATE_CHK_SEQUENCE) 171 options[3] != DEFLATE_CHK_SEQUENCE)
172 return 0; 172 return 0;
173 173
174 state->seqno = 0; 174 state->seqno = 0;
@@ -330,11 +330,11 @@ static void *z_decomp_alloc(unsigned char *options, int opt_len)
330 struct ppp_deflate_state *state; 330 struct ppp_deflate_state *state;
331 int w_size; 331 int w_size;
332 332
333 if (opt_len != CILEN_DEFLATE 333 if (opt_len != CILEN_DEFLATE ||
334 || (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT) 334 (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT) ||
335 || options[1] != CILEN_DEFLATE 335 options[1] != CILEN_DEFLATE ||
336 || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL 336 DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL ||
337 || options[3] != DEFLATE_CHK_SEQUENCE) 337 options[3] != DEFLATE_CHK_SEQUENCE)
338 return NULL; 338 return NULL;
339 w_size = DEFLATE_SIZE(options[2]); 339 w_size = DEFLATE_SIZE(options[2]);
340 if (w_size < DEFLATE_MIN_SIZE || w_size > DEFLATE_MAX_SIZE) 340 if (w_size < DEFLATE_MIN_SIZE || w_size > DEFLATE_MAX_SIZE)
@@ -381,12 +381,12 @@ static int z_decomp_init(void *arg, unsigned char *options, int opt_len,
381{ 381{
382 struct ppp_deflate_state *state = (struct ppp_deflate_state *) arg; 382 struct ppp_deflate_state *state = (struct ppp_deflate_state *) arg;
383 383
384 if (opt_len < CILEN_DEFLATE 384 if (opt_len < CILEN_DEFLATE ||
385 || (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT) 385 (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT) ||
386 || options[1] != CILEN_DEFLATE 386 options[1] != CILEN_DEFLATE ||
387 || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL 387 DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL ||
388 || DEFLATE_SIZE(options[2]) != state->w_size 388 DEFLATE_SIZE(options[2]) != state->w_size ||
389 || options[3] != DEFLATE_CHK_SEQUENCE) 389 options[3] != DEFLATE_CHK_SEQUENCE)
390 return 0; 390 return 0;
391 391
392 state->seqno = 0; 392 state->seqno = 0;
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c
index f671bb810047..2282e729edbe 100644
--- a/drivers/net/ppp_generic.c
+++ b/drivers/net/ppp_generic.c
@@ -425,8 +425,8 @@ static ssize_t ppp_read(struct file *file, char __user *buf,
425 * network traffic (demand mode). 425 * network traffic (demand mode).
426 */ 426 */
427 struct ppp *ppp = PF_TO_PPP(pf); 427 struct ppp *ppp = PF_TO_PPP(pf);
428 if (ppp->n_channels == 0 428 if (ppp->n_channels == 0 &&
429 && (ppp->flags & SC_LOOP_TRAFFIC) == 0) 429 (ppp->flags & SC_LOOP_TRAFFIC) == 0)
430 break; 430 break;
431 } 431 }
432 ret = -EAGAIN; 432 ret = -EAGAIN;
@@ -511,8 +511,8 @@ static unsigned int ppp_poll(struct file *file, poll_table *wait)
511 else if (pf->kind == INTERFACE) { 511 else if (pf->kind == INTERFACE) {
512 /* see comment in ppp_read */ 512 /* see comment in ppp_read */
513 struct ppp *ppp = PF_TO_PPP(pf); 513 struct ppp *ppp = PF_TO_PPP(pf);
514 if (ppp->n_channels == 0 514 if (ppp->n_channels == 0 &&
515 && (ppp->flags & SC_LOOP_TRAFFIC) == 0) 515 (ppp->flags & SC_LOOP_TRAFFIC) == 0)
516 mask |= POLLIN | POLLRDNORM; 516 mask |= POLLIN | POLLRDNORM;
517 } 517 }
518 518
@@ -1057,8 +1057,8 @@ ppp_xmit_process(struct ppp *ppp)
1057 ppp_xmit_lock(ppp); 1057 ppp_xmit_lock(ppp);
1058 if (!ppp->closing) { 1058 if (!ppp->closing) {
1059 ppp_push(ppp); 1059 ppp_push(ppp);
1060 while (!ppp->xmit_pending 1060 while (!ppp->xmit_pending &&
1061 && (skb = skb_dequeue(&ppp->file.xq))) 1061 (skb = skb_dequeue(&ppp->file.xq)))
1062 ppp_send_frame(ppp, skb); 1062 ppp_send_frame(ppp, skb);
1063 /* If there's no work left to do, tell the core net 1063 /* If there's no work left to do, tell the core net
1064 code that we can accept some more. */ 1064 code that we can accept some more. */
@@ -1137,18 +1137,18 @@ ppp_send_frame(struct ppp *ppp, struct sk_buff *skb)
1137 /* the filter instructions are constructed assuming 1137 /* the filter instructions are constructed assuming
1138 a four-byte PPP header on each packet */ 1138 a four-byte PPP header on each packet */
1139 *skb_push(skb, 2) = 1; 1139 *skb_push(skb, 2) = 1;
1140 if (ppp->pass_filter 1140 if (ppp->pass_filter &&
1141 && sk_run_filter(skb, ppp->pass_filter, 1141 sk_run_filter(skb, ppp->pass_filter,
1142 ppp->pass_len) == 0) { 1142 ppp->pass_len) == 0) {
1143 if (ppp->debug & 1) 1143 if (ppp->debug & 1)
1144 printk(KERN_DEBUG "PPP: outbound frame not passed\n"); 1144 printk(KERN_DEBUG "PPP: outbound frame not passed\n");
1145 kfree_skb(skb); 1145 kfree_skb(skb);
1146 return; 1146 return;
1147 } 1147 }
1148 /* if this packet passes the active filter, record the time */ 1148 /* if this packet passes the active filter, record the time */
1149 if (!(ppp->active_filter 1149 if (!(ppp->active_filter &&
1150 && sk_run_filter(skb, ppp->active_filter, 1150 sk_run_filter(skb, ppp->active_filter,
1151 ppp->active_len) == 0)) 1151 ppp->active_len) == 0))
1152 ppp->last_xmit = jiffies; 1152 ppp->last_xmit = jiffies;
1153 skb_pull(skb, 2); 1153 skb_pull(skb, 2);
1154#else 1154#else
@@ -1202,8 +1202,8 @@ ppp_send_frame(struct ppp *ppp, struct sk_buff *skb)
1202 } 1202 }
1203 1203
1204 /* try to do packet compression */ 1204 /* try to do packet compression */
1205 if ((ppp->xstate & SC_COMP_RUN) && ppp->xc_state 1205 if ((ppp->xstate & SC_COMP_RUN) && ppp->xc_state &&
1206 && proto != PPP_LCP && proto != PPP_CCP) { 1206 proto != PPP_LCP && proto != PPP_CCP) {
1207 if (!(ppp->flags & SC_CCP_UP) && (ppp->flags & SC_MUST_COMP)) { 1207 if (!(ppp->flags & SC_CCP_UP) && (ppp->flags & SC_MUST_COMP)) {
1208 if (net_ratelimit()) 1208 if (net_ratelimit())
1209 printk(KERN_ERR "ppp: compression required but down - pkt dropped.\n"); 1209 printk(KERN_ERR "ppp: compression required but down - pkt dropped.\n");
@@ -1577,8 +1577,8 @@ ppp_input(struct ppp_channel *chan, struct sk_buff *skb)
1577 /* put it on the channel queue */ 1577 /* put it on the channel queue */
1578 skb_queue_tail(&pch->file.rq, skb); 1578 skb_queue_tail(&pch->file.rq, skb);
1579 /* drop old frames if queue too long */ 1579 /* drop old frames if queue too long */
1580 while (pch->file.rq.qlen > PPP_MAX_RQLEN 1580 while (pch->file.rq.qlen > PPP_MAX_RQLEN &&
1581 && (skb = skb_dequeue(&pch->file.rq))) 1581 (skb = skb_dequeue(&pch->file.rq)))
1582 kfree_skb(skb); 1582 kfree_skb(skb);
1583 wake_up_interruptible(&pch->file.rwait); 1583 wake_up_interruptible(&pch->file.rwait);
1584 } else { 1584 } else {
@@ -1654,8 +1654,8 @@ ppp_receive_nonmp_frame(struct ppp *ppp, struct sk_buff *skb)
1654 * Note that some decompressors need to see uncompressed frames 1654 * Note that some decompressors need to see uncompressed frames
1655 * that come in as well as compressed frames. 1655 * that come in as well as compressed frames.
1656 */ 1656 */
1657 if (ppp->rc_state && (ppp->rstate & SC_DECOMP_RUN) 1657 if (ppp->rc_state && (ppp->rstate & SC_DECOMP_RUN) &&
1658 && (ppp->rstate & (SC_DC_FERROR | SC_DC_ERROR)) == 0) 1658 (ppp->rstate & (SC_DC_FERROR | SC_DC_ERROR)) == 0)
1659 skb = ppp_decompress_frame(ppp, skb); 1659 skb = ppp_decompress_frame(ppp, skb);
1660 1660
1661 if (ppp->flags & SC_MUST_COMP && ppp->rstate & SC_DC_FERROR) 1661 if (ppp->flags & SC_MUST_COMP && ppp->rstate & SC_DC_FERROR)
@@ -1726,8 +1726,8 @@ ppp_receive_nonmp_frame(struct ppp *ppp, struct sk_buff *skb)
1726 /* control or unknown frame - pass it to pppd */ 1726 /* control or unknown frame - pass it to pppd */
1727 skb_queue_tail(&ppp->file.rq, skb); 1727 skb_queue_tail(&ppp->file.rq, skb);
1728 /* limit queue length by dropping old frames */ 1728 /* limit queue length by dropping old frames */
1729 while (ppp->file.rq.qlen > PPP_MAX_RQLEN 1729 while (ppp->file.rq.qlen > PPP_MAX_RQLEN &&
1730 && (skb = skb_dequeue(&ppp->file.rq))) 1730 (skb = skb_dequeue(&ppp->file.rq)))
1731 kfree_skb(skb); 1731 kfree_skb(skb);
1732 /* wake up any process polling or blocking on read */ 1732 /* wake up any process polling or blocking on read */
1733 wake_up_interruptible(&ppp->file.rwait); 1733 wake_up_interruptible(&ppp->file.rwait);
@@ -1745,26 +1745,26 @@ ppp_receive_nonmp_frame(struct ppp *ppp, struct sk_buff *skb)
1745 goto err; 1745 goto err;
1746 1746
1747 *skb_push(skb, 2) = 0; 1747 *skb_push(skb, 2) = 0;
1748 if (ppp->pass_filter 1748 if (ppp->pass_filter &&
1749 && sk_run_filter(skb, ppp->pass_filter, 1749 sk_run_filter(skb, ppp->pass_filter,
1750 ppp->pass_len) == 0) { 1750 ppp->pass_len) == 0) {
1751 if (ppp->debug & 1) 1751 if (ppp->debug & 1)
1752 printk(KERN_DEBUG "PPP: inbound frame " 1752 printk(KERN_DEBUG "PPP: inbound frame "
1753 "not passed\n"); 1753 "not passed\n");
1754 kfree_skb(skb); 1754 kfree_skb(skb);
1755 return; 1755 return;
1756 } 1756 }
1757 if (!(ppp->active_filter 1757 if (!(ppp->active_filter &&
1758 && sk_run_filter(skb, ppp->active_filter, 1758 sk_run_filter(skb, ppp->active_filter,
1759 ppp->active_len) == 0)) 1759 ppp->active_len) == 0))
1760 ppp->last_recv = jiffies; 1760 ppp->last_recv = jiffies;
1761 __skb_pull(skb, 2); 1761 __skb_pull(skb, 2);
1762 } else 1762 } else
1763#endif /* CONFIG_PPP_FILTER */ 1763#endif /* CONFIG_PPP_FILTER */
1764 ppp->last_recv = jiffies; 1764 ppp->last_recv = jiffies;
1765 1765
1766 if ((ppp->dev->flags & IFF_UP) == 0 1766 if ((ppp->dev->flags & IFF_UP) == 0 ||
1767 || ppp->npmode[npi] != NPMODE_PASS) { 1767 ppp->npmode[npi] != NPMODE_PASS) {
1768 kfree_skb(skb); 1768 kfree_skb(skb);
1769 } else { 1769 } else {
1770 /* chop off protocol */ 1770 /* chop off protocol */
@@ -2228,13 +2228,13 @@ ppp_set_compress(struct ppp *ppp, unsigned long arg)
2228 unsigned char ccp_option[CCP_MAX_OPTION_LENGTH]; 2228 unsigned char ccp_option[CCP_MAX_OPTION_LENGTH];
2229 2229
2230 err = -EFAULT; 2230 err = -EFAULT;
2231 if (copy_from_user(&data, (void __user *) arg, sizeof(data)) 2231 if (copy_from_user(&data, (void __user *) arg, sizeof(data)) ||
2232 || (data.length <= CCP_MAX_OPTION_LENGTH 2232 (data.length <= CCP_MAX_OPTION_LENGTH &&
2233 && copy_from_user(ccp_option, (void __user *) data.ptr, data.length))) 2233 copy_from_user(ccp_option, (void __user *) data.ptr, data.length)))
2234 goto out; 2234 goto out;
2235 err = -EINVAL; 2235 err = -EINVAL;
2236 if (data.length > CCP_MAX_OPTION_LENGTH 2236 if (data.length > CCP_MAX_OPTION_LENGTH ||
2237 || ccp_option[1] < 2 || ccp_option[1] > data.length) 2237 ccp_option[1] < 2 || ccp_option[1] > data.length)
2238 goto out; 2238 goto out;
2239 2239
2240 cp = try_then_request_module( 2240 cp = try_then_request_module(
diff --git a/drivers/net/ppp_mppe.c b/drivers/net/ppp_mppe.c
index 88f03c9e9403..6d1a1b80cc3e 100644
--- a/drivers/net/ppp_mppe.c
+++ b/drivers/net/ppp_mppe.c
@@ -195,8 +195,8 @@ static void *mppe_alloc(unsigned char *options, int optlen)
195 struct ppp_mppe_state *state; 195 struct ppp_mppe_state *state;
196 unsigned int digestsize; 196 unsigned int digestsize;
197 197
198 if (optlen != CILEN_MPPE + sizeof(state->master_key) 198 if (optlen != CILEN_MPPE + sizeof(state->master_key) ||
199 || options[0] != CI_MPPE || options[1] != CILEN_MPPE) 199 options[0] != CI_MPPE || options[1] != CILEN_MPPE)
200 goto out; 200 goto out;
201 201
202 state = kzalloc(sizeof(*state), GFP_KERNEL); 202 state = kzalloc(sizeof(*state), GFP_KERNEL);
@@ -276,8 +276,8 @@ mppe_init(void *arg, unsigned char *options, int optlen, int unit, int debug,
276 struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg; 276 struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
277 unsigned char mppe_opts; 277 unsigned char mppe_opts;
278 278
279 if (optlen != CILEN_MPPE 279 if (optlen != CILEN_MPPE ||
280 || options[0] != CI_MPPE || options[1] != CILEN_MPPE) 280 options[0] != CI_MPPE || options[1] != CILEN_MPPE)
281 return 0; 281 return 0;
282 282
283 MPPE_CI_TO_OPTS(&options[2], mppe_opts); 283 MPPE_CI_TO_OPTS(&options[2], mppe_opts);
diff --git a/drivers/net/ppp_synctty.c b/drivers/net/ppp_synctty.c
index c908b08dc981..3a13cecae3e2 100644
--- a/drivers/net/ppp_synctty.c
+++ b/drivers/net/ppp_synctty.c
@@ -662,8 +662,8 @@ ppp_sync_push(struct syncppp *ap)
662 } 662 }
663 /* haven't made any progress */ 663 /* haven't made any progress */
664 spin_unlock_bh(&ap->xmit_lock); 664 spin_unlock_bh(&ap->xmit_lock);
665 if (!(test_bit(XMIT_WAKEUP, &ap->xmit_flags) 665 if (!(test_bit(XMIT_WAKEUP, &ap->xmit_flags) ||
666 || (!tty_stuffed && ap->tpkt))) 666 (!tty_stuffed && ap->tpkt)))
667 break; 667 break;
668 if (!spin_trylock_bh(&ap->xmit_lock)) 668 if (!spin_trylock_bh(&ap->xmit_lock))
669 break; 669 break;
diff --git a/drivers/net/pppoe.c b/drivers/net/pppoe.c
index a4ed776d823b..cdd11ba100ea 100644
--- a/drivers/net/pppoe.c
+++ b/drivers/net/pppoe.c
@@ -323,8 +323,8 @@ static void pppoe_flush_dev(struct net_device *dev)
323 write_unlock_bh(&pn->hash_lock); 323 write_unlock_bh(&pn->hash_lock);
324 lock_sock(sk); 324 lock_sock(sk);
325 325
326 if (po->pppoe_dev == dev 326 if (po->pppoe_dev == dev &&
327 && sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND)) { 327 sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND)) {
328 pppox_unbind_sock(sk); 328 pppox_unbind_sock(sk);
329 sk->sk_state = PPPOX_ZOMBIE; 329 sk->sk_state = PPPOX_ZOMBIE;
330 sk->sk_state_change(sk); 330 sk->sk_state_change(sk);
diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c
index 4c610511eb40..e3e6bc917c87 100644
--- a/drivers/net/qla3xxx.c
+++ b/drivers/net/qla3xxx.c
@@ -1969,8 +1969,8 @@ static void ql_update_lrg_bufq_prod_index(struct ql3_adapter *qdev)
1969 struct ql_rcv_buf_cb *lrg_buf_cb; 1969 struct ql_rcv_buf_cb *lrg_buf_cb;
1970 struct ql3xxx_port_registers __iomem *port_regs = qdev->mem_map_registers; 1970 struct ql3xxx_port_registers __iomem *port_regs = qdev->mem_map_registers;
1971 1971
1972 if ((qdev->lrg_buf_free_count >= 8) 1972 if ((qdev->lrg_buf_free_count >= 8) &&
1973 && (qdev->lrg_buf_release_cnt >= 16)) { 1973 (qdev->lrg_buf_release_cnt >= 16)) {
1974 1974
1975 if (qdev->lrg_buf_skb_check) 1975 if (qdev->lrg_buf_skb_check)
1976 if (!ql_populate_free_queue(qdev)) 1976 if (!ql_populate_free_queue(qdev))
@@ -1978,8 +1978,8 @@ static void ql_update_lrg_bufq_prod_index(struct ql3_adapter *qdev)
1978 1978
1979 lrg_buf_q_ele = qdev->lrg_buf_next_free; 1979 lrg_buf_q_ele = qdev->lrg_buf_next_free;
1980 1980
1981 while ((qdev->lrg_buf_release_cnt >= 16) 1981 while ((qdev->lrg_buf_release_cnt >= 16) &&
1982 && (qdev->lrg_buf_free_count >= 8)) { 1982 (qdev->lrg_buf_free_count >= 8)) {
1983 1983
1984 for (i = 0; i < 8; i++) { 1984 for (i = 0; i < 8; i++) {
1985 lrg_buf_cb = 1985 lrg_buf_cb =
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index 7692299e7826..707b391afa02 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -2347,8 +2347,8 @@ static int ql_alloc_tx_resources(struct ql_adapter *qdev,
2347 pci_alloc_consistent(qdev->pdev, tx_ring->wq_size, 2347 pci_alloc_consistent(qdev->pdev, tx_ring->wq_size,
2348 &tx_ring->wq_base_dma); 2348 &tx_ring->wq_base_dma);
2349 2349
2350 if ((tx_ring->wq_base == NULL) 2350 if ((tx_ring->wq_base == NULL) ||
2351 || tx_ring->wq_base_dma & WQ_ADDR_ALIGN) { 2351 tx_ring->wq_base_dma & WQ_ADDR_ALIGN) {
2352 QPRINTK(qdev, IFUP, ERR, "tx_ring alloc failed.\n"); 2352 QPRINTK(qdev, IFUP, ERR, "tx_ring alloc failed.\n");
2353 return -ENOMEM; 2353 return -ENOMEM;
2354 } 2354 }
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c
index 0f30ea4e97ec..f03e2e4a15a8 100644
--- a/drivers/net/r6040.c
+++ b/drivers/net/r6040.c
@@ -958,8 +958,7 @@ static void r6040_multicast_list(struct net_device *dev)
958 } 958 }
959 /* Too many multicast addresses 959 /* Too many multicast addresses
960 * accept all traffic */ 960 * accept all traffic */
961 else if ((dev->mc_count > MCAST_MAX) 961 else if ((dev->mc_count > MCAST_MAX) || (dev->flags & IFF_ALLMULTI))
962 || (dev->flags & IFF_ALLMULTI))
963 reg |= 0x0020; 962 reg |= 0x0020;
964 963
965 iowrite16(reg, ioaddr); 964 iowrite16(reg, ioaddr);
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index f6899c3500b5..acfc5a3aa490 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -4763,8 +4763,8 @@ static void rtl_set_rx_mode(struct net_device *dev)
4763 AcceptBroadcast | AcceptMulticast | AcceptMyPhys | 4763 AcceptBroadcast | AcceptMulticast | AcceptMyPhys |
4764 AcceptAllPhys; 4764 AcceptAllPhys;
4765 mc_filter[1] = mc_filter[0] = 0xffffffff; 4765 mc_filter[1] = mc_filter[0] = 0xffffffff;
4766 } else if ((dev->mc_count > multicast_filter_limit) 4766 } else if ((dev->mc_count > multicast_filter_limit) ||
4767 || (dev->flags & IFF_ALLMULTI)) { 4767 (dev->flags & IFF_ALLMULTI)) {
4768 /* Too many to filter perfectly -- accept all multicasts. */ 4768 /* Too many to filter perfectly -- accept all multicasts. */
4769 rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys; 4769 rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
4770 mc_filter[1] = mc_filter[0] = 0xffffffff; 4770 mc_filter[1] = mc_filter[0] = 0xffffffff;
diff --git a/drivers/net/s6gmac.c b/drivers/net/s6gmac.c
index d81706e91aa7..45f26344b368 100644
--- a/drivers/net/s6gmac.c
+++ b/drivers/net/s6gmac.c
@@ -373,9 +373,9 @@ struct s6gmac {
373static void s6gmac_rx_fillfifo(struct s6gmac *pd) 373static void s6gmac_rx_fillfifo(struct s6gmac *pd)
374{ 374{
375 struct sk_buff *skb; 375 struct sk_buff *skb;
376 while ((((u8)(pd->rx_skb_i - pd->rx_skb_o)) < S6_NUM_RX_SKB) 376 while ((((u8)(pd->rx_skb_i - pd->rx_skb_o)) < S6_NUM_RX_SKB) &&
377 && (!s6dmac_fifo_full(pd->rx_dma, pd->rx_chan)) 377 (!s6dmac_fifo_full(pd->rx_dma, pd->rx_chan)) &&
378 && (skb = dev_alloc_skb(S6_MAX_FRLEN + 2))) { 378 (skb = dev_alloc_skb(S6_MAX_FRLEN + 2))) {
379 pd->rx_skb[(pd->rx_skb_i++) % S6_NUM_RX_SKB] = skb; 379 pd->rx_skb[(pd->rx_skb_i++) % S6_NUM_RX_SKB] = skb;
380 s6dmac_put_fifo_cache(pd->rx_dma, pd->rx_chan, 380 s6dmac_put_fifo_cache(pd->rx_dma, pd->rx_chan,
381 pd->io, (u32)skb->data, S6_MAX_FRLEN); 381 pd->io, (u32)skb->data, S6_MAX_FRLEN);
diff --git a/drivers/net/sc92031.c b/drivers/net/sc92031.c
index b7e0eb40a8bd..e35050322f97 100644
--- a/drivers/net/sc92031.c
+++ b/drivers/net/sc92031.c
@@ -428,9 +428,9 @@ static void _sc92031_set_mar(struct net_device *dev)
428 void __iomem *port_base = priv->port_base; 428 void __iomem *port_base = priv->port_base;
429 u32 mar0 = 0, mar1 = 0; 429 u32 mar0 = 0, mar1 = 0;
430 430
431 if ((dev->flags & IFF_PROMISC) 431 if ((dev->flags & IFF_PROMISC) ||
432 || dev->mc_count > multicast_filter_limit 432 dev->mc_count > multicast_filter_limit ||
433 || (dev->flags & IFF_ALLMULTI)) 433 (dev->flags & IFF_ALLMULTI))
434 mar0 = mar1 = 0xffffffff; 434 mar0 = mar1 = 0xffffffff;
435 else if (dev->flags & IFF_MULTICAST) { 435 else if (dev->flags & IFF_MULTICAST) {
436 struct dev_mc_list *mc_list; 436 struct dev_mc_list *mc_list;
@@ -777,10 +777,10 @@ static void _sc92031_rx_tasklet(struct net_device *dev)
777 777
778 rx_ring_offset = (rx_ring_offset + 4) % RX_BUF_LEN; 778 rx_ring_offset = (rx_ring_offset + 4) % RX_BUF_LEN;
779 779
780 if (unlikely(rx_status == 0 780 if (unlikely(rx_status == 0 ||
781 || rx_size > (MAX_ETH_FRAME_SIZE + 4) 781 rx_size > (MAX_ETH_FRAME_SIZE + 4) ||
782 || rx_size < 16 782 rx_size < 16 ||
783 || !(rx_status & RxStatesOK))) { 783 !(rx_status & RxStatesOK))) {
784 _sc92031_rx_tasklet_error(dev, rx_status, rx_size); 784 _sc92031_rx_tasklet_error(dev, rx_status, rx_size);
785 break; 785 break;
786 } 786 }
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index 34b4e7d500da..379a3dc00163 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -238,8 +238,8 @@ static int skge_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
238 struct skge_port *skge = netdev_priv(dev); 238 struct skge_port *skge = netdev_priv(dev);
239 struct skge_hw *hw = skge->hw; 239 struct skge_hw *hw = skge->hw;
240 240
241 if ((wol->wolopts & ~wol_supported(hw)) 241 if ((wol->wolopts & ~wol_supported(hw)) ||
242 || !device_can_wakeup(&hw->pdev->dev)) 242 !device_can_wakeup(&hw->pdev->dev))
243 return -EOPNOTSUPP; 243 return -EOPNOTSUPP;
244 244
245 skge->wol = wol->wolopts; 245 skge->wol = wol->wolopts;
@@ -576,9 +576,10 @@ static void skge_get_pauseparam(struct net_device *dev,
576{ 576{
577 struct skge_port *skge = netdev_priv(dev); 577 struct skge_port *skge = netdev_priv(dev);
578 578
579 ecmd->rx_pause = (skge->flow_control == FLOW_MODE_SYMMETRIC) 579 ecmd->rx_pause = ((skge->flow_control == FLOW_MODE_SYMMETRIC) ||
580 || (skge->flow_control == FLOW_MODE_SYM_OR_REM); 580 (skge->flow_control == FLOW_MODE_SYM_OR_REM));
581 ecmd->tx_pause = ecmd->rx_pause || (skge->flow_control == FLOW_MODE_LOC_SEND); 581 ecmd->tx_pause = (ecmd->rx_pause ||
582 (skge->flow_control == FLOW_MODE_LOC_SEND));
582 583
583 ecmd->autoneg = ecmd->rx_pause || ecmd->tx_pause; 584 ecmd->autoneg = ecmd->rx_pause || ecmd->tx_pause;
584} 585}
@@ -2779,8 +2780,8 @@ static netdev_tx_t skge_xmit_frame(struct sk_buff *skb,
2779 /* This seems backwards, but it is what the sk98lin 2780 /* This seems backwards, but it is what the sk98lin
2780 * does. Looks like hardware is wrong? 2781 * does. Looks like hardware is wrong?
2781 */ 2782 */
2782 if (ipip_hdr(skb)->protocol == IPPROTO_UDP 2783 if (ipip_hdr(skb)->protocol == IPPROTO_UDP &&
2783 && hw->chip_rev == 0 && hw->chip_id == CHIP_ID_YUKON) 2784 hw->chip_rev == 0 && hw->chip_id == CHIP_ID_YUKON)
2784 control = BMU_TCP_CHECK; 2785 control = BMU_TCP_CHECK;
2785 else 2786 else
2786 control = BMU_UDP_CHECK; 2787 control = BMU_UDP_CHECK;
@@ -2948,8 +2949,8 @@ static void genesis_set_multicast(struct net_device *dev)
2948 else { 2949 else {
2949 memset(filter, 0, sizeof(filter)); 2950 memset(filter, 0, sizeof(filter));
2950 2951
2951 if (skge->flow_status == FLOW_STAT_REM_SEND 2952 if (skge->flow_status == FLOW_STAT_REM_SEND ||
2952 || skge->flow_status == FLOW_STAT_SYMMETRIC) 2953 skge->flow_status == FLOW_STAT_SYMMETRIC)
2953 genesis_add_filter(filter, pause_mc_addr); 2954 genesis_add_filter(filter, pause_mc_addr);
2954 2955
2955 for (i = 0; list && i < count; i++, list = list->next) 2956 for (i = 0; list && i < count; i++, list = list->next)
@@ -2972,8 +2973,8 @@ static void yukon_set_multicast(struct net_device *dev)
2972 struct skge_hw *hw = skge->hw; 2973 struct skge_hw *hw = skge->hw;
2973 int port = skge->port; 2974 int port = skge->port;
2974 struct dev_mc_list *list = dev->mc_list; 2975 struct dev_mc_list *list = dev->mc_list;
2975 int rx_pause = (skge->flow_status == FLOW_STAT_REM_SEND 2976 int rx_pause = (skge->flow_status == FLOW_STAT_REM_SEND ||
2976 || skge->flow_status == FLOW_STAT_SYMMETRIC); 2977 skge->flow_status == FLOW_STAT_SYMMETRIC);
2977 u16 reg; 2978 u16 reg;
2978 u8 filter[8]; 2979 u8 filter[8];
2979 2980
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index a3d99913f184..3943d89afb2b 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -374,8 +374,8 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port)
374 ctrl |= PHY_M_PC_MDI_XMODE(PHY_M_PC_ENA_AUTO); 374 ctrl |= PHY_M_PC_MDI_XMODE(PHY_M_PC_ENA_AUTO);
375 375
376 /* downshift on PHY 88E1112 and 88E1149 is changed */ 376 /* downshift on PHY 88E1112 and 88E1149 is changed */
377 if ( (sky2->flags & SKY2_FLAG_AUTO_SPEED) 377 if ( (sky2->flags & SKY2_FLAG_AUTO_SPEED) &&
378 && (hw->flags & SKY2_HW_NEWER_PHY)) { 378 (hw->flags & SKY2_HW_NEWER_PHY)) {
379 /* set downshift counter to 3x and enable downshift */ 379 /* set downshift counter to 3x and enable downshift */
380 ctrl &= ~PHY_M_PC_DSC_MSK; 380 ctrl &= ~PHY_M_PC_DSC_MSK;
381 ctrl |= PHY_M_PC_DSC(2) | PHY_M_PC_DOWN_S_ENA; 381 ctrl |= PHY_M_PC_DSC(2) | PHY_M_PC_DOWN_S_ENA;
@@ -619,8 +619,8 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port)
619 /* no effect on Yukon-XL */ 619 /* no effect on Yukon-XL */
620 gm_phy_write(hw, port, PHY_MARV_LED_CTRL, ledctrl); 620 gm_phy_write(hw, port, PHY_MARV_LED_CTRL, ledctrl);
621 621
622 if ( !(sky2->flags & SKY2_FLAG_AUTO_SPEED) 622 if (!(sky2->flags & SKY2_FLAG_AUTO_SPEED) ||
623 || sky2->speed == SPEED_100) { 623 sky2->speed == SPEED_100) {
624 /* turn on 100 Mbps LED (LED_LINK100) */ 624 /* turn on 100 Mbps LED (LED_LINK100) */
625 ledover |= PHY_M_LED_MO_100(MO_LED_ON); 625 ledover |= PHY_M_LED_MO_100(MO_LED_ON);
626 } 626 }
@@ -937,8 +937,8 @@ static void sky2_mac_init(struct sky2_hw *hw, unsigned port)
937 /* On chips without ram buffer, pause is controled by MAC level */ 937 /* On chips without ram buffer, pause is controled by MAC level */
938 if (!(hw->flags & SKY2_HW_RAM_BUFFER)) { 938 if (!(hw->flags & SKY2_HW_RAM_BUFFER)) {
939 /* Pause threshold is scaled by 8 in bytes */ 939 /* Pause threshold is scaled by 8 in bytes */
940 if (hw->chip_id == CHIP_ID_YUKON_FE_P 940 if (hw->chip_id == CHIP_ID_YUKON_FE_P &&
941 && hw->chip_rev == CHIP_REV_YU_FE2_A0) 941 hw->chip_rev == CHIP_REV_YU_FE2_A0)
942 reg = 1568 / 8; 942 reg = 1568 / 8;
943 else 943 else
944 reg = 1024 / 8; 944 reg = 1024 / 8;
@@ -1353,8 +1353,8 @@ static int sky2_rx_start(struct sky2_port *sky2)
1353 /* These chips have no ram buffer? 1353 /* These chips have no ram buffer?
1354 * MAC Rx RAM Read is controlled by hardware */ 1354 * MAC Rx RAM Read is controlled by hardware */
1355 if (hw->chip_id == CHIP_ID_YUKON_EC_U && 1355 if (hw->chip_id == CHIP_ID_YUKON_EC_U &&
1356 (hw->chip_rev == CHIP_REV_YU_EC_U_A1 1356 (hw->chip_rev == CHIP_REV_YU_EC_U_A1 ||
1357 || hw->chip_rev == CHIP_REV_YU_EC_U_B0)) 1357 hw->chip_rev == CHIP_REV_YU_EC_U_B0))
1358 sky2_write32(hw, Q_ADDR(rxq, Q_TEST), F_M_RX_RAM_DIS); 1358 sky2_write32(hw, Q_ADDR(rxq, Q_TEST), F_M_RX_RAM_DIS);
1359 1359
1360 sky2_prefetch_init(hw, rxq, sky2->rx_le_map, RX_LE_SIZE - 1); 1360 sky2_prefetch_init(hw, rxq, sky2->rx_le_map, RX_LE_SIZE - 1);
@@ -1560,8 +1560,8 @@ static int sky2_up(struct net_device *dev)
1560 sky2_write32(hw, Q_ADDR(txqaddr[port], Q_TEST), F_TX_CHK_AUTO_OFF); 1560 sky2_write32(hw, Q_ADDR(txqaddr[port], Q_TEST), F_TX_CHK_AUTO_OFF);
1561 1561
1562 /* Set almost empty threshold */ 1562 /* Set almost empty threshold */
1563 if (hw->chip_id == CHIP_ID_YUKON_EC_U 1563 if (hw->chip_id == CHIP_ID_YUKON_EC_U &&
1564 && hw->chip_rev == CHIP_REV_YU_EC_U_A0) 1564 hw->chip_rev == CHIP_REV_YU_EC_U_A0)
1565 sky2_write16(hw, Q_ADDR(txqaddr[port], Q_AL), ECU_TXFF_LEV); 1565 sky2_write16(hw, Q_ADDR(txqaddr[port], Q_AL), ECU_TXFF_LEV);
1566 1566
1567 sky2_prefetch_init(hw, txqaddr[port], sky2->tx_le_map, 1567 sky2_prefetch_init(hw, txqaddr[port], sky2->tx_le_map,
@@ -1907,8 +1907,8 @@ static int sky2_down(struct net_device *dev)
1907 sky2_write8(hw, SK_REG(port, GPHY_CTRL), GPC_RST_SET); 1907 sky2_write8(hw, SK_REG(port, GPHY_CTRL), GPC_RST_SET);
1908 1908
1909 /* Workaround shared GMAC reset */ 1909 /* Workaround shared GMAC reset */
1910 if (!(hw->chip_id == CHIP_ID_YUKON_XL && hw->chip_rev == 0 1910 if (!(hw->chip_id == CHIP_ID_YUKON_XL && hw->chip_rev == 0 &&
1911 && port == 0 && hw->dev[1] && netif_running(hw->dev[1]))) 1911 port == 0 && hw->dev[1] && netif_running(hw->dev[1])))
1912 sky2_write8(hw, SK_REG(port, GMAC_CTRL), GMC_RST_SET); 1912 sky2_write8(hw, SK_REG(port, GMAC_CTRL), GMC_RST_SET);
1913 1913
1914 sky2_write8(hw, SK_REG(port, RX_GMF_CTRL_T), GMF_RST_SET); 1914 sky2_write8(hw, SK_REG(port, RX_GMF_CTRL_T), GMF_RST_SET);
@@ -2085,8 +2085,8 @@ static int sky2_autoneg_done(struct sky2_port *sky2, u16 aux)
2085 sky2->flow_status = FC_TX; 2085 sky2->flow_status = FC_TX;
2086 } 2086 }
2087 2087
2088 if (sky2->duplex == DUPLEX_HALF && sky2->speed < SPEED_1000 2088 if (sky2->duplex == DUPLEX_HALF && sky2->speed < SPEED_1000 &&
2089 && !(hw->chip_id == CHIP_ID_YUKON_EC_U || hw->chip_id == CHIP_ID_YUKON_EX)) 2089 !(hw->chip_id == CHIP_ID_YUKON_EC_U || hw->chip_id == CHIP_ID_YUKON_EX))
2090 sky2->flow_status = FC_NONE; 2090 sky2->flow_status = FC_NONE;
2091 2091
2092 if (sky2->flow_status & FC_TX) 2092 if (sky2->flow_status & FC_TX)
@@ -3244,8 +3244,8 @@ static int sky2_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
3244 struct sky2_port *sky2 = netdev_priv(dev); 3244 struct sky2_port *sky2 = netdev_priv(dev);
3245 struct sky2_hw *hw = sky2->hw; 3245 struct sky2_hw *hw = sky2->hw;
3246 3246
3247 if ((wol->wolopts & ~sky2_wol_supported(sky2->hw)) 3247 if ((wol->wolopts & ~sky2_wol_supported(sky2->hw)) ||
3248 || !device_can_wakeup(&hw->pdev->dev)) 3248 !device_can_wakeup(&hw->pdev->dev))
3249 return -EOPNOTSUPP; 3249 return -EOPNOTSUPP;
3250 3250
3251 sky2->wol = wol->wolopts; 3251 sky2->wol = wol->wolopts;
diff --git a/drivers/net/slip.c b/drivers/net/slip.c
index 6640469b5d3b..ba5bbc503446 100644
--- a/drivers/net/slip.c
+++ b/drivers/net/slip.c
@@ -956,8 +956,8 @@ static void slip_unesc(struct slip *sl, unsigned char s)
956 clear_bit(SLF_KEEPTEST, &sl->flags); 956 clear_bit(SLF_KEEPTEST, &sl->flags);
957#endif 957#endif
958 958
959 if (!test_and_clear_bit(SLF_ERROR, &sl->flags) 959 if (!test_and_clear_bit(SLF_ERROR, &sl->flags) &&
960 && (sl->rcount > 2)) 960 (sl->rcount > 2))
961 sl_bump(sl); 961 sl_bump(sl);
962 clear_bit(SLF_ESCAPE, &sl->flags); 962 clear_bit(SLF_ESCAPE, &sl->flags);
963 sl->rcount = 0; 963 sl->rcount = 0;
@@ -1039,8 +1039,8 @@ static void slip_unesc6(struct slip *sl, unsigned char s)
1039 clear_bit(SLF_KEEPTEST, &sl->flags); 1039 clear_bit(SLF_KEEPTEST, &sl->flags);
1040#endif 1040#endif
1041 1041
1042 if (!test_and_clear_bit(SLF_ERROR, &sl->flags) 1042 if (!test_and_clear_bit(SLF_ERROR, &sl->flags) &&
1043 && (sl->rcount > 2)) 1043 (sl->rcount > 2))
1044 sl_bump(sl); 1044 sl_bump(sl);
1045 sl->rcount = 0; 1045 sl->rcount = 0;
1046 sl->xbits = 0; 1046 sl->xbits = 0;
diff --git a/drivers/net/smc-mca.c b/drivers/net/smc-mca.c
index c791ef76c1d6..a93f122e9a96 100644
--- a/drivers/net/smc-mca.c
+++ b/drivers/net/smc-mca.c
@@ -268,9 +268,9 @@ static int __init ultramca_probe(struct device *gen_dev)
268 } 268 }
269 } 269 }
270 270
271 if(!tirq || !tbase 271 if(!tirq || !tbase ||
272 || (irq && irq != tirq) 272 (irq && irq != tirq) ||
273 || (base_addr && tbase != base_addr)) 273 (base_addr && tbase != base_addr))
274 /* FIXME: we're trying to force the ordering of the 274 /* FIXME: we're trying to force the ordering of the
275 * devices here, there should be a way of getting this 275 * devices here, there should be a way of getting this
276 * to happen */ 276 * to happen */
diff --git a/drivers/net/smc91x.h b/drivers/net/smc91x.h
index 3911be7c0cba..7815bfc300f5 100644
--- a/drivers/net/smc91x.h
+++ b/drivers/net/smc91x.h
@@ -158,8 +158,8 @@ static inline void SMC_outw(u16 val, void __iomem *ioaddr, int reg)
158#define SMC_outsb(a, r, p, l) writesb((a) + (r), p, (l)) 158#define SMC_outsb(a, r, p, l) writesb((a) + (r), p, (l))
159#define SMC_IRQ_FLAGS (-1) /* from resource */ 159#define SMC_IRQ_FLAGS (-1) /* from resource */
160 160
161#elif defined(CONFIG_MACH_LOGICPD_PXA270) \ 161#elif defined(CONFIG_MACH_LOGICPD_PXA270) || \
162 || defined(CONFIG_MACH_NOMADIK_8815NHK) 162 defined(CONFIG_MACH_NOMADIK_8815NHK)
163 163
164#define SMC_CAN_USE_8BIT 0 164#define SMC_CAN_USE_8BIT 0
165#define SMC_CAN_USE_16BIT 1 165#define SMC_CAN_USE_16BIT 1
@@ -258,9 +258,9 @@ SMC_outw(u16 val, void __iomem *ioaddr, int reg)
258#define RPC_LSA_DEFAULT RPC_LED_TX_RX 258#define RPC_LSA_DEFAULT RPC_LED_TX_RX
259#define RPC_LSB_DEFAULT RPC_LED_100_10 259#define RPC_LSB_DEFAULT RPC_LED_100_10
260 260
261#elif defined(CONFIG_MACH_LPD79520) \ 261#elif defined(CONFIG_MACH_LPD79520) || \
262 || defined(CONFIG_MACH_LPD7A400) \ 262 defined(CONFIG_MACH_LPD7A400) || \
263 || defined(CONFIG_MACH_LPD7A404) 263 defined(CONFIG_MACH_LPD7A404)
264 264
265/* The LPD7X_IOBARRIER is necessary to overcome a mismatch between the 265/* The LPD7X_IOBARRIER is necessary to overcome a mismatch between the
266 * way that the CPU handles chip selects and the way that the SMC chip 266 * way that the CPU handles chip selects and the way that the SMC chip
diff --git a/drivers/net/smsc911x.c b/drivers/net/smsc911x.c
index 7f01e60d5172..4d0d5c56bed8 100644
--- a/drivers/net/smsc911x.c
+++ b/drivers/net/smsc911x.c
@@ -748,8 +748,8 @@ static void smsc911x_phy_adjust_link(struct net_device *dev)
748 * usage is 10/100 indicator */ 748 * usage is 10/100 indicator */
749 pdata->gpio_setting = smsc911x_reg_read(pdata, 749 pdata->gpio_setting = smsc911x_reg_read(pdata,
750 GPIO_CFG); 750 GPIO_CFG);
751 if ((pdata->gpio_setting & GPIO_CFG_LED1_EN_) 751 if ((pdata->gpio_setting & GPIO_CFG_LED1_EN_) &&
752 && (!pdata->using_extphy)) { 752 (!pdata->using_extphy)) {
753 /* Force 10/100 LED off, after saving 753 /* Force 10/100 LED off, after saving
754 * orginal GPIO configuration */ 754 * orginal GPIO configuration */
755 pdata->gpio_orig_setting = pdata->gpio_setting; 755 pdata->gpio_orig_setting = pdata->gpio_setting;
diff --git a/drivers/net/starfire.c b/drivers/net/starfire.c
index aa10158adb9e..95db60adde41 100644
--- a/drivers/net/starfire.c
+++ b/drivers/net/starfire.c
@@ -1482,8 +1482,8 @@ static int __netdev_rx(struct net_device *dev, int *quota)
1482 printk(KERN_DEBUG " netdev_rx() normal Rx pkt length %d, quota %d.\n", pkt_len, *quota); 1482 printk(KERN_DEBUG " netdev_rx() normal Rx pkt length %d, quota %d.\n", pkt_len, *quota);
1483 /* Check if the packet is long enough to accept without copying 1483 /* Check if the packet is long enough to accept without copying
1484 to a minimally-sized skbuff. */ 1484 to a minimally-sized skbuff. */
1485 if (pkt_len < rx_copybreak 1485 if (pkt_len < rx_copybreak &&
1486 && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { 1486 (skb = dev_alloc_skb(pkt_len + 2)) != NULL) {
1487 skb_reserve(skb, 2); /* 16 byte align the IP header */ 1487 skb_reserve(skb, 2); /* 16 byte align the IP header */
1488 pci_dma_sync_single_for_cpu(np->pci_dev, 1488 pci_dma_sync_single_for_cpu(np->pci_dev,
1489 np->rx_info[entry].mapping, 1489 np->rx_info[entry].mapping,
@@ -1793,8 +1793,8 @@ static void set_rx_mode(struct net_device *dev)
1793 1793
1794 if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */ 1794 if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
1795 rx_mode |= AcceptAll; 1795 rx_mode |= AcceptAll;
1796 } else if ((dev->mc_count > multicast_filter_limit) 1796 } else if ((dev->mc_count > multicast_filter_limit) ||
1797 || (dev->flags & IFF_ALLMULTI)) { 1797 (dev->flags & IFF_ALLMULTI)) {
1798 /* Too many to match, or accept all multicasts. */ 1798 /* Too many to match, or accept all multicasts. */
1799 rx_mode |= AcceptBroadcast|AcceptAllMulticast|PerfectFilter; 1799 rx_mode |= AcceptBroadcast|AcceptAllMulticast|PerfectFilter;
1800 } else if (dev->mc_count <= 14) { 1800 } else if (dev->mc_count <= 14) {
diff --git a/drivers/net/stmmac/stmmac_main.c b/drivers/net/stmmac/stmmac_main.c
index 40813f0b5339..508fba8fa07f 100644
--- a/drivers/net/stmmac/stmmac_main.c
+++ b/drivers/net/stmmac/stmmac_main.c
@@ -922,8 +922,7 @@ static void stmmac_dma_interrupt(struct net_device *dev)
922 DBG(intr, INFO, "CSR5[15] DMA ABNORMAL IRQ: "); 922 DBG(intr, INFO, "CSR5[15] DMA ABNORMAL IRQ: ");
923 if (unlikely(intr_status & DMA_STATUS_UNF)) { 923 if (unlikely(intr_status & DMA_STATUS_UNF)) {
924 DBG(intr, INFO, "transmit underflow\n"); 924 DBG(intr, INFO, "transmit underflow\n");
925 if (unlikely(tc != SF_DMA_MODE) 925 if (unlikely(tc != SF_DMA_MODE) && (tc <= 256)) {
926 && (tc <= 256)) {
927 /* Try to bump up the threshold */ 926 /* Try to bump up the threshold */
928 tc += 64; 927 tc += 64;
929 priv->mac_type->ops->dma_mode(ioaddr, tc, 928 priv->mac_type->ops->dma_mode(ioaddr, tc,
diff --git a/drivers/net/sundance.c b/drivers/net/sundance.c
index 5c396c2e6e76..d58e1891ca60 100644
--- a/drivers/net/sundance.c
+++ b/drivers/net/sundance.c
@@ -603,8 +603,8 @@ static int __devinit sundance_probe1 (struct pci_dev *pdev,
603 strcmp (media[card_idx], "4") == 0) { 603 strcmp (media[card_idx], "4") == 0) {
604 np->speed = 100; 604 np->speed = 100;
605 np->mii_if.full_duplex = 1; 605 np->mii_if.full_duplex = 1;
606 } else if (strcmp (media[card_idx], "100mbps_hd") == 0 606 } else if (strcmp (media[card_idx], "100mbps_hd") == 0 ||
607 || strcmp (media[card_idx], "3") == 0) { 607 strcmp (media[card_idx], "3") == 0) {
608 np->speed = 100; 608 np->speed = 100;
609 np->mii_if.full_duplex = 0; 609 np->mii_if.full_duplex = 0;
610 } else if (strcmp (media[card_idx], "10mbps_fd") == 0 || 610 } else if (strcmp (media[card_idx], "10mbps_fd") == 0 ||
@@ -1079,8 +1079,8 @@ start_tx (struct sk_buff *skb, struct net_device *dev)
1079 tasklet_schedule(&np->tx_tasklet); 1079 tasklet_schedule(&np->tx_tasklet);
1080 1080
1081 /* On some architectures: explicitly flush cache lines here. */ 1081 /* On some architectures: explicitly flush cache lines here. */
1082 if (np->cur_tx - np->dirty_tx < TX_QUEUE_LEN - 1 1082 if (np->cur_tx - np->dirty_tx < TX_QUEUE_LEN - 1 &&
1083 && !netif_queue_stopped(dev)) { 1083 !netif_queue_stopped(dev)) {
1084 /* do nothing */ 1084 /* do nothing */
1085 } else { 1085 } else {
1086 netif_stop_queue (dev); 1086 netif_stop_queue (dev);
@@ -1336,8 +1336,8 @@ static void rx_poll(unsigned long data)
1336#endif 1336#endif
1337 /* Check if the packet is long enough to accept without copying 1337 /* Check if the packet is long enough to accept without copying
1338 to a minimally-sized skbuff. */ 1338 to a minimally-sized skbuff. */
1339 if (pkt_len < rx_copybreak 1339 if (pkt_len < rx_copybreak &&
1340 && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { 1340 (skb = dev_alloc_skb(pkt_len + 2)) != NULL) {
1341 skb_reserve(skb, 2); /* 16 byte align the IP header */ 1341 skb_reserve(skb, 2); /* 16 byte align the IP header */
1342 pci_dma_sync_single_for_cpu(np->pci_dev, 1342 pci_dma_sync_single_for_cpu(np->pci_dev,
1343 le32_to_cpu(desc->frag[0].addr), 1343 le32_to_cpu(desc->frag[0].addr),
@@ -1517,8 +1517,8 @@ static void set_rx_mode(struct net_device *dev)
1517 if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */ 1517 if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
1518 memset(mc_filter, 0xff, sizeof(mc_filter)); 1518 memset(mc_filter, 0xff, sizeof(mc_filter));
1519 rx_mode = AcceptBroadcast | AcceptMulticast | AcceptAll | AcceptMyPhys; 1519 rx_mode = AcceptBroadcast | AcceptMulticast | AcceptAll | AcceptMyPhys;
1520 } else if ((dev->mc_count > multicast_filter_limit) 1520 } else if ((dev->mc_count > multicast_filter_limit) ||
1521 || (dev->flags & IFF_ALLMULTI)) { 1521 (dev->flags & IFF_ALLMULTI)) {
1522 /* Too many to match, or accept all multicasts. */ 1522 /* Too many to match, or accept all multicasts. */
1523 memset(mc_filter, 0xff, sizeof(mc_filter)); 1523 memset(mc_filter, 0xff, sizeof(mc_filter));
1524 rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys; 1524 rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
diff --git a/drivers/net/sungem.h b/drivers/net/sungem.h
index f7a02917ce5e..19905460def6 100644
--- a/drivers/net/sungem.h
+++ b/drivers/net/sungem.h
@@ -1031,8 +1031,8 @@ struct gem {
1031#endif 1031#endif
1032}; 1032};
1033 1033
1034#define found_mii_phy(gp) ((gp->phy_type == phy_mii_mdio0 || gp->phy_type == phy_mii_mdio1) \ 1034#define found_mii_phy(gp) ((gp->phy_type == phy_mii_mdio0 || gp->phy_type == phy_mii_mdio1) && \
1035 && gp->phy_mii.def && gp->phy_mii.def->ops) 1035 gp->phy_mii.def && gp->phy_mii.def->ops)
1036 1036
1037#define ALIGNED_RX_SKB_ADDR(addr) \ 1037#define ALIGNED_RX_SKB_ADDR(addr) \
1038 ((((unsigned long)(addr) + (64UL - 1UL)) & ~(64UL - 1UL)) - (unsigned long)(addr)) 1038 ((((unsigned long)(addr) + (64UL - 1UL)) & ~(64UL - 1UL)) - (unsigned long)(addr))
diff --git a/drivers/net/sunhme.c b/drivers/net/sunhme.c
index 0970e1774d13..6762f1c6ec8a 100644
--- a/drivers/net/sunhme.c
+++ b/drivers/net/sunhme.c
@@ -3056,9 +3056,9 @@ static int __devinit happy_meal_pci_probe(struct pci_dev *pdev,
3056 int len; 3056 int len;
3057 3057
3058 if (qfe_slot != -1 && 3058 if (qfe_slot != -1 &&
3059 (addr = of_get_property(dp, 3059 (addr = of_get_property(dp, "local-mac-address", &len))
3060 "local-mac-address", &len)) != NULL 3060 != NULL &&
3061 && len == 6) { 3061 len == 6) {
3062 memcpy(dev->dev_addr, addr, 6); 3062 memcpy(dev->dev_addr, addr, 6);
3063 } else { 3063 } else {
3064 memcpy(dev->dev_addr, idprom->id_ethaddr, 6); 3064 memcpy(dev->dev_addr, idprom->id_ethaddr, 6);
diff --git a/drivers/net/tehuti.c b/drivers/net/tehuti.c
index 2fbac31767fa..80b404f2b938 100644
--- a/drivers/net/tehuti.c
+++ b/drivers/net/tehuti.c
@@ -1784,9 +1784,9 @@ static void bdx_tx_cleanup(struct bdx_priv *priv)
1784 } 1784 }
1785#endif 1785#endif
1786 1786
1787 if (unlikely(netif_queue_stopped(priv->ndev) 1787 if (unlikely(netif_queue_stopped(priv->ndev) &&
1788 && netif_carrier_ok(priv->ndev) 1788 netif_carrier_ok(priv->ndev) &&
1789 && (priv->tx_level >= BDX_MIN_TX_LEVEL))) { 1789 (priv->tx_level >= BDX_MIN_TX_LEVEL))) {
1790 DBG("%s: %s: TX Q WAKE level %d\n", 1790 DBG("%s: %s: TX Q WAKE level %d\n",
1791 BDX_DRV_NAME, priv->ndev->name, priv->tx_level); 1791 BDX_DRV_NAME, priv->ndev->name, priv->tx_level);
1792 netif_wake_queue(priv->ndev); 1792 netif_wake_queue(priv->ndev);
@@ -2273,8 +2273,8 @@ bdx_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *ecoal)
2273 (((tx_max_coal * BDX_TXF_DESC_SZ) + PCK_TH_MULT - 1) 2273 (((tx_max_coal * BDX_TXF_DESC_SZ) + PCK_TH_MULT - 1)
2274 / PCK_TH_MULT); 2274 / PCK_TH_MULT);
2275 2275
2276 if ((rx_coal > 0x7FFF) || (tx_coal > 0x7FFF) 2276 if ((rx_coal > 0x7FFF) || (tx_coal > 0x7FFF) ||
2277 || (rx_max_coal > 0xF) || (tx_max_coal > 0xF)) 2277 (rx_max_coal > 0xF) || (tx_max_coal > 0xF))
2278 return -EINVAL; 2278 return -EINVAL;
2279 2279
2280 rdintcm = INT_REG_VAL(rx_coal, GET_INT_COAL_RC(priv->rdintcm), 2280 rdintcm = INT_REG_VAL(rx_coal, GET_INT_COAL_RC(priv->rdintcm),
@@ -2347,8 +2347,8 @@ bdx_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
2347 tx_size = 3; 2347 tx_size = 3;
2348 2348
2349 /*Is there anything to do? */ 2349 /*Is there anything to do? */
2350 if ((rx_size == priv->rxf_size) 2350 if ((rx_size == priv->rxf_size) &&
2351 && (tx_size == priv->txd_size)) 2351 (tx_size == priv->txd_size))
2352 return 0; 2352 return 0;
2353 2353
2354 priv->rxf_size = rx_size; 2354 priv->rxf_size = rx_size;
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 302ea0b7b235..f845837e4aa5 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -4621,13 +4621,12 @@ static int tg3_rx(struct tg3_napi *tnapi, int budget)
4621 len = ((desc->idx_len & RXD_LEN_MASK) >> RXD_LEN_SHIFT) - 4621 len = ((desc->idx_len & RXD_LEN_MASK) >> RXD_LEN_SHIFT) -
4622 ETH_FCS_LEN; 4622 ETH_FCS_LEN;
4623 4623
4624 if (len > RX_COPY_THRESHOLD 4624 if (len > RX_COPY_THRESHOLD &&
4625 && tp->rx_offset == NET_IP_ALIGN 4625 tp->rx_offset == NET_IP_ALIGN) {
4626 /* rx_offset will likely not equal NET_IP_ALIGN 4626 /* rx_offset will likely not equal NET_IP_ALIGN
4627 * if this is a 5701 card running in PCI-X mode 4627 * if this is a 5701 card running in PCI-X mode
4628 * [see tg3_get_invariants()] 4628 * [see tg3_get_invariants()]
4629 */ 4629 */
4630 ) {
4631 int skb_size; 4630 int skb_size;
4632 4631
4633 skb_size = tg3_alloc_rx_skb(tp, tpr, opaque_key, 4632 skb_size = tg3_alloc_rx_skb(tp, tpr, opaque_key,
diff --git a/drivers/net/tlan.c b/drivers/net/tlan.c
index 16f23f84920b..fabaeffb3155 100644
--- a/drivers/net/tlan.c
+++ b/drivers/net/tlan.c
@@ -1755,8 +1755,8 @@ static u32 TLan_HandleStatusCheck( struct net_device *dev, u16 host_int )
1755 ! ( tlphy_ctl & TLAN_TC_SWAPOL ) ) { 1755 ! ( tlphy_ctl & TLAN_TC_SWAPOL ) ) {
1756 tlphy_ctl |= TLAN_TC_SWAPOL; 1756 tlphy_ctl |= TLAN_TC_SWAPOL;
1757 TLan_MiiWriteReg( dev, phy, TLAN_TLPHY_CTL, tlphy_ctl); 1757 TLan_MiiWriteReg( dev, phy, TLAN_TLPHY_CTL, tlphy_ctl);
1758 } else if ( ( tlphy_sts & TLAN_TS_POLOK ) 1758 } else if ( ( tlphy_sts & TLAN_TS_POLOK ) &&
1759 && ( tlphy_ctl & TLAN_TC_SWAPOL ) ) { 1759 ( tlphy_ctl & TLAN_TC_SWAPOL ) ) {
1760 tlphy_ctl &= ~TLAN_TC_SWAPOL; 1760 tlphy_ctl &= ~TLAN_TC_SWAPOL;
1761 TLan_MiiWriteReg( dev, phy, TLAN_TLPHY_CTL, tlphy_ctl); 1761 TLan_MiiWriteReg( dev, phy, TLAN_TLPHY_CTL, tlphy_ctl);
1762 } 1762 }
diff --git a/drivers/net/tokenring/lanstreamer.c b/drivers/net/tokenring/lanstreamer.c
index 7b1fe9412b6f..d6ccd59c7d07 100644
--- a/drivers/net/tokenring/lanstreamer.c
+++ b/drivers/net/tokenring/lanstreamer.c
@@ -712,8 +712,8 @@ static int streamer_open(struct net_device *dev)
712 strcat(open_error, " - "); 712 strcat(open_error, " - ");
713 strcat(open_error, open_min_error[(error_code & 0x0f)]); 713 strcat(open_error, open_min_error[(error_code & 0x0f)]);
714 714
715 if (!streamer_priv->streamer_ring_speed 715 if (!streamer_priv->streamer_ring_speed &&
716 && ((error_code & 0x0f) == 0x0d)) 716 ((error_code & 0x0f) == 0x0d))
717 { 717 {
718 printk(KERN_WARNING "%s: Tried to autosense ring speed with no monitors present\n", dev->name); 718 printk(KERN_WARNING "%s: Tried to autosense ring speed with no monitors present\n", dev->name);
719 printk(KERN_WARNING "%s: Please try again with a specified ring speed \n", dev->name); 719 printk(KERN_WARNING "%s: Please try again with a specified ring speed \n", dev->name);
@@ -1032,8 +1032,8 @@ static irqreturn_t streamer_interrupt(int irq, void *dev_id)
1032 sisr = readw(streamer_mmio + SISR); 1032 sisr = readw(streamer_mmio + SISR);
1033 1033
1034 while((sisr & (SISR_MI | SISR_SRB_REPLY | SISR_ADAPTER_CHECK | SISR_ASB_FREE | 1034 while((sisr & (SISR_MI | SISR_SRB_REPLY | SISR_ADAPTER_CHECK | SISR_ASB_FREE |
1035 SISR_ARB_CMD | SISR_TRB_REPLY | SISR_PAR_ERR | SISR_SERR_ERR)) 1035 SISR_ARB_CMD | SISR_TRB_REPLY | SISR_PAR_ERR | SISR_SERR_ERR)) &&
1036 && (max_intr > 0)) { 1036 (max_intr > 0)) {
1037 1037
1038 if(sisr & SISR_PAR_ERR) { 1038 if(sisr & SISR_PAR_ERR) {
1039 writew(~SISR_PAR_ERR, streamer_mmio + SISR_RUM); 1039 writew(~SISR_PAR_ERR, streamer_mmio + SISR_RUM);
diff --git a/drivers/net/tokenring/smctr.c b/drivers/net/tokenring/smctr.c
index ebda61bc4c2f..427a8970b6fe 100644
--- a/drivers/net/tokenring/smctr.c
+++ b/drivers/net/tokenring/smctr.c
@@ -2309,9 +2309,9 @@ static irqreturn_t smctr_interrupt(int irq, void *dev_id)
2309 else 2309 else
2310 { 2310 {
2311 if((tp->acb_head->cmd 2311 if((tp->acb_head->cmd
2312 == ACB_CMD_READ_TRC_STATUS) 2312 == ACB_CMD_READ_TRC_STATUS) &&
2313 && (tp->acb_head->subcmd 2313 (tp->acb_head->subcmd
2314 == RW_TRC_STATUS_BLOCK)) 2314 == RW_TRC_STATUS_BLOCK))
2315 { 2315 {
2316 if(tp->ptr_bcn_type) 2316 if(tp->ptr_bcn_type)
2317 { 2317 {
@@ -2331,8 +2331,8 @@ static irqreturn_t smctr_interrupt(int irq, void *dev_id)
2331 smctr_disable_16bit(dev); 2331 smctr_disable_16bit(dev);
2332 err = smctr_ring_status_chg(dev); 2332 err = smctr_ring_status_chg(dev);
2333 smctr_enable_16bit(dev); 2333 smctr_enable_16bit(dev);
2334 if((tp->ring_status & REMOVE_RECEIVED) 2334 if((tp->ring_status & REMOVE_RECEIVED) &&
2335 && (tp->config_word0 & NO_AUTOREMOVE)) 2335 (tp->config_word0 & NO_AUTOREMOVE))
2336 { 2336 {
2337 smctr_issue_remove_cmd(dev); 2337 smctr_issue_remove_cmd(dev);
2338 } 2338 }
@@ -2511,9 +2511,9 @@ static int smctr_issue_init_timers_cmd(struct net_device *dev)
2511 tp->config_word0 = THDREN | DMA_TRIGGER | USETPT | NO_AUTOREMOVE; 2511 tp->config_word0 = THDREN | DMA_TRIGGER | USETPT | NO_AUTOREMOVE;
2512 tp->config_word1 = 0; 2512 tp->config_word1 = 0;
2513 2513
2514 if((tp->media_type == MEDIA_STP_16) 2514 if((tp->media_type == MEDIA_STP_16) ||
2515 || (tp->media_type == MEDIA_UTP_16) 2515 (tp->media_type == MEDIA_UTP_16) ||
2516 || (tp->media_type == MEDIA_STP_16_UTP_16)) 2516 (tp->media_type == MEDIA_STP_16_UTP_16))
2517 { 2517 {
2518 tp->config_word0 |= FREQ_16MB_BIT; 2518 tp->config_word0 |= FREQ_16MB_BIT;
2519 } 2519 }
@@ -2556,9 +2556,9 @@ static int smctr_issue_init_timers_cmd(struct net_device *dev)
2556 tp->config_word1 &= ~SOURCE_ROUTING_SPANNING_BITS; 2556 tp->config_word1 &= ~SOURCE_ROUTING_SPANNING_BITS;
2557 } 2557 }
2558 2558
2559 if((tp->media_type == MEDIA_STP_16) 2559 if((tp->media_type == MEDIA_STP_16) ||
2560 || (tp->media_type == MEDIA_UTP_16) 2560 (tp->media_type == MEDIA_UTP_16) ||
2561 || (tp->media_type == MEDIA_STP_16_UTP_16)) 2561 (tp->media_type == MEDIA_STP_16_UTP_16))
2562 { 2562 {
2563 tp->config_word1 |= INTERFRAME_SPACING_16; 2563 tp->config_word1 |= INTERFRAME_SPACING_16;
2564 } 2564 }
@@ -2568,9 +2568,9 @@ static int smctr_issue_init_timers_cmd(struct net_device *dev)
2568 *pTimer_Struc++ = tp->config_word0; 2568 *pTimer_Struc++ = tp->config_word0;
2569 *pTimer_Struc++ = tp->config_word1; 2569 *pTimer_Struc++ = tp->config_word1;
2570 2570
2571 if((tp->media_type == MEDIA_STP_4) 2571 if((tp->media_type == MEDIA_STP_4) ||
2572 || (tp->media_type == MEDIA_UTP_4) 2572 (tp->media_type == MEDIA_UTP_4) ||
2573 || (tp->media_type == MEDIA_STP_4_UTP_4)) 2573 (tp->media_type == MEDIA_STP_4_UTP_4))
2574 { 2574 {
2575 *pTimer_Struc++ = 0x00FA; /* prescale */ 2575 *pTimer_Struc++ = 0x00FA; /* prescale */
2576 *pTimer_Struc++ = 0x2710; /* TPT_limit */ 2576 *pTimer_Struc++ = 0x2710; /* TPT_limit */
@@ -2990,8 +2990,8 @@ static int smctr_load_firmware(struct net_device *dev)
2990 } 2990 }
2991 2991
2992 /* Verify the firmware exists and is there in the right amount. */ 2992 /* Verify the firmware exists and is there in the right amount. */
2993 if (!fw->data 2993 if (!fw->data ||
2994 || (*(fw->data + UCODE_VERSION_OFFSET) < UCODE_VERSION)) 2994 (*(fw->data + UCODE_VERSION_OFFSET) < UCODE_VERSION))
2995 { 2995 {
2996 err = (UCODE_NOT_PRESENT); 2996 err = (UCODE_NOT_PRESENT);
2997 goto out; 2997 goto out;
@@ -3010,9 +3010,8 @@ static int smctr_load_firmware(struct net_device *dev)
3010 smctr_enable_16bit(dev); 3010 smctr_enable_16bit(dev);
3011 smctr_set_page(dev, (__u8 *)tp->ram_access); 3011 smctr_set_page(dev, (__u8 *)tp->ram_access);
3012 3012
3013 if((smctr_checksum_firmware(dev)) 3013 if((smctr_checksum_firmware(dev)) ||
3014 || (*(fw->data + UCODE_VERSION_OFFSET) 3014 (*(fw->data + UCODE_VERSION_OFFSET) > tp->microcode_version))
3015 > tp->microcode_version))
3016 { 3015 {
3017 smctr_enable_adapter_ctrl_store(dev); 3016 smctr_enable_adapter_ctrl_store(dev);
3018 3017
@@ -3117,9 +3116,9 @@ static int smctr_lobe_media_test(struct net_device *dev)
3117 } 3116 }
3118 3117
3119 /* Check if any frames received during test. */ 3118 /* Check if any frames received during test. */
3120 if((tp->rx_fcb_curr[MAC_QUEUE]->frame_status) 3119 if((tp->rx_fcb_curr[MAC_QUEUE]->frame_status) ||
3121 || (tp->rx_fcb_curr[NON_MAC_QUEUE]->frame_status)) 3120 (tp->rx_fcb_curr[NON_MAC_QUEUE]->frame_status))
3122 goto err; 3121 goto err;
3123 3122
3124 /* Set receive mask to "Promisc" mode. */ 3123 /* Set receive mask to "Promisc" mode. */
3125 tp->receive_mask = saved_rcv_mask; 3124 tp->receive_mask = saved_rcv_mask;
@@ -3303,8 +3302,8 @@ static int smctr_make_group_addr(struct net_device *dev, MAC_SUB_VECTOR *tsv)
3303 /* Set Group Address Sub-vector to all zeros if only the 3302 /* Set Group Address Sub-vector to all zeros if only the
3304 * Group Address/Functional Address Indicator is set. 3303 * Group Address/Functional Address Indicator is set.
3305 */ 3304 */
3306 if(tsv->svv[0] == 0x80 && tsv->svv[1] == 0x00 3305 if(tsv->svv[0] == 0x80 && tsv->svv[1] == 0x00 &&
3307 && tsv->svv[2] == 0x00 && tsv->svv[3] == 0x00) 3306 tsv->svv[2] == 0x00 && tsv->svv[3] == 0x00)
3308 tsv->svv[0] = 0x00; 3307 tsv->svv[0] = 0x00;
3309 3308
3310 return (0); 3309 return (0);
@@ -3876,10 +3875,10 @@ static int smctr_process_rx_packet(MAC_HEADER *rmf, __u16 size,
3876 /* NOTE: UNKNOWN MAC frames will NOT be passed up unless 3875 /* NOTE: UNKNOWN MAC frames will NOT be passed up unless
3877 * ACCEPT_ATT_MAC_FRAMES is set. 3876 * ACCEPT_ATT_MAC_FRAMES is set.
3878 */ 3877 */
3879 if(((tp->receive_mask & ACCEPT_ATT_MAC_FRAMES) 3878 if(((tp->receive_mask & ACCEPT_ATT_MAC_FRAMES) &&
3880 && (xframe == (__u8)0)) 3879 (xframe == (__u8)0)) ||
3881 || ((tp->receive_mask & ACCEPT_EXT_MAC_FRAMES) 3880 ((tp->receive_mask & ACCEPT_EXT_MAC_FRAMES) &&
3882 && (xframe == (__u8)1))) 3881 (xframe == (__u8)1)))
3883 { 3882 {
3884 rmf->vl = SWAP_BYTES(rmf->vl); 3883 rmf->vl = SWAP_BYTES(rmf->vl);
3885 3884
@@ -3934,8 +3933,8 @@ static int smctr_ram_memory_test(struct net_device *dev)
3934 3933
3935 word_pattern = start_pattern; 3934 word_pattern = start_pattern;
3936 3935
3937 for(j = 1; j < (__u32)(tp->ram_usable * 1024) - 1 3936 for(j = 1; j < (__u32)(tp->ram_usable * 1024) - 1 && (~err);
3938 && (~err); j += 2, word_pattern++) 3937 j += 2, word_pattern++)
3939 { 3938 {
3940 word_read = *(__u16 *)(pword + j); 3939 word_read = *(__u16 *)(pword + j);
3941 if(word_read != word_pattern) 3940 if(word_read != word_pattern)
@@ -3959,8 +3958,7 @@ static int smctr_ram_memory_test(struct net_device *dev)
3959 for(j = 0; j < (__u32)tp->ram_usable * 1024; j +=2) 3958 for(j = 0; j < (__u32)tp->ram_usable * 1024; j +=2)
3960 *(__u16 *)(pword + j) = word_pattern; 3959 *(__u16 *)(pword + j) = word_pattern;
3961 3960
3962 for(j =0; j < (__u32)tp->ram_usable * 1024 3961 for(j =0; j < (__u32)tp->ram_usable * 1024 && (~err); j += 2)
3963 && (~err); j += 2)
3964 { 3962 {
3965 word_read = *(__u16 *)(pword + j); 3963 word_read = *(__u16 *)(pword + j);
3966 if(word_read != word_pattern) 3964 if(word_read != word_pattern)
@@ -4325,8 +4323,8 @@ static int smctr_restart_tx_chain(struct net_device *dev, short queue)
4325 if(smctr_debug > 10) 4323 if(smctr_debug > 10)
4326 printk(KERN_DEBUG "%s: smctr_restart_tx_chain\n", dev->name); 4324 printk(KERN_DEBUG "%s: smctr_restart_tx_chain\n", dev->name);
4327 4325
4328 if(tp->num_tx_fcbs_used[queue] != 0 4326 if(tp->num_tx_fcbs_used[queue] != 0 &&
4329 && tp->tx_queue_status[queue] == NOT_TRANSMITING) 4327 tp->tx_queue_status[queue] == NOT_TRANSMITING)
4330 { 4328 {
4331 tp->tx_queue_status[queue] = TRANSMITING; 4329 tp->tx_queue_status[queue] = TRANSMITING;
4332 err = smctr_issue_resume_tx_fcb_cmd(dev, queue); 4330 err = smctr_issue_resume_tx_fcb_cmd(dev, queue);
@@ -4349,8 +4347,8 @@ static int smctr_ring_status_chg(struct net_device *dev)
4349 */ 4347 */
4350 if(tp->ring_status_flags == MONITOR_STATE_CHANGED) 4348 if(tp->ring_status_flags == MONITOR_STATE_CHANGED)
4351 { 4349 {
4352 if((tp->monitor_state == MS_ACTIVE_MONITOR_STATE) 4350 if((tp->monitor_state == MS_ACTIVE_MONITOR_STATE) ||
4353 || (tp->monitor_state == MS_STANDBY_MONITOR_STATE)) 4351 (tp->monitor_state == MS_STANDBY_MONITOR_STATE))
4354 { 4352 {
4355 tp->monitor_state_ready = 1; 4353 tp->monitor_state_ready = 1;
4356 } 4354 }
@@ -4363,8 +4361,8 @@ static int smctr_ring_status_chg(struct net_device *dev)
4363 tp->monitor_state_ready = 0; 4361 tp->monitor_state_ready = 0;
4364 4362
4365 /* Ring speed problem, switching to auto mode. */ 4363 /* Ring speed problem, switching to auto mode. */
4366 if(tp->monitor_state == MS_MONITOR_FSM_INACTIVE 4364 if(tp->monitor_state == MS_MONITOR_FSM_INACTIVE &&
4367 && !tp->cleanup) 4365 !tp->cleanup)
4368 { 4366 {
4369 printk(KERN_INFO "%s: Incorrect ring speed switching.\n", 4367 printk(KERN_INFO "%s: Incorrect ring speed switching.\n",
4370 dev->name); 4368 dev->name);
@@ -4442,8 +4440,8 @@ static int smctr_rx_frame(struct net_device *dev)
4442 { 4440 {
4443 err = HARDWARE_FAILED; 4441 err = HARDWARE_FAILED;
4444 4442
4445 if(((status & 0x007f) == 0) 4443 if(((status & 0x007f) == 0) ||
4446 || ((tp->receive_mask & ACCEPT_ERR_PACKETS) != 0)) 4444 ((tp->receive_mask & ACCEPT_ERR_PACKETS) != 0))
4447 { 4445 {
4448 /* frame length less the CRC (4 bytes) + FS (1 byte) */ 4446 /* frame length less the CRC (4 bytes) + FS (1 byte) */
4449 rx_size = tp->rx_fcb_curr[queue]->frame_length - 5; 4447 rx_size = tp->rx_fcb_curr[queue]->frame_length - 5;
@@ -4538,8 +4536,8 @@ static int smctr_send_dat(struct net_device *dev)
4538 } 4536 }
4539 4537
4540 /* Check if GOOD frame Tx'ed. */ 4538 /* Check if GOOD frame Tx'ed. */
4541 if(!(fcb->frame_status & FCB_COMMAND_DONE) 4539 if(!(fcb->frame_status & FCB_COMMAND_DONE) ||
4542 || fcb->frame_status & (FCB_TX_STATUS_E | FCB_TX_AC_BITS)) 4540 fcb->frame_status & (FCB_TX_STATUS_E | FCB_TX_AC_BITS))
4543 { 4541 {
4544 return (INITIALIZE_FAILED); 4542 return (INITIALIZE_FAILED);
4545 } 4543 }
@@ -4653,8 +4651,8 @@ static int smctr_send_lobe_media_test(struct net_device *dev)
4653 } 4651 }
4654 4652
4655 /* Check if GOOD frame Tx'ed */ 4653 /* Check if GOOD frame Tx'ed */
4656 if(!(fcb->frame_status & FCB_COMMAND_DONE) 4654 if(!(fcb->frame_status & FCB_COMMAND_DONE) ||
4657 || fcb->frame_status & (FCB_TX_STATUS_E | FCB_TX_AC_BITS)) 4655 fcb->frame_status & (FCB_TX_STATUS_E | FCB_TX_AC_BITS))
4658 { 4656 {
4659 return (LOBE_MEDIA_TEST_FAILED); 4657 return (LOBE_MEDIA_TEST_FAILED);
4660 } 4658 }
diff --git a/drivers/net/tokenring/tms380tr.c b/drivers/net/tokenring/tms380tr.c
index fa152144aacf..e3c42f5ac4a9 100644
--- a/drivers/net/tokenring/tms380tr.c
+++ b/drivers/net/tokenring/tms380tr.c
@@ -729,8 +729,8 @@ static void tms380tr_timer_chk(unsigned long data)
729 return; 729 return;
730 730
731 tms380tr_chk_outstanding_cmds(dev); 731 tms380tr_chk_outstanding_cmds(dev);
732 if(time_before(tp->LastSendTime + SEND_TIMEOUT, jiffies) 732 if(time_before(tp->LastSendTime + SEND_TIMEOUT, jiffies) &&
733 && (tp->TplFree != tp->TplBusy)) 733 (tp->TplFree != tp->TplBusy))
734 { 734 {
735 /* Anything to send, but stalled too long */ 735 /* Anything to send, but stalled too long */
736 tp->LastSendTime = jiffies; 736 tp->LastSendTime = jiffies;
@@ -830,8 +830,8 @@ irqreturn_t tms380tr_interrupt(int irq, void *dev_id)
830 } 830 }
831 831
832 /* Reset system interrupt if not already done. */ 832 /* Reset system interrupt if not already done. */
833 if(irq_type != STS_IRQ_TRANSMIT_STATUS 833 if(irq_type != STS_IRQ_TRANSMIT_STATUS &&
834 && irq_type != STS_IRQ_RECEIVE_STATUS) { 834 irq_type != STS_IRQ_RECEIVE_STATUS) {
835 tms380tr_reset_interrupt(dev); 835 tms380tr_reset_interrupt(dev);
836 } 836 }
837 837
@@ -895,10 +895,10 @@ static unsigned char tms380tr_chk_ssb(struct net_local *tp, unsigned short IrqTy
895 895
896 /* Check if this interrupt does use the SSB. */ 896 /* Check if this interrupt does use the SSB. */
897 897
898 if(IrqType != STS_IRQ_TRANSMIT_STATUS 898 if(IrqType != STS_IRQ_TRANSMIT_STATUS &&
899 && IrqType != STS_IRQ_RECEIVE_STATUS 899 IrqType != STS_IRQ_RECEIVE_STATUS &&
900 && IrqType != STS_IRQ_COMMAND_STATUS 900 IrqType != STS_IRQ_COMMAND_STATUS &&
901 && IrqType != STS_IRQ_RING_STATUS) 901 IrqType != STS_IRQ_RING_STATUS)
902 { 902 {
903 return (1); /* SSB not involved. */ 903 return (1); /* SSB not involved. */
904 } 904 }
@@ -1485,8 +1485,8 @@ static int tms380tr_init_adapter(struct net_device *dev)
1485 /* Mask interesting status bits */ 1485 /* Mask interesting status bits */
1486 Status = SIFREADW(SIFSTS); 1486 Status = SIFREADW(SIFSTS);
1487 Status &= STS_MASK; 1487 Status &= STS_MASK;
1488 } while(((Status &(STS_INITIALIZE | STS_ERROR | STS_TEST)) != 0) 1488 } while(((Status &(STS_INITIALIZE | STS_ERROR | STS_TEST)) != 0) &&
1489 && ((Status & STS_ERROR) == 0) && (loop_cnt != 0)); 1489 ((Status & STS_ERROR) == 0) && (loop_cnt != 0));
1490 1490
1491 if((Status & (STS_INITIALIZE | STS_ERROR | STS_TEST)) == 0) 1491 if((Status & (STS_INITIALIZE | STS_ERROR | STS_TEST)) == 0)
1492 { 1492 {
@@ -2183,8 +2183,8 @@ static void tms380tr_rcv_status_irq(struct net_device *dev)
2183 } 2183 }
2184 } 2184 }
2185 2185
2186 if(skb && (rpl->SkbStat == SKB_DATA_COPY 2186 if(skb && (rpl->SkbStat == SKB_DATA_COPY ||
2187 || rpl->SkbStat == SKB_DMA_DIRECT)) 2187 rpl->SkbStat == SKB_DMA_DIRECT))
2188 { 2188 {
2189 if(rpl->SkbStat == SKB_DATA_COPY) 2189 if(rpl->SkbStat == SKB_DATA_COPY)
2190 skb_copy_to_linear_data(skb, ReceiveDataPtr, 2190 skb_copy_to_linear_data(skb, ReceiveDataPtr,
diff --git a/drivers/net/tulip/21142.c b/drivers/net/tulip/21142.c
index db7d5e11855d..9f6742fad6ca 100644
--- a/drivers/net/tulip/21142.c
+++ b/drivers/net/tulip/21142.c
@@ -209,10 +209,10 @@ void t21142_lnk_change(struct net_device *dev, int csr5)
209 printk(KERN_DEBUG "%s: Setting CSR6 %8.8x/%x CSR12 %8.8x.\n", 209 printk(KERN_DEBUG "%s: Setting CSR6 %8.8x/%x CSR12 %8.8x.\n",
210 dev->name, tp->csr6, ioread32(ioaddr + CSR6), 210 dev->name, tp->csr6, ioread32(ioaddr + CSR6),
211 ioread32(ioaddr + CSR12)); 211 ioread32(ioaddr + CSR12));
212 } else if ((tp->nwayset && (csr5 & 0x08000000) 212 } else if ((tp->nwayset && (csr5 & 0x08000000) &&
213 && (dev->if_port == 3 || dev->if_port == 5) 213 (dev->if_port == 3 || dev->if_port == 5) &&
214 && (csr12 & 2) == 2) || 214 (csr12 & 2) == 2) ||
215 (tp->nway && (csr5 & (TPLnkFail)))) { 215 (tp->nway && (csr5 & (TPLnkFail)))) {
216 /* Link blew? Maybe restart NWay. */ 216 /* Link blew? Maybe restart NWay. */
217 del_timer_sync(&tp->timer); 217 del_timer_sync(&tp->timer);
218 t21142_start_nway(dev); 218 t21142_start_nway(dev);
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c
index 74e5ba42d38d..d4255d44cb75 100644
--- a/drivers/net/tulip/de2104x.c
+++ b/drivers/net/tulip/de2104x.c
@@ -62,9 +62,9 @@ module_param (debug, int, 0);
62MODULE_PARM_DESC (debug, "de2104x bitmapped message enable number"); 62MODULE_PARM_DESC (debug, "de2104x bitmapped message enable number");
63 63
64/* Set the copy breakpoint for the copy-only-tiny-buffer Rx structure. */ 64/* Set the copy breakpoint for the copy-only-tiny-buffer Rx structure. */
65#if defined(__alpha__) || defined(__arm__) || defined(__hppa__) \ 65#if defined(__alpha__) || defined(__arm__) || defined(__hppa__) || \
66 || defined(CONFIG_SPARC) || defined(__ia64__) \ 66 defined(CONFIG_SPARC) || defined(__ia64__) || \
67 || defined(__sh__) || defined(__mips__) 67 defined(__sh__) || defined(__mips__)
68static int rx_copybreak = 1518; 68static int rx_copybreak = 1518;
69#else 69#else
70static int rx_copybreak = 100; 70static int rx_copybreak = 100;
diff --git a/drivers/net/tulip/eeprom.c b/drivers/net/tulip/eeprom.c
index 391acd32a6a5..889f57aae89b 100644
--- a/drivers/net/tulip/eeprom.c
+++ b/drivers/net/tulip/eeprom.c
@@ -174,10 +174,10 @@ void __devinit tulip_parse_eeprom(struct net_device *dev)
174 } 174 }
175 /* Do a fix-up based on the vendor half of the station address prefix. */ 175 /* Do a fix-up based on the vendor half of the station address prefix. */
176 for (i = 0; eeprom_fixups[i].name; i++) { 176 for (i = 0; eeprom_fixups[i].name; i++) {
177 if (dev->dev_addr[0] == eeprom_fixups[i].addr0 177 if (dev->dev_addr[0] == eeprom_fixups[i].addr0 &&
178 && dev->dev_addr[1] == eeprom_fixups[i].addr1 178 dev->dev_addr[1] == eeprom_fixups[i].addr1 &&
179 && dev->dev_addr[2] == eeprom_fixups[i].addr2) { 179 dev->dev_addr[2] == eeprom_fixups[i].addr2) {
180 if (dev->dev_addr[2] == 0xE8 && ee_data[0x1a] == 0x55) 180 if (dev->dev_addr[2] == 0xE8 && ee_data[0x1a] == 0x55)
181 i++; /* An Accton EN1207, not an outlaw Maxtech. */ 181 i++; /* An Accton EN1207, not an outlaw Maxtech. */
182 memcpy(ee_data + 26, eeprom_fixups[i].newtable, 182 memcpy(ee_data + 26, eeprom_fixups[i].newtable,
183 sizeof(eeprom_fixups[i].newtable)); 183 sizeof(eeprom_fixups[i].newtable));
diff --git a/drivers/net/tulip/interrupt.c b/drivers/net/tulip/interrupt.c
index c8d220cf2cce..2e8e8ee893c7 100644
--- a/drivers/net/tulip/interrupt.c
+++ b/drivers/net/tulip/interrupt.c
@@ -170,8 +170,8 @@ int tulip_poll(struct napi_struct *napi, int budget)
170 RxDescCollisionSeen | 170 RxDescCollisionSeen |
171 RxDescRunt | 171 RxDescRunt |
172 RxDescDescErr | 172 RxDescDescErr |
173 RxWholePkt)) != RxWholePkt 173 RxWholePkt)) != RxWholePkt ||
174 || pkt_len > 1518) { 174 pkt_len > 1518) {
175 if ((status & (RxLengthOver2047 | 175 if ((status & (RxLengthOver2047 |
176 RxWholePkt)) != RxWholePkt) { 176 RxWholePkt)) != RxWholePkt) {
177 /* Ingore earlier buffers. */ 177 /* Ingore earlier buffers. */
@@ -201,8 +201,8 @@ int tulip_poll(struct napi_struct *napi, int budget)
201 201
202 /* Check if the packet is long enough to accept without copying 202 /* Check if the packet is long enough to accept without copying
203 to a minimally-sized skbuff. */ 203 to a minimally-sized skbuff. */
204 if (pkt_len < tulip_rx_copybreak 204 if (pkt_len < tulip_rx_copybreak &&
205 && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { 205 (skb = dev_alloc_skb(pkt_len + 2)) != NULL) {
206 skb_reserve(skb, 2); /* 16 byte align the IP header */ 206 skb_reserve(skb, 2); /* 16 byte align the IP header */
207 pci_dma_sync_single_for_cpu(tp->pdev, 207 pci_dma_sync_single_for_cpu(tp->pdev,
208 tp->rx_buffers[entry].mapping, 208 tp->rx_buffers[entry].mapping,
@@ -395,8 +395,8 @@ static int tulip_rx(struct net_device *dev)
395 RxDescCollisionSeen | 395 RxDescCollisionSeen |
396 RxDescRunt | 396 RxDescRunt |
397 RxDescDescErr | 397 RxDescDescErr |
398 RxWholePkt)) != RxWholePkt 398 RxWholePkt)) != RxWholePkt ||
399 || pkt_len > 1518) { 399 pkt_len > 1518) {
400 if ((status & (RxLengthOver2047 | 400 if ((status & (RxLengthOver2047 |
401 RxWholePkt)) != RxWholePkt) { 401 RxWholePkt)) != RxWholePkt) {
402 /* Ingore earlier buffers. */ 402 /* Ingore earlier buffers. */
@@ -425,8 +425,8 @@ static int tulip_rx(struct net_device *dev)
425 425
426 /* Check if the packet is long enough to accept without copying 426 /* Check if the packet is long enough to accept without copying
427 to a minimally-sized skbuff. */ 427 to a minimally-sized skbuff. */
428 if (pkt_len < tulip_rx_copybreak 428 if (pkt_len < tulip_rx_copybreak &&
429 && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { 429 (skb = dev_alloc_skb(pkt_len + 2)) != NULL) {
430 skb_reserve(skb, 2); /* 16 byte align the IP header */ 430 skb_reserve(skb, 2); /* 16 byte align the IP header */
431 pci_dma_sync_single_for_cpu(tp->pdev, 431 pci_dma_sync_single_for_cpu(tp->pdev,
432 tp->rx_buffers[entry].mapping, 432 tp->rx_buffers[entry].mapping,
diff --git a/drivers/net/tulip/media.c b/drivers/net/tulip/media.c
index daddfa51853e..d8fda83705bf 100644
--- a/drivers/net/tulip/media.c
+++ b/drivers/net/tulip/media.c
@@ -468,8 +468,8 @@ void __devinit tulip_find_mii (struct net_device *dev, int board_idx)
468 int phy = phyn & 0x1f; 468 int phy = phyn & 0x1f;
469 int mii_status = tulip_mdio_read (dev, phy, MII_BMSR); 469 int mii_status = tulip_mdio_read (dev, phy, MII_BMSR);
470 if ((mii_status & 0x8301) == 0x8001 || 470 if ((mii_status & 0x8301) == 0x8001 ||
471 ((mii_status & BMSR_100BASE4) == 0 471 ((mii_status & BMSR_100BASE4) == 0 &&
472 && (mii_status & 0x7800) != 0)) { 472 (mii_status & 0x7800) != 0)) {
473 /* preserve Becker logic, gain indentation level */ 473 /* preserve Becker logic, gain indentation level */
474 } else { 474 } else {
475 continue; 475 continue;
diff --git a/drivers/net/tulip/pnic2.c b/drivers/net/tulip/pnic2.c
index f49579128fb5..d8418694bf46 100644
--- a/drivers/net/tulip/pnic2.c
+++ b/drivers/net/tulip/pnic2.c
@@ -316,9 +316,9 @@ void pnic2_lnk_change(struct net_device *dev, int csr5)
316 } 316 }
317 } 317 }
318 318
319 if ((tp->nwayset && (csr5 & 0x08000000) 319 if ((tp->nwayset && (csr5 & 0x08000000) &&
320 && (dev->if_port == 3 || dev->if_port == 5) 320 (dev->if_port == 3 || dev->if_port == 5) &&
321 && (csr12 & 2) == 2) || (tp->nway && (csr5 & (TPLnkFail)))) { 321 (csr12 & 2) == 2) || (tp->nway && (csr5 & (TPLnkFail)))) {
322 322
323 /* Link blew? Maybe restart NWay. */ 323 /* Link blew? Maybe restart NWay. */
324 324
diff --git a/drivers/net/tulip/tulip_core.c b/drivers/net/tulip/tulip_core.c
index 0df983bc03a6..0fa3140d65bf 100644
--- a/drivers/net/tulip/tulip_core.c
+++ b/drivers/net/tulip/tulip_core.c
@@ -64,9 +64,9 @@ const char * const medianame[32] = {
64}; 64};
65 65
66/* Set the copy breakpoint for the copy-only-tiny-buffer Rx structure. */ 66/* Set the copy breakpoint for the copy-only-tiny-buffer Rx structure. */
67#if defined(__alpha__) || defined(__arm__) || defined(__hppa__) \ 67#if defined(__alpha__) || defined(__arm__) || defined(__hppa__) || \
68 || defined(CONFIG_SPARC) || defined(__ia64__) \ 68 defined(CONFIG_SPARC) || defined(__ia64__) || \
69 || defined(__sh__) || defined(__mips__) 69 defined(__sh__) || defined(__mips__)
70static int rx_copybreak = 1518; 70static int rx_copybreak = 1518;
71#else 71#else
72static int rx_copybreak = 100; 72static int rx_copybreak = 100;
@@ -449,8 +449,8 @@ media_picked:
449 iowrite32(0x0201B078, ioaddr + 0xB8); 449 iowrite32(0x0201B078, ioaddr + 0xB8);
450 next_tick = 1*HZ; 450 next_tick = 1*HZ;
451 } 451 }
452 } else if ((tp->chip_id == MX98713 || tp->chip_id == COMPEX9881) 452 } else if ((tp->chip_id == MX98713 || tp->chip_id == COMPEX9881) &&
453 && ! tp->medialock) { 453 ! tp->medialock) {
454 dev->if_port = 0; 454 dev->if_port = 0;
455 tp->csr6 = 0x01880000 | (tp->full_duplex ? 0x0200 : 0); 455 tp->csr6 = 0x01880000 | (tp->full_duplex ? 0x0200 : 0);
456 iowrite32(0x0f370000 | ioread16(ioaddr + 0x80), ioaddr + 0x80); 456 iowrite32(0x0f370000 | ioread16(ioaddr + 0x80), ioaddr + 0x80);
@@ -535,9 +535,9 @@ static void tulip_tx_timeout(struct net_device *dev)
535 if (tulip_debug > 1) 535 if (tulip_debug > 1)
536 printk(KERN_WARNING "%s: Transmit timeout using MII device.\n", 536 printk(KERN_WARNING "%s: Transmit timeout using MII device.\n",
537 dev->name); 537 dev->name);
538 } else if (tp->chip_id == DC21140 || tp->chip_id == DC21142 538 } else if (tp->chip_id == DC21140 || tp->chip_id == DC21142 ||
539 || tp->chip_id == MX98713 || tp->chip_id == COMPEX9881 539 tp->chip_id == MX98713 || tp->chip_id == COMPEX9881 ||
540 || tp->chip_id == DM910X) { 540 tp->chip_id == DM910X) {
541 printk(KERN_WARNING "%s: 21140 transmit timed out, status %8.8x, " 541 printk(KERN_WARNING "%s: 21140 transmit timed out, status %8.8x, "
542 "SIA %8.8x %8.8x %8.8x %8.8x, resetting...\n", 542 "SIA %8.8x %8.8x %8.8x %8.8x, resetting...\n",
543 dev->name, ioread32(ioaddr + CSR5), ioread32(ioaddr + CSR12), 543 dev->name, ioread32(ioaddr + CSR5), ioread32(ioaddr + CSR12),
@@ -1538,8 +1538,10 @@ static int __devinit tulip_init_one (struct pci_dev *pdev,
1538 } 1538 }
1539 } 1539 }
1540 /* Lite-On boards have the address byte-swapped. */ 1540 /* Lite-On boards have the address byte-swapped. */
1541 if ((dev->dev_addr[0] == 0xA0 || dev->dev_addr[0] == 0xC0 || dev->dev_addr[0] == 0x02) 1541 if ((dev->dev_addr[0] == 0xA0 ||
1542 && dev->dev_addr[1] == 0x00) 1542 dev->dev_addr[0] == 0xC0 ||
1543 dev->dev_addr[0] == 0x02) &&
1544 dev->dev_addr[1] == 0x00)
1543 for (i = 0; i < 6; i+=2) { 1545 for (i = 0; i < 6; i+=2) {
1544 char tmp = dev->dev_addr[i]; 1546 char tmp = dev->dev_addr[i];
1545 dev->dev_addr[i] = dev->dev_addr[i+1]; 1547 dev->dev_addr[i] = dev->dev_addr[i+1];
diff --git a/drivers/net/tulip/winbond-840.c b/drivers/net/tulip/winbond-840.c
index 1a52729c9466..869a7a0005f9 100644
--- a/drivers/net/tulip/winbond-840.c
+++ b/drivers/net/tulip/winbond-840.c
@@ -1230,8 +1230,8 @@ static int netdev_rx(struct net_device *dev)
1230#endif 1230#endif
1231 /* Check if the packet is long enough to accept without copying 1231 /* Check if the packet is long enough to accept without copying
1232 to a minimally-sized skbuff. */ 1232 to a minimally-sized skbuff. */
1233 if (pkt_len < rx_copybreak 1233 if (pkt_len < rx_copybreak &&
1234 && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { 1234 (skb = dev_alloc_skb(pkt_len + 2)) != NULL) {
1235 skb_reserve(skb, 2); /* 16 byte align the IP header */ 1235 skb_reserve(skb, 2); /* 16 byte align the IP header */
1236 pci_dma_sync_single_for_cpu(np->pci_dev,np->rx_addr[entry], 1236 pci_dma_sync_single_for_cpu(np->pci_dev,np->rx_addr[entry],
1237 np->rx_skbuff[entry]->len, 1237 np->rx_skbuff[entry]->len,
@@ -1357,8 +1357,8 @@ static u32 __set_rx_mode(struct net_device *dev)
1357 memset(mc_filter, 0xff, sizeof(mc_filter)); 1357 memset(mc_filter, 0xff, sizeof(mc_filter));
1358 rx_mode = RxAcceptBroadcast | AcceptMulticast | RxAcceptAllPhys 1358 rx_mode = RxAcceptBroadcast | AcceptMulticast | RxAcceptAllPhys
1359 | AcceptMyPhys; 1359 | AcceptMyPhys;
1360 } else if ((dev->mc_count > multicast_filter_limit) 1360 } else if ((dev->mc_count > multicast_filter_limit) ||
1361 || (dev->flags & IFF_ALLMULTI)) { 1361 (dev->flags & IFF_ALLMULTI)) {
1362 /* Too many to match, or accept all multicasts. */ 1362 /* Too many to match, or accept all multicasts. */
1363 memset(mc_filter, 0xff, sizeof(mc_filter)); 1363 memset(mc_filter, 0xff, sizeof(mc_filter));
1364 rx_mode = RxAcceptBroadcast | AcceptMulticast | AcceptMyPhys; 1364 rx_mode = RxAcceptBroadcast | AcceptMulticast | AcceptMyPhys;
diff --git a/drivers/net/typhoon.c b/drivers/net/typhoon.c
index 079a97000e5b..39f1fc650be6 100644
--- a/drivers/net/typhoon.c
+++ b/drivers/net/typhoon.c
@@ -1769,8 +1769,8 @@ typhoon_rx(struct typhoon *tp, struct basic_ring *rxRing, volatile __le32 * read
1769 csum_bits = rx->rxStatus & (TYPHOON_RX_IP_CHK_GOOD | 1769 csum_bits = rx->rxStatus & (TYPHOON_RX_IP_CHK_GOOD |
1770 TYPHOON_RX_UDP_CHK_GOOD | TYPHOON_RX_TCP_CHK_GOOD); 1770 TYPHOON_RX_UDP_CHK_GOOD | TYPHOON_RX_TCP_CHK_GOOD);
1771 if(csum_bits == 1771 if(csum_bits ==
1772 (TYPHOON_RX_IP_CHK_GOOD | TYPHOON_RX_TCP_CHK_GOOD) 1772 (TYPHOON_RX_IP_CHK_GOOD | TYPHOON_RX_TCP_CHK_GOOD) ||
1773 || csum_bits == 1773 csum_bits ==
1774 (TYPHOON_RX_IP_CHK_GOOD | TYPHOON_RX_UDP_CHK_GOOD)) { 1774 (TYPHOON_RX_IP_CHK_GOOD | TYPHOON_RX_UDP_CHK_GOOD)) {
1775 new_skb->ip_summed = CHECKSUM_UNNECESSARY; 1775 new_skb->ip_summed = CHECKSUM_UNNECESSARY;
1776 } else 1776 } else
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c
index 4469f2451a6f..9f44c99777a8 100644
--- a/drivers/net/ucc_geth.c
+++ b/drivers/net/ucc_geth.c
@@ -1306,8 +1306,8 @@ static int init_max_rx_buff_len(u16 max_rx_buf_len,
1306 u16 __iomem *mrblr_register) 1306 u16 __iomem *mrblr_register)
1307{ 1307{
1308 /* max_rx_buf_len value must be a multiple of 128 */ 1308 /* max_rx_buf_len value must be a multiple of 128 */
1309 if ((max_rx_buf_len == 0) 1309 if ((max_rx_buf_len == 0) ||
1310 || (max_rx_buf_len % UCC_GETH_MRBLR_ALIGNMENT)) 1310 (max_rx_buf_len % UCC_GETH_MRBLR_ALIGNMENT))
1311 return -EINVAL; 1311 return -EINVAL;
1312 1312
1313 out_be16(mrblr_register, max_rx_buf_len); 1313 out_be16(mrblr_register, max_rx_buf_len);
@@ -2159,8 +2159,8 @@ static int ucc_struct_init(struct ucc_geth_private *ugeth)
2159 } 2159 }
2160 2160
2161 if ((ug_info->numStationAddresses != 2161 if ((ug_info->numStationAddresses !=
2162 UCC_GETH_NUM_OF_STATION_ADDRESSES_1) 2162 UCC_GETH_NUM_OF_STATION_ADDRESSES_1) &&
2163 && ug_info->rxExtendedFiltering) { 2163 ug_info->rxExtendedFiltering) {
2164 if (netif_msg_probe(ugeth)) 2164 if (netif_msg_probe(ugeth))
2165 ugeth_err("%s: Number of station addresses greater than 1 " 2165 ugeth_err("%s: Number of station addresses greater than 1 "
2166 "not allowed in extended parsing mode.", 2166 "not allowed in extended parsing mode.",
@@ -2284,9 +2284,9 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
2284 UCC_GETH_NUM_OF_STATION_ADDRESSES_1); 2284 UCC_GETH_NUM_OF_STATION_ADDRESSES_1);
2285 2285
2286 ugeth->rx_extended_features = ugeth->rx_non_dynamic_extended_features || 2286 ugeth->rx_extended_features = ugeth->rx_non_dynamic_extended_features ||
2287 (ug_info->vlanOperationTagged != UCC_GETH_VLAN_OPERATION_TAGGED_NOP) 2287 (ug_info->vlanOperationTagged != UCC_GETH_VLAN_OPERATION_TAGGED_NOP) ||
2288 || (ug_info->vlanOperationNonTagged != 2288 (ug_info->vlanOperationNonTagged !=
2289 UCC_GETH_VLAN_OPERATION_NON_TAGGED_NOP); 2289 UCC_GETH_VLAN_OPERATION_NON_TAGGED_NOP);
2290 2290
2291 init_default_reg_vals(&uf_regs->upsmr, 2291 init_default_reg_vals(&uf_regs->upsmr,
2292 &ug_regs->maccfg1, &ug_regs->maccfg2); 2292 &ug_regs->maccfg1, &ug_regs->maccfg2);
@@ -2987,11 +2987,11 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
2987 ugeth->p_init_enet_param_shadow->rgftgfrxglobal |= 2987 ugeth->p_init_enet_param_shadow->rgftgfrxglobal |=
2988 ugeth->rx_glbl_pram_offset | ug_info->riscRx; 2988 ugeth->rx_glbl_pram_offset | ug_info->riscRx;
2989 if ((ug_info->largestexternallookupkeysize != 2989 if ((ug_info->largestexternallookupkeysize !=
2990 QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_NONE) 2990 QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_NONE) &&
2991 && (ug_info->largestexternallookupkeysize != 2991 (ug_info->largestexternallookupkeysize !=
2992 QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_8_BYTES) 2992 QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_8_BYTES) &&
2993 && (ug_info->largestexternallookupkeysize != 2993 (ug_info->largestexternallookupkeysize !=
2994 QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_16_BYTES)) { 2994 QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_16_BYTES)) {
2995 if (netif_msg_ifup(ugeth)) 2995 if (netif_msg_ifup(ugeth))
2996 ugeth_err("%s: Invalid largest External Lookup Key Size.", 2996 ugeth_err("%s: Invalid largest External Lookup Key Size.",
2997 __func__); 2997 __func__);
diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
index 1bef39a60a62..a516185cbc9f 100644
--- a/drivers/net/usb/asix.c
+++ b/drivers/net/usb/asix.c
@@ -365,8 +365,8 @@ static struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
365 365
366 padlen = ((skb->len + 4) % 512) ? 0 : 4; 366 padlen = ((skb->len + 4) % 512) ? 0 : 4;
367 367
368 if ((!skb_cloned(skb)) 368 if ((!skb_cloned(skb)) &&
369 && ((headroom + tailroom) >= (4 + padlen))) { 369 ((headroom + tailroom) >= (4 + padlen))) {
370 if ((headroom < 4) || (tailroom < padlen)) { 370 if ((headroom < 4) || (tailroom < padlen)) {
371 skb->data = memmove(skb->head + 4, skb->data, skb->len); 371 skb->data = memmove(skb->head + 4, skb->data, skb->len);
372 skb_set_tail_pointer(skb, skb->len); 372 skb_set_tail_pointer(skb, skb->len);
@@ -541,8 +541,8 @@ static void asix_set_multicast(struct net_device *net)
541 541
542 if (net->flags & IFF_PROMISC) { 542 if (net->flags & IFF_PROMISC) {
543 rx_ctl |= AX_RX_CTL_PRO; 543 rx_ctl |= AX_RX_CTL_PRO;
544 } else if (net->flags & IFF_ALLMULTI 544 } else if (net->flags & IFF_ALLMULTI ||
545 || net->mc_count > AX_MAX_MCAST) { 545 net->mc_count > AX_MAX_MCAST) {
546 rx_ctl |= AX_RX_CTL_AMALL; 546 rx_ctl |= AX_RX_CTL_AMALL;
547 } else if (net->mc_count == 0) { 547 } else if (net->mc_count == 0) {
548 /* just broadcast and directed */ 548 /* just broadcast and directed */
@@ -753,8 +753,8 @@ static void ax88172_set_multicast(struct net_device *net)
753 753
754 if (net->flags & IFF_PROMISC) { 754 if (net->flags & IFF_PROMISC) {
755 rx_ctl |= 0x01; 755 rx_ctl |= 0x01;
756 } else if (net->flags & IFF_ALLMULTI 756 } else if (net->flags & IFF_ALLMULTI ||
757 || net->mc_count > AX_MAX_MCAST) { 757 net->mc_count > AX_MAX_MCAST) {
758 rx_ctl |= 0x02; 758 rx_ctl |= 0x02;
759 } else if (net->mc_count == 0) { 759 } else if (net->mc_count == 0) {
760 /* just broadcast and directed */ 760 /* just broadcast and directed */
diff --git a/drivers/net/usb/catc.c b/drivers/net/usb/catc.c
index 2bed6b087d16..22b87e64a810 100644
--- a/drivers/net/usb/catc.c
+++ b/drivers/net/usb/catc.c
@@ -436,8 +436,8 @@ static netdev_tx_t catc_start_xmit(struct sk_buff *skb,
436 clear_bit(TX_RUNNING, &catc->flags); 436 clear_bit(TX_RUNNING, &catc->flags);
437 } 437 }
438 438
439 if ((catc->is_f5u011 && catc->tx_ptr) 439 if ((catc->is_f5u011 && catc->tx_ptr) ||
440 || (catc->tx_ptr >= ((TX_MAX_BURST - 1) * (PKT_SZ + 2)))) 440 (catc->tx_ptr >= ((TX_MAX_BURST - 1) * (PKT_SZ + 2))))
441 netif_stop_queue(netdev); 441 netif_stop_queue(netdev);
442 442
443 spin_unlock_irqrestore(&catc->tx_lock, flags); 443 spin_unlock_irqrestore(&catc->tx_lock, flags);
diff --git a/drivers/net/usb/cdc-phonet.c b/drivers/net/usb/cdc-phonet.c
index 33d5c579c5ad..6491c9c00c83 100644
--- a/drivers/net/usb/cdc-phonet.c
+++ b/drivers/net/usb/cdc-phonet.c
@@ -372,12 +372,12 @@ int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *id)
372 /* Data interface has one inactive and one active setting */ 372 /* Data interface has one inactive and one active setting */
373 if (data_intf->num_altsetting != 2) 373 if (data_intf->num_altsetting != 2)
374 return -EINVAL; 374 return -EINVAL;
375 if (data_intf->altsetting[0].desc.bNumEndpoints == 0 375 if (data_intf->altsetting[0].desc.bNumEndpoints == 0 &&
376 && data_intf->altsetting[1].desc.bNumEndpoints == 2) 376 data_intf->altsetting[1].desc.bNumEndpoints == 2)
377 data_desc = data_intf->altsetting + 1; 377 data_desc = data_intf->altsetting + 1;
378 else 378 else
379 if (data_intf->altsetting[0].desc.bNumEndpoints == 2 379 if (data_intf->altsetting[0].desc.bNumEndpoints == 2 &&
380 && data_intf->altsetting[1].desc.bNumEndpoints == 0) 380 data_intf->altsetting[1].desc.bNumEndpoints == 0)
381 data_desc = data_intf->altsetting; 381 data_desc = data_intf->altsetting;
382 else 382 else
383 return -EINVAL; 383 return -EINVAL;
diff --git a/drivers/net/usb/cdc_eem.c b/drivers/net/usb/cdc_eem.c
index 23300656c266..c337ffc3304a 100644
--- a/drivers/net/usb/cdc_eem.c
+++ b/drivers/net/usb/cdc_eem.c
@@ -121,8 +121,8 @@ static struct sk_buff *eem_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
121 int headroom = skb_headroom(skb); 121 int headroom = skb_headroom(skb);
122 int tailroom = skb_tailroom(skb); 122 int tailroom = skb_tailroom(skb);
123 123
124 if ((tailroom >= ETH_FCS_LEN + padlen) 124 if ((tailroom >= ETH_FCS_LEN + padlen) &&
125 && (headroom >= EEM_HEAD)) 125 (headroom >= EEM_HEAD))
126 goto done; 126 goto done;
127 127
128 if ((headroom + tailroom) 128 if ((headroom + tailroom)
diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 7ec24c9b2535..de3e36596779 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -37,23 +37,23 @@
37 37
38static int is_rndis(struct usb_interface_descriptor *desc) 38static int is_rndis(struct usb_interface_descriptor *desc)
39{ 39{
40 return desc->bInterfaceClass == USB_CLASS_COMM 40 return (desc->bInterfaceClass == USB_CLASS_COMM &&
41 && desc->bInterfaceSubClass == 2 41 desc->bInterfaceSubClass == 2 &&
42 && desc->bInterfaceProtocol == 0xff; 42 desc->bInterfaceProtocol == 0xff);
43} 43}
44 44
45static int is_activesync(struct usb_interface_descriptor *desc) 45static int is_activesync(struct usb_interface_descriptor *desc)
46{ 46{
47 return desc->bInterfaceClass == USB_CLASS_MISC 47 return (desc->bInterfaceClass == USB_CLASS_MISC &&
48 && desc->bInterfaceSubClass == 1 48 desc->bInterfaceSubClass == 1 &&
49 && desc->bInterfaceProtocol == 1; 49 desc->bInterfaceProtocol == 1);
50} 50}
51 51
52static int is_wireless_rndis(struct usb_interface_descriptor *desc) 52static int is_wireless_rndis(struct usb_interface_descriptor *desc)
53{ 53{
54 return desc->bInterfaceClass == USB_CLASS_WIRELESS_CONTROLLER 54 return (desc->bInterfaceClass == USB_CLASS_WIRELESS_CONTROLLER &&
55 && desc->bInterfaceSubClass == 1 55 desc->bInterfaceSubClass == 1 &&
56 && desc->bInterfaceProtocol == 3; 56 desc->bInterfaceProtocol == 3);
57} 57}
58 58
59#else 59#else
@@ -116,9 +116,9 @@ int usbnet_generic_cdc_bind(struct usbnet *dev, struct usb_interface *intf)
116 /* this assumes that if there's a non-RNDIS vendor variant 116 /* this assumes that if there's a non-RNDIS vendor variant
117 * of cdc-acm, it'll fail RNDIS requests cleanly. 117 * of cdc-acm, it'll fail RNDIS requests cleanly.
118 */ 118 */
119 rndis = is_rndis(&intf->cur_altsetting->desc) 119 rndis = (is_rndis(&intf->cur_altsetting->desc) ||
120 || is_activesync(&intf->cur_altsetting->desc) 120 is_activesync(&intf->cur_altsetting->desc) ||
121 || is_wireless_rndis(&intf->cur_altsetting->desc); 121 is_wireless_rndis(&intf->cur_altsetting->desc));
122 122
123 memset(info, 0, sizeof *info); 123 memset(info, 0, sizeof *info);
124 info->control = intf; 124 info->control = intf;
@@ -279,10 +279,10 @@ next_desc:
279 279
280 dev->status = &info->control->cur_altsetting->endpoint [0]; 280 dev->status = &info->control->cur_altsetting->endpoint [0];
281 desc = &dev->status->desc; 281 desc = &dev->status->desc;
282 if (!usb_endpoint_is_int_in(desc) 282 if (!usb_endpoint_is_int_in(desc) ||
283 || (le16_to_cpu(desc->wMaxPacketSize) 283 (le16_to_cpu(desc->wMaxPacketSize)
284 < sizeof(struct usb_cdc_notification)) 284 < sizeof(struct usb_cdc_notification)) ||
285 || !desc->bInterval) { 285 !desc->bInterval) {
286 dev_dbg(&intf->dev, "bad notification endpoint\n"); 286 dev_dbg(&intf->dev, "bad notification endpoint\n");
287 dev->status = NULL; 287 dev->status = NULL;
288 } 288 }
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index 43bc3fcc0d85..f78f0903b073 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -602,9 +602,9 @@ static struct hso_serial *get_serial_by_shared_int_and_type(
602 port = hso_mux_to_port(mux); 602 port = hso_mux_to_port(mux);
603 603
604 for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) { 604 for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) {
605 if (serial_table[i] 605 if (serial_table[i] &&
606 && (dev2ser(serial_table[i])->shared_int == shared_int) 606 (dev2ser(serial_table[i])->shared_int == shared_int) &&
607 && ((serial_table[i]->port_spec & HSO_PORT_MASK) == port)) { 607 ((serial_table[i]->port_spec & HSO_PORT_MASK) == port)) {
608 return dev2ser(serial_table[i]); 608 return dev2ser(serial_table[i]);
609 } 609 }
610 } 610 }
@@ -846,8 +846,8 @@ static void hso_net_tx_timeout(struct net_device *net)
846 dev_warn(&net->dev, "Tx timed out.\n"); 846 dev_warn(&net->dev, "Tx timed out.\n");
847 847
848 /* Tear the waiting frame off the list */ 848 /* Tear the waiting frame off the list */
849 if (odev->mux_bulk_tx_urb 849 if (odev->mux_bulk_tx_urb &&
850 && (odev->mux_bulk_tx_urb->status == -EINPROGRESS)) 850 (odev->mux_bulk_tx_urb->status == -EINPROGRESS))
851 usb_unlink_urb(odev->mux_bulk_tx_urb); 851 usb_unlink_urb(odev->mux_bulk_tx_urb);
852 852
853 /* Update statistics */ 853 /* Update statistics */
@@ -1020,9 +1020,9 @@ static void read_bulk_callback(struct urb *urb)
1020 u32 rest; 1020 u32 rest;
1021 u8 crc_check[4] = { 0xDE, 0xAD, 0xBE, 0xEF }; 1021 u8 crc_check[4] = { 0xDE, 0xAD, 0xBE, 0xEF };
1022 rest = urb->actual_length % odev->in_endp->wMaxPacketSize; 1022 rest = urb->actual_length % odev->in_endp->wMaxPacketSize;
1023 if (((rest == 5) || (rest == 6)) 1023 if (((rest == 5) || (rest == 6)) &&
1024 && !memcmp(((u8 *) urb->transfer_buffer) + 1024 !memcmp(((u8 *) urb->transfer_buffer) +
1025 urb->actual_length - 4, crc_check, 4)) { 1025 urb->actual_length - 4, crc_check, 4)) {
1026 urb->actual_length -= 4; 1026 urb->actual_length -= 4;
1027 } 1027 }
1028 } 1028 }
@@ -1226,9 +1226,9 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
1226 rest = 1226 rest =
1227 urb->actual_length % 1227 urb->actual_length %
1228 serial->in_endp->wMaxPacketSize; 1228 serial->in_endp->wMaxPacketSize;
1229 if (((rest == 5) || (rest == 6)) 1229 if (((rest == 5) || (rest == 6)) &&
1230 && !memcmp(((u8 *) urb->transfer_buffer) + 1230 !memcmp(((u8 *) urb->transfer_buffer) +
1231 urb->actual_length - 4, crc_check, 4)) { 1231 urb->actual_length - 4, crc_check, 4)) {
1232 urb->actual_length -= 4; 1232 urb->actual_length -= 4;
1233 } 1233 }
1234 } 1234 }
@@ -2982,8 +2982,8 @@ static int hso_probe(struct usb_interface *interface,
2982 2982
2983 case HSO_INTF_BULK: 2983 case HSO_INTF_BULK:
2984 /* It's a regular bulk interface */ 2984 /* It's a regular bulk interface */
2985 if (((port_spec & HSO_PORT_MASK) == HSO_PORT_NETWORK) 2985 if (((port_spec & HSO_PORT_MASK) == HSO_PORT_NETWORK) &&
2986 && !disable_net) 2986 !disable_net)
2987 hso_dev = hso_create_net_device(interface, port_spec); 2987 hso_dev = hso_create_net_device(interface, port_spec);
2988 else 2988 else
2989 hso_dev = 2989 hso_dev =
@@ -3146,8 +3146,8 @@ static void hso_free_interface(struct usb_interface *interface)
3146 int i; 3146 int i;
3147 3147
3148 for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) { 3148 for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) {
3149 if (serial_table[i] 3149 if (serial_table[i] &&
3150 && (serial_table[i]->interface == interface)) { 3150 (serial_table[i]->interface == interface)) {
3151 hso_dev = dev2ser(serial_table[i]); 3151 hso_dev = dev2ser(serial_table[i]);
3152 spin_lock_irq(&hso_dev->serial_lock); 3152 spin_lock_irq(&hso_dev->serial_lock);
3153 tty = tty_kref_get(hso_dev->tty); 3153 tty = tty_kref_get(hso_dev->tty);
@@ -3163,8 +3163,8 @@ static void hso_free_interface(struct usb_interface *interface)
3163 } 3163 }
3164 3164
3165 for (i = 0; i < HSO_MAX_NET_DEVICES; i++) { 3165 for (i = 0; i < HSO_MAX_NET_DEVICES; i++) {
3166 if (network_table[i] 3166 if (network_table[i] &&
3167 && (network_table[i]->interface == interface)) { 3167 (network_table[i]->interface == interface)) {
3168 struct rfkill *rfk = dev2net(network_table[i])->rfkill; 3168 struct rfkill *rfk = dev2net(network_table[i])->rfkill;
3169 /* hso_stop_net_device doesn't stop the net queue since 3169 /* hso_stop_net_device doesn't stop the net queue since
3170 * traffic needs to start it again when suspended */ 3170 * traffic needs to start it again when suspended */
diff --git a/drivers/net/usb/mcs7830.c b/drivers/net/usb/mcs7830.c
index 10873d96b2da..87374317f480 100644
--- a/drivers/net/usb/mcs7830.c
+++ b/drivers/net/usb/mcs7830.c
@@ -391,8 +391,8 @@ static void mcs7830_set_multicast(struct net_device *net)
391 391
392 if (net->flags & IFF_PROMISC) { 392 if (net->flags & IFF_PROMISC) {
393 data->config |= HIF_REG_CONFIG_PROMISCIOUS; 393 data->config |= HIF_REG_CONFIG_PROMISCIOUS;
394 } else if (net->flags & IFF_ALLMULTI 394 } else if (net->flags & IFF_ALLMULTI ||
395 || net->mc_count > MCS7830_MAX_MCAST) { 395 net->mc_count > MCS7830_MAX_MCAST) {
396 data->config |= HIF_REG_CONFIG_ALLMULTICAST; 396 data->config |= HIF_REG_CONFIG_ALLMULTICAST;
397 } else if (net->mc_count == 0) { 397 } else if (net->mc_count == 0) {
398 /* just broadcast and directed */ 398 /* just broadcast and directed */
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index f56dec6119c3..490fa8f55424 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -114,8 +114,8 @@ int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf, int buflen)
114 */ 114 */
115 115
116 /* Issue the request; xid is unique, don't bother byteswapping it */ 116 /* Issue the request; xid is unique, don't bother byteswapping it */
117 if (likely(buf->msg_type != RNDIS_MSG_HALT 117 if (likely(buf->msg_type != RNDIS_MSG_HALT &&
118 && buf->msg_type != RNDIS_MSG_RESET)) { 118 buf->msg_type != RNDIS_MSG_RESET)) {
119 xid = dev->xid++; 119 xid = dev->xid++;
120 if (!xid) 120 if (!xid)
121 xid = dev->xid++; 121 xid = dev->xid++;
@@ -493,9 +493,9 @@ int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
493 data_len = le32_to_cpu(hdr->data_len); 493 data_len = le32_to_cpu(hdr->data_len);
494 494
495 /* don't choke if we see oob, per-packet data, etc */ 495 /* don't choke if we see oob, per-packet data, etc */
496 if (unlikely(hdr->msg_type != RNDIS_MSG_PACKET 496 if (unlikely(hdr->msg_type != RNDIS_MSG_PACKET ||
497 || skb->len < msg_len 497 skb->len < msg_len ||
498 || (data_offset + data_len + 8) > msg_len)) { 498 (data_offset + data_len + 8) > msg_len)) {
499 dev->net->stats.rx_frame_errors++; 499 dev->net->stats.rx_frame_errors++;
500 devdbg(dev, "bad rndis message %d/%d/%d/%d, len %d", 500 devdbg(dev, "bad rndis message %d/%d/%d/%d, len %d",
501 le32_to_cpu(hdr->msg_type), 501 le32_to_cpu(hdr->msg_type),
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 04f3f289e87c..511e7bdc4573 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -140,8 +140,8 @@ int usbnet_get_endpoints(struct usbnet *dev, struct usb_interface *intf)
140 if (!alt || !in || !out) 140 if (!alt || !in || !out)
141 return -EINVAL; 141 return -EINVAL;
142 142
143 if (alt->desc.bAlternateSetting != 0 143 if (alt->desc.bAlternateSetting != 0 ||
144 || !(dev->driver_info->flags & FLAG_NO_SETINT)) { 144 !(dev->driver_info->flags & FLAG_NO_SETINT)) {
145 tmp = usb_set_interface (dev->udev, alt->desc.bInterfaceNumber, 145 tmp = usb_set_interface (dev->udev, alt->desc.bInterfaceNumber,
146 alt->desc.bAlternateSetting); 146 alt->desc.bAlternateSetting);
147 if (tmp < 0) 147 if (tmp < 0)
@@ -351,9 +351,9 @@ static void rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
351 351
352 spin_lock_irqsave (&dev->rxq.lock, lockflags); 352 spin_lock_irqsave (&dev->rxq.lock, lockflags);
353 353
354 if (netif_running (dev->net) 354 if (netif_running (dev->net) &&
355 && netif_device_present (dev->net) 355 netif_device_present (dev->net) &&
356 && !test_bit (EVENT_RX_HALT, &dev->flags)) { 356 !test_bit (EVENT_RX_HALT, &dev->flags)) {
357 switch (retval = usb_submit_urb (urb, GFP_ATOMIC)) { 357 switch (retval = usb_submit_urb (urb, GFP_ATOMIC)) {
358 case -EPIPE: 358 case -EPIPE:
359 usbnet_defer_kevent (dev, EVENT_RX_HALT); 359 usbnet_defer_kevent (dev, EVENT_RX_HALT);
@@ -391,8 +391,8 @@ static void rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
391 391
392static inline void rx_process (struct usbnet *dev, struct sk_buff *skb) 392static inline void rx_process (struct usbnet *dev, struct sk_buff *skb)
393{ 393{
394 if (dev->driver_info->rx_fixup 394 if (dev->driver_info->rx_fixup &&
395 && !dev->driver_info->rx_fixup (dev, skb)) 395 !dev->driver_info->rx_fixup (dev, skb))
396 goto error; 396 goto error;
397 // else network stack removes extra byte if we forced a short packet 397 // else network stack removes extra byte if we forced a short packet
398 398
@@ -484,8 +484,8 @@ block:
484 defer_bh(dev, skb, &dev->rxq); 484 defer_bh(dev, skb, &dev->rxq);
485 485
486 if (urb) { 486 if (urb) {
487 if (netif_running (dev->net) 487 if (netif_running (dev->net) &&
488 && !test_bit (EVENT_RX_HALT, &dev->flags)) { 488 !test_bit (EVENT_RX_HALT, &dev->flags)) {
489 rx_submit (dev, urb, GFP_ATOMIC); 489 rx_submit (dev, urb, GFP_ATOMIC);
490 return; 490 return;
491 } 491 }
@@ -649,9 +649,9 @@ int usbnet_stop (struct net_device *net)
649 unlink_urbs(dev, &dev->rxq); 649 unlink_urbs(dev, &dev->rxq);
650 650
651 /* maybe wait for deletions to finish. */ 651 /* maybe wait for deletions to finish. */
652 while (!skb_queue_empty(&dev->rxq) 652 while (!skb_queue_empty(&dev->rxq) &&
653 && !skb_queue_empty(&dev->txq) 653 !skb_queue_empty(&dev->txq) &&
654 && !skb_queue_empty(&dev->done)) { 654 !skb_queue_empty(&dev->done)) {
655 msleep(UNLINK_TIMEOUT_MS); 655 msleep(UNLINK_TIMEOUT_MS);
656 if (netif_msg_ifdown(dev)) 656 if (netif_msg_ifdown(dev))
657 devdbg(dev, "waited for %d urb completions", 657 devdbg(dev, "waited for %d urb completions",
@@ -882,9 +882,9 @@ kevent (struct work_struct *work)
882 if (test_bit (EVENT_TX_HALT, &dev->flags)) { 882 if (test_bit (EVENT_TX_HALT, &dev->flags)) {
883 unlink_urbs (dev, &dev->txq); 883 unlink_urbs (dev, &dev->txq);
884 status = usb_clear_halt (dev->udev, dev->out); 884 status = usb_clear_halt (dev->udev, dev->out);
885 if (status < 0 885 if (status < 0 &&
886 && status != -EPIPE 886 status != -EPIPE &&
887 && status != -ESHUTDOWN) { 887 status != -ESHUTDOWN) {
888 if (netif_msg_tx_err (dev)) 888 if (netif_msg_tx_err (dev))
889 deverr (dev, "can't clear tx halt, status %d", 889 deverr (dev, "can't clear tx halt, status %d",
890 status); 890 status);
@@ -897,9 +897,9 @@ kevent (struct work_struct *work)
897 if (test_bit (EVENT_RX_HALT, &dev->flags)) { 897 if (test_bit (EVENT_RX_HALT, &dev->flags)) {
898 unlink_urbs (dev, &dev->rxq); 898 unlink_urbs (dev, &dev->rxq);
899 status = usb_clear_halt (dev->udev, dev->in); 899 status = usb_clear_halt (dev->udev, dev->in);
900 if (status < 0 900 if (status < 0 &&
901 && status != -EPIPE 901 status != -EPIPE &&
902 && status != -ESHUTDOWN) { 902 status != -ESHUTDOWN) {
903 if (netif_msg_rx_err (dev)) 903 if (netif_msg_rx_err (dev))
904 deverr (dev, "can't clear rx halt, status %d", 904 deverr (dev, "can't clear rx halt, status %d",
905 status); 905 status);
@@ -1126,10 +1126,10 @@ static void usbnet_bh (unsigned long param)
1126 } 1126 }
1127 1127
1128 // or are we maybe short a few urbs? 1128 // or are we maybe short a few urbs?
1129 } else if (netif_running (dev->net) 1129 } else if (netif_running (dev->net) &&
1130 && netif_device_present (dev->net) 1130 netif_device_present (dev->net) &&
1131 && !timer_pending (&dev->delay) 1131 !timer_pending (&dev->delay) &&
1132 && !test_bit (EVENT_RX_HALT, &dev->flags)) { 1132 !test_bit (EVENT_RX_HALT, &dev->flags)) {
1133 int temp = dev->rxq.qlen; 1133 int temp = dev->rxq.qlen;
1134 int qlen = RX_QLEN (dev); 1134 int qlen = RX_QLEN (dev);
1135 1135
@@ -1297,8 +1297,8 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
1297 // heuristic: "usb%d" for links we know are two-host, 1297 // heuristic: "usb%d" for links we know are two-host,
1298 // else "eth%d" when there's reasonable doubt. userspace 1298 // else "eth%d" when there's reasonable doubt. userspace
1299 // can rename the link if it knows better. 1299 // can rename the link if it knows better.
1300 if ((dev->driver_info->flags & FLAG_ETHER) != 0 1300 if ((dev->driver_info->flags & FLAG_ETHER) != 0 &&
1301 && (net->dev_addr [0] & 0x02) == 0) 1301 (net->dev_addr [0] & 0x02) == 0)
1302 strcpy (net->name, "eth%d"); 1302 strcpy (net->name, "eth%d");
1303 /* WLAN devices should always be named "wlan%d" */ 1303 /* WLAN devices should always be named "wlan%d" */
1304 if ((dev->driver_info->flags & FLAG_WLAN) != 0) 1304 if ((dev->driver_info->flags & FLAG_WLAN) != 0)
diff --git a/drivers/net/usb/zaurus.c b/drivers/net/usb/zaurus.c
index 04882c8f9bf1..3eb0b167b5b4 100644
--- a/drivers/net/usb/zaurus.c
+++ b/drivers/net/usb/zaurus.c
@@ -174,8 +174,8 @@ static int blan_mdlm_bind(struct usbnet *dev, struct usb_interface *intf)
174 goto bad_desc; 174 goto bad_desc;
175 } 175 }
176 /* expect bcdVersion 1.0, ignore */ 176 /* expect bcdVersion 1.0, ignore */
177 if (memcmp(&desc->bGUID, blan_guid, 16) 177 if (memcmp(&desc->bGUID, blan_guid, 16) &&
178 && memcmp(&desc->bGUID, safe_guid, 16) ) { 178 memcmp(&desc->bGUID, safe_guid, 16)) {
179 /* hey, this one might _really_ be MDLM! */ 179 /* hey, this one might _really_ be MDLM! */
180 dev_dbg(&intf->dev, "MDLM guid\n"); 180 dev_dbg(&intf->dev, "MDLM guid\n");
181 goto bad_desc; 181 goto bad_desc;
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
index ec94ddf01f56..593e01f64e9b 100644
--- a/drivers/net/via-rhine.c
+++ b/drivers/net/via-rhine.c
@@ -42,9 +42,9 @@ static int max_interrupt_work = 20;
42 42
43/* Set the copy breakpoint for the copy-only-tiny-frames scheme. 43/* Set the copy breakpoint for the copy-only-tiny-frames scheme.
44 Setting to > 1518 effectively disables this feature. */ 44 Setting to > 1518 effectively disables this feature. */
45#if defined(__alpha__) || defined(__arm__) || defined(__hppa__) \ 45#if defined(__alpha__) || defined(__arm__) || defined(__hppa__) || \
46 || defined(CONFIG_SPARC) || defined(__ia64__) \ 46 defined(CONFIG_SPARC) || defined(__ia64__) || \
47 || defined(__sh__) || defined(__mips__) 47 defined(__sh__) || defined(__mips__)
48static int rx_copybreak = 1518; 48static int rx_copybreak = 1518;
49#else 49#else
50static int rx_copybreak; 50static int rx_copybreak;
@@ -1683,8 +1683,8 @@ static void rhine_set_rx_mode(struct net_device *dev)
1683 rx_mode = 0x1C; 1683 rx_mode = 0x1C;
1684 iowrite32(0xffffffff, ioaddr + MulticastFilter0); 1684 iowrite32(0xffffffff, ioaddr + MulticastFilter0);
1685 iowrite32(0xffffffff, ioaddr + MulticastFilter1); 1685 iowrite32(0xffffffff, ioaddr + MulticastFilter1);
1686 } else if ((dev->mc_count > multicast_filter_limit) 1686 } else if ((dev->mc_count > multicast_filter_limit) ||
1687 || (dev->flags & IFF_ALLMULTI)) { 1687 (dev->flags & IFF_ALLMULTI)) {
1688 /* Too many to match, or accept all multicasts. */ 1688 /* Too many to match, or accept all multicasts. */
1689 iowrite32(0xffffffff, ioaddr + MulticastFilter0); 1689 iowrite32(0xffffffff, ioaddr + MulticastFilter0);
1690 iowrite32(0xffffffff, ioaddr + MulticastFilter1); 1690 iowrite32(0xffffffff, ioaddr + MulticastFilter1);
diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
index d4eac2a14427..4ceb441f2687 100644
--- a/drivers/net/via-velocity.c
+++ b/drivers/net/via-velocity.c
@@ -895,8 +895,8 @@ static int velocity_set_media_mode(struct velocity_info *vptr, u32 mii_status)
895 895
896 /* 896 /*
897 Check if new status is consisent with current status 897 Check if new status is consisent with current status
898 if (((mii_status & curr_status) & VELOCITY_AUTONEG_ENABLE) 898 if (((mii_status & curr_status) & VELOCITY_AUTONEG_ENABLE) ||
899 || (mii_status==curr_status)) { 899 (mii_status==curr_status)) {
900 vptr->mii_status=mii_check_media_mode(vptr->mac_regs); 900 vptr->mii_status=mii_check_media_mode(vptr->mac_regs);
901 vptr->mii_status=check_connection_type(vptr->mac_regs); 901 vptr->mii_status=check_connection_type(vptr->mac_regs);
902 VELOCITY_PRT(MSG_LEVEL_INFO, "Velocity link no change\n"); 902 VELOCITY_PRT(MSG_LEVEL_INFO, "Velocity link no change\n");
@@ -1132,8 +1132,8 @@ static void velocity_set_multi(struct net_device *dev)
1132 writel(0xffffffff, &regs->MARCAM[0]); 1132 writel(0xffffffff, &regs->MARCAM[0]);
1133 writel(0xffffffff, &regs->MARCAM[4]); 1133 writel(0xffffffff, &regs->MARCAM[4]);
1134 rx_mode = (RCR_AM | RCR_AB | RCR_PROM); 1134 rx_mode = (RCR_AM | RCR_AB | RCR_PROM);
1135 } else if ((dev->mc_count > vptr->multicast_limit) 1135 } else if ((dev->mc_count > vptr->multicast_limit) ||
1136 || (dev->flags & IFF_ALLMULTI)) { 1136 (dev->flags & IFF_ALLMULTI)) {
1137 writel(0xffffffff, &regs->MARCAM[0]); 1137 writel(0xffffffff, &regs->MARCAM[0]);
1138 writel(0xffffffff, &regs->MARCAM[4]); 1138 writel(0xffffffff, &regs->MARCAM[4]);
1139 rx_mode = (RCR_AM | RCR_AB); 1139 rx_mode = (RCR_AM | RCR_AB);
@@ -1936,8 +1936,8 @@ static int velocity_tx_srv(struct velocity_info *vptr, u32 status)
1936 * Look to see if we should kick the transmit network 1936 * Look to see if we should kick the transmit network
1937 * layer for more work. 1937 * layer for more work.
1938 */ 1938 */
1939 if (netif_queue_stopped(vptr->dev) && (full == 0) 1939 if (netif_queue_stopped(vptr->dev) && (full == 0) &&
1940 && (!(vptr->mii_status & VELOCITY_LINK_FAIL))) { 1940 (!(vptr->mii_status & VELOCITY_LINK_FAIL))) {
1941 netif_wake_queue(vptr->dev); 1941 netif_wake_queue(vptr->dev);
1942 } 1942 }
1943 return works; 1943 return works;
@@ -2584,8 +2584,8 @@ static netdev_tx_t velocity_xmit(struct sk_buff *skb,
2584 /* 2584 /*
2585 * Handle hardware checksum 2585 * Handle hardware checksum
2586 */ 2586 */
2587 if ( (dev->features & NETIF_F_IP_CSUM) 2587 if ((dev->features & NETIF_F_IP_CSUM) &&
2588 && (skb->ip_summed == CHECKSUM_PARTIAL)) { 2588 (skb->ip_summed == CHECKSUM_PARTIAL)) {
2589 const struct iphdr *ip = ip_hdr(skb); 2589 const struct iphdr *ip = ip_hdr(skb);
2590 if (ip->protocol == IPPROTO_TCP) 2590 if (ip->protocol == IPPROTO_TCP)
2591 td_ptr->tdesc1.TCR |= TCR0_TCPCK; 2591 td_ptr->tdesc1.TCR |= TCR0_TCPCK;
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 74636c5c41f0..c708ecc3cb2e 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -428,8 +428,8 @@ again:
428 /* Out of packets? */ 428 /* Out of packets? */
429 if (received < budget) { 429 if (received < budget) {
430 napi_complete(napi); 430 napi_complete(napi);
431 if (unlikely(!vi->rvq->vq_ops->enable_cb(vi->rvq)) 431 if (unlikely(!vi->rvq->vq_ops->enable_cb(vi->rvq)) &&
432 && napi_schedule_prep(napi)) { 432 napi_schedule_prep(napi)) {
433 vi->rvq->vq_ops->disable_cb(vi->rvq); 433 vi->rvq->vq_ops->disable_cb(vi->rvq);
434 __napi_schedule(napi); 434 __napi_schedule(napi);
435 goto again; 435 goto again;
@@ -890,9 +890,9 @@ static int virtnet_probe(struct virtio_device *vdev)
890 INIT_DELAYED_WORK(&vi->refill, refill_work); 890 INIT_DELAYED_WORK(&vi->refill, refill_work);
891 891
892 /* If we can receive ANY GSO packets, we must allocate large ones. */ 892 /* If we can receive ANY GSO packets, we must allocate large ones. */
893 if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO4) 893 if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO4) ||
894 || virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO6) 894 virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO6) ||
895 || virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_ECN)) 895 virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_ECN))
896 vi->big_packets = true; 896 vi->big_packets = true;
897 897
898 if (virtio_has_feature(vdev, VIRTIO_NET_F_MRG_RXBUF)) 898 if (virtio_has_feature(vdev, VIRTIO_NET_F_MRG_RXBUF))
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
index a4c97e786ee5..1ceb9d0f8b97 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -1780,8 +1780,8 @@ vmxnet3_setup_driver_shared(struct vmxnet3_adapter *adapter)
1780 set_flag_le64(&devRead->misc.uptFeatures, UPT1_F_LRO); 1780 set_flag_le64(&devRead->misc.uptFeatures, UPT1_F_LRO);
1781 devRead->misc.maxNumRxSG = cpu_to_le16(1 + MAX_SKB_FRAGS); 1781 devRead->misc.maxNumRxSG = cpu_to_le16(1 + MAX_SKB_FRAGS);
1782 } 1782 }
1783 if ((adapter->netdev->features & NETIF_F_HW_VLAN_RX) 1783 if ((adapter->netdev->features & NETIF_F_HW_VLAN_RX) &&
1784 && adapter->vlan_grp) { 1784 adapter->vlan_grp) {
1785 set_flag_le64(&devRead->misc.uptFeatures, UPT1_F_RXVLAN); 1785 set_flag_le64(&devRead->misc.uptFeatures, UPT1_F_RXVLAN);
1786 } 1786 }
1787 1787
diff --git a/drivers/net/vxge/vxge-main.c b/drivers/net/vxge/vxge-main.c
index e21358e82c74..f1c4b2a1e867 100644
--- a/drivers/net/vxge/vxge-main.c
+++ b/drivers/net/vxge/vxge-main.c
@@ -2510,9 +2510,9 @@ static int vxge_add_isr(struct vxgedev *vdev)
2510 } 2510 }
2511 2511
2512 /* Point to next vpath handler */ 2512 /* Point to next vpath handler */
2513 if (((intr_idx + 1) % VXGE_HW_VPATH_MSIX_ACTIVE == 0) 2513 if (((intr_idx + 1) % VXGE_HW_VPATH_MSIX_ACTIVE == 0) &&
2514 && (vp_idx < (vdev->no_of_vpath - 1))) 2514 (vp_idx < (vdev->no_of_vpath - 1)))
2515 vp_idx++; 2515 vp_idx++;
2516 } 2516 }
2517 2517
2518 intr_cnt = vdev->max_vpath_supported * 2; 2518 intr_cnt = vdev->max_vpath_supported * 2;
diff --git a/drivers/net/vxge/vxge-traffic.c b/drivers/net/vxge/vxge-traffic.c
index 61ce754fa9d0..2c012f4ce465 100644
--- a/drivers/net/vxge/vxge-traffic.c
+++ b/drivers/net/vxge/vxge-traffic.c
@@ -1963,14 +1963,14 @@ enum vxge_hw_status __vxge_hw_vpath_alarm_process(
1963 val64 = readq(&vp_reg->asic_ntwk_vp_err_reg); 1963 val64 = readq(&vp_reg->asic_ntwk_vp_err_reg);
1964 1964
1965 if (((val64 & 1965 if (((val64 &
1966 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_FLT) && 1966 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_FLT) &&
1967 (!(val64 & 1967 (!(val64 &
1968 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_OK))) || 1968 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_OK))) ||
1969 ((val64 & 1969 ((val64 &
1970 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_FLT_OCCURR) 1970 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_FLT_OCCURR) &&
1971 && (!(val64 & 1971 (!(val64 &
1972 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_OK_OCCURR) 1972 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_OK_OCCURR)
1973 ))) { 1973 ))) {
1974 sw_stats->error_stats.network_sustained_fault++; 1974 sw_stats->error_stats.network_sustained_fault++;
1975 1975
1976 writeq( 1976 writeq(
@@ -1983,14 +1983,14 @@ enum vxge_hw_status __vxge_hw_vpath_alarm_process(
1983 } 1983 }
1984 1984
1985 if (((val64 & 1985 if (((val64 &
1986 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_OK) && 1986 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_OK) &&
1987 (!(val64 & 1987 (!(val64 &
1988 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_FLT))) || 1988 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_FLT))) ||
1989 ((val64 & 1989 ((val64 &
1990 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_OK_OCCURR) 1990 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_OK_OCCURR) &&
1991 && (!(val64 & 1991 (!(val64 &
1992 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_FLT_OCCURR) 1992 VXGE_HW_ASIC_NW_VP_ERR_REG_XMACJ_STN_FLT_OCCURR)
1993 ))) { 1993 ))) {
1994 1994
1995 sw_stats->error_stats.network_sustained_ok++; 1995 sw_stats->error_stats.network_sustained_ok++;
1996 1996
diff --git a/drivers/net/wan/farsync.c b/drivers/net/wan/farsync.c
index beda387f2fc7..9bc2e3649157 100644
--- a/drivers/net/wan/farsync.c
+++ b/drivers/net/wan/farsync.c
@@ -1346,8 +1346,8 @@ do_bottom_half_tx(struct fst_card_info *card)
1346 1346
1347 dev = port_to_dev(port); 1347 dev = port_to_dev(port);
1348 while (!(FST_RDB(card, txDescrRing[pi][port->txpos].bits) & 1348 while (!(FST_RDB(card, txDescrRing[pi][port->txpos].bits) &
1349 DMA_OWN) 1349 DMA_OWN) &&
1350 && !(card->dmatx_in_progress)) { 1350 !(card->dmatx_in_progress)) {
1351 /* 1351 /*
1352 * There doesn't seem to be a txdone event per-se 1352 * There doesn't seem to be a txdone event per-se
1353 * We seem to have to deduce it, by checking the DMA_OWN 1353 * We seem to have to deduce it, by checking the DMA_OWN
@@ -1379,8 +1379,8 @@ do_bottom_half_tx(struct fst_card_info *card)
1379 */ 1379 */
1380 FST_WRW(card, txDescrRing[pi][port->txpos].bcnt, 1380 FST_WRW(card, txDescrRing[pi][port->txpos].bcnt,
1381 cnv_bcnt(skb->len)); 1381 cnv_bcnt(skb->len));
1382 if ((skb->len < FST_MIN_DMA_LEN) 1382 if ((skb->len < FST_MIN_DMA_LEN) ||
1383 || (card->family == FST_FAMILY_TXP)) { 1383 (card->family == FST_FAMILY_TXP)) {
1384 /* Enqueue the packet with normal io */ 1384 /* Enqueue the packet with normal io */
1385 memcpy_toio(card->mem + 1385 memcpy_toio(card->mem +
1386 BUF_OFFSET(txBuffer[pi] 1386 BUF_OFFSET(txBuffer[pi]
@@ -2030,8 +2030,8 @@ fst_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
2030 /* Sanity check the parameters. We don't support partial writes 2030 /* Sanity check the parameters. We don't support partial writes
2031 * when going over the top 2031 * when going over the top
2032 */ 2032 */
2033 if (wrthdr.size > FST_MEMSIZE || wrthdr.offset > FST_MEMSIZE 2033 if (wrthdr.size > FST_MEMSIZE || wrthdr.offset > FST_MEMSIZE ||
2034 || wrthdr.size + wrthdr.offset > FST_MEMSIZE) { 2034 wrthdr.size + wrthdr.offset > FST_MEMSIZE) {
2035 return -ENXIO; 2035 return -ENXIO;
2036 } 2036 }
2037 2037
diff --git a/drivers/net/wan/pc300_drv.c b/drivers/net/wan/pc300_drv.c
index 79dabc557bd3..aec4d3955420 100644
--- a/drivers/net/wan/pc300_drv.c
+++ b/drivers/net/wan/pc300_drv.c
@@ -514,8 +514,8 @@ static int dma_buf_read(pc300_t * card, int ch, struct sk_buff *skb)
514 RX_BD_ADDR(ch, chan->rx_first_bd)); 514 RX_BD_ADDR(ch, chan->rx_first_bd));
515 while ((status = cpc_readb(&ptdescr->status)) & DST_OSB) { 515 while ((status = cpc_readb(&ptdescr->status)) & DST_OSB) {
516 nchar = cpc_readw(&ptdescr->len); 516 nchar = cpc_readw(&ptdescr->len);
517 if ((status & (DST_OVR | DST_CRC | DST_RBIT | DST_SHRT | DST_ABT)) 517 if ((status & (DST_OVR | DST_CRC | DST_RBIT | DST_SHRT | DST_ABT)) ||
518 || (nchar > BD_DEF_LEN)) { 518 (nchar > BD_DEF_LEN)) {
519 519
520 if (nchar > BD_DEF_LEN) 520 if (nchar > BD_DEF_LEN)
521 status |= DST_RBIT; 521 status |= DST_RBIT;
@@ -1428,8 +1428,7 @@ static void falc_update_stats(pc300_t * card, int ch)
1428 1428
1429 if (((conf->media == IF_IFACE_T1) && 1429 if (((conf->media == IF_IFACE_T1) &&
1430 (cpc_readb(falcbase + F_REG(FRS1, ch)) & FRS1_LLBAD) && 1430 (cpc_readb(falcbase + F_REG(FRS1, ch)) & FRS1_LLBAD) &&
1431 (!(cpc_readb(falcbase + F_REG(FRS1, ch)) & FRS1_PDEN))) 1431 (!(cpc_readb(falcbase + F_REG(FRS1, ch)) & FRS1_PDEN))) ||
1432 ||
1433 ((conf->media == IF_IFACE_E1) && 1432 ((conf->media == IF_IFACE_E1) &&
1434 (cpc_readb(falcbase + F_REG(RSP, ch)) & RSP_LLBAD))) { 1433 (cpc_readb(falcbase + F_REG(RSP, ch)) & RSP_LLBAD))) {
1435 pfalc->prbs = 2; 1434 pfalc->prbs = 2;
@@ -2285,8 +2284,8 @@ static void falc_e1_intr(pc300_t * card, int ch)
2285 if (gis & GIS_ISR1) { 2284 if (gis & GIS_ISR1) {
2286 isr1 = cpc_readb(falcbase + F_REG(FISR1, ch)); 2285 isr1 = cpc_readb(falcbase + F_REG(FISR1, ch));
2287 if (isr1 & FISR1_XMB) { 2286 if (isr1 & FISR1_XMB) {
2288 if ((pfalc->xmb_cause & 2) 2287 if ((pfalc->xmb_cause & 2) &&
2289 && pfalc->multiframe_mode) { 2288 pfalc->multiframe_mode) {
2290 if (cpc_readb (falcbase + F_REG(FRS0, ch)) & 2289 if (cpc_readb (falcbase + F_REG(FRS0, ch)) &
2291 (FRS0_LOS | FRS0_AIS | FRS0_LFA)) { 2290 (FRS0_LOS | FRS0_AIS | FRS0_LFA)) {
2292 cpc_writeb(falcbase + F_REG(XSP, ch), 2291 cpc_writeb(falcbase + F_REG(XSP, ch),
@@ -2639,9 +2638,9 @@ static int cpc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
2639 !(cpc_readb (scabase + M_REG(CTL, ch)) & CTL_DTR); 2638 !(cpc_readb (scabase + M_REG(CTL, ch)) & CTL_DTR);
2640 /* There is no DSR in HD64572 */ 2639 /* There is no DSR in HD64572 */
2641 } 2640 }
2642 if (!arg 2641 if (!arg ||
2643 || copy_to_user(arg, &pc300status, sizeof(pc300status_t))) 2642 copy_to_user(arg, &pc300status, sizeof(pc300status_t)))
2644 return -EINVAL; 2643 return -EINVAL;
2645 return 0; 2644 return 0;
2646 } 2645 }
2647 2646
diff --git a/drivers/net/wan/sbni.c b/drivers/net/wan/sbni.c
index 1cc24a45f003..25477b5cde47 100644
--- a/drivers/net/wan/sbni.c
+++ b/drivers/net/wan/sbni.c
@@ -195,9 +195,9 @@ static unsigned int netcard_portlist[ ] __initdata = {
195static inline int __init 195static inline int __init
196sbni_isa_probe( struct net_device *dev ) 196sbni_isa_probe( struct net_device *dev )
197{ 197{
198 if( dev->base_addr > 0x1ff 198 if( dev->base_addr > 0x1ff &&
199 && request_region( dev->base_addr, SBNI_IO_EXTENT, dev->name ) 199 request_region( dev->base_addr, SBNI_IO_EXTENT, dev->name ) &&
200 && sbni_probe1( dev, dev->base_addr, dev->irq ) ) 200 sbni_probe1( dev, dev->base_addr, dev->irq ) )
201 201
202 return 0; 202 return 0;
203 else { 203 else {
@@ -286,8 +286,8 @@ static int __init sbni_init(struct net_device *dev)
286 286
287 for( i = 0; netcard_portlist[ i ]; ++i ) { 287 for( i = 0; netcard_portlist[ i ]; ++i ) {
288 int ioaddr = netcard_portlist[ i ]; 288 int ioaddr = netcard_portlist[ i ];
289 if( request_region( ioaddr, SBNI_IO_EXTENT, dev->name ) 289 if( request_region( ioaddr, SBNI_IO_EXTENT, dev->name ) &&
290 && sbni_probe1( dev, ioaddr, 0 )) 290 sbni_probe1( dev, ioaddr, 0 ))
291 return 0; 291 return 0;
292 } 292 }
293 293
@@ -306,9 +306,9 @@ sbni_pci_probe( struct net_device *dev )
306 unsigned long pci_ioaddr; 306 unsigned long pci_ioaddr;
307 u16 subsys; 307 u16 subsys;
308 308
309 if( pdev->vendor != SBNI_PCI_VENDOR 309 if( pdev->vendor != SBNI_PCI_VENDOR &&
310 && pdev->device != SBNI_PCI_DEVICE ) 310 pdev->device != SBNI_PCI_DEVICE )
311 continue; 311 continue;
312 312
313 pci_ioaddr = pci_resource_start( pdev, 0 ); 313 pci_ioaddr = pci_resource_start( pdev, 0 );
314 pci_irq_line = pdev->irq; 314 pci_irq_line = pdev->irq;
@@ -977,8 +977,8 @@ check_fhdr( u32 ioaddr, u32 *framelen, u32 *frameno, u32 *ack,
977 *ack = *framelen & FRAME_ACK_MASK; 977 *ack = *framelen & FRAME_ACK_MASK;
978 *is_first = (*framelen & FRAME_FIRST) != 0; 978 *is_first = (*framelen & FRAME_FIRST) != 0;
979 979
980 if( (*framelen &= FRAME_LEN_MASK) < 6 980 if( (*framelen &= FRAME_LEN_MASK) < 6 ||
981 || *framelen > SBNI_MAX_FRAME - 3 ) 981 *framelen > SBNI_MAX_FRAME - 3 )
982 return 0; 982 return 0;
983 983
984 value = inb( ioaddr + DAT ); 984 value = inb( ioaddr + DAT );
@@ -1173,10 +1173,10 @@ sbni_open( struct net_device *dev )
1173 if( dev->base_addr < 0x400 ) { /* ISA only */ 1173 if( dev->base_addr < 0x400 ) { /* ISA only */
1174 struct net_device **p = sbni_cards; 1174 struct net_device **p = sbni_cards;
1175 for( ; *p && p < sbni_cards + SBNI_MAX_NUM_CARDS; ++p ) 1175 for( ; *p && p < sbni_cards + SBNI_MAX_NUM_CARDS; ++p )
1176 if( (*p)->irq == dev->irq 1176 if( (*p)->irq == dev->irq &&
1177 && ((*p)->base_addr == dev->base_addr + 4 1177 ((*p)->base_addr == dev->base_addr + 4 ||
1178 || (*p)->base_addr == dev->base_addr - 4) 1178 (*p)->base_addr == dev->base_addr - 4) &&
1179 && (*p)->flags & IFF_UP ) { 1179 (*p)->flags & IFF_UP ) {
1180 1180
1181 ((struct net_local *) (netdev_priv(*p))) 1181 ((struct net_local *) (netdev_priv(*p)))
1182 ->second = dev; 1182 ->second = dev;
diff --git a/drivers/net/wan/x25_asy.c b/drivers/net/wan/x25_asy.c
index 3c325d77939b..b9f520b7db6a 100644
--- a/drivers/net/wan/x25_asy.c
+++ b/drivers/net/wan/x25_asy.c
@@ -657,8 +657,8 @@ static void x25_asy_unesc(struct x25_asy *sl, unsigned char s)
657 657
658 switch (s) { 658 switch (s) {
659 case X25_END: 659 case X25_END:
660 if (!test_and_clear_bit(SLF_ERROR, &sl->flags) 660 if (!test_and_clear_bit(SLF_ERROR, &sl->flags) &&
661 && sl->rcount > 2) 661 sl->rcount > 2)
662 x25_asy_bump(sl); 662 x25_asy_bump(sl);
663 clear_bit(SLF_ESCAPE, &sl->flags); 663 clear_bit(SLF_ESCAPE, &sl->flags);
664 sl->rcount = 0; 664 sl->rcount = 0;
diff --git a/drivers/net/yellowfin.c b/drivers/net/yellowfin.c
index d831dfca0976..0f773a9a3ff2 100644
--- a/drivers/net/yellowfin.c
+++ b/drivers/net/yellowfin.c
@@ -944,8 +944,8 @@ static irqreturn_t yellowfin_interrupt(int irq, void *dev_instance)
944 dev_kfree_skb_irq(skb); 944 dev_kfree_skb_irq(skb);
945 yp->tx_skbuff[entry] = NULL; 945 yp->tx_skbuff[entry] = NULL;
946 } 946 }
947 if (yp->tx_full 947 if (yp->tx_full &&
948 && yp->cur_tx - yp->dirty_tx < TX_QUEUE_SIZE - 4) { 948 yp->cur_tx - yp->dirty_tx < TX_QUEUE_SIZE - 4) {
949 /* The ring is no longer full, clear tbusy. */ 949 /* The ring is no longer full, clear tbusy. */
950 yp->tx_full = 0; 950 yp->tx_full = 0;
951 netif_wake_queue(dev); 951 netif_wake_queue(dev);
@@ -1014,8 +1014,8 @@ static irqreturn_t yellowfin_interrupt(int irq, void *dev_instance)
1014 } 1014 }
1015#endif 1015#endif
1016 1016
1017 if (yp->tx_full 1017 if (yp->tx_full &&
1018 && yp->cur_tx - dirty_tx < TX_QUEUE_SIZE - 2) { 1018 yp->cur_tx - dirty_tx < TX_QUEUE_SIZE - 2) {
1019 /* The ring is no longer full, clear tbusy. */ 1019 /* The ring is no longer full, clear tbusy. */
1020 yp->tx_full = 0; 1020 yp->tx_full = 0;
1021 netif_wake_queue(dev); 1021 netif_wake_queue(dev);
diff --git a/drivers/net/znet.c b/drivers/net/znet.c
index a97d894d26fb..bc5ae0f6e934 100644
--- a/drivers/net/znet.c
+++ b/drivers/net/znet.c
@@ -697,8 +697,8 @@ static void znet_rx(struct net_device *dev)
697 the same area of the backwards links we now have. This allows us to 697 the same area of the backwards links we now have. This allows us to
698 pass packets to the upper layers in the order they were received -- 698 pass packets to the upper layers in the order they were received --
699 important for fast-path sequential operations. */ 699 important for fast-path sequential operations. */
700 while (znet->rx_start + cur_frame_end_offset != znet->rx_cur 700 while (znet->rx_start + cur_frame_end_offset != znet->rx_cur &&
701 && ++boguscount < 5) { 701 ++boguscount < 5) {
702 unsigned short hi_cnt, lo_cnt, hi_status, lo_status; 702 unsigned short hi_cnt, lo_cnt, hi_status, lo_status;
703 int count, status; 703 int count, status;
704 704