1. 18 12月, 2018 6 次提交
  2. 17 12月, 2018 27 次提交
  3. 16 12月, 2018 7 次提交
    • S
      l2tp: Add protocol field decompression · c151acc6
      Sam Protsenko 提交于
      When Protocol Field Compression (PFC) is enabled, the "Protocol" field
      in PPP packet will be received without leading 0x00. See section 6.5 in
      RFC 1661 for details. So let's decompress protocol field if needed, the
      same way it's done in drivers/net/ppp/pptp.c.
      
      In case when "nopcomp" pppd option is not enabled, PFC (pcomp) can be
      negotiated during LCP handshake, and L2TP driver in kernel will receive
      PPP packets with compressed Protocol field, which in turn leads to next
      error:
      
          Protocol Rejected (unsupported protocol 0x2145)
      
      because instead of Protocol=0x0021 in PPP packet there will be
      Protocol=0x21. This patch unwraps it back to 0x0021, which fixes the
      issue.
      
      Sending the compressed Protocol field will be implemented in subsequent
      patch, this one is self-sufficient.
      Signed-off-by: NSam Protsenko <semen.protsenko@linaro.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c151acc6
    • D
      Merge tag 'mlx5e-updates-2018-12-14' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux · 63de273f
      David S. Miller 提交于
      Saeed Mahameed says:
      
      ====================
      mlx5e-updates-2018-12-14 (VF Lag)
      
      From Aviv Heller,
      
      Subsequent patches introduce VF LAG, which provdies load-balancing and
      high-availability capabilities for VFs associated with different
      physical ports of the same Connect-X card.
      
      This series consists of the following:
       - mlx5 devcom, driver infrastructure that facilitates operations that involve
         both core devices (physical functions) of the same card, to synchronize and
         communicate between two driver instances of the same card.
       - Infrastructure for TC rule duplication.
       - Changes to LAG logic to enable its use when SR-IOV is enabled
       - PFs in switchdev mode is the only mode currently supported.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      63de273f
    • D
      Merge branch 'net-mitigate-retpoline-overhead' · bedf3b33
      David S. Miller 提交于
      Paolo Abeni says:
      
      ====================
      net: mitigate retpoline overhead
      
      The spectre v2 counter-measures, aka retpolines, are a source of measurable
      overhead[1]. We can partially address that when the function pointer refers to
      a builtin symbol resorting to a list of tests vs well-known builtin function and
      direct calls.
      
      Experimental results show that replacing a single indirect call via
      retpoline with several branches and a direct call gives performance gains
      even when multiple branches are added - 5 or more, as reported in [2].
      
      This may lead to some uglification around the indirect calls. In netconf 2018
      Eric Dumazet described a technique to hide the most relevant part of the needed
      boilerplate with some macro help.
      
      This series is a [re-]implementation of such idea, exposing the introduced
      helpers in a new header file. They are later leveraged to avoid the indirect
      call overhead in the GRO path, when possible.
      
      Overall this gives > 10% performance improvement for UDP GRO benchmark and
      smaller but measurable for TCP syn flood.
      
      The added infra can be used in follow-up patches to cope with retpoline overhead
      in other points of the networking stack (e.g. at the qdisc layer) and possibly
      even in other subsystems.
      
      v2  -> v3:
       - fix build error with CONFIG_IPV6=m
      
      v1  -> v2:
       - list explicitly the builtin function names in INDIRECT_CALL_*(),
         as suggested by Ed Cree
       - expand the recipients list
      
      rfc -> v1:
       - use branch prediction hints, as suggested by Eric
      
      [1] http://vger.kernel.org/netconf2018_files/PaoloAbeni_netconf2018.pdf
      [2] https://linuxplumbersconf.org/event/2/contributions/99/attachments/98/117/lpc18_paper_af_xdp_perf-v2.pdf
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bedf3b33
    • P
      udp: use indirect call wrappers for GRO socket lookup · 4f24ed77
      Paolo Abeni 提交于
      This avoids another indirect call for UDP GRO. Again, the test
      for the IPv6 variant is performed first.
      
      v1 -> v2:
       - adapted to INDIRECT_CALL_ changes
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4f24ed77
    • P
      net: use indirect call wrappers at GRO transport layer · 028e0a47
      Paolo Abeni 提交于
      This avoids an indirect call in the receive path for TCP and UDP
      packets. TCP takes precedence on UDP, so that we have a single
      additional conditional in the common case.
      
      When IPV6 is build as module, all gro symbols except UDPv6 are
      builtin, while the latter belong to the ipv6 module, so we
      need some special care.
      
      v1 -> v2:
       - adapted to INDIRECT_CALL_ changes
      v2 -> v3:
       - fix build issue with CONFIG_IPV6=m
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      028e0a47
    • P
      net: use indirect call wrappers at GRO network layer · aaa5d90b
      Paolo Abeni 提交于
      This avoids an indirect calls for L3 GRO receive path, both
      for ipv4 and ipv6, if the latter is not compiled as a module.
      
      Note that when IPv6 is compiled as builtin, it will be checked first,
      so we have a single additional compare for the more common path.
      
      v1 -> v2:
       - adapted to INDIRECT_CALL_ changes
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      aaa5d90b
    • P
      indirect call wrappers: helpers to speed-up indirect calls of builtin · 283c16a2
      Paolo Abeni 提交于
      This header define a bunch of helpers that allow avoiding the
      retpoline overhead when calling builtin functions via function pointers.
      It boils down to explicitly comparing the function pointers to
      known builtin functions and eventually invoke directly the latter.
      
      The macros defined here implement the boilerplate for the above schema
      and will be used by the next patches.
      
      rfc -> v1:
       - use branch prediction hint, as suggested by Eric
      v1  -> v2:
       - list explicitly the builtin function names in INDIRECT_CALL_*(),
         as suggested by Ed Cree
      Suggested-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      283c16a2