Skip to content
Permalink
kerneljasonxin…
Switch branches/tags

Commits on Feb 16, 2022

  1. net: introduce SO_RCVBUFAUTO to let the rcv_buf tune automatically

    Normally, user doesn't care the logic behind the kernel if they're
    trying to set receive buffer via setsockopt. However, once the new
    value of the receive buffer is set even though it's not smaller than
    the initial value which is sysctl_tcp_rmem[1] implemented in
    tcp_rcv_space_adjust(),, the server's wscale will shrink and then
    lead to the bad bandwidth as intended.
    
    For now, introducing a new socket option to let the receive buffer
    grow automatically no matter what the new value is can solve
    the bad bandwidth issue meanwhile it's not breaking the application
    with SO_RCVBUF option set.
    
    Here are some numbers:
    $ sysctl -a | grep rmem
    net.core.rmem_default = 212992
    net.core.rmem_max = 40880000
    net.ipv4.tcp_rmem = 4096	425984	40880000
    
    Case 1
    on the server side
        # iperf -s -p 5201
    on the client side
        # iperf -c [client ip] -p 5201
    It turns out that the bandwidth is 9.34 Gbits/sec while the wscale of
    server side is 10. It's good.
    
    Case 2
    on the server side
        #iperf -s -p 5201 -w 425984
    on the client side
        # iperf -c [client ip] -p 5201
    It turns out that the bandwidth is reduced to 2.73 Gbits/sec while the
    wcale is 2, even though the receive buffer is not changed at all at the
    very beginning.
    
    After this patch is applied, the bandwidth of case 2 is recovered to
    9.34 Gbits/sec as expected at the cost of consuming more memory per
    socket.
    
    Signed-off-by: Jason Xing <xingwanli@kuaishou.com>
    --
    v2: suggested by Eric
    - introduce new socket option instead of breaking the logic in SO_RCVBUF
    - Adjust the title and description of this patch
    link: https://lore.kernel.org/lkml/CANn89iL8vOUOH9bZaiA-cKcms+PotuKCxv7LpVx3RF0dDDSnmg@mail.gmail.com/
    Jason Xing authored and intel-lab-lkp committed Feb 16, 2022
  2. gve: enhance no queue page list detection

    The commit
    a5886ef ("gve: Introduce per netdev `enum gve_queue_format`")
    introduces three queue format type, only GVE_GQI_QPL_FORMAT queue has
    page list. So it should use the queue page list number to detect the
    zero size queue page list. Correct the design logic.
    
    Using the 'queue_format == GVE_GQI_RDA_FORMAT' may lead to request zero
    sized memory allocation, like if the queue format is GVE_DQO_RDA_FORMAT.
    
    The kernel memory subsystem will return ZERO_SIZE_PTR, which is not NULL
    address, so the driver can run successfully. Also the code still checks
    the queue page list number firstly, then accesses the allocated memory,
    so zero number queue page list allocation will not lead to access fault.
    
    Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
    Reviewed-by: Bailey Forrest <bcf@google.com>
    Link: https://lore.kernel.org/r/20220215051751.260866-1-haiyue.wang@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    haiyuewa authored and Jakub Kicinski committed Feb 16, 2022

Commits on Feb 15, 2022

  1. net: dm9051: Fix spelling mistake "eror" -> "error"

    There are spelling mistakes in debug messages. Fix them.
    
    Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    ColinIanKing authored and davem330 committed Feb 15, 2022
  2. dpaa2-eth: Simplify bool conversion

    Fix the following coccicheck warnings:
    ./drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c:1199:42-47: WARNING:
    conversion to bool not needed here
    ./drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c:1218:54-59: WARNING:
    conversion to bool not needed here
    
    Reported-by: Abaci Robot <abaci@linux.alibaba.com>
    Signed-off-by: Yang Li <yang.lee@linux.alibaba.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Yang Li authored and davem330 committed Feb 15, 2022
  3. net: bridge: vlan: check for errors from __vlan_del in __vlan_flush

    If the following call path returns an error from switchdev:
    
    nbp_vlan_flush
    -> __vlan_del
       -> __vlan_vid_del
          -> br_switchdev_port_vlan_del
    -> __vlan_group_free
       -> WARN_ON(!list_empty(&vg->vlan_list));
    
    then the deletion of the net_bridge_vlan is silently halted, which will
    trigger the WARN_ON from __vlan_group_free().
    
    The WARN_ON is rather unhelpful, because nothing about the source of the
    error is printed. Add a print to catch errors from __vlan_del.
    
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    vladimiroltean authored and davem330 committed Feb 15, 2022
  4. net: hso: Use GFP_KERNEL instead of GFP_ATOMIC when possible

    hso_create_device() is only called from function that already use
    GFP_KERNEL. And all the callers are called from the probe function.
    
    So there is no need here to explicitly require a GFP_ATOMIC when
    allocating memory.
    
    Use GFP_KERNEL instead.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    tititiou36 authored and davem330 committed Feb 15, 2022
  5. virtio_net: Fix code indent error

    This patch fixes the checkpatch.pl warning:
    
    ERROR: code indent should use tabs where possible #3453: FILE: drivers/net/virtio_net.c:3453: ret = register_virtio_driver(&virtio_net_driver);$
    
    Uneccessary newline was also removed making line 3453 now 3452.
    
    Signed-off-by: Michael Catanzaro <mcatanzaro.kernel@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Michael Catanzaro authored and davem330 committed Feb 15, 2022
  6. Merge tag 'mlx5-updates-2022-02-14' of git://git.kernel.org/pub/scm/l…

    …inux/kernel/git/saeed/linux
    
    Saeed Mahameed says:
    
    ====================
    mlx5-updates-2022-02-14
    
    mlx5 TX routines improvements
    
    1) From Aya and Tariq, first 3 patches, Use the Max size of the TX descriptor
    as advertised by the device and not the fixed value of 16 that the driver
    always assumed, this is not a bug fix as all existing devices have Max value
    larger than 16, but the series is necessary for future proofing the driver.
    
    2) TX Synchronization improvements from Maxim, last 12 patches
    
    Maxim Mikityanskiy Says:
    =======================
    mlx5e: Synchronize ndo_select_queue with configuration changes
    
    The kernel can call ndo_select_queue at any time, and there is no direct
    way to block it. The implementation of ndo_select_queue in mlx5e expects
    the parameters to be consistent and may crash (invalid pointer, division
    by zero) if they aren't.
    
    There were attempts to partially fix some of the most frequent crashes,
    see commit 846d6da ("net/mlx5e: Fix division by 0 in
    mlx5e_select_queue") and commit 84c8a87 ("net/mlx5e: Fix division
    by 0 in mlx5e_select_queue for representors"). However, they don't
    address the issue completely.
    
    This series introduces the proper synchronization mechanism between
    mlx5e configuration and TX data path:
    
    1. txq2sq updates are synchronized properly with ndo_start_xmit
       (mlx5e_xmit). The TX queue is stopped when it configuration is being
       updated, and memory barriers ensure the changes are visible before
       restarting.
    
    2. The set of parameters needed for mlx5e_select_queue is reduced, and
       synchronization using RCU is implemented. This way, changes are
       atomic, and the state in mlx5e_select_queue is always consistent.
    
    3. A few optimizations are applied to the new implementation of
       mlx5e_select_queue.
    
    =======================
    
    ====================
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    davem330 committed Feb 15, 2022
  7. net/mlx5e: Optimize the common case condition in mlx5e_select_queue

    Check all booleans for special queues at once, when deciding whether to
    go to the fast path in mlx5e_select_queue. Pack them into bitfields to
    have some room for extensibility.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    nvmmax authored and Saeed Mahameed committed Feb 15, 2022
  8. net/mlx5e: Optimize modulo in mlx5e_select_queue

    To improve the performance of the modulo operation (%), it's replaced by
    a subtracting the divisor in a loop. The modulo is used to fix up an
    out-of-bounds value that might be returned by netdev_pick_tx or to
    convert the queue number to the channel number when num_tcs > 1. Both
    situations are unlikely, because XPS is configured not to pick higher
    queues (qid >= num_channels) by default, so under normal circumstances
    the flow won't go inside the loop, and it will be faster than %.
    
    num_tcs == 8 adds at most 7 iterations to the loop. PTP adds at most 1
    iteration to the loop. HTB would add at most 256 iterations (when
    num_channels == 1), so there is an additional boundary check in the HTB
    flow, which falls back to % if more than 7 iterations are expected.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    nvmmax authored and Saeed Mahameed committed Feb 15, 2022
  9. net/mlx5e: Optimize mlx5e_select_queue

    This commit optimizes mlx5e_select_queue for HTB and PTP cases by
    short-cutting some checks, without sacrificing performance of the common
    non-HTB non-PTP flow.
    
    1. The HTB flow uses the fact that num_tcs == 1 to drop these checks
    (it's not possible to attach both mqprio and htb as the root qdisc).
    It's also enough to calculate `txq_ix % num_channels` only once, instead
    of twice.
    
    2. The PTP flow drops the check for HTB and the second calculation of
    `txq_ix % num_channels`.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    nvmmax authored and Saeed Mahameed committed Feb 15, 2022
  10. net/mlx5e: Use READ_ONCE/WRITE_ONCE for DCBX trust state

    trust_state can be written while mlx5e_select_queue() is reading it. To
    avoid inconsistencies, use READ_ONCE and WRITE_ONCE for access and
    updates, and touch the variable only once per operation.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    nvmmax authored and Saeed Mahameed committed Feb 15, 2022
  11. net/mlx5e: Move repeating code that gets TC prio into a function

    Both mlx5e_select_queue and mlx5e_select_ptpsq contain the same logic to
    get user priority of a packet, according to the current trust state
    settings. This commit moves this repeating code to its own function.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    nvmmax authored and Saeed Mahameed committed Feb 15, 2022
  12. net/mlx5e: Use select queue parameters to sync with control flow

    Start using the select queue parameters introduced in the previous
    commit to have proper synchronization with changing the configuration
    (such as number of channels and queues). It ensures that the state that
    mlx5e_select_queue() sees is always consistent and stays the same while
    the function is running. Also it allows mlx5e_select_queue to stop using
    data structures that weren't synchronized properly: txq2sq,
    channel_tc2realtxq, port_ptp_tc2realtxq. The last two are removed
    completely, as they were used only in mlx5e_select_queue.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    nvmmax authored and Saeed Mahameed committed Feb 15, 2022
  13. net/mlx5e: Move mlx5e_select_queue to en/selq.c

    This commit moves mlx5e_select_queue and all stuff related to
    ndo_select_queue to en/selq.c to put all stuff working with selq into a
    separate file.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    nvmmax authored and Saeed Mahameed committed Feb 15, 2022
  14. net/mlx5e: Introduce select queue parameters

    ndo_select_queue can be called at any time, and there is no way to stop
    the kernel from calling it to synchronize with configuration changes
    (real_num_tx_queues, num_tc). This commit introduces an internal way in
    mlx5e to sync mlx5e_select_queue() with these changes. The configuration
    needed by this function is stored in a struct mlx5e_selq_params, which
    is modified and accessed in an atomic way using RCU methods. The whole
    ndo_select_queue is called under an RCU lock, providing the necessary
    guarantees.
    
    The parameters stored in the new struct mlx5e_selq_params should only be
    used from inside mlx5e_select_queue. It's the minimal set of parameters
    needed for mlx5e_select_queue to do its job efficiently, derived from
    parameters stored elsewhere. That means that when the configuration
    change, mlx5e_selq_params may need to be updated. In such cases, the
    mlx5e_selq_prepare/mlx5e_selq_apply API should be used.
    
    struct mlx5e_selq contains two slots for the params: active and standby.
    mlx5e_selq_prepare updates the standby slot, and mlx5e_selq_apply swaps
    the slots in a safe atomic way using the RCU API. It integrates well
    with the open/activate stages of the configuration change flow.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    nvmmax authored and Saeed Mahameed committed Feb 15, 2022
  15. net/mlx5e: Sync txq2sq updates with mlx5e_xmit for HTB queues

    This commit makes necessary changes to guarantee that txq2sq remains
    stable while mlx5e_xmit is running. Proper synchronization is added for
    HTB TX queues.
    
    All updates to txq2sq are performed while the corresponding queue is
    disabled (i.e. mlx5e_xmit doesn't run on that queue). smp_wmb after each
    change guarantees that mlx5e_xmit can see the updated value after the
    queue is enabled. Comments explaining this mechanism are added to
    mlx5e_xmit.
    
    When an HTB SQ can be deleted (after deleting an HTB node), synchronize
    with RCU to wait for mlx5e_select_queue to finish and stop selecting
    that queue, before we re-enable it to avoid TX timeout watchdog alarms.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    nvmmax authored and Saeed Mahameed committed Feb 15, 2022
  16. net/mlx5e: Use a barrier after updating txq2sq

    mlx5e_build_txq_maps updates txq2sq while TX queues are stopped. Add a
    barrier to ensure that these changes are visible before the queues are
    started and mlx5e_xmit reads from txq2sq.
    
    This commit handles regular TX queues. Synchronization between HTB TX
    queues and mlx5e_xmit is handled in the following commit.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    nvmmax authored and Saeed Mahameed committed Feb 15, 2022
  17. net/mlx5e: Disable TX queues before registering the netdev

    Normally, the queues are disabled when the channels are deactivated, and
    enabled when the channels are activated. However, on register, the
    channels are not active, but the queues are enabled by default. This
    change fixes it, preventing mlx5e_xmit from running when the channels
    are deactivated in the beginning.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    nvmmax authored and Saeed Mahameed committed Feb 15, 2022
  18. net/mlx5e: Cleanup of start/stop all queues

    mlx5e_activate_priv_channels() and mlx5e_deactivate_priv_channels()
    start and stop all netdev TX queues. This commit removes the unneeded
    call to netif_tx_stop_all_queues and adds explanatory comments why these
    operations are needed.
    
    netif_tx_disable() does the same thing that netif_tx_stop_all_queues(),
    but taking the TX lock, thus guaranteeing that ndo_start_xmit is not
    running after return. That means that the netif_tx_stop_all_queues()
    call is not really necessary.
    
    The comments are improved: the TX watchdog timeout explanation is moved
    to the start stage where it really belongs (it used to be in both
    places, but was lost during some old refactoring) and rephrased in more
    details; the explanation for stopping all TX queues is added.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    nvmmax authored and Saeed Mahameed committed Feb 15, 2022
  19. net/mlx5e: Use FW limitation for max MPW WQEBBs

    Calculate maximal count of MPW WQEBBs on SQ's creation and store it
    there. Remove MLX5E_TX_MPW_MAX_NUM_DS and MLX5E_TX_MPW_MAX_WQEBBS.
    Update mlx5e_tx_mpwqe_is_full() and mlx5e_xdp_mpqwe_is_full() .
    
    Signed-off-by: Aya Levin <ayal@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Aya Levin authored and Saeed Mahameed committed Feb 15, 2022
  20. net/mlx5e: Read max WQEBBs on the SQ from firmware

    Prior to this patch the maximal value for max WQEBBs (WQE Basic Blocks,
    where WQE is a Work Queue Element) on the TX side was assumed to be 16
    (fixed value). All firmware versions till today comply to this. In order
    to be more flexible and resilient, read from FW the corresponding:
    max_wqe_sz_sq. This value describes the maximum WQE size given in bytes,
    thus max WQEBBs is given by the division in WQEBB's byte size. The
    driver uses the top between 16 and the division result. This ensures
    synchronization between driver and firmware and avoids unexpected
    behavior. Store this value on the different SQs (Send Queues) for easy
    access.
    
    Signed-off-by: Aya Levin <ayal@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Aya Levin authored and Saeed Mahameed committed Feb 15, 2022
  21. net/mlx5e: Remove unused tstamp SQ field

    Remove tstamp pointer in mlx5e_txqsq as it's no longer used after
    commit 7c39afb ("net/mlx5: PTP code migration to driver core section").
    
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Reviewed-by: Aya Levin <ayal@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Tariq Toukan authored and Saeed Mahameed committed Feb 15, 2022
  22. net: dsa: mv88e6xxx: Fix validation of built-in PHYs on 6095/6097

    These chips have 8 built-in FE PHYs and 3 SERDES interfaces that can
    run at 1G. With the blamed commit, the built-in PHYs could no longer
    be connected to, using an MII PHY interface mode.
    
    Create a separate .phylink_get_caps callback for these chips, which
    takes the FE/GE split into consideration.
    
    Fixes: 2ee84cf ("net: dsa: mv88e6xxx: convert to phylink_generic_validate()")
    Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Link: https://lore.kernel.org/r/20220213185154.3262207-1-tobias@waldekranz.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    wkz authored and Jakub Kicinski committed Feb 15, 2022

Commits on Feb 14, 2022

  1. selftests: net: cmsg_sender: Fix spelling mistake "MONOTINIC" -> "MON…

    …OTONIC"
    
    There is a spelling mistake in an error message. Fix it.
    
    Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    ColinIanKing authored and davem330 committed Feb 14, 2022
  2. net: prestera: acl: add multi-chain support offload

    Add support of rule offloading added to the non-zero index chain,
    which was previously forbidden. Also, goto action is offloaded
    allowing to jump for processing of desired chain.
    
    Note that only implicit chain 0 is bound to the device port(s) for
    processing. The rest of chains have to be jumped by actions.
    
    Signed-off-by: Volodymyr Mytnyk <vmytnyk@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Volodymyr Mytnyk authored and davem330 committed Feb 14, 2022
  3. Merge branch 'wwan-debugfs'

    M Chetan Kumar says:
    
    ====================
    net: wwan: debugfs dev reference not dropped
    
    This patch series contains WWAN subsystem & IOSM Driver changes to
    drop dev reference obtained as part of wwan debugfs dir entry retrieval.
    
    PATCH1: A new debugfs interface is introduced in wwan subsystem so
    that wwan driver can drop the obtained dev reference post debugfs use.
    
    PATCH2: IOSM Driver uses new debugfs interface to drop dev reference.
    
    Please refer to commit messages for details.
    ====================
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    davem330 committed Feb 14, 2022
  4. net: wwan: iosm: drop debugfs dev reference

    Post debugfs use call wwan_put_debugfs_dir()to drop
    debugfs dev reference.
    
    Signed-off-by: M Chetan Kumar <m.chetan.kumar@linux.intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    mchetankumar authored and davem330 committed Feb 14, 2022
  5. net: wwan: debugfs obtained dev reference not dropped

    WWAN driver call's wwan_get_debugfs_dir() to obtain
    WWAN debugfs dir entry. As part of this procedure it
    returns a reference to a found device.
    
    Since there is no debugfs interface available at WWAN
    subsystem, it is not possible to drop dev reference post
    debugfs use. This leads to side effects like post wwan
    driver load and reload the wwan instance gets increment
    from wwanX to wwanX+1.
    
    A new debugfs interface is added in wwan subsystem so that
    wwan driver can drop the obtained dev reference post debugfs
    use.
    
    void wwan_put_debugfs_dir(struct dentry *dir)
    
    Signed-off-by: M Chetan Kumar <m.chetan.kumar@linux.intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    mchetankumar authored and davem330 committed Feb 14, 2022
  6. Merge branch 'dsa-realtek-next'

    Luiz Angelo Daros de Luca says:
    
    ====================
    net: dsa: realtek: realtek-mdio: reset before setup
    
    This patch series cleans the realtek-smi reset code and copy that to the
    realtek-mdio.
    
    v1-v2)
    - do not run reset code block if GPIO is missing. It was printing "RESET
      deasserted" even when there is no GPIO configured.
    - reset switch after dsa_unregister_switch()
    - demote reset messages to debug
    
    v2-v3)
    - do not assert the reset on gpiod_get. Do it explicitly aferwards.
    - split the commit into two (one for each module)
    ====================
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    davem330 committed Feb 14, 2022
  7. net: dsa: realtek: realtek-mdio: reset before setup

    Some devices, like the switch in Banana Pi BPI R64 only starts to answer
    after a HW reset. It is the same reset code from realtek-smi.
    
    Reported-by: Frank Wunderlich <frank-w@public-files.de>
    Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
    Tested-by: Frank Wunderlich <frank-w@public-files.de>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk>
    Acked-by: Arınç ÜNAL <arinc.unal@arinc9.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    luizluca authored and davem330 committed Feb 14, 2022
  8. net: dsa: realtek: realtek-smi: clean-up reset

    When reset GPIO was missing, the driver was still printing an info
    message and still trying to assert the reset. Although gpiod_set_value()
    will silently ignore calls with NULL gpio_desc, it is better to make it
    clear the driver might allow gpio_desc to be NULL.
    
    The initial value for the reset pin was changed to GPIOD_OUT_LOW,
    followed by a gpiod_set_value() asserting the reset. This way, it will
    be easier to spot if and where the reset really happens.
    
    A new "asserted RESET" message was added just after the reset is
    asserted, similar to the existing "deasserted RESET" message. Both
    messages were demoted to dbg. The code comment is not needed anymore.
    
    Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
    Acked-by: Arınç ÜNAL <arinc.unal@arinc9.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    luizluca authored and davem330 committed Feb 14, 2022
  9. ipv6: blackhole_netdev needs snmp6 counters

    Whenever rt6_uncached_list_flush_dev() swaps rt->rt6_idev
    to the blackhole device, parts of IPv6 stack might still need
    to increment one SNMP counter.
    
    Root cause, patch from Ido, changelog from Eric :)
    
    This bug suggests that we need to audit rt->rt6_idev usages
    and make sure they are properly using RCU protection.
    
    Fixes: e5f80fc ("ipv6: give an IPv6 dev to blackhole_netdev")
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    idosch authored and davem330 committed Feb 14, 2022
  10. net: dsa: realtek: rename macro to match filename

    The macro was missed while renaming realtek-smi.h to realtek.h.
    
    Fixes: f5f1190 (net: dsa: realtek: rename realtek_smi to)
    Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk>
    Acked-by: Arınç ÜNAL <arinc.unal@arinc9.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    luizluca authored and davem330 committed Feb 14, 2022
  11. Merge branch 'netdev-RT'

    Sebastian Andrzej Siewior says:
    
    ====================
    net: dev: PREEMPT_RT fixups.
    
    this series removes or replaces preempt_disable() and local_irq_save()
    sections which are problematic on PREEMPT_RT.
    Patch 2 makes netif_rx() work from any context after I found suggestions
    for it in an old thread. Should that work, then the context-specific
    variants could be removed.
    
    v2…v3:
       - #2
         - Export __netif_rx() so it can be used by everyone.
         - Add a lockdep assert to check for interrupt context.
         - Update the kernel doc and mention that the skb is posted to
           backlog NAPI.
         - Use __netif_rx() also in drivers/net/*.c.
         - Added Toke''s review tag and kept Eric's desptite the changes
           made.
    
    v1…v2:
      - #1 and #2
        - merge patch 1 und 2 from the series (as per Toke).
        - updated patch description and corrected the first commit number (as
          per Eric).
       - #2
         - Provide netif_rx() as in v1 and additionally __netif_rx() without
           local_bh disable()+enable() for the loopback driver. __netif_rx() is
           not exported (loopback is built-in only) so it won't be used
           drivers. If this doesn't work then we can still export/ define a
           wrapper as Eric suggested.
         - Added a comment that netif_rx() considered legacy.
       - #3
         - Moved ____napi_schedule() into rps_ipi_queued() and
           renamed it napi_schedule_rps().
       https://lore.kernel.org/all/20220204201259.1095226-1-bigeasy@linutronix.de/
    
    v1:
       https://lore.kernel.org/all/20220202122848.647635-1-bigeasy@linutronix.de
    ====================
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    davem330 committed Feb 14, 2022
Older