Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

Conflicts:
net/ipv4/ip_output.c

+116 -66
+2
drivers/net/Kconfig
··· 2755 2755 config NETXEN_NIC 2756 2756 tristate "NetXen Multi port (1/10) Gigabit Ethernet NIC" 2757 2757 depends on PCI 2758 + select FW_LOADER 2758 2759 help 2759 2760 This enables the support for NetXen's Gigabit Ethernet card. 2760 2761 ··· 2821 2820 config QLCNIC 2822 2821 tristate "QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support" 2823 2822 depends on PCI 2823 + select FW_LOADER 2824 2824 help 2825 2825 This driver supports QLogic QLE8240 and QLE8242 Converged Ethernet 2826 2826 devices.
+4 -7
drivers/net/bnx2.c
··· 3086 3086 u16 hw_cons, sw_cons, sw_ring_cons, sw_prod, sw_ring_prod; 3087 3087 struct l2_fhdr *rx_hdr; 3088 3088 int rx_pkt = 0, pg_ring_used = 0; 3089 - struct pci_dev *pdev = bp->pdev; 3090 3089 3091 3090 hw_cons = bnx2_get_hw_rx_cons(bnapi); 3092 3091 sw_cons = rxr->rx_cons; ··· 3111 3112 skb = rx_buf->skb; 3112 3113 prefetchw(skb); 3113 3114 3114 - if (!get_dma_ops(&pdev->dev)->sync_single_for_cpu) { 3115 - next_rx_buf = 3116 - &rxr->rx_buf_ring[ 3117 - RX_RING_IDX(NEXT_RX_BD(sw_cons))]; 3118 - prefetch(next_rx_buf->desc); 3119 - } 3115 + next_rx_buf = 3116 + &rxr->rx_buf_ring[RX_RING_IDX(NEXT_RX_BD(sw_cons))]; 3117 + prefetch(next_rx_buf->desc); 3118 + 3120 3119 rx_buf->skb = NULL; 3121 3120 3122 3121 dma_addr = dma_unmap_addr(rx_buf, mapping);
+34 -21
drivers/net/cnic.c
··· 3925 3925 HC_INDEX_DEF_C_ETH_ISCSI_CQ_CONS; 3926 3926 context->cstorm_st_context.status_block_id = BNX2X_DEF_SB_ID; 3927 3927 3928 - context->xstorm_st_context.statistics_data = (cli | 3929 - XSTORM_ETH_ST_CONTEXT_STATISTICS_ENABLE); 3928 + if (cli < MAX_X_STAT_COUNTER_ID) 3929 + context->xstorm_st_context.statistics_data = cli | 3930 + XSTORM_ETH_ST_CONTEXT_STATISTICS_ENABLE; 3930 3931 3931 3932 context->xstorm_ag_context.cdu_reserved = 3932 3933 CDU_RSRVD_VALUE_TYPE_A(BNX2X_HW_CID(BNX2X_ISCSI_L2_CID, func), ··· 3935 3934 ETH_CONNECTION_TYPE); 3936 3935 3937 3936 /* reset xstorm per client statistics */ 3938 - val = BAR_XSTRORM_INTMEM + 3939 - XSTORM_PER_COUNTER_ID_STATS_OFFSET(port, cli); 3940 - for (i = 0; i < sizeof(struct xstorm_per_client_stats) / 4; i++) 3941 - CNIC_WR(dev, val + i * 4, 0); 3937 + if (cli < MAX_X_STAT_COUNTER_ID) { 3938 + val = BAR_XSTRORM_INTMEM + 3939 + XSTORM_PER_COUNTER_ID_STATS_OFFSET(port, cli); 3940 + for (i = 0; i < sizeof(struct xstorm_per_client_stats) / 4; i++) 3941 + CNIC_WR(dev, val + i * 4, 0); 3942 + } 3942 3943 3943 3944 cp->tx_cons_ptr = 3944 3945 &cp->bnx2x_def_status_blk->c_def_status_block.index_values[ ··· 3987 3984 BNX2X_ISCSI_RX_SB_INDEX_NUM; 3988 3985 context->ustorm_st_context.common.clientId = cli; 3989 3986 context->ustorm_st_context.common.status_block_id = BNX2X_DEF_SB_ID; 3990 - context->ustorm_st_context.common.flags = 3991 - USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS; 3992 - context->ustorm_st_context.common.statistics_counter_id = cli; 3987 + if (cli < MAX_U_STAT_COUNTER_ID) { 3988 + context->ustorm_st_context.common.flags = 3989 + USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS; 3990 + context->ustorm_st_context.common.statistics_counter_id = cli; 3991 + } 3993 3992 context->ustorm_st_context.common.mc_alignment_log_size = 0; 3994 3993 context->ustorm_st_context.common.bd_buff_size = 3995 3994 cp->l2_single_buf_size; ··· 4022 4017 4023 4018 /* client tstorm info */ 4024 4019 tstorm_client.mtu = cp->l2_single_buf_size - 14; 4025 - tstorm_client.config_flags = 4026 - (TSTORM_ETH_CLIENT_CONFIG_E1HOV_REM_ENABLE | 4027 - TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE); 4028 - tstorm_client.statistics_counter_id = cli; 4020 + tstorm_client.config_flags = TSTORM_ETH_CLIENT_CONFIG_E1HOV_REM_ENABLE; 4021 + 4022 + if (cli < MAX_T_STAT_COUNTER_ID) { 4023 + tstorm_client.config_flags |= 4024 + TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE; 4025 + tstorm_client.statistics_counter_id = cli; 4026 + } 4029 4027 4030 4028 CNIC_WR(dev, BAR_TSTRORM_INTMEM + 4031 4029 TSTORM_CLIENT_CONFIG_OFFSET(port, cli), ··· 4038 4030 ((u32 *)&tstorm_client)[1]); 4039 4031 4040 4032 /* reset tstorm per client statistics */ 4041 - val = BAR_TSTRORM_INTMEM + 4042 - TSTORM_PER_COUNTER_ID_STATS_OFFSET(port, cli); 4043 - for (i = 0; i < sizeof(struct tstorm_per_client_stats) / 4; i++) 4044 - CNIC_WR(dev, val + i * 4, 0); 4033 + if (cli < MAX_T_STAT_COUNTER_ID) { 4034 + 4035 + val = BAR_TSTRORM_INTMEM + 4036 + TSTORM_PER_COUNTER_ID_STATS_OFFSET(port, cli); 4037 + for (i = 0; i < sizeof(struct tstorm_per_client_stats) / 4; i++) 4038 + CNIC_WR(dev, val + i * 4, 0); 4039 + } 4045 4040 4046 4041 /* reset ustorm per client statistics */ 4047 - val = BAR_USTRORM_INTMEM + 4048 - USTORM_PER_COUNTER_ID_STATS_OFFSET(port, cli); 4049 - for (i = 0; i < sizeof(struct ustorm_per_client_stats) / 4; i++) 4050 - CNIC_WR(dev, val + i * 4, 0); 4042 + if (cli < MAX_U_STAT_COUNTER_ID) { 4043 + val = BAR_USTRORM_INTMEM + 4044 + USTORM_PER_COUNTER_ID_STATS_OFFSET(port, cli); 4045 + for (i = 0; i < sizeof(struct ustorm_per_client_stats) / 4; i++) 4046 + CNIC_WR(dev, val + i * 4, 0); 4047 + } 4051 4048 4052 4049 cp->rx_cons_ptr = 4053 4050 &cp->bnx2x_def_status_blk->u_def_status_block.index_values[
+1 -1
drivers/net/ehea/ehea.h
··· 40 40 #include <asm/io.h> 41 41 42 42 #define DRV_NAME "ehea" 43 - #define DRV_VERSION "EHEA_0103" 43 + #define DRV_VERSION "EHEA_0105" 44 44 45 45 /* eHEA capability flags */ 46 46 #define DLPAR_PORT_ADD_REM 1
+4 -5
drivers/net/ehea/ehea_main.c
··· 867 867 ehea_reset_cq_ep(pr->send_cq); 868 868 ehea_reset_cq_n1(pr->recv_cq); 869 869 ehea_reset_cq_n1(pr->send_cq); 870 + rmb(); 870 871 cqe = ehea_poll_rq1(pr->qp, &wqe_index); 871 872 cqe_skb = ehea_poll_cq(pr->send_cq); 872 873 ··· 2860 2859 container_of(work, struct ehea_port, reset_task); 2861 2860 struct net_device *dev = port->netdev; 2862 2861 2862 + mutex_lock(&dlpar_mem_lock); 2863 2863 port->resets++; 2864 2864 mutex_lock(&port->port_lock); 2865 2865 netif_stop_queue(dev); ··· 2883 2881 netif_wake_queue(dev); 2884 2882 out: 2885 2883 mutex_unlock(&port->port_lock); 2884 + mutex_unlock(&dlpar_mem_lock); 2886 2885 } 2887 2886 2888 2887 static void ehea_rereg_mrs(struct work_struct *work) ··· 3545 3542 int ret = NOTIFY_BAD; 3546 3543 struct memory_notify *arg = data; 3547 3544 3548 - if (!mutex_trylock(&dlpar_mem_lock)) { 3549 - ehea_info("ehea_mem_notifier must not be called parallelized"); 3550 - goto out; 3551 - } 3545 + mutex_lock(&dlpar_mem_lock); 3552 3546 3553 3547 switch (action) { 3554 3548 case MEM_CANCEL_OFFLINE: ··· 3574 3574 3575 3575 out_unlock: 3576 3576 mutex_unlock(&dlpar_mem_lock); 3577 - out: 3578 3577 return ret; 3579 3578 } 3580 3579
+21 -4
drivers/net/gianfar.c
··· 381 381 /* Insert receive time stamps into padding alignment bytes */ 382 382 if (priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER) { 383 383 rctrl &= ~RCTRL_PAL_MASK; 384 - rctrl |= RCTRL_PRSDEP_INIT | RCTRL_TS_ENABLE | RCTRL_PADDING(8); 384 + rctrl |= RCTRL_PADDING(8); 385 385 priv->padding = 8; 386 386 } 387 + 388 + /* Enable HW time stamping if requested from user space */ 389 + if (priv->hwts_rx_en) 390 + rctrl |= RCTRL_PRSDEP_INIT | RCTRL_TS_ENABLE; 387 391 388 392 /* keep vlan related bits if it's enabled */ 389 393 if (priv->vlgrp) { ··· 751 747 FSL_GIANFAR_DEV_HAS_CSUM | 752 748 FSL_GIANFAR_DEV_HAS_VLAN | 753 749 FSL_GIANFAR_DEV_HAS_MAGIC_PACKET | 754 - FSL_GIANFAR_DEV_HAS_EXTENDED_HASH; 750 + FSL_GIANFAR_DEV_HAS_EXTENDED_HASH | 751 + FSL_GIANFAR_DEV_HAS_TIMER; 755 752 756 753 ctype = of_get_property(np, "phy-connection-type", NULL); 757 754 ··· 810 805 811 806 switch (config.rx_filter) { 812 807 case HWTSTAMP_FILTER_NONE: 813 - priv->hwts_rx_en = 0; 808 + if (priv->hwts_rx_en) { 809 + stop_gfar(netdev); 810 + priv->hwts_rx_en = 0; 811 + startup_gfar(netdev); 812 + } 814 813 break; 815 814 default: 816 815 if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER)) 817 816 return -ERANGE; 818 - priv->hwts_rx_en = 1; 817 + if (!priv->hwts_rx_en) { 818 + stop_gfar(netdev); 819 + priv->hwts_rx_en = 1; 820 + startup_gfar(netdev); 821 + } 819 822 config.rx_filter = HWTSTAMP_FILTER_ALL; 820 823 break; 821 824 } ··· 2654 2641 2655 2642 dma_unmap_single(&priv->ofdev->dev, bdp->bufPtr, 2656 2643 priv->rx_buffer_size, DMA_FROM_DEVICE); 2644 + 2645 + if (unlikely(!(bdp->status & RXBD_ERR) && 2646 + bdp->length > priv->rx_buffer_size)) 2647 + bdp->status = RXBD_LARGE; 2657 2648 2658 2649 /* We drop the frame if we failed to allocate a new buffer */ 2659 2650 if (unlikely(!newskb || !(bdp->status & RXBD_LAST) ||
+2
drivers/net/ixgbe/ixgbe_phy.c
··· 575 575 * 4 SFP_DA_CORE1 - 82599-specific 576 576 * 5 SFP_SR/LR_CORE0 - 82599-specific 577 577 * 6 SFP_SR/LR_CORE1 - 82599-specific 578 + * 7 SFP_act_lmt_DA_CORE0 - 82599-specific 579 + * 8 SFP_act_lmt_DA_CORE1 - 82599-specific 578 580 */ 579 581 if (hw->mac.type == ixgbe_mac_82598EB) { 580 582 if (cable_tech & IXGBE_SFF_DA_PASSIVE_CABLE)
+1 -1
drivers/net/lib82596.c
··· 1343 1343 DEB(DEB_MULTI, 1344 1344 printk(KERN_DEBUG 1345 1345 "%s: set multicast list, %d entries, promisc %s, allmulti %s\n", 1346 - dev->name, dev->mc_count, 1346 + dev->name, netdev_mc_count(dev), 1347 1347 dev->flags & IFF_PROMISC ? "ON" : "OFF", 1348 1348 dev->flags & IFF_ALLMULTI ? "ON" : "OFF")); 1349 1349
+1 -1
drivers/net/mipsnet.c
··· 247 247 .ndo_set_mac_address = eth_mac_addr, 248 248 }; 249 249 250 - static int __init mipsnet_probe(struct platform_device *dev) 250 + static int __devinit mipsnet_probe(struct platform_device *dev) 251 251 { 252 252 struct net_device *netdev; 253 253 int err;
+2 -1
drivers/net/netxen/netxen_nic_ctx.c
··· 629 629 if (addr == NULL) { 630 630 dev_err(&pdev->dev, "%s: failed to allocate tx desc ring\n", 631 631 netdev->name); 632 - return -ENOMEM; 632 + err = -ENOMEM; 633 + goto err_out_free; 633 634 } 634 635 635 636 tx_ring->desc_head = (struct cmd_desc_type0 *)addr;
-4
drivers/net/netxen/netxen_nic_hw.c
··· 1159 1159 1160 1160 window = CRB_HI(off); 1161 1161 1162 - if (adapter->ahw.crb_win == window) 1163 - return; 1164 - 1165 1162 writel(window, addr); 1166 1163 if (readl(addr) != window) { 1167 1164 if (printk_ratelimit()) ··· 1166 1169 "failed to set CRB window to %d off 0x%lx\n", 1167 1170 window, off); 1168 1171 } 1169 - adapter->ahw.crb_win = window; 1170 1172 } 1171 1173 1172 1174 static void __iomem *
+8 -5
drivers/net/netxen/netxen_nic_init.c
··· 218 218 if (cmd_buf_arr == NULL) { 219 219 dev_err(&pdev->dev, "%s: failed to allocate cmd buffer ring\n", 220 220 netdev->name); 221 - return -ENOMEM; 221 + goto err_out; 222 222 } 223 223 memset(cmd_buf_arr, 0, TX_BUFF_RINGSIZE(tx_ring)); 224 224 tx_ring->cmd_buf_arr = cmd_buf_arr; ··· 230 230 if (rds_ring == NULL) { 231 231 dev_err(&pdev->dev, "%s: failed to allocate rds ring struct\n", 232 232 netdev->name); 233 - return -ENOMEM; 233 + goto err_out; 234 234 } 235 235 recv_ctx->rds_rings = rds_ring; 236 236 ··· 1805 1805 netxen_ctx_msg msg = 0; 1806 1806 struct list_head *head; 1807 1807 1808 + spin_lock(&rds_ring->lock); 1809 + 1808 1810 producer = rds_ring->producer; 1809 1811 1810 - spin_lock(&rds_ring->lock); 1811 1812 head = &rds_ring->free_list; 1812 1813 while (!list_empty(head)) { 1813 1814 ··· 1830 1829 1831 1830 producer = get_next_index(producer, rds_ring->num_desc); 1832 1831 } 1833 - spin_unlock(&rds_ring->lock); 1834 1832 1835 1833 if (count) { 1836 1834 rds_ring->producer = producer; ··· 1853 1853 NETXEN_RCV_PRODUCER_OFFSET), msg); 1854 1854 } 1855 1855 } 1856 + 1857 + spin_unlock(&rds_ring->lock); 1856 1858 } 1857 1859 1858 1860 static void ··· 1866 1864 int producer, count = 0; 1867 1865 struct list_head *head; 1868 1866 1869 - producer = rds_ring->producer; 1870 1867 if (!spin_trylock(&rds_ring->lock)) 1871 1868 return; 1869 + 1870 + producer = rds_ring->producer; 1872 1871 1873 1872 head = &rds_ring->free_list; 1874 1873 while (!list_empty(head)) {
+1
drivers/net/pcmcia/pcnet_cs.c
··· 1727 1727 PCMCIA_PFC_DEVICE_CIS_PROD_ID12(0, "Psion Dacom", "Gold Card V34 Ethernet", 0xf5f025c2, 0x338e8155, "cis/PCMLM28.cis"), 1728 1728 PCMCIA_PFC_DEVICE_CIS_PROD_ID12(0, "Psion Dacom", "Gold Card V34 Ethernet GSM", 0xf5f025c2, 0x4ae85d35, "cis/PCMLM28.cis"), 1729 1729 PCMCIA_PFC_DEVICE_CIS_PROD_ID12(0, "LINKSYS", "PCMLM28", 0xf7cb0b07, 0x66881874, "cis/PCMLM28.cis"), 1730 + PCMCIA_PFC_DEVICE_CIS_PROD_ID12(0, "TOSHIBA", "Modem/LAN Card", 0xb4585a1a, 0x53f922f8, "cis/PCMLM28.cis"), 1730 1731 PCMCIA_MFC_DEVICE_CIS_PROD_ID12(0, "DAYNA COMMUNICATIONS", "LAN AND MODEM MULTIFUNCTION", 0x8fdf8f89, 0xdd5ed9e8, "cis/DP83903.cis"), 1731 1732 PCMCIA_MFC_DEVICE_CIS_PROD_ID4(0, "NSC MF LAN/Modem", 0x58fc6056, "cis/DP83903.cis"), 1732 1733 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(0, 0x0175, 0x0000, "cis/DP83903.cis"),
+1
drivers/net/pcmcia/smc91c92_cs.c
··· 322 322 return -ENOMEM; 323 323 smc = netdev_priv(dev); 324 324 smc->p_dev = link; 325 + link->priv = dev; 325 326 326 327 spin_lock_init(&smc->lock); 327 328 link->io.NumPorts1 = 16;
+14 -5
drivers/net/sky2.c
··· 717 717 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); 718 718 } 719 719 720 + /* Enable Rx/Tx */ 721 + static void sky2_enable_rx_tx(struct sky2_port *sky2) 722 + { 723 + struct sky2_hw *hw = sky2->hw; 724 + unsigned port = sky2->port; 725 + u16 reg; 726 + 727 + reg = gma_read16(hw, port, GM_GP_CTRL); 728 + reg |= GM_GPCR_RX_ENA | GM_GPCR_TX_ENA; 729 + gma_write16(hw, port, GM_GP_CTRL, reg); 730 + } 731 + 720 732 /* Force a renegotiation */ 721 733 static void sky2_phy_reinit(struct sky2_port *sky2) 722 734 { 723 735 spin_lock_bh(&sky2->phy_lock); 724 736 sky2_phy_init(sky2->hw, sky2->port); 737 + sky2_enable_rx_tx(sky2); 725 738 spin_unlock_bh(&sky2->phy_lock); 726 739 } 727 740 ··· 2053 2040 { 2054 2041 struct sky2_hw *hw = sky2->hw; 2055 2042 unsigned port = sky2->port; 2056 - u16 reg; 2057 2043 static const char *fc_name[] = { 2058 2044 [FC_NONE] = "none", 2059 2045 [FC_TX] = "tx", ··· 2060 2048 [FC_BOTH] = "both", 2061 2049 }; 2062 2050 2063 - /* enable Rx/Tx */ 2064 - reg = gma_read16(hw, port, GM_GP_CTRL); 2065 - reg |= GM_GPCR_RX_ENA | GM_GPCR_TX_ENA; 2066 - gma_write16(hw, port, GM_GP_CTRL, reg); 2051 + sky2_enable_rx_tx(sky2); 2067 2052 2068 2053 gm_phy_write(hw, port, PHY_MARV_INT_MASK, PHY_M_DEF_MSK); 2069 2054
+2
drivers/net/ucc_geth.c
··· 3215 3215 __func__, __LINE__, (u32) skb); 3216 3216 if (skb) { 3217 3217 skb->data = skb->head + NET_SKB_PAD; 3218 + skb->len = 0; 3219 + skb_reset_tail_pointer(skb); 3218 3220 __skb_queue_head(&ugeth->rx_recycle, skb); 3219 3221 } 3220 3222
-1
drivers/net/usb/hso.c
··· 1334 1334 /* check for port already opened, if not set the termios */ 1335 1335 serial->open_count++; 1336 1336 if (serial->open_count == 1) { 1337 - tty->low_latency = 1; 1338 1337 serial->rx_state = RX_IDLE; 1339 1338 /* Force default termio settings */ 1340 1339 _hso_serial_set_termios(tty, NULL);
+1
drivers/net/wireless/ath/ath5k/attach.c
··· 126 126 ah->ah_ant_mode = AR5K_ANTMODE_DEFAULT; 127 127 ah->ah_noise_floor = -95; /* until first NF calibration is run */ 128 128 sc->ani_state.ani_mode = ATH5K_ANI_MODE_AUTO; 129 + ah->ah_current_channel = &sc->channels[0]; 129 130 130 131 /* 131 132 * Find the mac version
+1
drivers/serial/serial_cs.c
··· 807 807 PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "Psion Dacom", "Gold Card V34 Ethernet", 0xf5f025c2, 0x338e8155, "cis/PCMLM28.cis"), 808 808 PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "Psion Dacom", "Gold Card V34 Ethernet GSM", 0xf5f025c2, 0x4ae85d35, "cis/PCMLM28.cis"), 809 809 PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "LINKSYS", "PCMLM28", 0xf7cb0b07, 0x66881874, "cis/PCMLM28.cis"), 810 + PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "TOSHIBA", "Modem/LAN Card", 0xb4585a1a, 0x53f922f8, "cis/PCMLM28.cis"), 810 811 PCMCIA_MFC_DEVICE_CIS_PROD_ID12(1, "DAYNA COMMUNICATIONS", "LAN AND MODEM MULTIFUNCTION", 0x8fdf8f89, 0xdd5ed9e8, "cis/DP83903.cis"), 811 812 PCMCIA_MFC_DEVICE_CIS_PROD_ID4(1, "NSC MF LAN/Modem", 0x58fc6056, "cis/DP83903.cis"), 812 813 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x0556, "cis/3CCFEM556.cis"),
+1 -1
include/net/snmp.h
··· 134 134 #define SNMP_ADD_STATS_USER(mib, field, addend) \ 135 135 this_cpu_add(mib[1]->mibs[field], addend) 136 136 #define SNMP_ADD_STATS(mib, field, addend) \ 137 - this_cpu_add(mib[0]->mibs[field], addend) 137 + this_cpu_add(mib[!in_softirq()]->mibs[field], addend) 138 138 /* 139 139 * Use "__typeof__(*mib[0]) *ptr" instead of "__typeof__(mib[0]) ptr" 140 140 * to make @ptr a non-percpu pointer.
+2 -4
net/bridge/br_fdb.c
··· 128 128 { 129 129 struct net_bridge *br = (struct net_bridge *)_data; 130 130 unsigned long delay = hold_time(br); 131 - unsigned long next_timer = jiffies + br->forward_delay; 131 + unsigned long next_timer = jiffies + br->ageing_time; 132 132 int i; 133 133 134 134 spin_lock_bh(&br->hash_lock); ··· 149 149 } 150 150 spin_unlock_bh(&br->hash_lock); 151 151 152 - /* Add HZ/4 to ensure we round the jiffies upwards to be after the next 153 - * timer, otherwise we might round down and will have no-op run. */ 154 - mod_timer(&br->gc_timer, round_jiffies(next_timer + HZ/4)); 152 + mod_timer(&br->gc_timer, round_jiffies_up(next_timer)); 155 153 } 156 154 157 155 /* Completely flush all dynamic entries in forwarding database.*/
+2 -2
net/bridge/br_forward.c
··· 130 130 void (*__packet_hook)(const struct net_bridge_port *p, 131 131 struct sk_buff *skb)) 132 132 { 133 + struct net_device *dev = BR_INPUT_SKB_CB(skb)->brdev; 134 + 133 135 skb = skb_clone(skb, GFP_ATOMIC); 134 136 if (!skb) { 135 - struct net_device *dev = BR_INPUT_SKB_CB(skb)->brdev; 136 - 137 137 dev->stats.tx_dropped++; 138 138 return -ENOMEM; 139 139 }
+6 -3
net/ipv4/ip_output.c
··· 873 873 !exthdrlen) 874 874 csummode = CHECKSUM_PARTIAL; 875 875 876 + skb = skb_peek_tail(&sk->sk_write_queue); 877 + 876 878 inet->cork.length += length; 877 - if (((length> mtu) || !skb_queue_empty(&sk->sk_write_queue)) && 879 + if (((length > mtu) || (skb && skb_is_gso(skb))) && 878 880 (sk->sk_protocol == IPPROTO_UDP) && 879 881 (rt->dst.dev->features & NETIF_F_UFO)) { 880 882 err = ip_ufo_append_data(sk, getfrag, from, length, hh_len, ··· 894 892 * adding appropriate IP header. 895 893 */ 896 894 897 - if ((skb = skb_peek_tail(&sk->sk_write_queue)) == NULL) 895 + if (!skb) 898 896 goto alloc_new_skb; 899 897 900 898 while (length > 0) { ··· 1123 1121 return -EINVAL; 1124 1122 1125 1123 inet->cork.length += size; 1126 - if ((sk->sk_protocol == IPPROTO_UDP) && 1124 + if ((size + skb->len > mtu) && 1125 + (sk->sk_protocol == IPPROTO_UDP) && 1127 1126 (rt->dst.dev->features & NETIF_F_UFO)) { 1128 1127 skb_shinfo(skb)->gso_size = mtu - fragheaderlen; 1129 1128 skb_shinfo(skb)->gso_type = SKB_GSO_UDP;
+4
net/netfilter/ipvs/ip_vs_conn.c
··· 162 162 hash = ip_vs_conn_hashkey(cp->af, cp->protocol, &cp->caddr, cp->cport); 163 163 164 164 ct_write_lock(hash); 165 + spin_lock(&cp->lock); 165 166 166 167 if (!(cp->flags & IP_VS_CONN_F_HASHED)) { 167 168 list_add(&cp->c_list, &ip_vs_conn_tab[hash]); ··· 175 174 ret = 0; 176 175 } 177 176 177 + spin_unlock(&cp->lock); 178 178 ct_write_unlock(hash); 179 179 180 180 return ret; ··· 195 193 hash = ip_vs_conn_hashkey(cp->af, cp->protocol, &cp->caddr, cp->cport); 196 194 197 195 ct_write_lock(hash); 196 + spin_lock(&cp->lock); 198 197 199 198 if (cp->flags & IP_VS_CONN_F_HASHED) { 200 199 list_del(&cp->c_list); ··· 205 202 } else 206 203 ret = 0; 207 204 205 + spin_unlock(&cp->lock); 208 206 ct_write_unlock(hash); 209 207 210 208 return ret;
+1
net/sched/sch_teql.c
··· 449 449 dev->tx_queue_len = 100; 450 450 dev->flags = IFF_NOARP; 451 451 dev->hard_header_len = LL_MAX_HEADER; 452 + dev->priv_flags &= ~IFF_XMIT_DST_RELEASE; 452 453 } 453 454 454 455 static LIST_HEAD(master_dev_list);