1. 07 Sep, 2004 2 commits
    • David S. Miller's avatar
      [TCP]: Calculate SKB tso factor more accurately. · 95d26736
      David S. Miller authored
      Eliminate tp->mss_tso_factor.  Instead, we calculate the
      SKB tso factor as we walk the write queue for initial
      transmit or fragment SKBs.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      95d26736
    • David S. Miller's avatar
      [TCP]: Make TSO play nice with congestion window. · 14a1f445
      David S. Miller authored
      Previously TSO would not abide by the congestion
      window properly.  Essentially, each TSO packet would
      be trated just like 1 normal packet, even though a TSO
      packet generates more than 1 normal packet.  This
      violates congestion window rules entirely.
      
      So now we record the TSO factor, a count of how many
      real packets a TSO packet will generate, and include
      this in all the packet counting routines.
      
      This initial version has a bug in that skb_entail() is
      not the correct time to figure out the TSO factor for
      the SKB, and tp->mss_tso_factor is not necessarily the
      right value for a given SKB.  Will fix this up next.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      14a1f445
  2. 03 Sep, 2004 1 commit
    • Herbert Xu's avatar
      [NET]: Add reference counting to neigh_parms. · 10bc9563
      Herbert Xu authored
      I've added a refcnt on neigh_parms as well as a dead flag.  The latter
      is checked under the tbl_lock before adding a neigh entry to the hash
      table.
      
      The non-trivial bit of the patch is the first chunk of net/core/neighbour.c.
      I removed that line because not doing so would mean that I have to drop
      the reference to the parms right there.  That would've lead to race
      conditions since many places dereference neigh->parms without holding
      locks.  It's also unnecessary to reset n->parms since we're no longer
      in a hurry to see it go due to the new ref counting.
      
      You'll also notice that I've put all dereferences of dev->*_ptr under
      the rcu_read_lock().  Without this we may get a neigh_parms that's
      already been released.
      
      Incidentally a lot of these places were racy even before the RCU change.
      For example, in the IPv6 case neigh->parms may be set to a value that's
      just been released.
      
      Finally in order to make sure that all stale entries are purged as
      quickly as possible I've added neigh_ifdown/arp_ifdown calls after
      every neigh_parms_release call.  In many cases we now have multiple
      calls to neigh_ifdown in the shutdown path.  I didn't remove the
      earlier calls because there may be hidden dependencies for them to
      be there.  Once the respective maintainers have looked at them we
      can probably remove most of them.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      10bc9563
  3. 02 Sep, 2004 32 commits
  4. 01 Sep, 2004 5 commits