1. 26 Aug, 2011 8 commits
  2. 25 Aug, 2011 11 commits
    • Tim Chen's avatar
      Scm: Remove unnecessary pid & credential references in Unix socket's send and receive path · 0856a304
      Tim Chen authored
      Patch series 109f6e39..7361c36c back in 2.6.36 added functionality to
      allow credentials to work across pid namespaces for packets sent via
      UNIX sockets.  However, the atomic reference counts on pid and
      credentials caused plenty of cache bouncing when there are numerous
      threads of the same pid sharing a UNIX socket.  This patch mitigates the
      problem by eliminating extraneous reference counts on pid and
      credentials on both send and receive path of UNIX sockets. I found a 2x
      improvement in hackbench's threaded case.
      
      On the receive path in unix_dgram_recvmsg, currently there is an
      increment of reference count on pid and credentials in scm_set_cred.
      Then there are two decrement of the reference counts.  Once in scm_recv
      and once when skb_free_datagram call skb->destructor function
      unix_destruct_scm.  One pair of increment and decrement of ref count on
      pid and credentials can be eliminated from the receive path.  Until we
      destroy the skb, we already set a reference when we created the skb on
      the send side.
      
      On the send path, there are two increments of ref count on pid and
      credentials, once in scm_send and once in unix_scm_to_skb.  Then there
      is a decrement of the reference counts in scm_destroy's call to
      scm_destroy_cred at the end of unix_dgram_sendmsg functions.   One pair
      of increment and decrement of the reference counts can be removed so we
      only need to increment the ref counts once.
      
      By incorporating these changes, for hackbench running on a 4 socket
      NHM-EX machine with 40 cores, the execution of hackbench on
      50 groups of 20 threads sped up by factor of 2.
      
      Hackbench command used for testing:
      ./hackbench 50 thread 2000
      Signed-off-by: default avatarTim Chen <tim.c.chen@linux.intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0856a304
    • Michio Honda's avatar
      sctp: Bundle HEAERTBEAT into ASCONF_ACK · 6af29ccc
      Michio Honda authored
      With this patch a HEARTBEAT chunk is bundled into the ASCONF-ACK
      for ADD IP ADDRESS, confirming the new destination as quickly as
      possible.
      Signed-off-by: default avatarMichio Honda <micchie@sfc.wide.ad.jp>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6af29ccc
    • Michio Honda's avatar
      sctp: HEARTBEAT negotiation after ASCONF · f207c050
      Michio Honda authored
      This patch fixes BUG that the ASCONF receiver transmits DATA chunks
      to the newly added UNCONFIRMED destination.
      Signed-off-by: default avatarMichio Honda <micchie@sfc.wide.ad.jp>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f207c050
    • Nandita Dukkipati's avatar
      Proportional Rate Reduction for TCP. · a262f0cd
      Nandita Dukkipati authored
      This patch implements Proportional Rate Reduction (PRR) for TCP.
      PRR is an algorithm that determines TCP's sending rate in fast
      recovery. PRR avoids excessive window reductions and aims for
      the actual congestion window size at the end of recovery to be as
      close as possible to the window determined by the congestion control
      algorithm. PRR also improves accuracy of the amount of data sent
      during loss recovery.
      
      The patch implements the recommended flavor of PRR called PRR-SSRB
      (Proportional rate reduction with slow start reduction bound) and
      replaces the existing rate halving algorithm. PRR improves upon the
      existing Linux fast recovery under a number of conditions including:
        1) burst losses where the losses implicitly reduce the amount of
      outstanding data (pipe) below the ssthresh value selected by the
      congestion control algorithm and,
        2) losses near the end of short flows where application runs out of
      data to send.
      
      As an example, with the existing rate halving implementation a single
      loss event can cause a connection carrying short Web transactions to
      go into the slow start mode after the recovery. This is because during
      recovery Linux pulls the congestion window down to packets_in_flight+1
      on every ACK. A short Web response often runs out of new data to send
      and its pipe reduces to zero by the end of recovery when all its packets
      are drained from the network. Subsequent HTTP responses using the same
      connection will have to slow start to raise cwnd to ssthresh. PRR on
      the other hand aims for the cwnd to be as close as possible to ssthresh
      by the end of recovery.
      
      A description of PRR and a discussion of its performance can be found at
      the following links:
      - IETF Draft:
          http://tools.ietf.org/html/draft-mathis-tcpm-proportional-rate-reduction-01
      - IETF Slides:
          http://www.ietf.org/proceedings/80/slides/tcpm-6.pdf
          http://tools.ietf.org/agenda/81/slides/tcpm-2.pdf
      - Paper to appear in Internet Measurements Conference (IMC) 2011:
          Improving TCP Loss Recovery
          Nandita Dukkipati, Matt Mathis, Yuchung Cheng
      Signed-off-by: default avatarNandita Dukkipati <nanditad@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a262f0cd
    • chetan loke's avatar
      af-packet: TPACKET_V3 flexible buffer implementation. · f6fb8f10
      chetan loke authored
      1) Blocks can be configured with non-static frame-size.
      2) Read/poll is at a block-level(as opposed to packet-level).
      3) Added poll timeout to avoid indefinite user-space wait on idle links.
      4) Added user-configurable knobs:
         4.1) block::timeout.
         4.2) tpkt_hdr::sk_rxhash.
      
      Changes:
      C1) tpacket_rcv()
          C1.1) packet_current_frame() is replaced by packet_current_rx_frame()
                The bulk of the processing is then moved in the following chain:
                packet_current_rx_frame()
                  __packet_lookup_frame_in_block
                    fill_curr_block()
                    or
                      retire_current_block
                      dispatch_next_block
                    or
                    return NULL(queue is plugged/paused)
      Signed-off-by: default avatarChetan Loke <loke.chetan@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f6fb8f10
    • chetan loke's avatar
      af-packet: Added TPACKET_V3 headers. · 0d4691ce
      chetan loke authored
      Added TPACKET_V3 definitions.
      Signed-off-by: default avatarChetan Loke <loke.chetan@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0d4691ce
    • Alexander Smirnov's avatar
      IEEE802.15.4: 6LoWPAN basic support · 44331fe2
      Alexander Smirnov authored
      This patch provides base support for transmission of IPv6 packets as
      well as the formation of IPv6 link-local addresses and statelessly
      autoconfigured addresses on top of IEEE 802.15.4 networks.
      
      For more information please look at the RFC4944 "Compression Format
      for IPv6 Datagrams in Low Power and Losst Networks (6LoWPAN).
      Signed-off-by: default avatarAlexander Smirnov <alex.bluesman.smirnov@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      44331fe2
    • Ian Campbell's avatar
      net: xfrm: convert to SKB frag APIs · 804cf14e
      Ian Campbell authored
      Signed-off-by: default avatarIan Campbell <ian.campbell@citrix.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: netdev@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      804cf14e
    • Ian Campbell's avatar
      net: ipv6: convert to SKB frag APIs · 408dadf0
      Ian Campbell authored
      Signed-off-by: default avatarIan Campbell <ian.campbell@citrix.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
      Cc: "Pekka Savola (ipv6)" <pekkas@netcore.fi>
      Cc: James Morris <jmorris@namei.org>
      Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
      Cc: Patrick McHardy <kaber@trash.net>
      Cc: netdev@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      408dadf0
    • Ian Campbell's avatar
      net: ipv4: convert to SKB frag APIs · aff65da0
      Ian Campbell authored
      Signed-off-by: default avatarIan Campbell <ian.campbell@citrix.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
      Cc: "Pekka Savola (ipv6)" <pekkas@netcore.fi>
      Cc: James Morris <jmorris@namei.org>
      Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
      Cc: Patrick McHardy <kaber@trash.net>
      Cc: netdev@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      aff65da0
    • Ian Campbell's avatar
      net: convert core to skb paged frag APIs · ea2ab693
      Ian Campbell authored
      Signed-off-by: default avatarIan Campbell <ian.campbell@citrix.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Cc: "Michał Mirosław" <mirq-linux@rere.qmqm.pl>
      Cc: netdev@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ea2ab693
  3. 24 Aug, 2011 7 commits
  4. 22 Aug, 2011 13 commits
  5. 21 Aug, 2011 1 commit