Commit c337ffb68e1e71bad069b14d2246fa1e0c31699c

Authored by David S. Miller

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

Showing 13 changed files Side-by-side Diff

Documentation/networking/bonding.txt
... ... @@ -2558,25 +2558,33 @@
2558 2558 16. Resources and Links
2559 2559 =======================
2560 2560  
2561   -The latest version of the bonding driver can be found in the latest
  2561 + The latest version of the bonding driver can be found in the latest
2562 2562 version of the linux kernel, found on http://kernel.org
2563 2563  
2564   -The latest version of this document can be found in either the latest
2565   -kernel source (named Documentation/networking/bonding.txt), or on the
2566   -bonding sourceforge site:
  2564 + The latest version of this document can be found in the latest kernel
  2565 +source (named Documentation/networking/bonding.txt).
2567 2566  
2568   -http://www.sourceforge.net/projects/bonding
  2567 + Discussions regarding the usage of the bonding driver take place on the
  2568 +bonding-devel mailing list, hosted at sourceforge.net. If you have questions or
  2569 +problems, post them to the list. The list address is:
2569 2570  
2570   -Discussions regarding the bonding driver take place primarily on the
2571   -bonding-devel mailing list, hosted at sourceforge.net. If you have
2572   -questions or problems, post them to the list. The list address is:
2573   -
2574 2571 bonding-devel@lists.sourceforge.net
2575 2572  
2576 2573 The administrative interface (to subscribe or unsubscribe) can
2577 2574 be found at:
2578 2575  
2579 2576 https://lists.sourceforge.net/lists/listinfo/bonding-devel
  2577 +
  2578 + Discussions regarding the developpement of the bonding driver take place
  2579 +on the main Linux network mailing list, hosted at vger.kernel.org. The list
  2580 +address is:
  2581 +
  2582 +netdev@vger.kernel.org
  2583 +
  2584 + The administrative interface (to subscribe or unsubscribe) can
  2585 +be found at:
  2586 +
  2587 +http://vger.kernel.org/vger-lists.html#netdev
2580 2588  
2581 2589 Donald Becker's Ethernet Drivers and diag programs may be found at :
2582 2590 - http://web.archive.org/web/*/http://www.scyld.com/network/
drivers/net/ariadne.c
... ... @@ -425,11 +425,6 @@
425 425 int csr0, boguscnt;
426 426 int handled = 0;
427 427  
428   - if (dev == NULL) {
429   - printk(KERN_WARNING "ariadne_interrupt(): irq for unknown device.\n");
430   - return IRQ_NONE;
431   - }
432   -
433 428 lance->RAP = CSR0; /* PCnet-ISA Controller Status */
434 429  
435 430 if (!(lance->RDP & INTR)) /* Check if any interrupt has been */
drivers/net/bnx2x/bnx2x_main.c
... ... @@ -4229,7 +4229,7 @@
4229 4229  
4230 4230 for_each_eth_queue(bp, i)
4231 4231 bnx2x_update_coalesce_sb(bp, bp->fp[i].fw_sb_id,
4232   - bp->rx_ticks, bp->tx_ticks);
  4232 + bp->tx_ticks, bp->rx_ticks);
4233 4233 }
4234 4234  
4235 4235 static void bnx2x_init_sp_ring(struct bnx2x *bp)
drivers/net/can/usb/esd_usb2.c
... ... @@ -659,7 +659,7 @@
659 659 static void unlink_all_urbs(struct esd_usb2 *dev)
660 660 {
661 661 struct esd_usb2_net_priv *priv;
662   - int i;
  662 + int i, j;
663 663  
664 664 usb_kill_anchored_urbs(&dev->rx_submitted);
665 665 for (i = 0; i < dev->net_count; i++) {
... ... @@ -668,8 +668,8 @@
668 668 usb_kill_anchored_urbs(&priv->tx_submitted);
669 669 atomic_set(&priv->active_tx_jobs, 0);
670 670  
671   - for (i = 0; i < MAX_TX_URBS; i++)
672   - priv->tx_contexts[i].echo_index = MAX_TX_URBS;
  671 + for (j = 0; j < MAX_TX_URBS; j++)
  672 + priv->tx_contexts[j].echo_index = MAX_TX_URBS;
673 673 }
674 674 }
675 675 }
drivers/net/davinci_emac.c
... ... @@ -1730,7 +1730,7 @@
1730 1730 emac_read(EMAC_TXCARRIERSENSE);
1731 1731 emac_write(EMAC_TXCARRIERSENSE, stats_clear_mask);
1732 1732  
1733   - ndev->stats.tx_fifo_errors = emac_read(EMAC_TXUNDERRUN);
  1733 + ndev->stats.tx_fifo_errors += emac_read(EMAC_TXUNDERRUN);
1734 1734 emac_write(EMAC_TXUNDERRUN, stats_clear_mask);
1735 1735  
1736 1736 return &ndev->stats;
drivers/net/macvlan.c
... ... @@ -219,9 +219,11 @@
219 219 const struct macvlan_dev *vlan = netdev_priv(dev);
220 220 const struct macvlan_port *port = vlan->port;
221 221 const struct macvlan_dev *dest;
  222 + __u8 ip_summed = skb->ip_summed;
222 223  
223 224 if (vlan->mode == MACVLAN_MODE_BRIDGE) {
224 225 const struct ethhdr *eth = (void *)skb->data;
  226 + skb->ip_summed = CHECKSUM_UNNECESSARY;
225 227  
226 228 /* send to other bridge ports directly */
227 229 if (is_multicast_ether_addr(eth->h_dest)) {
... ... @@ -241,6 +243,7 @@
241 243 }
242 244  
243 245 xmit_world:
  246 + skb->ip_summed = ip_summed;
244 247 skb_set_dev(skb, vlan->lowerdev);
245 248 return dev_queue_xmit(skb);
246 249 }
drivers/net/smsc911x.c
... ... @@ -791,8 +791,8 @@
791 791 return -ENODEV;
792 792 }
793 793  
794   - SMSC_TRACE(PROBE, "PHY %d: addr %d, phy_id 0x%08X",
795   - phy_addr, phydev->addr, phydev->phy_id);
  794 + SMSC_TRACE(PROBE, "PHY: addr %d, phy_id 0x%08X",
  795 + phydev->addr, phydev->phy_id);
796 796  
797 797 ret = phy_connect_direct(dev, phydev,
798 798 &smsc911x_phy_adjust_link, 0,
drivers/net/usb/cdc-phonet.c
... ... @@ -328,13 +328,13 @@
328 328 {
329 329 static const char ifname[] = "usbpn%d";
330 330 const struct usb_cdc_union_desc *union_header = NULL;
331   - const struct usb_cdc_header_desc *phonet_header = NULL;
332 331 const struct usb_host_interface *data_desc;
333 332 struct usb_interface *data_intf;
334 333 struct usb_device *usbdev = interface_to_usbdev(intf);
335 334 struct net_device *dev;
336 335 struct usbpn_dev *pnd;
337 336 u8 *data;
  337 + int phonet = 0;
338 338 int len, err;
339 339  
340 340 data = intf->altsetting->extra;
... ... @@ -355,10 +355,7 @@
355 355 (struct usb_cdc_union_desc *)data;
356 356 break;
357 357 case 0xAB:
358   - if (phonet_header || dlen < 5)
359   - break;
360   - phonet_header =
361   - (struct usb_cdc_header_desc *)data;
  358 + phonet = 1;
362 359 break;
363 360 }
364 361 }
... ... @@ -366,7 +363,7 @@
366 363 len -= dlen;
367 364 }
368 365  
369   - if (!union_header || !phonet_header)
  366 + if (!union_header || !phonet)
370 367 return -EINVAL;
371 368  
372 369 data_intf = usb_ifnum_to_if(usbdev, union_header->bSlaveInterface0);
... ... @@ -392,7 +389,6 @@
392 389  
393 390 pnd = netdev_priv(dev);
394 391 SET_NETDEV_DEV(dev, &intf->dev);
395   - netif_stop_queue(dev);
396 392  
397 393 pnd->dev = dev;
398 394 pnd->usb = usb_get_dev(usbdev);
drivers/net/xen-netfront.c
... ... @@ -122,7 +122,7 @@
122 122 struct mmu_update rx_mmu[NET_RX_RING_SIZE];
123 123  
124 124 /* Statistics */
125   - int rx_gso_checksum_fixup;
  125 + unsigned long rx_gso_checksum_fixup;
126 126 };
127 127  
128 128 struct netfront_rx_info {
... ... @@ -1692,7 +1692,7 @@
1692 1692 int i;
1693 1693  
1694 1694 for (i = 0; i < ARRAY_SIZE(xennet_stats); i++)
1695   - data[i] = *(int *)(np + xennet_stats[i].offset);
  1695 + data[i] = *(unsigned long *)(np + xennet_stats[i].offset);
1696 1696 }
1697 1697  
1698 1698 static void xennet_get_strings(struct net_device *dev, u32 stringset, u8 * data)
... ... @@ -375,12 +375,12 @@
375 375 if (p->state != BR_STATE_BLOCKING)
376 376 return;
377 377  
378   - if (br->forward_delay == 0) {
  378 + if (br->stp_enabled == BR_NO_STP || br->forward_delay == 0) {
379 379 p->state = BR_STATE_FORWARDING;
380 380 br_topology_change_detection(br);
381 381 del_timer(&p->forward_delay_timer);
382 382 }
383   - else if (p->br->stp_enabled == BR_KERNEL_STP)
  383 + else if (br->stp_enabled == BR_KERNEL_STP)
384 384 p->state = BR_STATE_LISTENING;
385 385 else
386 386 p->state = BR_STATE_LEARNING;
net/ipv4/tcp_cubic.c
... ... @@ -39,7 +39,7 @@
39 39  
40 40 /* Number of delay samples for detecting the increase of delay */
41 41 #define HYSTART_MIN_SAMPLES 8
42   -#define HYSTART_DELAY_MIN (2U<<3)
  42 +#define HYSTART_DELAY_MIN (4U<<3)
43 43 #define HYSTART_DELAY_MAX (16U<<3)
44 44 #define HYSTART_DELAY_THRESH(x) clamp(x, HYSTART_DELAY_MIN, HYSTART_DELAY_MAX)
45 45  
... ... @@ -52,6 +52,7 @@
52 52 static int hystart __read_mostly = 1;
53 53 static int hystart_detect __read_mostly = HYSTART_ACK_TRAIN | HYSTART_DELAY;
54 54 static int hystart_low_window __read_mostly = 16;
  55 +static int hystart_ack_delta __read_mostly = 2;
55 56  
56 57 static u32 cube_rtt_scale __read_mostly;
57 58 static u32 beta_scale __read_mostly;
... ... @@ -75,6 +76,8 @@
75 76 " 1: packet-train 2: delay 3: both packet-train and delay");
76 77 module_param(hystart_low_window, int, 0644);
77 78 MODULE_PARM_DESC(hystart_low_window, "lower bound cwnd for hybrid slow start");
  79 +module_param(hystart_ack_delta, int, 0644);
  80 +MODULE_PARM_DESC(hystart_ack_delta, "spacing between ack's indicating train (msecs)");
78 81  
79 82 /* BIC TCP Parameters */
80 83 struct bictcp {
... ... @@ -85,7 +88,7 @@
85 88 u32 last_time; /* time when updated last_cwnd */
86 89 u32 bic_origin_point;/* origin point of bic function */
87 90 u32 bic_K; /* time to origin point from the beginning of the current epoch */
88   - u32 delay_min; /* min delay */
  91 + u32 delay_min; /* min delay (msec << 3) */
89 92 u32 epoch_start; /* beginning of an epoch */
90 93 u32 ack_cnt; /* number of acks */
91 94 u32 tcp_cwnd; /* estimated tcp cwnd */
... ... @@ -95,7 +98,7 @@
95 98 u8 found; /* the exit point is found? */
96 99 u32 round_start; /* beginning of each round */
97 100 u32 end_seq; /* end_seq of the round */
98   - u32 last_jiffies; /* last time when the ACK spacing is close */
  101 + u32 last_ack; /* last time when the ACK spacing is close */
99 102 u32 curr_rtt; /* the minimum rtt of current round */
100 103 };
101 104  
102 105  
... ... @@ -116,12 +119,21 @@
116 119 ca->found = 0;
117 120 }
118 121  
  122 +static inline u32 bictcp_clock(void)
  123 +{
  124 +#if HZ < 1000
  125 + return ktime_to_ms(ktime_get_real());
  126 +#else
  127 + return jiffies_to_msecs(jiffies);
  128 +#endif
  129 +}
  130 +
119 131 static inline void bictcp_hystart_reset(struct sock *sk)
120 132 {
121 133 struct tcp_sock *tp = tcp_sk(sk);
122 134 struct bictcp *ca = inet_csk_ca(sk);
123 135  
124   - ca->round_start = ca->last_jiffies = jiffies;
  136 + ca->round_start = ca->last_ack = bictcp_clock();
125 137 ca->end_seq = tp->snd_nxt;
126 138 ca->curr_rtt = 0;
127 139 ca->sample_cnt = 0;
... ... @@ -236,8 +248,8 @@
236 248 */
237 249  
238 250 /* change the unit from HZ to bictcp_HZ */
239   - t = ((tcp_time_stamp + (ca->delay_min>>3) - ca->epoch_start)
240   - << BICTCP_HZ) / HZ;
  251 + t = ((tcp_time_stamp + msecs_to_jiffies(ca->delay_min>>3)
  252 + - ca->epoch_start) << BICTCP_HZ) / HZ;
241 253  
242 254 if (t < ca->bic_K) /* t - K */
243 255 offs = ca->bic_K - t;
... ... @@ -258,6 +270,13 @@
258 270 ca->cnt = 100 * cwnd; /* very small increment*/
259 271 }
260 272  
  273 + /*
  274 + * The initial growth of cubic function may be too conservative
  275 + * when the available bandwidth is still unknown.
  276 + */
  277 + if (ca->loss_cwnd == 0 && ca->cnt > 20)
  278 + ca->cnt = 20; /* increase cwnd 5% per RTT */
  279 +
261 280 /* TCP Friendly */
262 281 if (tcp_friendliness) {
263 282 u32 scale = beta_scale;
264 283  
... ... @@ -339,12 +358,12 @@
339 358 struct bictcp *ca = inet_csk_ca(sk);
340 359  
341 360 if (!(ca->found & hystart_detect)) {
342   - u32 curr_jiffies = jiffies;
  361 + u32 now = bictcp_clock();
343 362  
344 363 /* first detection parameter - ack-train detection */
345   - if (curr_jiffies - ca->last_jiffies <= msecs_to_jiffies(2)) {
346   - ca->last_jiffies = curr_jiffies;
347   - if (curr_jiffies - ca->round_start >= ca->delay_min>>4)
  364 + if ((s32)(now - ca->last_ack) <= hystart_ack_delta) {
  365 + ca->last_ack = now;
  366 + if ((s32)(now - ca->round_start) > ca->delay_min >> 4)
348 367 ca->found |= HYSTART_ACK_TRAIN;
349 368 }
350 369  
... ... @@ -391,7 +410,7 @@
391 410 if ((s32)(tcp_time_stamp - ca->epoch_start) < HZ)
392 411 return;
393 412  
394   - delay = usecs_to_jiffies(rtt_us) << 3;
  413 + delay = (rtt_us << 3) / USEC_PER_MSEC;
395 414 if (delay == 0)
396 415 delay = 1;
397 416  
... ... @@ -446,6 +465,10 @@
446 465  
447 466 /* divide by bic_scale and by constant Srtt (100ms) */
448 467 do_div(cube_factor, bic_scale * 10);
  468 +
  469 + /* hystart needs ms clock resolution */
  470 + if (hystart && HZ < 1000)
  471 + cubictcp.flags |= TCP_CONG_RTT_STAMP;
449 472  
450 473 return tcp_register_congestion_control(&cubictcp);
451 474 }
net/ipv4/tcp_input.c
... ... @@ -3350,7 +3350,7 @@
3350 3350 net_invalid_timestamp()))
3351 3351 rtt_us = ktime_us_delta(ktime_get_real(),
3352 3352 last_ackt);
3353   - else if (ca_seq_rtt > 0)
  3353 + else if (ca_seq_rtt >= 0)
3354 3354 rtt_us = jiffies_to_usecs(ca_seq_rtt);
3355 3355 }
3356 3356  
... ... @@ -1124,7 +1124,7 @@
1124 1124  
1125 1125 /* Latch our state.
1126 1126  
1127   - It is tricky place. We need to grab write lock and cannot
  1127 + It is tricky place. We need to grab our state lock and cannot
1128 1128 drop lock on peer. It is dangerous because deadlock is
1129 1129 possible. Connect to self case and simultaneous
1130 1130 attempt to connect are eliminated by checking socket