1. 01 Aug, 2018 21 commits
  2. 31 Jul, 2018 8 commits
  3. 30 Jul, 2018 11 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