1. 24 5月, 2019 14 次提交
  2. 23 5月, 2019 26 次提交
    • S
      hv_sock: perf: loop in send() to maximize bandwidth · 14a1eaa8
      Sunil Muthuswamy 提交于
      Currently, the hv_sock send() iterates once over the buffer, puts data into
      the VMBUS channel and returns. It doesn't maximize on the case when there
      is a simultaneous reader draining data from the channel. In such a case,
      the send() can maximize the bandwidth (and consequently minimize the cpu
      cycles) by iterating until the channel is found to be full.
      
      Perf data:
      Total Data Transfer: 10GB/iteration
      Single threaded reader/writer, Linux hvsocket writer with Windows hvsocket
      reader
      Packet size: 64KB
      CPU sys time was captured using the 'time' command for the writer to send
      10GB of data.
      'Send Buffer Loop' is with the patch applied.
      The values below are over 10 iterations.
      
      |--------------------------------------------------------|
      |        |        Current        |   Send Buffer Loop    |
      |--------------------------------------------------------|
      |        | Throughput | CPU sys  | Throughput | CPU sys  |
      |        | (MB/s)     | time (s) | (MB/s)     | time (s) |
      |--------------------------------------------------------|
      | Min    |     407    |   7.048  |    401     |  5.958   |
      |--------------------------------------------------------|
      | Max    |     455    |   7.563  |    542     |  6.993   |
      |--------------------------------------------------------|
      | Avg    |     440    |   7.411  |    451     |  6.639   |
      |--------------------------------------------------------|
      | Median |     446    |   7.417  |    447     |  6.761   |
      |--------------------------------------------------------|
      
      Observation:
      1. The avg throughput doesn't really change much with this change for this
      scenario. This is most probably because the bottleneck on throughput is
      somewhere else.
      2. The average system (or kernel) cpu time goes down by 10%+ with this
      change, for the same amount of data transfer.
      Signed-off-by: NSunil Muthuswamy <sunilmut@microsoft.com>
      Reviewed-by: NDexuan Cui <decui@microsoft.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      14a1eaa8
    • S
      hv_sock: perf: Allow the socket buffer size options to influence the actual socket buffers · ac383f58
      Sunil Muthuswamy 提交于
      Currently, the hv_sock buffer size is static and can't scale to the
      bandwidth requirements of the application. This change allows the
      applications to influence the socket buffer sizes using the SO_SNDBUF and
      the SO_RCVBUF socket options.
      
      Few interesting points to note:
      1. Since the VMBUS does not allow a resize operation of the ring size, the
      socket buffer size option should be set prior to establishing the
      connection for it to take effect.
      2. Setting the socket option comes with the cost of that much memory being
      reserved/allocated by the kernel, for the lifetime of the connection.
      
      Perf data:
      Total Data Transfer: 1GB
      Single threaded reader/writer
      Results below are summarized over 10 iterations.
      
      Linux hvsocket writer + Windows hvsocket reader:
      |---------------------------------------------------------------------------------------------|
      |Packet size ->   |      128B       |       1KB       |       4KB       |        64KB         |
      |---------------------------------------------------------------------------------------------|
      |SO_SNDBUF size | |                 Throughput in MB/s (min/max/avg/median):                  |
      |               v |                                                                           |
      |---------------------------------------------------------------------------------------------|
      |      Default    | 109/118/114/116 | 636/774/701/700 | 435/507/480/476 |   410/491/462/470   |
      |      16KB       | 110/116/112/111 | 575/705/662/671 | 749/900/854/869 |   592/824/692/676   |
      |      32KB       | 108/120/115/115 | 703/823/767/772 | 718/878/850/866 | 1593/2124/2000/2085 |
      |      64KB       | 108/119/114/114 | 592/732/683/688 | 805/934/903/911 | 1784/1943/1862/1843 |
      |---------------------------------------------------------------------------------------------|
      
      Windows hvsocket writer + Linux hvsocket reader:
      |---------------------------------------------------------------------------------------------|
      |Packet size ->   |     128B    |      1KB        |          4KB        |        64KB         |
      |---------------------------------------------------------------------------------------------|
      |SO_RCVBUF size | |               Throughput in MB/s (min/max/avg/median):                    |
      |               v |                                                                           |
      |---------------------------------------------------------------------------------------------|
      |      Default    | 69/82/75/73 | 313/343/333/336 |   418/477/446/445   |   659/701/676/678   |
      |      16KB       | 69/83/76/77 | 350/401/375/382 |   506/548/517/516   |   602/624/615/615   |
      |      32KB       | 62/83/73/73 | 471/529/496/494 |   830/1046/935/939  | 944/1180/1070/1100  |
      |      64KB       | 64/70/68/69 | 467/533/501/497 | 1260/1590/1430/1431 | 1605/1819/1670/1660 |
      |---------------------------------------------------------------------------------------------|
      Signed-off-by: NSunil Muthuswamy <sunilmut@microsoft.com>
      Reviewed-by: NDexuan Cui <decui@microsoft.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ac383f58
    • E
      ipv4/igmp: shrink struct ip_sf_list · 0db355d4
      Eric Dumazet 提交于
      Removing two 4 bytes holes allows to use kmalloc-32
      kmem cache instead of kmalloc-64 on 64bit kernels.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0db355d4
    • D
      neighbor: Add tracepoint to __neigh_create · fc651001
      David Ahern 提交于
      Add tracepoint to __neigh_create to enable debugging of new entries.
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fc651001
    • D
      selftests: pmtu: Simplify cleanup and namespace names · a92a0a7b
      David Ahern 提交于
      The point of the pause-on-fail argument is to leave the setup as is after
      a test fails to allow a user to debug why it failed. Move the cleanup
      after posting the result to the user to make it so.
      
      Random names for the namespaces are not user friendly when trying to
      debug a failure. Make them simpler and more direct for the tests. Run
      cleanup at the beginning to ensure they are cleaned up if they already
      exist.
      
      Remove cleanup_done. There is no harm in doing cleanup twice; just
      ignore any errors related to not existing - which is already done.
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a92a0a7b
    • D
      selftests: fib-onlink: Make quiet by default · 9b7e94e6
      David Ahern 提交于
      Add VERBOSE argument to fib-onlink-tests.sh and make output quiet by
      default. Add getopt parsing of inputs and support for -v (verbose) and
      -p (pause on fail).
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9b7e94e6
    • D
      net: Set strict_start_type for routes and rules · 75425657
      David Ahern 提交于
      New userspace on an older kernel can send unknown and unsupported
      attributes resulting in an incompelete config which is almost
      always wrong for routing (few exceptions are passthrough settings
      like the protocol that installed the route).
      
      Set strict_start_type in the policies for IPv4 and IPv6 routes and
      rules to detect new, unsupported attributes and fail the route add.
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      75425657
    • D
      Merge branch 'net-Export-functions-for-nexthop-code' · e38f7cbd
      David S. Miller 提交于
      David Ahern says:
      
      ====================
      net: Export functions for nexthop code
      
      This set exports ipv4 and ipv6 fib functions for use by the nexthop
      code. It also adds new ones to send route notifications if a nexthop
      configuration changes.
      
      v2
      - repost of patches dropped at the end of the last dev window
        added patch 8 which exports nh_update_mtu since it is inline with
        the other patches
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e38f7cbd
    • D
      ipv4: Rename and export nh_update_mtu · 06c77c3e
      David Ahern 提交于
      Rename nh_update_mtu to fib_nhc_update_mtu and export for use by the
      nexthop code.
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      06c77c3e
    • D
      ipv4: export fib_info_update_nh_saddr · c3669486
      David Ahern 提交于
      Add scope as input argument versus relying on fib_info reference in
      fib_nh, and export fib_info_update_nh_saddr.
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c3669486
    • D
      ipv4: export fib_flush · 9bd83667
      David Ahern 提交于
      As nexthops are deleted, fib entries referencing it are marked dead.
      Export fib_flush so those entries can be removed in a timely manner.
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9bd83667
    • D
      ipv4: export fib_check_nh · ac1fab2d
      David Ahern 提交于
      Change fib_check_nh to take net, table and scope as input arguments
      over struct fib_config and export for use by nexthop code.
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ac1fab2d
    • D
      ipv4: Add function to send route updates · 1bff1a0c
      David Ahern 提交于
      Add fib_info_notify_update to walk the fib and send RTM_NEWROUTE
      notifications with NLM_F_REPLACE set for entries linked to a fib_info
      that have nh_updated flag set. This helper will be used by the nexthop
      code to notify userspace of routes that are impacted when a nexthop
      config is updated via replace. The new function and its helper are
      similar to how fib_flush and fib_table_flush work for address delete
      and link down events.
      
      This notification is needed for legacy apps that do not understand
      the new nexthop object. Apps that are nexthop aware can use the
      RTA_NH_ID attribute in the route notification to just ignore it.
      
      In the future this should be wrapped in a sysctl to allow OS'es that
      are fully updated to avoid the notificaton storm.
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1bff1a0c
    • D
      ipv6: export function to send route updates · 19a3b7ee
      David Ahern 提交于
      Add fib6_rt_update to send RTM_NEWROUTE with NLM_F_REPLACE set. This
      helper will be used by the nexthop code to notify userspace of routes
      that are impacted when a nexthop config is updated via replace.
      
      This notification is needed for legacy apps that do not understand
      the new nexthop object. Apps that are nexthop aware can use the
      RTA_NH_ID attribute in the route notification to just ignore it.
      
      In the future this should be wrapped in a sysctl to allow OS'es that
      are fully updated to avoid the notificaton storm.
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      19a3b7ee
    • D
      ipv6: Add hook to bump sernum for a route to stubs · cdaa16a4
      David Ahern 提交于
      Add hook to ipv6 stub to bump the sernum up to the root node for a
      route. This is needed by the nexthop code when a nexthop config changes.
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cdaa16a4
    • D
      ipv6: Add delete route hook to stubs · 68a9b13d
      David Ahern 提交于
      Add ip6_del_rt to the IPv6 stub. The hook is needed by the nexthop
      code to remove entries linked to a nexthop that is getting deleted.
      Signed-off-by: NDavid Ahern <dsahern@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      68a9b13d
    • D
      Merge branch 'net-phy-T1-support' · 26b1b8d7
      David S. Miller 提交于
      Andrew Lunn says:
      
      ====================
      net: phy: T1 support
      
      T1 PHYs make use of a single twisted pair, rather than the traditional
      2 pair for 100BaseT or 4 pair for 1000BaseT. This patchset adds link
      modes for 100BaseT1 and 1000BaseT1, and them makes use of 100BaseT1 in
      the list of PHY features used by current T1 drivers.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      26b1b8d7
    • A
      net: phy: Make phy_basic_t1_features use base100t1. · e5fb32c6
      Andrew Lunn 提交于
      Now that there is a link mode for 100BaseT1, use it in
      phy_basic_t1_features so T1 PHY drivers will indicate this mode via
      the Ethtool API.
      Signed-off-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e5fb32c6
    • A
      net: phy: Add support for 100BaseT1 and 1000BaseT1 · b2557764
      Andrew Lunn 提交于
      Add link modes for 100Mbps and 1Gbps over a single pair.
      Signed-off-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b2557764
    • T
      net: phy: dp83867: Allocate state struct in probe · 565d9d22
      Trent Piepho 提交于
      This was being done in config the first time the phy was configured.
      Should be in the probe method.
      
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Heiner Kallweit <hkallweit1@gmail.com>
      Signed-off-by: NTrent Piepho <tpiepho@impinj.com>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      565d9d22
    • T
      net: phy: dp83867: Validate FIFO depth property · f8bbf417
      Trent Piepho 提交于
      Insure property is in valid range and fail when reading DT if it is not.
      Also add error message for existing failure if required property is not
      present.
      
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Heiner Kallweit <hkallweit1@gmail.com>
      Signed-off-by: NTrent Piepho <tpiepho@impinj.com>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f8bbf417
    • T
      net: phy: dp83867: IO impedance is not dependent on RGMII delay · 27708eb5
      Trent Piepho 提交于
      The driver would only set the IO impedance value when RGMII internal
      delays were enabled.  There is no reason for this.  Move the IO
      impedance block out of the RGMII delay block.
      
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Heiner Kallweit <hkallweit1@gmail.com>
      Signed-off-by: NTrent Piepho <tpiepho@impinj.com>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      27708eb5
    • T
      net: phy: dp83867: Use unsigned variables to store unsigned properties · 1b9b2954
      Trent Piepho 提交于
      The variables used to store u32 DT properties were signed ints.  This
      doesn't work properly if the value of the property were to overflow.
      Use unsigned variables so this doesn't happen.
      
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Heiner Kallweit <hkallweit1@gmail.com>
      Signed-off-by: NTrent Piepho <tpiepho@impinj.com>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1b9b2954
    • T
      net: phy: dp83867: Rework delay rgmii delay handling · c11669a2
      Trent Piepho 提交于
      The code was assuming the reset default of the delay control register
      was to have delay disabled.  This is what the datasheet shows as the
      register's initial value.  However, that's not actually true: the
      default is controlled by the PHY's pin strapping.
      
      If the interface mode is selected as RX or TX delay only, insure the
      other direction's delay is disabled.
      
      If the interface mode is just "rgmii", with neither TX or RX internal
      delay, one might expect that the driver should disable both delays.  But
      this is not what the driver does.  It leaves the setting at the PHY's
      strapping's default.  And that default, for no pins with strapping
      resistors, is to have delay enabled and 2.00 ns.
      
      Rather than change this behavior, I've kept it the same and documented
      it.  No delay will most likely not work and will break ethernet on any
      board using "rgmii" mode.  If the board is strapped to have a delay and
      is configured to use "rgmii" mode a warning is generated that "rgmii-id"
      should have been used.
      
      Also validate the delay values and fail if they are not in range.
      
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Heiner Kallweit <hkallweit1@gmail.com>
      Signed-off-by: NTrent Piepho <tpiepho@impinj.com>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c11669a2
    • T
      net: phy: dp83867: Add ability to disable output clock · 13c83cf8
      Trent Piepho 提交于
      Generally, the output clock pin is only used for testing and only serves
      as a source of RF noise after this.  It could be used to daisy-chain
      PHYs, but this is uncommon.  Since the PHY can disable the output, make
      doing so an option.  I do this by adding another enumeration to the
      allowed values of ti,clk-output-sel.
      
      The code was not using the value DP83867_CLK_O_SEL_REF_CLK as one might
      expect: to select the REF_CLK as the output.  Rather it meant "keep
      clock output setting as is", which, depending on PHY strapping, might
      not be outputting REF_CLK.
      
      Change this so DP83867_CLK_O_SEL_REF_CLK means enable REF_CLK output.
      Omitting the property will leave the setting as is (which was the
      previous behavior in this case).
      
      Out of range values were silently converted into
      DP83867_CLK_O_SEL_REF_CLK.  Change this so they generate an error.
      
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Heiner Kallweit <hkallweit1@gmail.com>
      Signed-off-by: NTrent Piepho <tpiepho@impinj.com>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      13c83cf8
    • T
      dt-bindings: phy: dp83867: Add documentation for disabling clock output · 980066e6
      Trent Piepho 提交于
      The clock output is generally only used for testing and development and
      not used to daisy-chain PHYs.  It's just a source of RF noise afterward.
      
      Add a mux value for "off".  I've added it as another enumeration to the
      output property.  In the actual PHY, the mux and the output enable are
      independently controllable.  However, it doesn't seem useful to be able
      to describe the mux setting when the output is disabled.
      
      Document that PHY's default setting will be left as is if the property
      is omitted.
      
      Cc: Rob Herring <robh+dt@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Signed-off-by: NTrent Piepho <tpiepho@impinj.com>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      980066e6