1. 13 5月, 2005 1 次提交
    • P
      [PATCH] PPP multilink fragmentation improvements · 516cd15f
      Paul Mackerras 提交于
        
        Here's a patch for -mm for now.  Not sure whose territory this falls
        in, so I'm sending it to everyone I can think of. :)
        
        Some time ago I did some experiments with using PPP multilink over
        largish numbers of channels (up to 32).  The TCP performance was
        woeful due to wildly fluctuating packet latencies, which turned out to
        be because we would sometimes split a packet across all 32 channels,
        and sometimes we would send a whole packet down a single channel.
        
        This patch fixes those problems by being a bit cleverer about how the
        packets are split across the available channels, and in particular, it
        waits until at least half of the channels can take another fragment
        before starting to split up the next packet.
        
        The patch also fixes a buglet in the multilink reconstruction code
        where it would discard incoming packets that had just the multilink
        header and no data.  Such packets are valid and shouldn't be
        discarded.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
      516cd15f
  2. 06 5月, 2005 7 次提交
  3. 04 5月, 2005 4 次提交
  4. 01 5月, 2005 3 次提交
  5. 29 4月, 2005 1 次提交
  6. 27 4月, 2005 1 次提交
  7. 26 4月, 2005 3 次提交
    • M
      [TG3]: Fix tg3_restart_ints() · 04237ddd
      Michael Chan 提交于
      tg3_restart_ints() is called to re-enable interrupts after tg3_poll()
      has finished all the work. It calls tg3_cond_int() to force an interrupt
      if the status block updated bit is set. The updated bit will be set if
      there is a new status block update sometime during tg3_poll() and it can
      be very often. The worst part is that even if all the work has been
      processed, the updated bit remains set and an interrupt will be forced
      unnecessarily.
      
      The fix is to call tg3_has_work() instead to determine if new work is
      posted before forcing an interrupt. The way to force an interrupt is
      also changed to use "coalesce_now" instead of "SETINT". The former is
      generally a safer way to force the interrupt.
      
      Also deleted the first parameter to tg3_has_work() which is unused.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      04237ddd
    • M
      [TG3]: Refresh hw index in tg3_rx() · 52f6d697
      Michael Chan 提交于
      This patch refreshes the hw rx producer in tg3_rx() so that additional
      work posted by the hardware can be processed.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      52f6d697
    • M
      [TG3]: Fix bug in tg3_rx() · 483ba50b
      Michael Chan 提交于
      This patch fixes a bug that causes tg3_has_work() to always return 1.
      
      rx work is determined by comparing tp->rx_rcb_ptr with the current hw
      producer index. The hw producer index is modulo the ring size, but tp-
      >rx_rcb_ptr is a free running counter that goes up beyond the ring size.
      After the ring wraps around once, tg3_has_work() will always return 1.
      
      The fix is to always do modulo arithmetic on tp->rx_rcb_ptr.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      483ba50b
  8. 25 4月, 2005 5 次提交
  9. 22 4月, 2005 15 次提交