1. 31 Jul, 2018 7 commits
  2. 30 Jul, 2018 21 commits
    • Yidong Ren's avatar
      hv_netvsc: Add per-cpu ethtool stats for netvsc · 6ae74671
      Yidong Ren authored
      This patch implements following ethtool stats fields for netvsc:
      cpu<n>_tx/rx_packets/bytes
      cpu<n>_vf_tx/rx_packets/bytes
      
      Corresponding per-cpu counters already exist in current code. Exposing
      these counters will help troubleshooting performance issues.
      
      for_each_present_cpu() was used instead of for_each_possible_cpu().
      for_each_possible_cpu() would create very long and useless output.
      It is still being used for internal buffer, but not for ethtool
      output.
      
      There could be an overflow if cpu was added between ethtool
      call netvsc_get_sset_count() and netvsc_get_ethtool_stats() and
      netvsc_get_strings(). (still safe if cpu was removed)
      ethtool makes these three function calls separately.
      As long as we use ethtool, I can't see any clean solution.
      
      Currently and in foreseeable short term, Hyper-V doesn't support
      cpu hot-plug. Plus, ethtool is for admin use. Unlikely the admin
      would perform such combo operations.
      
      Changes in v2:
        - Remove cpp style comment
        - Resubmit after freeze
      
      Changes in v3:
        - Reimplemented with kvmalloc instead of alloc_percpu
      
      Changes in v4:
        - Fixed inconsistent array size
        - Use kvmalloc_array instead of kvmalloc
      Signed-off-by: default avatarYidong Ren <yidren@microsoft.com>
      Reviewed-by: default avatarStephen Hemminger <sthemmin@microsoft.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6ae74671
    • David S. Miller's avatar
      Merge branch 'selftests-mirror-to-gretap-with-team' · 494f2e76
      David S. Miller authored
      Petr Machata says:
      
      ====================
      A test for mirror-to-gretap with team in UL packet path
      
      This patchset adds a test for "tc action mirred mirror" where the
      mirrored-to device is a gretap, and underlay path contains a team
      device.
      
      In patch #1 require_command() is added, which should henceforth be used
      to declare dependence on a certain tool.
      
      In patch #2, two new functions, team_create() and team_destroy(), are
      added to lib.sh.
      
      The newly-added test uses arping, which isn't necessarily available.
      Therefore patch #3 introduces $ARPING, and a preexisting test is fixed
      to require_command $ARPING.
      
      In patches #4 and #5, two new tests are added. In both cases, a team
      device is on egress path of a mirrored packet in a mirror-to-gretap
      scenario. In the first one, the team device is in loadbalance mode, in
      the second one it's in lacp mode. (The difference in modes necessitates
      a different testing strategy, hence two test cases instead of just
      parameterizing one.)
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      494f2e76
    • Petr Machata's avatar
      selftests: forwarding: Test mirror-to-gretap w/ UL team LACP · 541c6ce3
      Petr Machata authored
      This tests mirror-to-gretap when an underlay packet path includes a team
      device which is not in loadbalance mode, but in LACP mode. The test
      manipulates LAG membership to achieve changes in txability, thus making
      sure that a driver that offloads mirror-to-gretap doesn't just consider
      upness of a device.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      541c6ce3
    • Petr Machata's avatar
      selftests: forwarding: Test mirror-to-gretap w/ UL team · a9b33b20
      Petr Machata authored
      Test for "tc action mirred egress mirror" that mirrors to gretap when
      the underlay route points at a VLAN-aware bridge (802.1q), and the
      traffic egresses the bridge through a team device. Test upping and
      downing individual team device slaves and verify the traffic flows as
      expected.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a9b33b20
    • Petr Machata's avatar
      selftests: forwarding: Introduce $ARPING · ca70a562
      Petr Machata authored
      Instead of relying on "arping" being installed everywhere under that
      name, introduce a variable $ARPING like the other tools do.
      
      Convert an existing test, mirror_gre_vlan_bridge_1q.sh to
      require_command $ARPING and then invoke arping through the variable.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ca70a562
    • Petr Machata's avatar
      selftests: forwarding: lib: Support team devices · 9d9e6bde
      Petr Machata authored
      Add team_create() and team_destroy() to manage team netdevices.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9d9e6bde
    • Petr Machata's avatar
      selftests: forwarding: lib: Add require_command() · e094574f
      Petr Machata authored
      The logic for testing whether a certain command is available is used
      several times in the current code base. The tests in follow-up patches
      add more requirements like that.
      
      Therefore extract the logic into a named function, require_command(),
      that can be used directly from lib.sh as well as from any test that
      wishes to declare dependence on some command.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e094574f
    • YueHaibing's avatar
      fib_rules: NULL check before kfree is not needed · 778c4d5c
      YueHaibing authored
      kfree(NULL) is safe,so this removes NULL check before freeing the mem
      Signed-off-by: default avatarYueHaibing <yuehaibing@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      778c4d5c
    • Quentin Schulz's avatar
      net: phy: mscc: the extended page access register is 16 bits · 86ff7362
      Quentin Schulz authored
      The Extended Page Access is a 16-bit register, so change the page
      parameter of vsc85xx_phy_page_set to a u16.
      Signed-off-by: default avatarQuentin Schulz <quentin.schulz@bootlin.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      86ff7362
    • Vakul Garg's avatar
      net/tls: Use socket data_ready callback on record availability · ad13acce
      Vakul Garg authored
      On receipt of a complete tls record, use socket's saved data_ready
      callback instead of state_change callback. In function tls_queue(),
      the TLS record is queued in encrypted state. But the decryption
      happen inline when tls_sw_recvmsg() or tls_sw_splice_read() get invoked.
      So it should be ok to notify the waiting context about the availability
      of data as soon as we could collect a full TLS record. For new data
      availability notification, sk_data_ready callback is more appropriate.
      It points to sock_def_readable() which wakes up specifically for EPOLLIN
      event. This is in contrast to the socket callback sk_state_change which
      points to sock_def_wakeup() which issues a wakeup unconditionally
      (without event mask).
      Signed-off-by: default avatarVakul Garg <vakul.garg@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ad13acce
    • David S. Miller's avatar
      Merge branch 'TC-refactor-act_mirred-packets-re-injection' · 8f3f6500
      David S. Miller authored
      Paolo Abeni says:
      
      ====================
      TC: refactor act_mirred packets re-injection
      
      This series is aimed at improving the act_mirred redirect performances.
      Such action is used by OVS to represent TC S/W flows, and it's current largest
      bottle-neck is the need for a skb_clone() for each packet.
      
      The first 2 patches introduce some cleanup and safeguards to allow extending
      tca_result - we will use it to store RCU protected redirect information - and
      introduce a clear separation between user-space accessible tcfa_action
      values and internal values accessible only by the kernel.
      Then a new tcfa_action value is introduced: TC_ACT_REINJECT, similar to
      TC_ACT_REDIRECT, but preserving the mirred semantic. Such value is not
      accessible from user-space.
      The last patch exploits the newly introduced infrastructure in the act_mirred
      action, to avoid a skb_clone, when possible.
      
      Overall this the above gives a ~10% performance improvement in forwarding tput,
      when using the TC S/W datapath.
      
      v1 -> v2:
       - preserve the rcu lock in act_bpf
       - add and use a new action value to reinject the packets, preserving the mirred
         semantic
      
      v2 -> v3:
       - renamed to new action as TC_ACT_REINJECT
       - TC_ACT_REINJECT is not exposed to user-space
      
      v3 -> v4:
       - dropped the TC_ACT_REDIRECT patch
       - report failure via extack, too
       - rename the new action as TC_ACT_REINSERT
       - skip clone only if the control action don't touch tcf_result
      
      v4 -> v5:
       - fix a couple of build issue reported by kbuild bot
       - dont split messages
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8f3f6500
    • Paolo Abeni's avatar
      act_mirred: use TC_ACT_REINSERT when possible · e5cf1baf
      Paolo Abeni authored
      When mirred is invoked from the ingress path, and it wants to redirect
      the processed packet, it can now use the TC_ACT_REINSERT action,
      filling the tcf_result accordingly, and avoiding a per packet
      skb_clone().
      
      Overall this gives a ~10% improvement in forwarding performance for the
      TC S/W data path and TC S/W performances are now comparable to the
      kernel openvswitch datapath.
      
      v1 -> v2: use ACT_MIRRED instead of ACT_REDIRECT
      v2 -> v3: updated after action rename, fixed typo into the commit
      	message
      v3 -> v4: updated again after action rename, added more comments to
      	the code (JiriP), skip the optimization if the control action
      	need to touch the tcf_result (Paolo)
      v4 -> v5: fix sparse warning (kbuild bot)
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e5cf1baf
    • Paolo Abeni's avatar
      net/tc: introduce TC_ACT_REINSERT. · cd11b164
      Paolo Abeni authored
      This is similar TC_ACT_REDIRECT, but with a slightly different
      semantic:
      - on ingress the mirred skbs are passed to the target device
      network stack without any additional check not scrubbing.
      - the rcu-protected stats provided via the tcf_result struct
        are updated on error conditions.
      
      This new tcfa_action value is not exposed to the user-space
      and can be used only internally by clsact.
      
      v1 -> v2: do not touch TC_ACT_REDIRECT code path, introduce
       a new action type instead
      v2 -> v3:
       - rename the new action value TC_ACT_REINJECT, update the
         helper accordingly
       - take care of uncloned reinjected packets in XDP generic
         hook
      v3 -> v4:
       - renamed again the new action value (JiriP)
      v4 -> v5:
       - fix build error with !NET_CLS_ACT (kbuild bot)
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cd11b164
    • Paolo Abeni's avatar
      tc/act: remove unneeded RCU lock in action callback · 7fd4b288
      Paolo Abeni authored
      Each lockless action currently does its own RCU locking in ->act().
      This allows using plain RCU accessor, even if the context
      is really RCU BH.
      
      This change drops the per action RCU lock, replace the accessors
      with the _bh variant, cleans up a bit the surrounding code and
      documents the RCU status in the relevant header.
      No functional nor performance change is intended.
      
      The goal of this patch is clarifying that the RCU critical section
      used by the tc actions extends up to the classifier's caller.
      
      v1 -> v2:
       - preserve rcu lock in act_bpf: it's needed by eBPF helpers,
         as pointed out by Daniel
      
      v3 -> v4:
       - fixed some typos in the commit message (JiriP)
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7fd4b288
    • Paolo Abeni's avatar
      net/sched: user-space can't set unknown tcfa_action values · 802bfb19
      Paolo Abeni authored
      Currently, when initializing an action, the user-space can specify
      and use arbitrary values for the tcfa_action field. If the value
      is unknown by the kernel, is implicitly threaded as TC_ACT_UNSPEC.
      
      This change explicitly checks for unknown values at action creation
      time, and explicitly convert them to TC_ACT_UNSPEC. No functional
      changes are introduced, but this will allow introducing tcfa_action
      values not exposed to user-space in a later patch.
      
      Note: we can't use the above to hide TC_ACT_REDIRECT from user-space,
      as the latter is already part of uAPI.
      
      v3 -> v4:
       - use an helper to check for action validity (JiriP)
       - emit an extack for invalid actions (JiriP)
      v4 -> v5:
       - keep messages on a single line, drop net_warn (Marcelo)
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      802bfb19
    • YueHaibing's avatar
      liquidio: remove redundant function cn23xx_dump_iq_regs · c87fffc5
      YueHaibing authored
      There are no in-tree callers of cn23xx_dump_iq_regs.
      Signed-off-by: default avatarYueHaibing <yuehaibing@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c87fffc5
    • David S. Miller's avatar
      Merge branch 'socket-poll-related-cleanups-v2' · b0a03819
      David S. Miller authored
      Christoph Hellwig says:
      
      ====================
      socket poll related cleanups v2
      
      A couple of cleanups I stumbled upon when studying the networking
      poll code.
      
      Changes since v1:
       - drop a dispute patch from this series (to be sent separately)
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b0a03819
    • Christoph Hellwig's avatar
      net: remove sock_poll_busy_flag · a331de3b
      Christoph Hellwig authored
      Fold it into the only caller to make the code simpler and easier to read.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a331de3b
    • Christoph Hellwig's avatar
      net: remove sock_poll_busy_loop · f641f13b
      Christoph Hellwig authored
      There is no point in hiding this logic in a helper.  Also remove the
      useless events != 0 check and only busy loop once we know we actually
      have a poll method.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f641f13b
    • Christoph Hellwig's avatar
      net: don not detour through struct sock to find the poll waitqueue · d8bbd13b
      Christoph Hellwig authored
      For any open socket file descriptor sock->sk->sk_wq->wait will always
      point to sock->wq->wait.  That means we can do the shorter dereference
      and removal a NULL check and don't have to not worry about any RCU
      protection.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d8bbd13b
    • Christoph Hellwig's avatar
      net: simplify sock_poll_wait · dd979b4d
      Christoph Hellwig authored
      The wait_address argument is always directly derived from the filp
      argument, so remove it.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dd979b4d
  3. 29 Jul, 2018 12 commits