1. 06 Dec, 2018 30 commits
  2. 05 Dec, 2018 9 commits
  3. 04 Dec, 2018 1 commit
    • David S. Miller's avatar
      Merge branch 'mlxsw-Add-one-armed-router-support' · 55827458
      David S. Miller authored
      Ido Schimmel says:
      
      ====================
      mlxsw: Add one-armed router support
      
      Up until now, when a packet was routed by the ASIC through the same
      router interface (RIF) from which it ingressed from, the ASIC passed the
      sole copy of the packet to the kernel. This allowed the kernel to route
      the packet and also potentially generate an ICMP redirect.
      
      There are scenarios (e.g., "one-armed router") where packets are
      intentionally routed this way and are therefore not deemed as
      exceptions. In such scenarios the current method of trapping packets to
      the CPU is problematic, as it results in major packet loss.
      
      This patchset solves the problem by having the ASIC forward the packet,
      but also send a copy to the CPU, which gives the kernel the opportunity
      to generate required exceptions.
      
      To prevent the kernel from forwarding such packets again, the driver
      marks them with 'offload_l3_fwd_mark', which causes the kernel to
      consume them in ip{,6}_forward_finish().
      
      Patch #1 renames 'offload_mr_fwd_mark' to 'offload_l3_fwd_mark'. When
      set, the field indicates that a packet was already forwarded in L3
      (unicast / multicast) by a capable device.
      
      Patch #2 teaches the kernel to consume unicast packets that have
      'offload_l3_fwd_mark' set.
      
      Patch #3 changes mlxsw to mirror loopbacked (iRIF == eRIF) packets,
      instead of trapping them.
      
      Patch #4 adds a test case for above mentioned scenario.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      55827458