Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (36 commits)
[ATM]: Check IP header validity in mpc_send_packet
[IPV6]: IPV6_MULTICAST_IF setting is ignored on link-local connect()
[CONNECTOR]: Don't touch queue dev after decrement of ref count.
[SOCK]: Adds a rcu_dereference() in sk_filter
[XFRM]: xfrm_algo_clone() allocates too much memory
[FORCEDETH]: Fix reversing the MAC address on suspend.
[NET]: mcs7830 passes msecs instead of jiffies to usb_control_msg
[LRO] Fix lro_mgr->features checks
[NET]: Clone the sk_buff 'iif' field in __skb_clone()
[IPV4] ROUTE: ip_rt_dump() is unecessary slow
[NET]: kaweth was forgotten in msec switchover of usb_start_wait_urb
[NET] Intel ethernet drivers: update MAINTAINERS
[NET]: Make ->poll() breakout consistent in Intel ethernet drivers.
[NET]: Stop polling when napi_disable() is pending.
[NET]: Fix drivers to handle napi_disable() disabling interrupts.
[NETXEN]: Fix ->poll() done logic.
mac80211: return an error when SIWRATE doesn't match any rate
ssb: Fix probing of PCI cores if PCI and PCIE core is available
[NET]: Do not check netif_running() and carrier state in ->poll()
[NET]: Add NAPI_STATE_DISABLE.
...

+262 -248
+1
Documentation/nfsroot.txt
··· 145 145 this option. 146 146 147 147 off or none: don't use autoconfiguration 148 + (do static IP assignment instead) 148 149 on or any: use any protocol available in the kernel 149 150 (default) 150 151 dhcp: use DHCP
+8 -10
MAINTAINERS
··· 1984 1984 S: Maintained 1985 1985 1986 1986 INTEL PRO/100 ETHERNET SUPPORT 1987 - P: John Ronciak 1988 - M: john.ronciak@intel.com 1987 + P: Auke Kok 1988 + M: auke-jan.h.kok@intel.com 1989 1989 P: Jesse Brandeburg 1990 1990 M: jesse.brandeburg@intel.com 1991 1991 P: Jeff Kirsher 1992 1992 M: jeffrey.t.kirsher@intel.com 1993 - P: Auke Kok 1994 - M: auke-jan.h.kok@intel.com 1993 + P: John Ronciak 1994 + M: john.ronciak@intel.com 1995 1995 L: e1000-devel@lists.sourceforge.net 1996 1996 W: http://sourceforge.net/projects/e1000/ 1997 1997 S: Supported 1998 1998 1999 1999 INTEL PRO/1000 GIGABIT ETHERNET SUPPORT 2000 - P: Jeb Cramer 2001 - M: cramerj@intel.com 2002 - P: John Ronciak 2003 - M: john.ronciak@intel.com 2000 + P: Auke Kok 2001 + M: auke-jan.h.kok@intel.com 2004 2002 P: Jesse Brandeburg 2005 2003 M: jesse.brandeburg@intel.com 2006 2004 P: Jeff Kirsher 2007 2005 M: jeffrey.t.kirsher@intel.com 2008 - P: Auke Kok 2009 - M: auke-jan.h.kok@intel.com 2006 + P: John Ronciak 2007 + M: john.ronciak@intel.com 2010 2008 L: e1000-devel@lists.sourceforge.net 2011 2009 W: http://sourceforge.net/projects/e1000/ 2012 2010 S: Supported
+9 -10
drivers/atm/nicstar.c
··· 625 625 if (mac[i] == NULL) 626 626 nicstar_init_eprom(card->membase); 627 627 628 - if (request_irq(pcidev->irq, &ns_irq_handler, IRQF_DISABLED | IRQF_SHARED, "nicstar", card) != 0) 629 - { 630 - printk("nicstar%d: can't allocate IRQ %d.\n", i, pcidev->irq); 631 - error = 9; 632 - ns_init_card_error(card, error); 633 - return error; 634 - } 635 - 636 628 /* Set the VPI/VCI MSb mask to zero so we can receive OAM cells */ 637 629 writel(0x00000000, card->membase + VPM); 638 630 ··· 850 858 card->iovpool.count++; 851 859 } 852 860 853 - card->intcnt = 0; 854 - 855 861 /* Configure NICStAR */ 856 862 if (card->rct_size == 4096) 857 863 ns_cfg_rctsize = NS_CFG_RCTSIZE_4096_ENTRIES; ··· 857 867 ns_cfg_rctsize = NS_CFG_RCTSIZE_16384_ENTRIES; 858 868 859 869 card->efbie = 1; 870 + 871 + card->intcnt = 0; 872 + if (request_irq(pcidev->irq, &ns_irq_handler, IRQF_DISABLED | IRQF_SHARED, "nicstar", card) != 0) 873 + { 874 + printk("nicstar%d: can't allocate IRQ %d.\n", i, pcidev->irq); 875 + error = 9; 876 + ns_init_card_error(card, error); 877 + return error; 878 + } 860 879 861 880 /* Register device */ 862 881 card->atmdev = atm_dev_register("nicstar", &atm_ops, -1, NULL);
+1 -1
drivers/connector/cn_queue.c
··· 99 99 spin_unlock_bh(&dev->queue_lock); 100 100 101 101 if (found) { 102 - atomic_dec(&dev->refcnt); 103 102 cn_queue_free_callback(cbq); 103 + atomic_dec(&dev->refcnt); 104 104 return -EINVAL; 105 105 } 106 106
+3 -4
drivers/net/e100.c
··· 1991 1991 struct nic *nic = container_of(napi, struct nic, napi); 1992 1992 struct net_device *netdev = nic->netdev; 1993 1993 unsigned int work_done = 0; 1994 - int tx_cleaned; 1995 1994 1996 1995 e100_rx_clean(nic, &work_done, budget); 1997 - tx_cleaned = e100_tx_clean(nic); 1996 + e100_tx_clean(nic); 1998 1997 1999 - /* If no Rx and Tx cleanup work was done, exit polling mode. */ 2000 - if((!tx_cleaned && (work_done == 0)) || !netif_running(netdev)) { 1998 + /* If budget not fully consumed, exit the polling mode */ 1999 + if (work_done < budget) { 2001 2000 netif_rx_complete(netdev, napi); 2002 2001 e100_enable_irq(nic); 2003 2002 }
+5 -11
drivers/net/e1000/e1000_main.c
··· 3919 3919 { 3920 3920 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, napi); 3921 3921 struct net_device *poll_dev = adapter->netdev; 3922 - int tx_cleaned = 0, work_done = 0; 3922 + int work_done = 0; 3923 3923 3924 3924 /* Must NOT use netdev_priv macro here. */ 3925 3925 adapter = poll_dev->priv; 3926 - 3927 - /* Keep link state information with original netdev */ 3928 - if (!netif_carrier_ok(poll_dev)) 3929 - goto quit_polling; 3930 3926 3931 3927 /* e1000_clean is called per-cpu. This lock protects 3932 3928 * tx_ring[0] from being cleaned by multiple cpus 3933 3929 * simultaneously. A failure obtaining the lock means 3934 3930 * tx_ring[0] is currently being cleaned anyway. */ 3935 3931 if (spin_trylock(&adapter->tx_queue_lock)) { 3936 - tx_cleaned = e1000_clean_tx_irq(adapter, 3937 - &adapter->tx_ring[0]); 3932 + e1000_clean_tx_irq(adapter, 3933 + &adapter->tx_ring[0]); 3938 3934 spin_unlock(&adapter->tx_queue_lock); 3939 3935 } 3940 3936 3941 3937 adapter->clean_rx(adapter, &adapter->rx_ring[0], 3942 3938 &work_done, budget); 3943 3939 3944 - /* If no Tx and not enough Rx work done, exit the polling mode */ 3945 - if ((!tx_cleaned && (work_done == 0)) || 3946 - !netif_running(poll_dev)) { 3947 - quit_polling: 3940 + /* If budget not fully consumed, exit the polling mode */ 3941 + if (work_done < budget) { 3948 3942 if (likely(adapter->itr_setting & 3)) 3949 3943 e1000_set_itr(adapter); 3950 3944 netif_rx_complete(poll_dev, napi);
+4 -10
drivers/net/e1000e/netdev.c
··· 1384 1384 { 1385 1385 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, napi); 1386 1386 struct net_device *poll_dev = adapter->netdev; 1387 - int tx_cleaned = 0, work_done = 0; 1387 + int work_done = 0; 1388 1388 1389 1389 /* Must NOT use netdev_priv macro here. */ 1390 1390 adapter = poll_dev->priv; 1391 - 1392 - /* Keep link state information with original netdev */ 1393 - if (!netif_carrier_ok(poll_dev)) 1394 - goto quit_polling; 1395 1391 1396 1392 /* e1000_clean is called per-cpu. This lock protects 1397 1393 * tx_ring from being cleaned by multiple cpus 1398 1394 * simultaneously. A failure obtaining the lock means 1399 1395 * tx_ring is currently being cleaned anyway. */ 1400 1396 if (spin_trylock(&adapter->tx_queue_lock)) { 1401 - tx_cleaned = e1000_clean_tx_irq(adapter); 1397 + e1000_clean_tx_irq(adapter); 1402 1398 spin_unlock(&adapter->tx_queue_lock); 1403 1399 } 1404 1400 1405 1401 adapter->clean_rx(adapter, &work_done, budget); 1406 1402 1407 - /* If no Tx and not enough Rx work done, exit the polling mode */ 1408 - if ((!tx_cleaned && (work_done < budget)) || 1409 - !netif_running(poll_dev)) { 1410 - quit_polling: 1403 + /* If budget not fully consumed, exit the polling mode */ 1404 + if (work_done < budget) { 1411 1405 if (adapter->itr_setting & 3) 1412 1406 e1000_set_itr(adapter); 1413 1407 netif_rx_complete(poll_dev, napi);
+1 -1
drivers/net/epic100.c
··· 1273 1273 1274 1274 epic_rx_err(dev, ep); 1275 1275 1276 - if (netif_running(dev) && (work_done < budget)) { 1276 + if (work_done < budget) { 1277 1277 unsigned long flags; 1278 1278 int more; 1279 1279
-5
drivers/net/fec_8xx/fec_main.c
··· 476 476 __u16 pkt_len, sc; 477 477 int curidx; 478 478 479 - if (fpi->use_napi) { 480 - if (!netif_running(dev)) 481 - return 0; 482 - } 483 - 484 479 /* 485 480 * First, grab all of the stats for the incoming packet. 486 481 * These get messed up if we get called due to a busy condition.
+2 -4
drivers/net/forcedeth.c
··· 5199 5199 dev->dev_addr[3] = (np->orig_mac[0] >> 16) & 0xff; 5200 5200 dev->dev_addr[4] = (np->orig_mac[0] >> 8) & 0xff; 5201 5201 dev->dev_addr[5] = (np->orig_mac[0] >> 0) & 0xff; 5202 - /* set permanent address to be correct aswell */ 5203 - np->orig_mac[0] = (dev->dev_addr[0] << 0) + (dev->dev_addr[1] << 8) + 5204 - (dev->dev_addr[2] << 16) + (dev->dev_addr[3] << 24); 5205 - np->orig_mac[1] = (dev->dev_addr[4] << 0) + (dev->dev_addr[5] << 8); 5206 5202 writel(txreg|NVREG_TRANSMITPOLL_MAC_ADDR_REV, base + NvRegTransmitPoll); 5207 5203 } 5208 5204 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len); ··· 5410 5414 */ 5411 5415 writel(np->orig_mac[0], base + NvRegMacAddrA); 5412 5416 writel(np->orig_mac[1], base + NvRegMacAddrB); 5417 + writel(readl(base + NvRegTransmitPoll) & ~NVREG_TRANSMITPOLL_MAC_ADDR_REV, 5418 + base + NvRegTransmitPoll); 5413 5419 5414 5420 /* free all structures */ 5415 5421 free_rings(dev);
-3
drivers/net/fs_enet/fs_enet-main.c
··· 96 96 u16 pkt_len, sc; 97 97 int curidx; 98 98 99 - if (!netif_running(dev)) 100 - return 0; 101 - 102 99 /* 103 100 * First, grab all of the stats for the incoming packet. 104 101 * These get messed up if we get called due to a busy condition.
+3 -4
drivers/net/ixgb/ixgb_main.c
··· 1787 1787 { 1788 1788 struct ixgb_adapter *adapter = container_of(napi, struct ixgb_adapter, napi); 1789 1789 struct net_device *netdev = adapter->netdev; 1790 - int tx_cleaned; 1791 1790 int work_done = 0; 1792 1791 1793 - tx_cleaned = ixgb_clean_tx_irq(adapter); 1792 + ixgb_clean_tx_irq(adapter); 1794 1793 ixgb_clean_rx_irq(adapter, &work_done, budget); 1795 1794 1796 - /* if no Tx and not enough Rx work done, exit the polling mode */ 1797 - if((!tx_cleaned && (work_done == 0)) || !netif_running(netdev)) { 1795 + /* If budget not fully consumed, exit the polling mode */ 1796 + if (work_done < budget) { 1798 1797 netif_rx_complete(netdev, napi); 1799 1798 ixgb_irq_enable(adapter); 1800 1799 }
+4 -10
drivers/net/ixgbe/ixgbe_main.c
··· 1468 1468 struct ixgbe_adapter *adapter = container_of(napi, 1469 1469 struct ixgbe_adapter, napi); 1470 1470 struct net_device *netdev = adapter->netdev; 1471 - int tx_cleaned = 0, work_done = 0; 1472 - 1473 - /* Keep link state information with original netdev */ 1474 - if (!netif_carrier_ok(adapter->netdev)) 1475 - goto quit_polling; 1471 + int work_done = 0; 1476 1472 1477 1473 /* In non-MSIX case, there is no multi-Tx/Rx queue */ 1478 - tx_cleaned = ixgbe_clean_tx_irq(adapter, adapter->tx_ring); 1474 + ixgbe_clean_tx_irq(adapter, adapter->tx_ring); 1479 1475 ixgbe_clean_rx_irq(adapter, &adapter->rx_ring[0], &work_done, 1480 1476 budget); 1481 1477 1482 - /* If no Tx and not enough Rx work done, exit the polling mode */ 1483 - if ((!tx_cleaned && (work_done < budget)) || 1484 - !netif_running(adapter->netdev)) { 1485 - quit_polling: 1478 + /* If budget not fully consumed, exit the polling mode */ 1479 + if (work_done < budget) { 1486 1480 netif_rx_complete(netdev, napi); 1487 1481 ixgbe_irq_enable(adapter); 1488 1482 }
-2
drivers/net/ixp2000/ixpdev.c
··· 135 135 struct net_device *dev = ip->dev; 136 136 int rx; 137 137 138 - /* @@@ Have to stop polling when nds[0] is administratively 139 - * downed while we are polling. */ 140 138 rx = 0; 141 139 do { 142 140 ixp2000_reg_write(IXP2000_IRQ_THD_RAW_STATUS_A_0, 0x00ff);
+7 -3
drivers/net/meth.c
··· 95 95 { 96 96 int i; 97 97 DECLARE_MAC_BUF(mac); 98 + u64 macaddr; 98 99 99 - for (i = 0; i < 6; i++) 100 - dev->dev_addr[i] = o2meth_eaddr[i]; 101 100 DPRINTK("Loading MAC Address: %s\n", print_mac(mac, dev->dev_addr)); 102 - mace->eth.mac_addr = (*(unsigned long*)o2meth_eaddr) >> 16; 101 + macaddr = 0; 102 + for (i = 0; i < 6; i++) 103 + macaddr |= dev->dev_addr[i] << ((5 - i) * 8); 104 + 105 + mace->eth.mac_addr = macaddr; 103 106 } 104 107 105 108 /* ··· 797 794 #endif 798 795 dev->irq = MACE_ETHERNET_IRQ; 799 796 dev->base_addr = (unsigned long)&mace->eth; 797 + memcpy(dev->dev_addr, o2meth_eaddr, 6); 800 798 801 799 priv = netdev_priv(dev); 802 800 spin_lock_init(&priv->meth_lock);
+1 -1
drivers/net/myri10ge/myri10ge.c
··· 1239 1239 /* process as many rx events as NAPI will allow */ 1240 1240 work_done = myri10ge_clean_rx_done(mgp, budget); 1241 1241 1242 - if (work_done < budget || !netif_running(netdev)) { 1242 + if (work_done < budget) { 1243 1243 netif_rx_complete(netdev, napi); 1244 1244 put_be32(htonl(3), mgp->irq_claim); 1245 1245 }
+1 -1
drivers/net/natsemi.c
··· 2266 2266 /* Reenable interrupts providing nothing is trying to shut 2267 2267 * the chip down. */ 2268 2268 spin_lock(&np->lock); 2269 - if (!np->hands_off && netif_running(dev)) 2269 + if (!np->hands_off) 2270 2270 natsemi_irq_enable(dev); 2271 2271 spin_unlock(&np->lock); 2272 2272
+2 -2
drivers/net/netx-eth.c
··· 169 169 ndev->last_rx = jiffies; 170 170 skb->protocol = eth_type_trans(skb, ndev); 171 171 netif_rx(skb); 172 - dev->stats.rx_packets++; 173 - dev->stats.rx_bytes += len; 172 + ndev->stats.rx_packets++; 173 + ndev->stats.rx_bytes += len; 174 174 } 175 175 176 176 static irqreturn_t
+1 -1
drivers/net/netxen/netxen_nic_main.c
··· 1321 1321 budget / MAX_RCV_CTX); 1322 1322 } 1323 1323 1324 - if (work_done >= budget && netxen_nic_rx_has_work(adapter) != 0) 1324 + if (work_done >= budget) 1325 1325 done = 0; 1326 1326 1327 1327 if (netxen_process_cmd_ring((unsigned long)adapter) == 0)
+29 -14
drivers/net/niu.c
··· 33 33 34 34 #define DRV_MODULE_NAME "niu" 35 35 #define PFX DRV_MODULE_NAME ": " 36 - #define DRV_MODULE_VERSION "0.5" 37 - #define DRV_MODULE_RELDATE "October 5, 2007" 36 + #define DRV_MODULE_VERSION "0.6" 37 + #define DRV_MODULE_RELDATE "January 5, 2008" 38 38 39 39 static char version[] __devinitdata = 40 40 DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n"; ··· 2241 2241 skb->protocol = eth_type_trans(skb, np->dev); 2242 2242 netif_receive_skb(skb); 2243 2243 2244 + np->dev->last_rx = jiffies; 2245 + 2244 2246 return num_rcr; 2245 2247 } 2246 2248 ··· 2510 2508 u64 stat = nr64(RX_DMA_CTL_STAT(rp->rx_channel)); 2511 2509 int err = 0; 2512 2510 2513 - dev_err(np->device, PFX "%s: RX channel %u error, stat[%llx]\n", 2514 - np->dev->name, rp->rx_channel, (unsigned long long) stat); 2515 - 2516 - niu_log_rxchan_errors(np, rp, stat); 2517 2511 2518 2512 if (stat & (RX_DMA_CTL_STAT_CHAN_FATAL | 2519 2513 RX_DMA_CTL_STAT_PORT_FATAL)) 2520 2514 err = -EINVAL; 2515 + 2516 + if (err) { 2517 + dev_err(np->device, PFX "%s: RX channel %u error, stat[%llx]\n", 2518 + np->dev->name, rp->rx_channel, 2519 + (unsigned long long) stat); 2520 + 2521 + niu_log_rxchan_errors(np, rp, stat); 2522 + } 2521 2523 2522 2524 nw64(RX_DMA_CTL_STAT(rp->rx_channel), 2523 2525 stat & RX_DMA_CTL_WRITE_CLEAR_ERRS); ··· 2755 2749 return -ENODEV; 2756 2750 } 2757 2751 2758 - static int niu_slowpath_interrupt(struct niu *np, struct niu_ldg *lp) 2752 + static int niu_slowpath_interrupt(struct niu *np, struct niu_ldg *lp, 2753 + u64 v0, u64 v1, u64 v2) 2759 2754 { 2760 - u64 v0 = lp->v0; 2761 - u64 v1 = lp->v1; 2762 - u64 v2 = lp->v2; 2755 + 2763 2756 int i, err = 0; 2757 + 2758 + lp->v0 = v0; 2759 + lp->v1 = v1; 2760 + lp->v2 = v2; 2764 2761 2765 2762 if (v1 & 0x00000000ffffffffULL) { 2766 2763 u32 rx_vec = (v1 & 0xffffffff); ··· 2773 2764 2774 2765 if (rx_vec & (1 << rp->rx_channel)) { 2775 2766 int r = niu_rx_error(np, rp); 2776 - if (r) 2767 + if (r) { 2777 2768 err = r; 2769 + } else { 2770 + if (!v0) 2771 + nw64(RX_DMA_CTL_STAT(rp->rx_channel), 2772 + RX_DMA_CTL_STAT_MEX); 2773 + } 2778 2774 } 2779 2775 } 2780 2776 } ··· 2817 2803 if (err) 2818 2804 niu_enable_interrupts(np, 0); 2819 2805 2820 - return -EINVAL; 2806 + return err; 2821 2807 } 2822 2808 2823 2809 static void niu_rxchan_intr(struct niu *np, struct rx_ring_info *rp, ··· 2919 2905 } 2920 2906 2921 2907 if (unlikely((v0 & ((u64)1 << LDN_MIF)) || v1 || v2)) { 2922 - int err = niu_slowpath_interrupt(np, lp); 2908 + int err = niu_slowpath_interrupt(np, lp, v0, v1, v2); 2923 2909 if (err) 2924 2910 goto out; 2925 2911 } ··· 5208 5194 } 5209 5195 kfree_skb(skb); 5210 5196 skb = skb_new; 5211 - } 5197 + } else 5198 + skb_orphan(skb); 5212 5199 5213 5200 align = ((unsigned long) skb->data & (16 - 1)); 5214 5201 headroom = align + sizeof(struct tx_pkt_hdr);
+5
drivers/net/pcnet32.c
··· 455 455 { 456 456 #ifdef CONFIG_PCNET32_NAPI 457 457 struct pcnet32_private *lp = netdev_priv(dev); 458 + ulong ioaddr = dev->base_addr; 459 + u16 val; 458 460 #endif 459 461 netif_wake_queue(dev); 460 462 #ifdef CONFIG_PCNET32_NAPI 463 + val = lp->a.read_csr(ioaddr, CSR3); 464 + val &= 0x00ff; 465 + lp->a.write_csr(ioaddr, CSR3, val); 461 466 napi_enable(&lp->napi); 462 467 #endif 463 468 }
+1 -6
drivers/net/qla3xxx.c
··· 2320 2320 unsigned long hw_flags; 2321 2321 struct ql3xxx_port_registers __iomem *port_regs = qdev->mem_map_registers; 2322 2322 2323 - if (!netif_carrier_ok(ndev)) 2324 - goto quit_polling; 2325 - 2326 2323 ql_tx_rx_clean(qdev, &tx_cleaned, &rx_cleaned, budget); 2327 2324 2328 - if (tx_cleaned + rx_cleaned != budget || 2329 - !netif_running(ndev)) { 2330 - quit_polling: 2325 + if (tx_cleaned + rx_cleaned != budget) { 2331 2326 spin_lock_irqsave(&qdev->hw_lock, hw_flags); 2332 2327 __netif_rx_complete(ndev, napi); 2333 2328 ql_update_small_bufq_prod_index(qdev);
+2
drivers/net/r8169.c
··· 2398 2398 rtl8169_irq_mask_and_ack(ioaddr); 2399 2399 2400 2400 #ifdef CONFIG_R8169_NAPI 2401 + tp->intr_mask = 0xffff; 2402 + RTL_W16(IntrMask, tp->intr_event); 2401 2403 napi_enable(&tp->napi); 2402 2404 #endif 2403 2405 }
-3
drivers/net/s2io.c
··· 2704 2704 struct XENA_dev_config __iomem *bar0 = nic->bar0; 2705 2705 int i; 2706 2706 2707 - if (!is_s2io_card_up(nic)) 2708 - return 0; 2709 - 2710 2707 mac_control = &nic->mac_control; 2711 2708 config = &nic->config; 2712 2709
+3
drivers/net/sky2.c
··· 1168 1168 TX_VLAN_TAG_OFF); 1169 1169 } 1170 1170 1171 + sky2_read32(hw, B0_Y2_SP_LISR); 1171 1172 napi_enable(&hw->napi); 1172 1173 netif_tx_unlock_bh(dev); 1173 1174 } ··· 2044 2043 err = sky2_rx_start(sky2); 2045 2044 sky2_write32(hw, B0_IMSK, imask); 2046 2045 2046 + sky2_read32(hw, B0_Y2_SP_LISR); 2047 2047 napi_enable(&hw->napi); 2048 2048 2049 2049 if (err) ··· 3863 3861 last = sky2_read16(hw, Y2_QADDR(rxqaddr[port], PREF_UNIT_PUT_IDX)), 3864 3862 sky2_read16(hw, Y2_QADDR(rxqaddr[port], PREF_UNIT_LAST_IDX))); 3865 3863 3864 + sky2_read32(hw, B0_Y2_SP_LISR); 3866 3865 napi_enable(&hw->napi); 3867 3866 return 0; 3868 3867 }
+2 -6
drivers/net/tulip/interrupt.c
··· 117 117 int received = 0; 118 118 #endif 119 119 120 - if (!netif_running(dev)) 121 - goto done; 122 - 123 120 #ifdef CONFIG_TULIP_NAPI_HW_MITIGATION 124 121 125 122 /* that one buffer is needed for mit activation; or might be a ··· 148 151 if (tulip_debug > 5) 149 152 printk(KERN_DEBUG "%s: In tulip_rx(), entry %d %8.8x.\n", 150 153 dev->name, entry, status); 151 - if (work_done++ >= budget) 154 + 155 + if (++work_done >= budget) 152 156 goto not_done; 153 157 154 158 if ((status & 0x38008300) != 0x0300) { ··· 257 259 * tomorrow (night 011029). If it will not fail, we won 258 260 * finally: amount of IO did not increase at all. */ 259 261 } while ((ioread32(tp->base_addr + CSR5) & RxIntr)); 260 - 261 - done: 262 262 263 263 #ifdef CONFIG_TULIP_NAPI_HW_MITIGATION 264 264
+1 -1
drivers/net/usb/kaweth.c
··· 70 70 #define KAWETH_TX_TIMEOUT (5 * HZ) 71 71 #define KAWETH_SCRATCH_SIZE 32 72 72 #define KAWETH_FIRMWARE_BUF_SIZE 4096 73 - #define KAWETH_CONTROL_TIMEOUT (30 * HZ) 73 + #define KAWETH_CONTROL_TIMEOUT (30000) 74 74 75 75 #define KAWETH_STATUS_BROKEN 0x0000001 76 76 #define KAWETH_STATUS_CLOSING 0x0000002
+2 -2
drivers/net/usb/mcs7830.c
··· 94 94 95 95 ret = usb_control_msg(xdev, usb_rcvctrlpipe(xdev, 0), MCS7830_RD_BREQ, 96 96 MCS7830_RD_BMREQ, 0x0000, index, data, 97 - size, msecs_to_jiffies(MCS7830_CTRL_TIMEOUT)); 97 + size, MCS7830_CTRL_TIMEOUT); 98 98 return ret; 99 99 } 100 100 ··· 105 105 106 106 ret = usb_control_msg(xdev, usb_sndctrlpipe(xdev, 0), MCS7830_WR_BREQ, 107 107 MCS7830_WR_BMREQ, 0x0000, index, data, 108 - size, msecs_to_jiffies(MCS7830_CTRL_TIMEOUT)); 108 + size, MCS7830_CTRL_TIMEOUT); 109 109 return ret; 110 110 } 111 111
+2
drivers/net/wireless/b43/b43.h
··· 273 273 #define B43_PHYTYPE_A 0x00 274 274 #define B43_PHYTYPE_B 0x01 275 275 #define B43_PHYTYPE_G 0x02 276 + #define B43_PHYTYPE_N 0x04 277 + #define B43_PHYTYPE_LP 0x05 276 278 277 279 /* PHYRegisters */ 278 280 #define B43_PHY_ILT_A_CTRL 0x0072
+4 -16
drivers/net/wireless/b43/main.h
··· 39 39 #define PAD_BYTES(nr_bytes) P4D_BYTES( __LINE__ , (nr_bytes)) 40 40 41 41 /* Lightweight function to convert a frequency (in Mhz) to a channel number. */ 42 - static inline u8 b43_freq_to_channel_a(int freq) 42 + static inline u8 b43_freq_to_channel_5ghz(int freq) 43 43 { 44 44 return ((freq - 5000) / 5); 45 45 } 46 - static inline u8 b43_freq_to_channel_bg(int freq) 46 + static inline u8 b43_freq_to_channel_2ghz(int freq) 47 47 { 48 48 u8 channel; 49 49 ··· 54 54 55 55 return channel; 56 56 } 57 - static inline u8 b43_freq_to_channel(struct b43_wldev *dev, int freq) 58 - { 59 - if (dev->phy.type == B43_PHYTYPE_A) 60 - return b43_freq_to_channel_a(freq); 61 - return b43_freq_to_channel_bg(freq); 62 - } 63 57 64 58 /* Lightweight function to convert a channel number to a frequency (in Mhz). */ 65 - static inline int b43_channel_to_freq_a(u8 channel) 59 + static inline int b43_channel_to_freq_5ghz(u8 channel) 66 60 { 67 61 return (5000 + (5 * channel)); 68 62 } 69 - static inline int b43_channel_to_freq_bg(u8 channel) 63 + static inline int b43_channel_to_freq_2ghz(u8 channel) 70 64 { 71 65 int freq; 72 66 ··· 70 76 freq = 2407 + (5 * channel); 71 77 72 78 return freq; 73 - } 74 - static inline int b43_channel_to_freq(struct b43_wldev *dev, u8 channel) 75 - { 76 - if (dev->phy.type == B43_PHYTYPE_A) 77 - return b43_channel_to_freq_a(channel); 78 - return b43_channel_to_freq_bg(channel); 79 79 } 80 80 81 81 static inline int b43_is_cck_rate(int rate)
+19 -8
drivers/net/wireless/b43/xmit.c
··· 531 531 switch (chanstat & B43_RX_CHAN_PHYTYPE) { 532 532 case B43_PHYTYPE_A: 533 533 status.phymode = MODE_IEEE80211A; 534 - status.freq = chanid; 535 - status.channel = b43_freq_to_channel_a(chanid); 536 - break; 537 - case B43_PHYTYPE_B: 538 - status.phymode = MODE_IEEE80211B; 539 - status.freq = chanid + 2400; 540 - status.channel = b43_freq_to_channel_bg(chanid + 2400); 534 + B43_WARN_ON(1); 535 + /* FIXME: We don't really know which value the "chanid" contains. 536 + * So the following assignment might be wrong. */ 537 + status.channel = chanid; 538 + status.freq = b43_channel_to_freq_5ghz(status.channel); 541 539 break; 542 540 case B43_PHYTYPE_G: 543 541 status.phymode = MODE_IEEE80211G; 542 + /* chanid is the radio channel cookie value as used 543 + * to tune the radio. */ 544 544 status.freq = chanid + 2400; 545 - status.channel = b43_freq_to_channel_bg(chanid + 2400); 545 + status.channel = b43_freq_to_channel_2ghz(status.freq); 546 + break; 547 + case B43_PHYTYPE_N: 548 + status.phymode = 0xDEAD /*FIXME MODE_IEEE80211N*/; 549 + /* chanid is the SHM channel cookie. Which is the plain 550 + * channel number in b43. */ 551 + status.channel = chanid; 552 + if (chanstat & B43_RX_CHAN_5GHZ) 553 + status.freq = b43_freq_to_channel_5ghz(status.freq); 554 + else 555 + status.freq = b43_freq_to_channel_2ghz(status.freq); 546 556 break; 547 557 default: 548 558 B43_WARN_ON(1); 559 + goto drop; 549 560 } 550 561 551 562 dev->stats.last_rx = jiffies;
+36 -29
drivers/net/wireless/b43/xmit.h
··· 142 142 } __attribute__ ((__packed__)); 143 143 144 144 /* PHY RX Status 0 */ 145 - #define B43_RX_PHYST0_GAINCTL 0x4000 /* Gain Control */ 146 - #define B43_RX_PHYST0_PLCPHCF 0x0200 147 - #define B43_RX_PHYST0_PLCPFV 0x0100 148 - #define B43_RX_PHYST0_SHORTPRMBL 0x0080 /* Received with Short Preamble */ 145 + #define B43_RX_PHYST0_GAINCTL 0x4000 /* Gain Control */ 146 + #define B43_RX_PHYST0_PLCPHCF 0x0200 147 + #define B43_RX_PHYST0_PLCPFV 0x0100 148 + #define B43_RX_PHYST0_SHORTPRMBL 0x0080 /* Received with Short Preamble */ 149 149 #define B43_RX_PHYST0_LCRS 0x0040 150 - #define B43_RX_PHYST0_ANT 0x0020 /* Antenna */ 151 - #define B43_RX_PHYST0_UNSRATE 0x0010 150 + #define B43_RX_PHYST0_ANT 0x0020 /* Antenna */ 151 + #define B43_RX_PHYST0_UNSRATE 0x0010 152 152 #define B43_RX_PHYST0_CLIP 0x000C 153 153 #define B43_RX_PHYST0_CLIP_SHIFT 2 154 - #define B43_RX_PHYST0_FTYPE 0x0003 /* Frame type */ 155 - #define B43_RX_PHYST0_CCK 0x0000 /* Frame type: CCK */ 156 - #define B43_RX_PHYST0_OFDM 0x0001 /* Frame type: OFDM */ 157 - #define B43_RX_PHYST0_PRE_N 0x0002 /* Pre-standard N-PHY frame */ 158 - #define B43_RX_PHYST0_STD_N 0x0003 /* Standard N-PHY frame */ 154 + #define B43_RX_PHYST0_FTYPE 0x0003 /* Frame type */ 155 + #define B43_RX_PHYST0_CCK 0x0000 /* Frame type: CCK */ 156 + #define B43_RX_PHYST0_OFDM 0x0001 /* Frame type: OFDM */ 157 + #define B43_RX_PHYST0_PRE_N 0x0002 /* Pre-standard N-PHY frame */ 158 + #define B43_RX_PHYST0_STD_N 0x0003 /* Standard N-PHY frame */ 159 159 160 160 /* PHY RX Status 2 */ 161 - #define B43_RX_PHYST2_LNAG 0xC000 /* LNA Gain */ 161 + #define B43_RX_PHYST2_LNAG 0xC000 /* LNA Gain */ 162 162 #define B43_RX_PHYST2_LNAG_SHIFT 14 163 - #define B43_RX_PHYST2_PNAG 0x3C00 /* PNA Gain */ 163 + #define B43_RX_PHYST2_PNAG 0x3C00 /* PNA Gain */ 164 164 #define B43_RX_PHYST2_PNAG_SHIFT 10 165 - #define B43_RX_PHYST2_FOFF 0x03FF /* F offset */ 165 + #define B43_RX_PHYST2_FOFF 0x03FF /* F offset */ 166 166 167 167 /* PHY RX Status 3 */ 168 - #define B43_RX_PHYST3_DIGG 0x1800 /* DIG Gain */ 168 + #define B43_RX_PHYST3_DIGG 0x1800 /* DIG Gain */ 169 169 #define B43_RX_PHYST3_DIGG_SHIFT 11 170 - #define B43_RX_PHYST3_TRSTATE 0x0400 /* TR state */ 170 + #define B43_RX_PHYST3_TRSTATE 0x0400 /* TR state */ 171 171 172 172 /* MAC RX Status */ 173 - #define B43_RX_MAC_BEACONSENT 0x00008000 /* Beacon send flag */ 174 - #define B43_RX_MAC_KEYIDX 0x000007E0 /* Key index */ 175 - #define B43_RX_MAC_KEYIDX_SHIFT 5 176 - #define B43_RX_MAC_DECERR 0x00000010 /* Decrypt error */ 177 - #define B43_RX_MAC_DEC 0x00000008 /* Decryption attempted */ 178 - #define B43_RX_MAC_PADDING 0x00000004 /* Pad bytes present */ 179 - #define B43_RX_MAC_RESP 0x00000002 /* Response frame transmitted */ 180 - #define B43_RX_MAC_FCSERR 0x00000001 /* FCS error */ 173 + #define B43_RX_MAC_RXST_VALID 0x01000000 /* PHY RXST valid */ 174 + #define B43_RX_MAC_TKIP_MICERR 0x00100000 /* TKIP MIC error */ 175 + #define B43_RX_MAC_TKIP_MICATT 0x00080000 /* TKIP MIC attempted */ 176 + #define B43_RX_MAC_AGGTYPE 0x00060000 /* Aggregation type */ 177 + #define B43_RX_MAC_AGGTYPE_SHIFT 17 178 + #define B43_RX_MAC_AMSDU 0x00010000 /* A-MSDU mask */ 179 + #define B43_RX_MAC_BEACONSENT 0x00008000 /* Beacon sent flag */ 180 + #define B43_RX_MAC_KEYIDX 0x000007E0 /* Key index */ 181 + #define B43_RX_MAC_KEYIDX_SHIFT 5 182 + #define B43_RX_MAC_DECERR 0x00000010 /* Decrypt error */ 183 + #define B43_RX_MAC_DEC 0x00000008 /* Decryption attempted */ 184 + #define B43_RX_MAC_PADDING 0x00000004 /* Pad bytes present */ 185 + #define B43_RX_MAC_RESP 0x00000002 /* Response frame transmitted */ 186 + #define B43_RX_MAC_FCSERR 0x00000001 /* FCS error */ 181 187 182 188 /* RX channel */ 183 - #define B43_RX_CHAN_GAIN 0xFC00 /* Gain */ 184 - #define B43_RX_CHAN_GAIN_SHIFT 10 185 - #define B43_RX_CHAN_ID 0x03FC /* Channel ID */ 186 - #define B43_RX_CHAN_ID_SHIFT 2 187 - #define B43_RX_CHAN_PHYTYPE 0x0003 /* PHY type */ 189 + #define B43_RX_CHAN_40MHZ 0x1000 /* 40 Mhz channel width */ 190 + #define B43_RX_CHAN_5GHZ 0x0800 /* 5 Ghz band */ 191 + #define B43_RX_CHAN_ID 0x07F8 /* Channel ID */ 192 + #define B43_RX_CHAN_ID_SHIFT 3 193 + #define B43_RX_CHAN_PHYTYPE 0x0007 /* PHY type */ 194 + 188 195 189 196 u8 b43_plcp_get_ratecode_cck(const u8 bitrate); 190 197 u8 b43_plcp_get_ratecode_ofdm(const u8 bitrate);
-5
drivers/net/xen-netfront.c
··· 852 852 853 853 spin_lock(&np->rx_lock); 854 854 855 - if (unlikely(!netif_carrier_ok(dev))) { 856 - spin_unlock(&np->rx_lock); 857 - return 0; 858 - } 859 - 860 855 skb_queue_head_init(&rxq); 861 856 skb_queue_head_init(&errq); 862 857 skb_queue_head_init(&tmpq);
+11
drivers/ssb/scan.c
··· 388 388 case SSB_DEV_PCI: 389 389 case SSB_DEV_PCIE: 390 390 #ifdef CONFIG_SSB_DRIVER_PCICORE 391 + if (bus->bustype == SSB_BUSTYPE_PCI) { 392 + /* Ignore PCI cores on PCI-E cards. 393 + * Ignore PCI-E cores on PCI cards. */ 394 + if (dev->id.coreid == SSB_DEV_PCI) { 395 + if (bus->host_pci->is_pcie) 396 + continue; 397 + } else { 398 + if (!bus->host_pci->is_pcie) 399 + continue; 400 + } 401 + } 391 402 if (bus->pcicore.dev) { 392 403 ssb_printk(KERN_WARNING PFX 393 404 "WARNING: Multiple PCI(E) cores found\n");
+13 -5
include/linux/netdevice.h
··· 319 319 enum 320 320 { 321 321 NAPI_STATE_SCHED, /* Poll is scheduled */ 322 + NAPI_STATE_DISABLE, /* Disable pending */ 322 323 }; 323 324 324 325 extern void FASTCALL(__napi_schedule(struct napi_struct *n)); 326 + 327 + static inline int napi_disable_pending(struct napi_struct *n) 328 + { 329 + return test_bit(NAPI_STATE_DISABLE, &n->state); 330 + } 325 331 326 332 /** 327 333 * napi_schedule_prep - check if napi can be scheduled ··· 335 329 * 336 330 * Test if NAPI routine is already running, and if not mark 337 331 * it as running. This is used as a condition variable 338 - * insure only one NAPI poll instance runs 332 + * insure only one NAPI poll instance runs. We also make 333 + * sure there is no pending NAPI disable. 339 334 */ 340 335 static inline int napi_schedule_prep(struct napi_struct *n) 341 336 { 342 - return !test_and_set_bit(NAPI_STATE_SCHED, &n->state); 337 + return !napi_disable_pending(n) && 338 + !test_and_set_bit(NAPI_STATE_SCHED, &n->state); 343 339 } 344 340 345 341 /** ··· 397 389 */ 398 390 static inline void napi_disable(struct napi_struct *n) 399 391 { 392 + set_bit(NAPI_STATE_DISABLE, &n->state); 400 393 while (test_and_set_bit(NAPI_STATE_SCHED, &n->state)) 401 394 msleep(1); 395 + clear_bit(NAPI_STATE_DISABLE, &n->state); 402 396 } 403 397 404 398 /** ··· 1278 1268 static inline int netif_rx_schedule_prep(struct net_device *dev, 1279 1269 struct napi_struct *napi) 1280 1270 { 1281 - return netif_running(dev) && napi_schedule_prep(napi); 1271 + return napi_schedule_prep(napi); 1282 1272 } 1283 1273 1284 1274 /* Add interface to tail of rx poll list. This assumes that _prep has ··· 1287 1277 static inline void __netif_rx_schedule(struct net_device *dev, 1288 1278 struct napi_struct *napi) 1289 1279 { 1290 - dev_hold(dev); 1291 1280 __napi_schedule(napi); 1292 1281 } 1293 1282 ··· 1317 1308 struct napi_struct *napi) 1318 1309 { 1319 1310 __napi_complete(napi); 1320 - dev_put(dev); 1321 1311 } 1322 1312 1323 1313 /* Remove interface from poll list: it must be in the poll list
-1
include/net/sch_generic.h
··· 325 325 n->tc_verd = SET_TC_VERD(n->tc_verd, 0); 326 326 n->tc_verd = CLR_TC_OK2MUNGE(n->tc_verd); 327 327 n->tc_verd = CLR_TC_MUNGED(n->tc_verd); 328 - n->iif = skb->iif; 329 328 } 330 329 return n; 331 330 }
+1 -1
include/net/sctp/user.h
··· 450 450 SCTP_SHUTDOWN_EVENT, 451 451 SCTP_PARTIAL_DELIVERY_EVENT, 452 452 SCTP_ADAPTATION_INDICATION, 453 - SCTP_AUTHENTICATION_EVENT, 453 + SCTP_AUTHENTICATION_INDICATION, 454 454 }; 455 455 456 456 /* Notification error codes used to fill up the error fields in some
+1 -1
include/net/sock.h
··· 944 944 return err; 945 945 946 946 rcu_read_lock_bh(); 947 - filter = sk->sk_filter; 947 + filter = rcu_dereference(sk->sk_filter); 948 948 if (filter) { 949 949 unsigned int pkt_len = sk_run_filter(skb, filter->insns, 950 950 filter->len);
+6 -1
include/net/xfrm.h
··· 1188 1188 return ret; 1189 1189 } 1190 1190 1191 + static inline int xfrm_alg_len(struct xfrm_algo *alg) 1192 + { 1193 + return sizeof(*alg) + ((alg->alg_key_len + 7) / 8); 1194 + } 1195 + 1191 1196 #ifdef CONFIG_XFRM_MIGRATE 1192 1197 static inline struct xfrm_algo *xfrm_algo_clone(struct xfrm_algo *orig) 1193 1198 { 1194 - return (struct xfrm_algo *)kmemdup(orig, sizeof(*orig) + orig->alg_key_len, GFP_KERNEL); 1199 + return kmemdup(orig, xfrm_alg_len(orig), GFP_KERNEL); 1195 1200 } 1196 1201 1197 1202 static inline void xfrm_states_put(struct xfrm_state **states, int n)
+7
net/atm/mpc.c
··· 542 542 if (eth->h_proto != htons(ETH_P_IP)) 543 543 goto non_ip; /* Multi-Protocol Over ATM :-) */ 544 544 545 + /* Weed out funny packets (e.g., AF_PACKET or raw). */ 546 + if (skb->len < ETH_HLEN + sizeof(struct iphdr)) 547 + goto non_ip; 548 + skb_set_network_header(skb, ETH_HLEN); 549 + if (skb->len < ETH_HLEN + ip_hdr(skb)->ihl * 4 || ip_hdr(skb)->ihl < 5) 550 + goto non_ip; 551 + 545 552 while (i < mpc->number_of_mps_macs) { 546 553 if (!compare_ether_addr(eth->h_dest, (mpc->mps_macs + i*ETH_ALEN))) 547 554 if ( send_via_shortcut(skb, mpc) == 0 ) /* try shortcut */
+6 -2
net/core/dev.c
··· 2207 2207 * still "owns" the NAPI instance and therefore can 2208 2208 * move the instance around on the list at-will. 2209 2209 */ 2210 - if (unlikely(work == weight)) 2211 - list_move_tail(&n->poll_list, list); 2210 + if (unlikely(work == weight)) { 2211 + if (unlikely(napi_disable_pending(n))) 2212 + __napi_complete(n); 2213 + else 2214 + list_move_tail(&n->poll_list, list); 2215 + } 2212 2216 2213 2217 netpoll_poll_unlock(have); 2214 2218 }
+6 -5
net/core/skbuff.c
··· 416 416 C(len); 417 417 C(data_len); 418 418 C(mac_len); 419 - n->cloned = 1; 420 419 n->hdr_len = skb->nohdr ? skb_headroom(skb) : skb->hdr_len; 420 + n->cloned = 1; 421 421 n->nohdr = 0; 422 422 n->destructor = NULL; 423 - C(truesize); 424 - atomic_set(&n->users, 1); 425 - C(head); 426 - C(data); 423 + C(iif); 427 424 C(tail); 428 425 C(end); 426 + C(head); 427 + C(data); 428 + C(truesize); 429 + atomic_set(&n->users, 1); 429 430 430 431 atomic_inc(&(skb_shinfo(skb)->dataref)); 431 432 skb->cloned = 1;
+8 -8
net/ipv4/inet_lro.c
··· 310 310 skb_shinfo(lro_desc->parent)->gso_size = lro_desc->mss; 311 311 312 312 if (lro_desc->vgrp) { 313 - if (test_bit(LRO_F_NAPI, &lro_mgr->features)) 313 + if (lro_mgr->features & LRO_F_NAPI) 314 314 vlan_hwaccel_receive_skb(lro_desc->parent, 315 315 lro_desc->vgrp, 316 316 lro_desc->vlan_tag); ··· 320 320 lro_desc->vlan_tag); 321 321 322 322 } else { 323 - if (test_bit(LRO_F_NAPI, &lro_mgr->features)) 323 + if (lro_mgr->features & LRO_F_NAPI) 324 324 netif_receive_skb(lro_desc->parent); 325 325 else 326 326 netif_rx(lro_desc->parent); ··· 352 352 goto out; 353 353 354 354 if ((skb->protocol == htons(ETH_P_8021Q)) 355 - && !test_bit(LRO_F_EXTRACT_VLAN_ID, &lro_mgr->features)) 355 + && !(lro_mgr->features & LRO_F_EXTRACT_VLAN_ID)) 356 356 vlan_hdr_len = VLAN_HLEN; 357 357 358 358 if (!lro_desc->active) { /* start new lro session */ ··· 474 474 goto out; 475 475 476 476 if ((skb->protocol == htons(ETH_P_8021Q)) 477 - && !test_bit(LRO_F_EXTRACT_VLAN_ID, &lro_mgr->features)) 477 + && !(lro_mgr->features & LRO_F_EXTRACT_VLAN_ID)) 478 478 vlan_hdr_len = VLAN_HLEN; 479 479 480 480 iph = (void *)(skb->data + vlan_hdr_len); ··· 516 516 void *priv) 517 517 { 518 518 if (__lro_proc_skb(lro_mgr, skb, NULL, 0, priv)) { 519 - if (test_bit(LRO_F_NAPI, &lro_mgr->features)) 519 + if (lro_mgr->features & LRO_F_NAPI) 520 520 netif_receive_skb(skb); 521 521 else 522 522 netif_rx(skb); ··· 531 531 void *priv) 532 532 { 533 533 if (__lro_proc_skb(lro_mgr, skb, vgrp, vlan_tag, priv)) { 534 - if (test_bit(LRO_F_NAPI, &lro_mgr->features)) 534 + if (lro_mgr->features & LRO_F_NAPI) 535 535 vlan_hwaccel_receive_skb(skb, vgrp, vlan_tag); 536 536 else 537 537 vlan_hwaccel_rx(skb, vgrp, vlan_tag); ··· 550 550 if (!skb) 551 551 return; 552 552 553 - if (test_bit(LRO_F_NAPI, &lro_mgr->features)) 553 + if (lro_mgr->features & LRO_F_NAPI) 554 554 netif_receive_skb(skb); 555 555 else 556 556 netif_rx(skb); ··· 570 570 if (!skb) 571 571 return; 572 572 573 - if (test_bit(LRO_F_NAPI, &lro_mgr->features)) 573 + if (lro_mgr->features & LRO_F_NAPI) 574 574 vlan_hwaccel_receive_skb(skb, vgrp, vlan_tag); 575 575 else 576 576 vlan_hwaccel_rx(skb, vgrp, vlan_tag);
+18 -4
net/ipv4/ipconfig.c
··· 1404 1404 return 1; 1405 1405 } 1406 1406 if (!strcmp(name, "off") || !strcmp(name, "none")) { 1407 - ic_enable = 0; 1408 - return 1; 1407 + return 0; 1409 1408 } 1410 1409 #ifdef CONFIG_IP_PNP_DHCP 1411 1410 else if (!strcmp(name, "dhcp")) { ··· 1441 1442 ic_set_manually = 1; 1442 1443 ic_enable = 1; 1443 1444 1445 + /* 1446 + * If any dhcp, bootp etc options are set, leave autoconfig on 1447 + * and skip the below static IP processing. 1448 + */ 1444 1449 if (ic_proto_name(addrs)) 1445 1450 return 1; 1446 1451 1447 - /* Parse the whole string */ 1452 + /* If no static IP is given, turn off autoconfig and bail. */ 1453 + if (*addrs == 0 || 1454 + strcmp(addrs, "off") == 0 || 1455 + strcmp(addrs, "none") == 0) { 1456 + ic_enable = 0; 1457 + return 1; 1458 + } 1459 + 1460 + /* Parse string for static IP assignment. */ 1448 1461 ip = addrs; 1449 1462 while (ip && *ip) { 1450 1463 if ((cp = strchr(ip, ':'))) ··· 1494 1483 strlcpy(user_dev_name, ip, sizeof(user_dev_name)); 1495 1484 break; 1496 1485 case 6: 1497 - ic_proto_name(ip); 1486 + if (ic_proto_name(ip) == 0 && 1487 + ic_myaddr == NONE) { 1488 + ic_enable = 0; 1489 + } 1498 1490 break; 1499 1491 } 1500 1492 }
+3 -1
net/ipv4/raw.c
··· 271 271 int hh_len; 272 272 struct iphdr *iph; 273 273 struct sk_buff *skb; 274 + unsigned int iphlen; 274 275 int err; 275 276 276 277 if (length > rt->u.dst.dev->mtu) { ··· 305 304 goto error_fault; 306 305 307 306 /* We don't modify invalid header */ 308 - if (length >= sizeof(*iph) && iph->ihl * 4U <= length) { 307 + iphlen = iph->ihl * 4; 308 + if (iphlen >= sizeof(*iph) && iphlen <= length) { 309 309 if (!iph->saddr) 310 310 iph->saddr = rt->rt_src; 311 311 iph->check = 0;
+4 -4
net/ipv4/route.c
··· 2626 2626 int idx, s_idx; 2627 2627 2628 2628 s_h = cb->args[0]; 2629 + if (s_h < 0) 2630 + s_h = 0; 2629 2631 s_idx = idx = cb->args[1]; 2630 - for (h = 0; h <= rt_hash_mask; h++) { 2631 - if (h < s_h) continue; 2632 - if (h > s_h) 2633 - s_idx = 0; 2632 + for (h = s_h; h <= rt_hash_mask; h++) { 2634 2633 rcu_read_lock_bh(); 2635 2634 for (rt = rcu_dereference(rt_hash_table[h].chain), idx = 0; rt; 2636 2635 rt = rcu_dereference(rt->u.dst.rt_next), idx++) { ··· 2646 2647 dst_release(xchg(&skb->dst, NULL)); 2647 2648 } 2648 2649 rcu_read_unlock_bh(); 2650 + s_idx = 0; 2649 2651 } 2650 2652 2651 2653 done:
+3 -3
net/ipv6/datagram.c
··· 123 123 goto out; 124 124 } 125 125 sk->sk_bound_dev_if = usin->sin6_scope_id; 126 - if (!sk->sk_bound_dev_if && 127 - (addr_type & IPV6_ADDR_MULTICAST)) 128 - fl.oif = np->mcast_oif; 129 126 } 127 + 128 + if (!sk->sk_bound_dev_if && (addr_type & IPV6_ADDR_MULTICAST)) 129 + sk->sk_bound_dev_if = np->mcast_oif; 130 130 131 131 /* Connect to link-local address requires an interface */ 132 132 if (!sk->sk_bound_dev_if) {
-2
net/irda/af_irda.c
··· 1118 1118 self->max_sdu_size_rx = TTP_SAR_UNBOUND; 1119 1119 break; 1120 1120 default: 1121 - IRDA_ERROR("%s: protocol not supported!\n", 1122 - __FUNCTION__); 1123 1121 return -ESOCKTNOSUPPORT; 1124 1122 } 1125 1123 break;
+3 -3
net/mac80211/ieee80211_ioctl.c
··· 591 591 sdata->bss->force_unicast_rateidx = -1; 592 592 if (rate->value < 0) 593 593 return 0; 594 - for (i=0; i< mode->num_rates; i++) { 594 + for (i=0; i < mode->num_rates; i++) { 595 595 struct ieee80211_rate *rates = &mode->rates[i]; 596 596 int this_rate = rates->rate; 597 597 ··· 599 599 sdata->bss->max_ratectrl_rateidx = i; 600 600 if (rate->fixed) 601 601 sdata->bss->force_unicast_rateidx = i; 602 - break; 602 + return 0; 603 603 } 604 604 } 605 - return 0; 605 + return -EINVAL; 606 606 } 607 607 608 608 static int ieee80211_ioctl_giwrate(struct net_device *dev,
+6
net/sctp/sm_make_chunk.c
··· 210 210 chunksize = sizeof(init) + addrs_len + SCTP_SAT_LEN(num_types); 211 211 chunksize += sizeof(ecap_param); 212 212 213 + if (sctp_prsctp_enable) 214 + chunksize += sizeof(prsctp_param); 215 + 213 216 /* ADDIP: Section 4.2.7: 214 217 * An implementation supporting this extension [ADDIP] MUST list 215 218 * the ASCONF,the ASCONF-ACK, and the AUTH chunks in its INIT and ··· 371 368 /* Tell peer that we'll do ECN only if peer advertised such cap. */ 372 369 if (asoc->peer.ecn_capable) 373 370 chunksize += sizeof(ecap_param); 371 + 372 + if (sctp_prsctp_enable) 373 + chunksize += sizeof(prsctp_param); 374 374 375 375 if (sctp_addip_enable) { 376 376 extensions[num_ext] = SCTP_CID_ASCONF;
-22
net/sctp/sm_statefuns.c
··· 1309 1309 new_asoc->c.initial_tsn = asoc->c.initial_tsn; 1310 1310 } 1311 1311 1312 - static void sctp_auth_params_populate(struct sctp_association *new_asoc, 1313 - const struct sctp_association *asoc) 1314 - { 1315 - /* Only perform this if AUTH extension is enabled */ 1316 - if (!sctp_auth_enable) 1317 - return; 1318 - 1319 - /* We need to provide the same parameter information as 1320 - * was in the original INIT. This means that we need to copy 1321 - * the HMACS, CHUNKS, and RANDOM parameter from the original 1322 - * assocaition. 1323 - */ 1324 - memcpy(new_asoc->c.auth_random, asoc->c.auth_random, 1325 - sizeof(asoc->c.auth_random)); 1326 - memcpy(new_asoc->c.auth_hmacs, asoc->c.auth_hmacs, 1327 - sizeof(asoc->c.auth_hmacs)); 1328 - memcpy(new_asoc->c.auth_chunks, asoc->c.auth_chunks, 1329 - sizeof(asoc->c.auth_chunks)); 1330 - } 1331 - 1332 1312 /* 1333 1313 * Compare vtag/tietag values to determine unexpected COOKIE-ECHO 1334 1314 * handling action. ··· 1465 1485 } 1466 1486 1467 1487 sctp_tietags_populate(new_asoc, asoc); 1468 - 1469 - sctp_auth_params_populate(new_asoc, asoc); 1470 1488 1471 1489 /* B) "Z" shall respond immediately with an INIT ACK chunk. */ 1472 1490
+1 -1
net/sctp/ulpevent.c
··· 830 830 ak = (struct sctp_authkey_event *) 831 831 skb_put(skb, sizeof(struct sctp_authkey_event)); 832 832 833 - ak->auth_type = SCTP_AUTHENTICATION_EVENT; 833 + ak->auth_type = SCTP_AUTHENTICATION_INDICATION; 834 834 ak->auth_flags = 0; 835 835 ak->auth_length = sizeof(struct sctp_authkey_event); 836 836
+6 -11
net/xfrm/xfrm_user.c
··· 31 31 #include <linux/in6.h> 32 32 #endif 33 33 34 - static inline int alg_len(struct xfrm_algo *alg) 35 - { 36 - return sizeof(*alg) + ((alg->alg_key_len + 7) / 8); 37 - } 38 - 39 34 static int verify_one_alg(struct nlattr **attrs, enum xfrm_attr_type_t type) 40 35 { 41 36 struct nlattr *rt = attrs[type]; ··· 40 45 return 0; 41 46 42 47 algp = nla_data(rt); 43 - if (nla_len(rt) < alg_len(algp)) 48 + if (nla_len(rt) < xfrm_alg_len(algp)) 44 49 return -EINVAL; 45 50 46 51 switch (type) { ··· 199 204 return -ENOSYS; 200 205 *props = algo->desc.sadb_alg_id; 201 206 202 - p = kmemdup(ualg, alg_len(ualg), GFP_KERNEL); 207 + p = kmemdup(ualg, xfrm_alg_len(ualg), GFP_KERNEL); 203 208 if (!p) 204 209 return -ENOMEM; 205 210 ··· 511 516 NLA_PUT_U64(skb, XFRMA_LASTUSED, x->lastused); 512 517 513 518 if (x->aalg) 514 - NLA_PUT(skb, XFRMA_ALG_AUTH, alg_len(x->aalg), x->aalg); 519 + NLA_PUT(skb, XFRMA_ALG_AUTH, xfrm_alg_len(x->aalg), x->aalg); 515 520 if (x->ealg) 516 - NLA_PUT(skb, XFRMA_ALG_CRYPT, alg_len(x->ealg), x->ealg); 521 + NLA_PUT(skb, XFRMA_ALG_CRYPT, xfrm_alg_len(x->ealg), x->ealg); 517 522 if (x->calg) 518 523 NLA_PUT(skb, XFRMA_ALG_COMP, sizeof(*(x->calg)), x->calg); 519 524 ··· 1973 1978 { 1974 1979 size_t l = 0; 1975 1980 if (x->aalg) 1976 - l += nla_total_size(alg_len(x->aalg)); 1981 + l += nla_total_size(xfrm_alg_len(x->aalg)); 1977 1982 if (x->ealg) 1978 - l += nla_total_size(alg_len(x->ealg)); 1983 + l += nla_total_size(xfrm_alg_len(x->ealg)); 1979 1984 if (x->calg) 1980 1985 l += nla_total_size(sizeof(*x->calg)); 1981 1986 if (x->encap)