Skip to content
Permalink
Xiaoliang-Yang…
Switch branches/tags

Commits on Sep 28, 2021

  1. net: qos: introduce a frer action to implement 802.1CB

    This patch introduce a frer action to implement frame replication and
    elimination for reliability, which is defined in IEEE P802.1CB.
    
    There are two modes for frer action: generate and push the tag, recover
    and pop the tag. frer tag has three types: RTAG, HSR, and PRP. This
    patch only supports RTAG now.
    
    User can push the tag on egress port of the talker device, recover and
    pop the tag on ingress port of the listener device. When it's a relay
    system, push the tag on ingress port, or set individual recover on
    ingress port. Set the sequence recover on egress port.
    
    Use action "mirred" to do split function, and use "vlan-modify" to do
    active stream identification function on relay system.
    
    Below is the setting example in user space:
    push rtag on relay system:
    	> tc qdisc add dev swp0 clsact
    	> tc filter add dev swp0 ingress protocol 802.1Q flower \
    		skip_hw dst_mac 00:01:02:03:04:05 vlan_id 1 \
    		action frer rtag tag-action tag-push
    
    split stream:
    	> tc filter add dev swp0 ingress protocol 802.1Q flower \
    		skip_hw dst_mac 00:01:02:03:04:05 vlan_id 1 \
    		action mirred egress mirror dev swp1
    
    individual recover:
    	> tc filter add dev swp0 ingress protocol 802.1Q flower
    		skip_hw dst_mac 00:01:02:03:04:06 vlan_id 1 \
    		action frer rtag recover \
    		alg vector history-length 32 reset-time 10000
    
    recover and pop rtag:
    	> tc filter add dev swp0 egress protocol 802.1Q flower
    		skip_hw dst_mac 00:01:02:03:04:06 vlan_id 1 \
    		action frer rtag recover \
    		alg vector history-length 32 reset-time 10000 \
    		tag-action tag-pop
    
    Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com>
    Xiaoliang Yang authored and intel-lab-lkp committed Sep 28, 2021

Commits on Sep 27, 2021

  1. Merge branch 'bcmgenet-flow-control'

    Florian Fainelli says:
    
    ====================
    net: bcmgenet: support for flow control
    
    This patch series adds support for flow control to the GENET driver, the
    first 2 patches remove superfluous code, the 3rd one does re-organize
    code a little bit and the 4th one ads the support for flow control
    proper.
    ====================
    davem330 committed Sep 27, 2021
  2. net: bcmgenet: add support for ethtool flow control

    This commit extends the supported ethtool operations to allow MAC
    level flow control to be configured for the bcmgenet driver.
    
    The ethtool utility can be used to change the configuration of
    auto-negotiated symmetric and asymmetric modes as well as manually
    configuring support for RX and TX Pause frames individually.
    
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Doug Berger authored and davem330 committed Sep 27, 2021
  3. net: bcmgenet: pull mac_config from adjust_link

    This commit separates out the MAC configuration that occurs on a
    PHY state change into a function named bcmgenet_mac_config().
    
    This allows the function to be called directly elsewhere.
    
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Doug Berger authored and davem330 committed Sep 27, 2021
  4. net: bcmgenet: remove old link state values

    The PHY state machine has been fixed to only call the adjust_link
    callback when the link state has changed. Therefore the old link
    state variables are no longer needed to detect a change in link
    state.
    
    This commit effectively reverts
    commit 5ad6e6c ("net: bcmgenet: improve bcmgenet_mii_setup()")
    
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Doug Berger authored and davem330 committed Sep 27, 2021
  5. net: bcmgenet: remove netif_carrier_off from adjust_link

    The bcmgenet_mii_setup() function is registered as the adjust_link
    callback from the phylib for the GENET driver.
    
    The phylib always sets the netif_carrier according to phydev->link
    prior to invoking the adjust_link callback, so there is no need to
    repeat that in the link down case within the network driver.
    
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Doug Berger authored and davem330 committed Sep 27, 2021
  6. Merge branch 'rtl8366-cleanups'

    Linus Walleij says:
    
    ====================
    RTL8366(RB) cleanups part 1
    
    This is a first set of patches making the RTL8366RB work out of
    the box with a default OpenWrt userspace.
    
    We achieve bridge port isolation with the first patch, and the
    next 5 patches removes the very weird VLAN set-up with one
    VLAN with PVID per port that has been in this driver in all
    vendor trees and in OpenWrt for years.
    
    The switch is now managed the way a modern bridge/DSA switch
    shall be managed.
    
    After these patches are merged, I will send the next set which
    adds new features, some which have circulated before.
    
    ChangeLog v4->v5:
    - Drop the patch disabling 4K VLAN.
    - Drop the patch forcing VLAN0 untagged.
    - Fix a semantic bug in the filer enablement code.
    ====================
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    davem330 committed Sep 27, 2021
  7. net: dsa: rtl8366: Drop and depromote pointless prints

    We don't need a message for every VLAN association, dbg
    is fine. The message about adding the DSA or CPU
    port to a VLAN is directly misleading, this is perfectly
    fine.
    
    Cc: Vladimir Oltean <olteanv@gmail.com>
    Cc: Mauri Sandberg <sandberg@mailfence.com>
    Cc: DENG Qingfang <dqfext@gmail.com>
    Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    linusw authored and davem330 committed Sep 27, 2021
  8. net: dsa: rtl8366: Fix a bug in deleting VLANs

    We were checking that the MC (member config) was != 0
    for some reason, all we need to check is that the config
    has no ports, i.e. no members. Then it can be recycled.
    This must be some misunderstanding.
    
    Fixes: 4ddcaf1 ("net: dsa: rtl8366: Properly clear member config")
    Cc: Mauri Sandberg <sandberg@mailfence.com>
    Cc: DENG Qingfang <dqfext@gmail.com>
    Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk>
    Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    linusw authored and davem330 committed Sep 27, 2021
  9. net: dsa: rtl8366rb: Fix off-by-one bug

    The max VLAN number with non-4K VLAN activated is 15, and the
    range is 0..15. Not 16.
    
    The impact should be low since we by default have 4K VLAN and
    thus have 4095 VLANs to play with in this switch. There will
    not be a problem unless the code is rewritten to only use
    16 VLANs.
    
    Fixes: d865295 ("net: dsa: realtek-smi: Add Realtek SMI driver")
    Cc: Mauri Sandberg <sandberg@mailfence.com>
    Cc: DENG Qingfang <dqfext@gmail.com>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk>
    Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    linusw authored and davem330 committed Sep 27, 2021
  10. net: dsa: rtl8366rb: Rewrite weird VLAN filering enablement

    While we were defining one VLAN per port for isolating the ports
    the port_vlan_filtering() callback was implemented to enable a
    VLAN on the port + 1. This function makes no sense, not only is
    it incomplete as it only enables the VLAN, it doesn't do what
    the callback is supposed to do, which is to selectively enable
    and disable filtering on a certain port.
    
    Implement the correct callback: we have two registers dealing
    with filtering on the RTL9366RB, so we implement an ASIC-specific
    callback and implement filering using the register bit that makes
    the switch drop frames if the port is not in the VLAN member set.
    
    The DSA documentation Documentation/networking/switchdev.rst states:
    
      When the bridge has VLAN filtering enabled and a PVID is not
      configured on the ingress port, untagged and 802.1p tagged
      packets must be dropped. When the bridge has VLAN filtering
      enabled and a PVID exists on the ingress port, untagged and
      priority-tagged packets must be accepted and forwarded according
      to the bridge's port membership of the PVID VLAN. When the
      bridge has VLAN filtering disabled, the presence/lack of a
      PVID should not influence the packet forwarding decision.
    
    To comply with this, we add two arrays of bool in the RTL8366RB
    state that keeps track of if filtering and PVID is enabled or
    not for each port. We then add code such that whenever filtering
    or PVID changes, we update the filter according to the
    specification.
    
    Cc: Vladimir Oltean <olteanv@gmail.com>
    Cc: Mauri Sandberg <sandberg@mailfence.com>
    Cc: Alvin Šipraga <alsi@bang-olufsen.dk>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: DENG Qingfang <dqfext@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    linusw authored and davem330 committed Sep 27, 2021
  11. net: dsa: rtl8366: Drop custom VLAN set-up

    This hacky default VLAN setup was done in order to direct
    packets to the right ports and provide port isolation, both
    which we now support properly using custom tags and proper
    bridge port isolation.
    
    We can drop the custom VLAN code and leave all VLAN handling
    alone, as users expect things to be. We can also drop
    ds->configure_vlan_while_not_filtering = false; and let
    the core deal with any VLANs it wants.
    
    Cc: Mauri Sandberg <sandberg@mailfence.com>
    Cc: DENG Qingfang <dqfext@gmail.com>
    Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
    Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    linusw authored and davem330 committed Sep 27, 2021
  12. net: dsa: rtl8366rb: Support bridge offloading

    Use port isolation registers to configure bridge offloading.
    
    Tested on the D-Link DIR-685, switching between ports and
    sniffing ports to make sure no packets leak.
    
    Cc: Vladimir Oltean <olteanv@gmail.com>
    Cc: Mauri Sandberg <sandberg@mailfence.com>
    Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
    Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: DENG Qingfang <dqfext@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    LGA1150 authored and davem330 committed Sep 27, 2021
  13. Merge branch 'devlink_register-last'

    Leon Romanovsky says:
    
    ====================
    Move devlink_register to be last devlink command
    
    This is second version of patch series
    https://lore.kernel.org/netdev/cover.1628599239.git.leonro@nvidia.com/
    
    The main change is addition of delayed notification logic that will
    allowed us to delete devlink_params_publish API (future series will
    remove it completely) and conversion of all drivers to have devlink_register
    being last commend.
    
    The series itself is pretty straightforward, except liquidio driver
    which performs initializations in various workqueues without proper
    locks. That driver doesn't hole device_lock and it is clearly broken
    for any parallel driver core flows (modprobe + devlink + PCI reset will
    100% crash it).
    
    In order to annotate devlink_register() will lockdep of holding
    device_lock, I added workaround in this driver.
    
    Thanks
    
    ----------------------
    From previous cover letter:
    Hi Dave and Jakub,
    
    This series prepares code to remove devlink_reload_enable/_disable API
    and in order to do, we move all devlink_register() calls to be right
    before devlink_reload_enable().
    
    The best place for such a call should be right before exiting from
    the probe().
    
    This is done because devlink_register() opens devlink netlink to the
    users and gives them a venue to issue commands before initialization
    is finished.
    
    1. Some drivers were aware of such "functionality" and tried to protect
    themselves with extra locks, state machines and devlink_reload_enable().
    Let's assume that it worked for them, but I'm personally skeptical about
    it.
    
    2. Some drivers copied that pattern, but without locks and state
    machines. That protected them from reload flows, but not from any _set_
    routines.
    
    3. And all other drivers simply didn't understand the implications of early
    devlink_register() and can be seen as "broken".
    ====================
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    davem330 committed Sep 27, 2021
  14. net: dsa: Move devlink registration to be last devlink command

    This change prevents from users to access device before devlink
    is fully configured.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  15. staging: qlge: Move devlink registration to be last devlink command

    This change prevents from users to access device before devlink is
    fully configured.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  16. ptp: ocp: Move devlink registration to be last devlink command

    This change prevents from users to access device before devlink is
    fully configured.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  17. net: wwan: iosm: Move devlink_register to be last devlink command

    This change prevents from users to access device before devlink is
    fully configured. Indirectly this change fixes the commit mentioned
    below where devlink_unregister() was prematurely removed.
    
    Fixes: db4278c ("devlink: Make devlink_register to be void")
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  18. netdevsim: Move devlink registration to be last devlink command

    This change prevents from users to access device before devlink is
    fully configured.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  19. net: ethernet: ti: Move devlink registration to be last devlink command

    This change prevents from users to access device before devlink is
    fully configured.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  20. qed: Move devlink registration to be last devlink command

    This change prevents from users to access device before devlink is
    fully configured.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  21. ionic: Move devlink registration to be last devlink command

    This change prevents from users to access device before devlink is
    fully configured.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  22. nfp: Move delink_register to be last command

    Open user space access to the devlink after driver is probed.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  23. net: mscc: ocelot: delay devlink registration to the end

    Open access to the devlink interface when the driver fully initialized.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  24. mlxsw: core: Register devlink instance last

    Make sure that devlink is open to receive user input when all
    parameters are initialized.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  25. net/mlx5: Accept devlink user input after driver initialization complete

    The change of devlink_alloc() to accept device makes sure that device
    is fully initialized and device_register() does nothing except allowing
    users to use that devlink instance.
    
    Such change ensures that no user input will be usable till that point and
    it eliminates the need to worry about internal locking as long as devlink_register
    is called last since all accesses to the devlink are during initialization.
    
    This change fixes the following lockdep warning.
    
     ======================================================
     WARNING: possible circular locking dependency detected
     5.14.0-rc2+ torvalds#27 Not tainted
     ------------------------------------------------------
     devlink/265 is trying to acquire lock:
     ffff8880133c2bc0 (&dev->intf_state_mutex){+.+.}-{3:3}, at: mlx5_unload_one+0x1e/0xa0 [mlx5_core]
     but task is already holding lock:
     ffffffff8362b468 (devlink_mutex){+.+.}-{3:3}, at: devlink_nl_pre_doit+0x2b/0x8d0
     which lock already depends on the new lock.
     the existing dependency chain (in reverse order) is:
    
     -> #1 (devlink_mutex){+.+.}-{3:3}:
            __mutex_lock+0x149/0x1310
            devlink_register+0xe7/0x280
            mlx5_devlink_register+0x118/0x480 [mlx5_core]
            mlx5_init_one+0x34b/0x440 [mlx5_core]
            probe_one+0x480/0x6e0 [mlx5_core]
            pci_device_probe+0x2a0/0x4a0
            really_probe+0x1cb/0xba0
            __driver_probe_device+0x18f/0x470
            driver_probe_device+0x49/0x120
            __driver_attach+0x1ce/0x400
            bus_for_each_dev+0x11e/0x1a0
            bus_add_driver+0x309/0x570
            driver_register+0x20f/0x390
            0xffffffffa04a0062
            do_one_initcall+0xd5/0x400
            do_init_module+0x1c8/0x760
            load_module+0x7d9d/0xa4b0
            __do_sys_finit_module+0x118/0x1a0
            do_syscall_64+0x3d/0x90
            entry_SYSCALL_64_after_hwframe+0x44/0xae
    
     -> #0 (&dev->intf_state_mutex){+.+.}-{3:3}:
            __lock_acquire+0x2999/0x5a40
            lock_acquire+0x1a9/0x4a0
            __mutex_lock+0x149/0x1310
            mlx5_unload_one+0x1e/0xa0 [mlx5_core]
            mlx5_devlink_reload_down+0x185/0x2b0 [mlx5_core]
            devlink_reload+0x1f2/0x640
            devlink_nl_cmd_reload+0x6c3/0x10d0
            genl_family_rcv_msg_doit+0x1e9/0x2f0
            genl_rcv_msg+0x27f/0x4a0
            netlink_rcv_skb+0x11e/0x340
            genl_rcv+0x24/0x40
            netlink_unicast+0x433/0x700
            netlink_sendmsg+0x6fb/0xbe0
            sock_sendmsg+0xb0/0xe0
            __sys_sendto+0x192/0x240
            __x64_sys_sendto+0xdc/0x1b0
            do_syscall_64+0x3d/0x90
            entry_SYSCALL_64_after_hwframe+0x44/0xae
    
     other info that might help us debug this:
    
      Possible unsafe locking scenario:
    
            CPU0                    CPU1
            ----                    ----
       lock(devlink_mutex);
                                    lock(&dev->intf_state_mutex);
                                    lock(devlink_mutex);
       lock(&dev->intf_state_mutex);
    
      *** DEADLOCK ***
    
     3 locks held by devlink/265:
      #0: ffffffff836371d0 (cb_lock){++++}-{3:3}, at: genl_rcv+0x15/0x40
      #1: ffffffff83637288 (genl_mutex){+.+.}-{3:3}, at: genl_rcv_msg+0x31a/0x4a0
      #2: ffffffff8362b468 (devlink_mutex){+.+.}-{3:3}, at: devlink_nl_pre_doit+0x2b/0x8d0
    
     stack backtrace:
     CPU: 0 PID: 265 Comm: devlink Not tainted 5.14.0-rc2+ torvalds#27
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
     Call Trace:
      dump_stack_lvl+0x45/0x59
      check_noncircular+0x268/0x310
      ? print_circular_bug+0x460/0x460
      ? __kernel_text_address+0xe/0x30
      ? alloc_chain_hlocks+0x1e6/0x5a0
      __lock_acquire+0x2999/0x5a40
      ? lockdep_hardirqs_on_prepare+0x3e0/0x3e0
      ? add_lock_to_list.constprop.0+0x6c/0x530
      lock_acquire+0x1a9/0x4a0
      ? mlx5_unload_one+0x1e/0xa0 [mlx5_core]
      ? lock_release+0x6c0/0x6c0
      ? lockdep_hardirqs_on_prepare+0x3e0/0x3e0
      ? lock_is_held_type+0x98/0x110
      __mutex_lock+0x149/0x1310
      ? mlx5_unload_one+0x1e/0xa0 [mlx5_core]
      ? lock_is_held_type+0x98/0x110
      ? mlx5_unload_one+0x1e/0xa0 [mlx5_core]
      ? find_held_lock+0x2d/0x110
      ? mutex_lock_io_nested+0x1160/0x1160
      ? mlx5_lag_is_active+0x72/0x90 [mlx5_core]
      ? lock_downgrade+0x6d0/0x6d0
      ? do_raw_spin_lock+0x12e/0x270
      ? rwlock_bug.part.0+0x90/0x90
      ? mlx5_unload_one+0x1e/0xa0 [mlx5_core]
      mlx5_unload_one+0x1e/0xa0 [mlx5_core]
      mlx5_devlink_reload_down+0x185/0x2b0 [mlx5_core]
      ? netlink_broadcast_filtered+0x308/0xac0
      ? mlx5_devlink_info_get+0x1f0/0x1f0 [mlx5_core]
      ? __build_skb_around+0x110/0x2b0
      ? __alloc_skb+0x113/0x2b0
      devlink_reload+0x1f2/0x640
      ? devlink_unregister+0x1e0/0x1e0
      ? security_capable+0x51/0x90
      devlink_nl_cmd_reload+0x6c3/0x10d0
      ? devlink_nl_cmd_get_doit+0x1e0/0x1e0
      ? devlink_nl_pre_doit+0x72/0x8d0
      genl_family_rcv_msg_doit+0x1e9/0x2f0
      ? __lock_acquire+0x15e2/0x5a40
      ? genl_family_rcv_msg_attrs_parse.constprop.0+0x240/0x240
      ? mutex_lock_io_nested+0x1160/0x1160
      ? security_capable+0x51/0x90
      genl_rcv_msg+0x27f/0x4a0
      ? genl_get_cmd+0x3c0/0x3c0
      ? lock_acquire+0x1a9/0x4a0
      ? devlink_nl_cmd_get_doit+0x1e0/0x1e0
      ? lock_release+0x6c0/0x6c0
      netlink_rcv_skb+0x11e/0x340
      ? genl_get_cmd+0x3c0/0x3c0
      ? netlink_ack+0x930/0x930
      genl_rcv+0x24/0x40
      netlink_unicast+0x433/0x700
      ? netlink_attachskb+0x750/0x750
      ? __alloc_skb+0x113/0x2b0
      netlink_sendmsg+0x6fb/0xbe0
      ? netlink_unicast+0x700/0x700
      ? netlink_unicast+0x700/0x700
      sock_sendmsg+0xb0/0xe0
      __sys_sendto+0x192/0x240
      ? __x64_sys_getpeername+0xb0/0xb0
      ? do_sys_openat2+0x10a/0x370
      ? down_write_nested+0x150/0x150
      ? do_user_addr_fault+0x215/0xd50
      ? __x64_sys_openat+0x11f/0x1d0
      ? __x64_sys_open+0x1a0/0x1a0
      __x64_sys_sendto+0xdc/0x1b0
      ? syscall_enter_from_user_mode+0x1d/0x50
      do_syscall_64+0x3d/0x90
      entry_SYSCALL_64_after_hwframe+0x44/0xae
     RIP: 0033:0x7f50b50b6b3a
     Code: d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 41 89 ca 64 8b 04 25 18 00 00 00 85 c0 75 15 b8 2c 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 76 c3 0f 1f 44 00 00 55 48 83 ec 30 44 89 4c
     RSP: 002b:00007fff6c0d3f38 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
     RAX: ffffffffffffffda RBX: 0000000000000005 RCX: 00007f50b50b6b3a
     RDX: 0000000000000038 RSI: 000055763ac08440 RDI: 0000000000000003
     RBP: 000055763ac08410 R08: 00007f50b5192200 R09: 000000000000000c
     R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
     R13: 0000000000000000 R14: 000055763ac08410 R15: 000055763ac08440
     mlx5_core 0000:00:09.0: firmware version: 4.8.9999
     mlx5_core 0000:00:09.0: 0.000 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x255 link)
     mlx5_core 0000:00:09.0 eth1: Link up
    
    Fixes: a6f3b62 ("net/mlx5: Move devlink registration before interfaces load")
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  26. net/mlx4: Move devlink_register to be the last initialization command

    Refactor the code to make sure that devlink_register() is the last
    command during initialization stage.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  27. net/prestera: Split devlink and traps registrations to separate routines

    Separate devlink registrations and traps registrations so devlink will
    be registered when driver is fully initialized.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  28. octeontx2: Move devlink registration to be last devlink command

    This change prevents from users to access device before devlink is fully
    configured. This change allows us to delete call to devlink_params_publish()
    and impossible check during unregister flow.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  29. ice: Open devlink when device is ready

    Move devlink_registration routine to be the last command, when the
    device is fully initialized.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  30. net: hinic: Open device for the user access when it is ready

    Move devlink registration to be the last command in device activation,
    so it opens the driver to accept such devlink commands from the user
    when it is fully initialized.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  31. dpaa2-eth: Register devlink instance at the end of probe

    Move devlink_register to be the last command in the initialization
    sequence.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  32. liquidio: Overcome missing device lock protection in init/remove flows

    The liquidio driver is broken by design. It initialize PCI devices
    in separate delayed works. It causes to the situation where device lock
    is dropped during initialize and remove sequences.
    
    That lock is part of driver/core and needed to protect from races during
    init, destroy and bus invocations.
    
    In addition to lack of locking protection, it has incorrect order of
    destroy flows and very questionable synchronization scheme based on
    atomic_t.
    
    This change doesn't fix that driver but makes sure that rest of the
    netdev subsystem doesn't suffer from such basic protection by adding
    device_lock over devlink_*() APIs and by moving devlink_register()
    to be last command in setup_nic_devices().
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  33. bnxt_en: Register devlink instance at the end devlink configuration

    Move devlink_register() to be last command in devlink configuration
    sequence, so no user space access will be possible till devlink instance
    is fully operable. As part of this change, the devlink_params_publish
    call is removed as not needed.
    
    This change fixes forgotten devlink_params_unpublish() too.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
  34. devlink: Notify users when objects are accessible

    The devlink core code notified users about add/remove objects without
    relation if this object can be accessible or not. In this patch we unify
    such user visible notifications in one place.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Leon Romanovsky authored and davem330 committed Sep 27, 2021
Older