1. 12 7月, 2012 2 次提交
  2. 11 7月, 2012 1 次提交
  3. 05 7月, 2012 1 次提交
  4. 23 6月, 2012 1 次提交
  5. 16 6月, 2012 1 次提交
    • D
      ipv6: Handle PMTU in ICMP error handlers. · 81aded24
      David S. Miller 提交于
      One tricky issue on the ipv6 side vs. ipv4 is that the ICMP callouts
      to handle the error pass the 32-bit info cookie in network byte order
      whereas ipv4 passes it around in host byte order.
      
      Like the ipv4 side, we have two helper functions.  One for when we
      have a socket context and one for when we do not.
      
      ip6ip6 tunnels are not handled here, because they handle PMTU events
      by essentially relaying another ICMP packet-too-big message back to
      the original sender.
      
      This patch allows us to get rid of rt6_do_pmtu_disc().  It handles all
      kinds of situations that simply cannot happen when we do the PMTU
      update directly using a fully resolved route.
      
      In fact, the "plen == 128" check in ip6_rt_update_pmtu() can very
      likely be removed or changed into a BUG_ON() check.  We should never
      have a prefixed ipv6 route when we get there.
      
      Another piece of strange history here is that TCP and DCCP, unlike in
      ipv4, never invoke the update_pmtu() method from their ICMP error
      handlers.  This is incredibly astonishing since this is the context
      where we have the most accurate context in which to make a PMTU
      update, namely we have a fully connected socket and associated cached
      socket route.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      81aded24
  6. 17 5月, 2012 1 次提交
  7. 21 4月, 2012 2 次提交
  8. 20 4月, 2012 1 次提交
  9. 16 4月, 2012 1 次提交
  10. 15 4月, 2012 1 次提交
  11. 04 3月, 2012 2 次提交
  12. 12 1月, 2012 1 次提交
  13. 20 12月, 2011 2 次提交
  14. 17 12月, 2011 1 次提交
  15. 12 12月, 2011 1 次提交
  16. 10 12月, 2011 2 次提交
  17. 07 12月, 2011 2 次提交
  18. 02 12月, 2011 2 次提交
    • D
      dccp: Fix compile warning in probe code. · d984e619
      David S. Miller 提交于
      Commit 1386be55 ("dccp: fix
      auto-loading of dccp(_probe)") fixed a bug but created a new
      compiler warning:
      
      net/dccp/probe.c: In function ‘dccpprobe_init’:
      net/dccp/probe.c:166:2: warning: the omitted middle operand in ?: will always be ‘true’, suggest explicit middle operand [-Wparentheses]
      
      try_then_request_module() is built for situations where the
      "existence" test is some lookup function that returns a non-NULL
      object on success, and with a reference count of some kind held.
      
      Here we're looking for a success return of zero from the jprobe
      registry.
      
      Instead of fighting the way try_then_request_module() works, simply
      open code what we want to happen in a local helper function.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d984e619
    • D
      dccp: Evaluate ip_hdr() only once in dccp_v4_route_skb(). · 898f7358
      David S. Miller 提交于
      This also works around a bogus gcc warning generated by an
      upcoming patch from Eric Dumazet that rearranges the layout
      of struct flowi4.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      898f7358
  19. 23 11月, 2011 1 次提交
  20. 22 11月, 2011 1 次提交
  21. 09 11月, 2011 1 次提交
  22. 04 11月, 2011 1 次提交
  23. 01 11月, 2011 2 次提交
  24. 27 10月, 2011 1 次提交
  25. 07 8月, 2011 1 次提交
    • D
      net: Compute protocol sequence numbers and fragment IDs using MD5. · 6e5714ea
      David S. Miller 提交于
      Computers have become a lot faster since we compromised on the
      partial MD4 hash which we use currently for performance reasons.
      
      MD5 is a much safer choice, and is inline with both RFC1948 and
      other ISS generators (OpenBSD, Solaris, etc.)
      
      Furthermore, only having 24-bits of the sequence number be truly
      unpredictable is a very serious limitation.  So the periodic
      regeneration and 8-bit counter have been removed.  We compute and
      use a full 32-bit sequence number.
      
      For ipv6, DCCP was found to use a 32-bit truncated initial sequence
      number (it needs 43-bits) and that is fixed here as well.
      Reported-by: NDan Kaminsky <dan@doxpara.com>
      Tested-by: NWilly Tarreau <w@1wt.eu>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6e5714ea
  26. 01 8月, 2011 7 次提交
    • S
      dccp ccid-2: check Ack Ratio when reducing cwnd · d96a9e8d
      Samuel Jero 提交于
      This patch causes CCID-2 to check the Ack Ratio after reducing the congestion
      window. If the Ack Ratio is greater than the congestion window, it is
      reduced. This prevents timeouts caused by an Ack Ratio larger than the
      congestion window.
      
      In this situation, we choose to set the Ack Ratio to half the congestion window
      (or one if that's zero) so that if we loose one ack we don't trigger a timeout.
      
      Signed-off-by: Samuel Jero <sj323707@ohio.edu> 
      Acked-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      d96a9e8d
    • S
      dccp ccid-2: increment cwnd correctly · 0ce95dc7
      Samuel Jero 提交于
      This patch fixes an issue where CCID-2 will not increase the congestion
      window for numerous RTTs after an idle period, application-limited period,
      or a loss once the algorithm is in Congestion Avoidance.
      
      What happens is that, when CCID-2 is in Congestion Avoidance mode, it will
      increase hc->tx_packets_acked by one for every packet and will increment cwnd
      every cwnd packets. However, if there is now an idle period in the connection,
      cwnd will be reduced, possibly below the slow start threshold. This will
      cause the connection to go into Slow Start. However, in Slow Start CCID-2
      performs this test to increment cwnd every second ack:
      
      	++hc->tx_packets_acked == 2
      
      Unfortunately, this will be incorrect, if cwnd previous to the idle period
      was larger than 2 and if tx_packets_acked was close to cwnd. For example:
      	cwnd=50  and  tx_packets_acked=45.
      
      In this case, the current code, will increment tx_packets_acked until it
      equals two, which will only be once tx_packets_acked (an unsigned 32-bit
      integer) overflows.
      
      My fix is simply to change that test for tx_packets_acked greater than or
      equal to two in slow start.
      Signed-off-by: NSamuel Jero <sj323707@ohio.edu>
      Acked-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      0ce95dc7
    • S
      dccp ccid-2: prevent cwnd > Sequence Window · d346d886
      Samuel Jero 提交于
      Add a check to prevent CCID-2 from increasing the cwnd greater than the
      Sequence Window.
      
      When the congestion window becomes bigger than the Sequence Window, CCID-2
      will attempt to keep more data in the network than the DCCP Sequence Window
      code considers possible. This results in the Sequence Window code issuing
      a Sync, thereby inducing needless overhead. Further, if this occurs at the
      sender, CCID-2 will never detect the problem because the Acks it receives
      will indicate no losses. I have seen this cause a drop of 1/3rd in throughput
      for a connection.
      
      Also add code to adjust the Sequence Window to be about 5 times the number of
      packets in the network (RFC 4340, 7.5.2) and to adjust the Ack Ratio so that
      the remote Sequence Window will hold about 5 times the number of packets in
      the network. This allows the congestion window to increase correctly without
      being limited by the Sequence Window.
      Signed-off-by: NSamuel Jero <sj323707@ohio.edu>
      Acked-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      d346d886
    • G
      dccp ccid-2: use feature-negotiation to report Ack Ratio changes · 31daf039
      Gerrit Renker 提交于
      This uses the new feature-negotiation framework to signal Ack Ratio changes,
      as required by RFC 4341, sec. 6.1.2.
      
      That raises some problems with CCID-2, which at the moment can not cope
      gracefully with Ack Ratios > 1. Since these issues are not directly related
      to feature negotiation, they are marked by a FIXME.
      Signed-off-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      Signed-off-by: NSamuel Jero <sj323707@ohio.edu>
      Acked-by: NIan McDonald <ian.mcdonald@jandi.co.uk>
      31daf039
    • S
      dccp: send Confirm options only once · a6444f42
      Samuel Jero 提交于
      If a connection is in the OPEN state, remove feature negotiation Confirm
      options from the list of options after sending them once; as such options
      are NOT supposed to be retransmitted and are ONLY supposed to be sent in
      response to a Change option (RFC 4340 6.2).
      Signed-off-by: NSamuel Jero <sj323707@ohio.edu>
      Acked-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      a6444f42
    • G
      dccp: support for exchanging of NN options in established state 2/2 · 44e6fd9e
      Gerrit Renker 提交于
      This patch adds the receiver side and the (fast-path) activation part for
      dynamic changes of non-negotiable (NN) parameters in (PART)OPEN state.
      Signed-off-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      Signed-off-by: NSamuel Jero <sj323707@ohio.edu>
      Acked-by: NIan McDonald <ian.mcdonald@jandi.co.uk>
      44e6fd9e
    • G
      dccp: support for the exchange of NN options in established state 1/2 · d6916f87
      Gerrit Renker 提交于
      In contrast to static feature negotiation at the begin of a connection, this
      patch introduces support for exchange of dynamically changing options.
      
      Such an update/exchange is necessary in at least two cases:
       * CCID-2's Ack Ratio (RFC 4341, 6.1.2) which changes during the connection;
       * Sequence Window values that, as per RFC 4340, 7.5.2, should be sent "as
         the connection progresses".
      
      Both are non-negotiable (NN) features, which means that no new capabilities
      are negotiated, but rather that changes in known parameters are brought
      up-to-date at either end.
      
      Thse characteristics are reflected by the implementation:
       * only NN options can be exchanged after connection setup;
       * an ack is scheduled directly after activation to speed up the update;
       * CCIDs may request changes to an NN feature even if a negotiation for that
         feature is already underway: this is required by CCID-2, where changes in
         cwnd necessitate Ack Ratio changes, such that the previous Ack Ratio (which
         is still being negotiated) would cause irrecoverable RTO timeouts (thanks
         to work by Samuel Jero).	   
      Signed-off-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      Signed-off-by: NSamuel Jero <sj323707@ohio.edu>
      Acked-by: NIan McDonald <ian.mcdonald@jandi.co.uk>
      d6916f87