1. 24 Aug, 2015 25 commits
  2. 23 Aug, 2015 15 commits
    • Jiri Benc's avatar
      route: fix breakage after moving lwtunnel state · 751a587a
      Jiri Benc authored
      __recnt and related fields need to be in its own cacheline for performance
      reasons. Commit 61adedf3 ("route: move lwtunnel state to dst_entry")
      broke that on 32bit archs, causing BUILD_BUG_ON in dst_hold to be triggered.
      
      This patch fixes the breakage by moving the lwtunnel state to the end of
      dst_entry on 32bit archs. Unfortunately, this makes it share the cacheline
      with __refcnt and may affect performance, thus further patches may be
      needed.
      Reported-by: default avatarkbuild test robot <fengguang.wu@intel.com>
      Fixes: 61adedf3 ("route: move lwtunnel state to dst_entry")
      Signed-off-by: default avatarJiri Benc <jbenc@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      751a587a
    • David S. Miller's avatar
      Merge tag 'linux-can-next-for-4.3-20150820' of... · 31fbde99
      David S. Miller authored
      Merge tag 'linux-can-next-for-4.3-20150820' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next
      
      Marc Kleine-Budde says:
      
      ====================
      this is a pull request of a two patches for net-next.
      
      The first patch is by Nik Nyby and fixes a typo in a function name. The
      second patch by Lucas Stach demotes register output to debug level.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      31fbde99
    • David S. Miller's avatar
      Merge branch 'tipc-failover-fixes' · c5f98b56
      David S. Miller authored
      Jon Maloy says:
      
      ====================
      tipc: fix link failover/synch problems
      
      We fix three problems with the new link failover/synch implementation,
      which was introduced earlier in this release cycle. They are all related
      to situations where there is a very short interval between the disabling
      and enabling of interfaces.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c5f98b56
    • Jon Paul Maloy's avatar
      tipc: fix stale link problem during synchronization · 2be80c2d
      Jon Paul Maloy authored
      Recent changes to the link synchronization means that we can now just
      drop packets arriving on the synchronizing link before the synch point
      is reached. This has lead to significant simplifications to the
      implementation, but also turns out to have a flip side that we need
      to consider.
      
      Under unlucky circumstances, the two endpoints may end up
      repeatedly dropping each other's packets, while immediately
      asking for retransmission of the same packets, just to drop
      them once more. This pattern will eventually be broken when
      the synch point is reached on the other link, but before that,
      the endpoints may have arrived at the retransmission limit
      (stale counter) that indicates that the link should be broken.
      We see this happen at rare occasions.
      
      The fix for this is to not ask for retransmissions when a link is in
      state LINK_SYNCHING. The fact that the link has reached this state
      means that it has already received the first SYNCH packet, and that it
      knows the synch point. Hence, it doesn't need any more packets until the
      other link has reached the synch point, whereafter it can go ahead and
      ask for the missing packets.
      
      However, because of the reduced traffic on the synching link that
      follows this change, it may now take longer to discover that the
      synch point has been reached. We compensate for this by letting all
      packets, on any of the links, trig a check for synchronization
      termination. This is possible because the packets themselves don't
      contain any information that is needed for discovering this condition.
      Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2be80c2d
    • Jon Paul Maloy's avatar
      tipc: interrupt link synchronization when a link goes down · 5ae2f8e6
      Jon Paul Maloy authored
      When we introduced the new link failover/synch mechanism
      in commit 6e498158
      ("tipc: move link synch and failover to link aggregation level"),
      we missed the case when the non-tunnel link goes down during the link
      synchronization period. In this case the tunnel link will remain in
      state LINK_SYNCHING, something leading to unpredictable behavior when
      the failover procedure is initiated.
      
      In this commit, we ensure that the node and remaining link goes
      back to regular communication state (SELF_UP_PEER_UP/LINK_ESTABLISHED)
      when one of the parallel links goes down. We also ensure that we don't
      re-enter synch mode if subsequent SYNCH packets arrive on the remaining
      link.
      Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5ae2f8e6
    • Jon Paul Maloy's avatar
      tipc: eliminate risk of premature link setup during failover · 17b20630
      Jon Paul Maloy authored
      When a link goes down, and there is still a working link towards its
      destination node, a failover is initiated, and the failed link is not
      allowed to re-establish until that procedure is finished. To ensure
      this, the concerned link endpoints are set to state LINK_FAILINGOVER,
      and the node endpoints to NODE_FAILINGOVER during the failover period.
      
      However, if the link reset is due to a disabled bearer, the corres-
      ponding link endpoint is deleted, and only the node endpoint knows
      about the ongoing failover. Now, if the disabled bearer is re-enabled
      during the failover period, the discovery mechanism may create a new
      link endpoint that is ready to be established, despite that this is not
      permitted. This situation may cause both the ongoing failover and any
      subsequent link synchronization to fail.
      
      In this commit, we ensure that a newly created link goes directly to
      state LINK_FAILINGOVER if the corresponding node state is
      NODE_FAILINGOVER. This eliminates the problem described above.
      
      Furthermore, we tighten the criteria for which packets are allowed
      to end a failover state in the function tipc_node_check_state().
      By checking that the receiving link is up and running, instead of just
      checking that it is not in failover mode, we eliminate the risk that
      protocol packets from the re-created link may cause the failover to
      be prematurely terminated.
      Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      17b20630
    • David S. Miller's avatar
      Merge branch 'nps_enet_fixes' · 7f629be1
      David S. Miller authored
      Noam Camus says:
      
      ====================
      *** nps_enet fixups ***
      
      Change v2
      TX done is handled back with NAPI poll.
      
      Change v1
      This patch set is a bunch of fixes to make nps_enet work correctly with
      all platforms, i.e. real device, emulation system, and simulation system.
      The main trigger for this patch set was that in our emulation system
      the TX end interrupt is "edge-sensitive" and therefore we cannot use the
      cause register since it is not sticky.
      Also:
      TX is handled during HW interrupt context and not NAPI job.
      race with TX done was fixed.
      added acknowledge for TX when device is "level sensitive".
      enable drop of control frames which is not needed for regular usage.
      
      So most of this patch set is about TX handling, which is now more complete.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7f629be1
    • Noam Camus's avatar
      NET: nps_enet: minor namespace cleanup · 41493795
      Noam Camus authored
      We define buf_int_enable in the minimal namespace it is used.
      Signed-off-by: default avatarNoam Camus <noamc@ezchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      41493795
    • Noam Camus's avatar
      NET: nps_enet: TX done acknowledge. · 3d99b74a
      Noam Camus authored
      This is needed for when TX done interrupt is in
      "level mode".
      For example it is true for some simulators of this device.
      Signed-off-by: default avatarNoam Camus <noamc@ezchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3d99b74a
    • Noam Camus's avatar
      NET: nps_enet: drop control frames · de671567
      Noam Camus authored
      We set controller to drop control frames and not trying
      to pass them on. This is only needed for debug reasons.
      Signed-off-by: default avatarNoam Camus <noamc@ezchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      de671567
    • Noam Camus's avatar
      NET: nps_enet: TX done race condition · 93fcf83e
      Noam Camus authored
      We need to set tx_skb pointer before send frame.
      If we receive interrupt before we set pointer we will try
      to free SKB with wrong pointer.
      Now we are sure that SKB pointer will never be NULL during
      handling TX done and check is removed.
      Signed-off-by: default avatarNoam Camus <noamc@ezchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      93fcf83e
    • Noam Camus's avatar
      NET: nps_enet: replace use of cause register · 0dd20f3c
      Noam Camus authored
      When interrupt is received we read directly from control
      register for RX/TX instead of reading cause register
      since this register fails to indicate TX done when
      TX interrupt is "edge mode".
      Signed-off-by: default avatarNoam Camus <noamc@ezchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0dd20f3c
    • David S. Miller's avatar
      Merge branch 'gro_tunnels' · 1728369e
      David S. Miller authored
      Tom Herbert says:
      
      ====================
      gro: Fixes for tunnels and GRO
      
      This patch set addresses some issue related to tunneling and GRO:
      
      - Fix remote checksum offload to properly deal with frag0 in GRO.
      - Add support for GRO at VXLAN tunnel (call gro_cells)
      
      Testing: Ran one netperf TCP_STREAM to highlight impact of different
      configurations:
      
      GUE
        Zero UDP checksum
          4628.42 MBps
        UDP checksums enabled
          6800.51 MBps
        UDP checksums and remote checksum offload
          7663.82 MBps
        UDP checksums and remote checksum offload using no-partial
          7287.25 MBps
      
      VXLAN
        Zero UDP checksum
          4112.02
        UDP checksums enabled
          6785.80 MBps
        UDP checksums and remote checksum offload
          7075.56 MBps
      
      v2:
        - Drop "gro: Pull headers into skb head for 1st skb in gro list"
          from patch set
        - In vxlan_remcsum and gue_remcsum return immediately if remcsum
          processing was already done
        - Add gro callbacks for sit offload
        - Use WARN_ON_ONCE if we get a GUE protocol that does not have
          GRO offload support
      
      v3:
        - Don't restore gro callbacks for sit offload
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1728369e
    • Tom Herbert's avatar
      fou: Do WARN_ON_ONCE in gue_gro_receive for bad proto callbacks · 27013661
      Tom Herbert authored
      Do WARN_ON_ONCE instead of WARN_ON in gue_gro_receive when the offload
      callcaks are bad (either don't exist or gro_receive is not specified).
      Signed-off-by: default avatarTom Herbert <tom@herbertland.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      27013661
    • Tom Herbert's avatar
      vxlan: GRO support at tunnel layer · 58ce31cc
      Tom Herbert authored
      Add calls to gro_cells infrastructure to do GRO when receiving on a tunnel.
      
      Testing:
      
      Ran 200 netperf TCP_STREAM instance
      
        - With fix (GRO enabled on VXLAN interface)
      
          Verify GRO is happening.
      
          9084 MBps tput
          3.44% CPU utilization
      
        - Without fix (GRO disabled on VXLAN interface)
      
          Verified no GRO is happening.
      
          9084 MBps tput
          5.54% CPU utilization
      Signed-off-by: default avatarTom Herbert <tom@herbertland.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      58ce31cc