Skip to content
Permalink
Yangbo-Lu/Supp…
Switch branches/tags

Commits on Apr 16, 2021

  1. net: mscc: ocelot: support PTP Sync one-step timestamping

    Although HWTSTAMP_TX_ONESTEP_SYNC existed in ioctl for hardware timestamp
    configuration, the PTP Sync one-step timestamping had never been supported.
    
    This patch is to truely support it. The hardware timestamp request type is
    stored in DSA_SKB_CB_PRIV first byte per skb, so that corresponding
    configuration could be done during transmitting. Non-onestep-Sync packet
    with one-step timestamp request should fall back to use two-step timestamp.
    
    Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
    yangbolu1991 authored and intel-lab-lkp committed Apr 16, 2021
  2. net: mscc: ocelot: convert to ocelot_port_txtstamp_request()

    Convert to a common ocelot_port_txtstamp_request() for TX timestamp
    request handling.
    
    Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
    yangbolu1991 authored and intel-lab-lkp committed Apr 16, 2021
  3. net: dsa: optimize tx timestamp request handling

    Optimization could be done on dsa_skb_tx_timestamp(), and dsa device
    drivers should adapt to it.
    
    - Check SKBTX_HW_TSTAMP request flag at the very beginning, instead of in
      port_txtstamp, so that most skbs not requiring tx timestamp just return.
    
    - No longer to identify PTP packets, and limit tx timestamping only for PTP
      packets. If device driver likes, let device driver do.
    
    - It is a waste to clone skb directly in dsa_skb_tx_timestamp().
      For one-step timestamping, a clone is not needed. For any failure of
      port_txtstamp (this may usually happen), the skb clone has to be freed.
      So put skb cloning into port_txtstamp where it really needs.
    
    Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
    yangbolu1991 authored and intel-lab-lkp committed Apr 16, 2021
  4. Merge branch 'ehtool-fec-stats'

    Jakub Kicinski says:
    
    ====================
    ethtool: add standard FEC statistics
    
    This set adds uAPI for reporting standard FEC statistics, and
    implements it in a handful of drivers.
    
    The statistics are taken from the IEEE standard, with one
    extra seemingly popular but not standard statistics added.
    
    The implementation is similar to that of the pause frame
    statistics, user requests the stats by setting a bit
    (ETHTOOL_FLAG_STATS) in the common ethtool header of
    ETHTOOL_MSG_FEC_GET.
    
    Since standard defines the statistics per lane what's
    reported is both total and per-lane counters:
    
     # ethtool -I --show-fec eth0
     FEC parameters for eth0:
     Configured FEC encodings: None
     Active FEC encoding: None
     Statistics:
      corrected_blocks: 256
        Lane 0: 255
        Lane 1: 1
      uncorrectable_blocks: 145
        Lane 0: 128
        Lane 1: 17
    
    v2: check for errors in mlx5 register access
    ====================
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    davem330 committed Apr 16, 2021
  5. mlx5: implement ethtool::get_fec_stats

    Report corrected bits.
    
    v2: catch reg access errors (Saeed)
    
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Acked-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Jakub Kicinski authored and davem330 committed Apr 16, 2021
  6. sfc: ef10: implement ethtool::get_fec_stats

    Report what appears to be the standard block counts:
     - 30.5.1.1.17 aFECCorrectedBlocks
     - 30.5.1.1.18 aFECUncorrectableBlocks
    
    Don't report the per-lane symbol counts, if those really
    count symbols they are not what the standard calls for
    (even if symbols seem like the most useful thing to count.)
    
    Fingers crossed that fec_corrected_errors is not in symbols.
    
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Jakub Kicinski authored and davem330 committed Apr 16, 2021
  7. bnxt: implement ethtool::get_fec_stats

    Report corrected bits.
    
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Jakub Kicinski authored and davem330 committed Apr 16, 2021
  8. ethtool: add FEC statistics

    Similarly to pause statistics add stats for FEC.
    
    The IEEE standard mandates two sets of counters:
     - 30.5.1.1.17 aFECCorrectedBlocks
     - 30.5.1.1.18 aFECUncorrectableBlocks
    where block is a block of bits FEC operates on.
    Each of these counters is defined per lane (PCS instance).
    
    Multiple vendors provide number of corrected _bits_ rather
    than/as well as blocks.
    
    This set adds the 2 standard-based block counters and a extra
    one for corrected bits.
    
    Counters are exposed to user space via netlink in new attributes.
    Each attribute carries an array of u64s, first element is
    the total count, and the following ones are a per-lane break down.
    
    Much like with pause stats the operation will not fail when driver
    does not implement the get_fec_stats callback (nor can the driver
    fail the operation by returning an error). If stats can't be
    reported the relevant attributes will be empty.
    
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Jakub Kicinski authored and davem330 committed Apr 16, 2021
  9. ethtool: fec_prepare_data() - jump to error handling

    Refactor fec_prepare_data() a little bit to skip the body
    of the function and exit on error. Currently the code
    depends on the fact that we only have one call which
    may fail between ethnl_ops_begin() and ethnl_ops_complete()
    and simply saves the error code. This will get hairy with
    the stats also being queried.
    
    No functional changes.
    
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Jakub Kicinski authored and davem330 committed Apr 16, 2021
  10. ethtool: move ethtool_stats_init

    We'll need it for FEC stats as well.
    
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Jakub Kicinski authored and davem330 committed Apr 16, 2021
  11. scm: optimize put_cmsg()

    Calling two copy_to_user() for very small regions has very high overhead.
    
    Switch to inlined unsafe_put_user() to save one stac/clac sequence,
    and avoid copy_to_user().
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Soheil Hassas Yeganeh <soheil@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    neebe000 authored and davem330 committed Apr 16, 2021

Commits on Apr 15, 2021

  1. enetc: convert to schedule_work()

    Convert system_wq queue_work() to schedule_work() which is
    a wrapper around it, since the former is a rare construct.
    
    Fixes: 7294380 ("enetc: support PTP Sync packet one-step timestamping")
    Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
    Acked-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    yangbolu1991 authored and davem330 committed Apr 15, 2021
  2. Merge branch 'hns3-next'

    Huazhong Tan says:
    
    ====================
    net: hns3: updates for -next
    
    This series adds support for pushing link status to VFs for
    the HNS3 ethernet driver.
    ====================
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    davem330 committed Apr 15, 2021
  3. net: hns3: VF not request link status when PF support push link statu…

    …s feature
    
    To reduce the processing of unnecessary mailbox command when PF supports
    actively push its link status to VFs, VFs stop sending request link
    status command in periodic service task in this case.
    
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Guangbin Huang authored and davem330 committed Apr 15, 2021
  4. net: hns3: PF add support for pushing link status to VFs

    Previously, VF updates its link status every second by send query command
    to PF in periodic service task. If link stats of PF is changed, VF may
    need at most one second to update its link status.
    
    To reduce delay of link status between PF and VFs, PF actively push its
    link status to VFs when its link status is updated. And to let VF know
    PF supports this new feature, the link status changed mailbox command
    adds one bit to indicate it.
    
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Guangbin Huang authored and davem330 committed Apr 15, 2021
  5. net: phy: at803x: select correct page on config init

    The Atheros AR8031 and AR8033 expose different registers for SGMII/Fiber
    as well as the copper side of the PHY depending on the BT_BX_REG_SEL bit
    in the chip configure register.
    
    The driver assumes the copper side is selected on probe, but this might
    not be the case depending which page was last selected by the
    bootloader. Notably, Ubiquiti UniFi bootloaders show this behavior.
    
    Select the copper page when probing to circumvent this.
    
    Signed-off-by: David Bauer <mail@david-bauer.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    blocktrron authored and davem330 committed Apr 15, 2021
  6. Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/gi…

    …t/tnguy/next-queue
    
    Tony Nguyen says:
    
    ====================
    100GbE Intel Wired LAN Driver Updates 2021-04-14
    
    This series contains updates to ice driver only.
    
    Bruce changes and removes open coded values to instead use existing
    kernel defines and suppresses false cppcheck issues.
    
    Ani adds new VSI states to track netdev allocation and registration. He
    also removes leading underscores in the ice_pf_state enum.
    
    Jesse refactors ITR by introducing helpers to reduce duplicated code and
    structures to simplify checking of ITR mode. He also triggers a software
    interrupt when exiting napi poll or busy-poll to ensure all work is
    processed. Modifies /proc/iomem to display driver name instead of PCI
    address. He also changes the checks of vsi->type to use a local variable
    in ice_vsi_rebuild() and removes an unneeded struct member.
    
    Jake replaces the driver's adaptive interrupt moderation algorithm to
    use the kernel's DIM library implementation.
    
    Scott reworks module reads to reduce the number of reads needed and
    remove excessive increment of QSFP page.
    
    Brett sets the vsi->vf_id to invalid for non-VF VSIs.
    
    Paul removes the return value from ice_vsi_manage_rss_lut() as it's not
    communicating anything critical. He also reduces the scope of a
    variable.
    ====================
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    davem330 committed Apr 15, 2021
  7. ice: reduce scope of variable

    The scope of this variable can be reduced so do that.
    
    Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    pmstillw authored and anguy11 committed Apr 15, 2021
  8. ice: remove return variable

    We were saving the return value from ice_vsi_manage_rss_lut(), but
    the errors from that function are not critical so change it to
    return void and remove the code that saved the value.
    
    Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    pmstillw authored and anguy11 committed Apr 15, 2021
  9. ice: suppress false cppcheck issues

    Silence false errors, warnings and style issues reported by cppcheck.
    
    Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    bwallan authored and anguy11 committed Apr 15, 2021
  10. ice: Set vsi->vf_id as ICE_INVAL_VFID for non VF VSI types

    Currently the vsi->vf_id is set only for ICE_VSI_VF and it's left as 0
    for all other VSI types. This is confusing and could be problematic
    since 0 is a valid vf_id. Fix this by always setting non VF VSI types to
    ICE_INVAL_VFID.
    
    Signed-off-by: Brett Creeley <brett.creeley@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    bcreeley13 authored and anguy11 committed Apr 15, 2021
  11. ice: remove unused struct member

    The only time you can ever have a rq_last_status is if
    a firmware event was somehow reporting a status on the receive
    queue, which are generally firmware initiated events or
    mailbox messages from a VF.  Mostly this struct member was unused.
    
    Fix this problem by still printing the value of the field in a debug
    print, but don't store the value forever in a struct, potentially
    creating opportunities for callers to use the wrong struct member.
    
    Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    jbrandeb authored and anguy11 committed Apr 15, 2021
  12. ice: use local for consistency

    Do a minor refactor on ice_vsi_rebuild to use a local
    variable to store vsi->type.
    
    Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    jbrandeb authored and anguy11 committed Apr 15, 2021
  13. ice: print name in /proc/iomem

    The driver previously printed it's PCI address in
    the name field for the pci resource, which when displayed
    via /proc/iomem, would print the same thing twice.
    
    It's more useful for debugging to see the driver name, as
    most other modules do.
    
    Here's a diff of before and after this change:
         99100000-991fffff : 0000:3b:00.1
       9a000000-a04fffff : PCI Bus 0000:3b
         9a000000-9bffffff : 0000:3b:00.1
    -      9a000000-9bffffff : 0000:3b:00.1
    +      9a000000-9bffffff : ice
         9c000000-9dffffff : 0000:3b:00.0
    -      9c000000-9dffffff : 0000:3b:00.0
    +      9c000000-9dffffff : ice
         9e000000-9effffff : 0000:3b:00.1
         9f000000-9fffffff : 0000:3b:00.0
         a0000000-a000ffff : 0000:3b:00.1
    
    Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    jbrandeb authored and anguy11 committed Apr 15, 2021
  14. ice: Reimplement module reads used by ethtool

    There was an excessive increment of the QSFP page, which is
    now fixed. Additionally, this new update now reads 8 bytes
    at a time and will retry each request if the module/bus is
    busy.
    
    Also, prevent reading from upper pages if module does not
    support those pages.
    
    Signed-off-by: Scott W Taylor <scott.w.taylor@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    swtaylor authored and anguy11 committed Apr 15, 2021
  15. ice: refactor ITR data structures

    Use a dedicated bitfield in order to both increase
    the amount of checking around the length of ITR writes
    as well as simplify the checks of dynamic mode.
    
    Basically unpack the "high bit means dynamic" logic
    into bitfields.
    
    Also, remove some unused ITR defines.
    
    Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    jbrandeb authored and anguy11 committed Apr 15, 2021
  16. ice: manage interrupts during poll exit

    The driver would occasionally miss that there were outstanding
    descriptors to clean when exiting busy/napi poll. This issue has
    been in the code since the introduction of the ice driver.
    
    Attempt to "catch" any remaining work by triggering a software
    interrupt when exiting napi poll or busy-poll. This will not
    cause extra interrupts in the case of normal execution.
    
    This issue was found when running sfnt-pingpong, with busy
    poll enabled, and typically with larger I/O sizes like > 8192,
    the program would occasionally report > 1 second maximums
    to complete a ping pong.
    
    Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    jbrandeb authored and anguy11 committed Apr 15, 2021
  17. ice: replace custom AIM algorithm with kernel's DIM library

    The ice driver has support for adaptive interrupt moderation, an
    algorithm for tuning the interrupt rate dynamically. This algorithm
    is based on various assumptions about ring size, socket buffer size,
    link speed, SKB overhead, ethernet frame overhead and more.
    
    The Linux kernel has support for a dynamic interrupt moderation
    algorithm known as "dimlib". Replace the custom driver-specific
    implementation of dynamic interrupt moderation with the kernel's
    algorithm.
    
    The Intel hardware has a different hardware implementation than the
    originators of the dimlib code had to work with, which requires the
    driver to use a slightly different set of inputs for the actual
    moderation values, while getting all the advice from dimlib of
    better/worse, shift left or right.
    
    The change made for this implementation is to use a pair of values
    for each of the 5 "slots" that the dimlib moderation expects, and
    the driver will program those pairs when dimlib recommends a slot to
    use. The currently implementation uses two tables, one for receive
    and one for transmit, and the pairs of values in each slot set the
    maximum delay of an interrupt and a maximum number of interrupts per
    second (both expressed in microseconds).
    
    There are two separate kinds of bugs fixed by using DIMLIB, one is
    UDP single stream send was too slow, and the other is that 8K
    ping-pong was going to the most aggressive moderation and has much
    too high latency.
    
    The overall result of using DIMLIB is that we meet or exceed our
    performance expectations set based on the old algorithm.
    
    Co-developed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    jacob-keller authored and anguy11 committed Apr 15, 2021
  18. ice: refactor interrupt moderation writes

    Introduce several new helpers for writing ITR and GLINT_RATE
    registers, and refactor the code calling them.  This resulted
    in removal of several duplicate functions and rolled a bunch
    of simple code back into the calling routines.
    
    In particular this removes some code that was doing both
    a store and a set in a helper function, which seems better
    done as separate tasks in the caller (and generally takes
    less lines of code even with a tiny bit of repetition).
    
    Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    jbrandeb authored and anguy11 committed Apr 15, 2021
  19. ice: Add new VSI states to track netdev alloc/registration

    Add two new VSI states, one to track if a netdev for the VSI has been
    allocated and the other to track if the netdev has been registered.
    Call unregister_netdev/free_netdev only when the corresponding state
    bits are set.
    
    Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    refactorman authored and anguy11 committed Apr 15, 2021
  20. ice: Drop leading underscores in enum ice_pf_state

    Remove the leading underscores in enum ice_pf_state. This is not really
    communicating anything and is unnecessary. No functional change.
    
    Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    refactorman authored and anguy11 committed Apr 15, 2021
  21. ice: use kernel definitions for IANA protocol ports and ether-types

    The well-known IANA protocol port 3260 (iscsi-target 0x0cbc) and the
    ether-types 0x8906 (ETH_P_FCOE) and 0x8914 (ETH_P_FIP) are already defined
    in kernel header files.  Use those definitions instead of open-coding the
    same.
    
    Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    bwallan authored and anguy11 committed Apr 15, 2021

Commits on Apr 14, 2021

  1. Merge tag 'linux-can-next-for-5.13-20210414' of git://git.kernel.org/…

    …pub/scm/linux/kernel/git/mkl/linux-can-next
    
    Marc Kleine-Budde says:
    
    ====================
    pull-request: can-next 2021-04-14
    
    this is a pull request of a single patch for net-next/master.
    
    Vincent Mailhol's patch fixes a NULL pointer dereference when handling
    error frames in the etas_es58x driver, which has been added in the
    previous PR.
    ====================
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    davem330 committed Apr 14, 2021
  2. net/packet: remove data races in fanout operations

    af_packet fanout uses RCU rules to ensure f->arr elements
    are not dismantled before RCU grace period.
    
    However, it lacks rcu accessors to make sure KCSAN and other tools
    wont detect data races. Stupid compilers could also play games.
    
    Fixes: dc99f60 ("packet: Add fanout support.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: "Gong, Sishuai" <sishuai@purdue.edu>
    Cc: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    neebe000 authored and davem330 committed Apr 14, 2021
  3. net: bridge: propagate error code and extack from br_mc_disabled_update

    Some Ethernet switches might only be able to support disabling multicast
    snooping globally, which is an issue for example when several bridges
    span the same physical device and request contradictory settings.
    
    Propagate the return value of br_mc_disabled_update() such that this
    limitation is transmitted correctly to user-space.
    
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    ffainelli authored and davem330 committed Apr 14, 2021
Older