1. 23 Nov, 2021 8 commits
    • David S. Miller's avatar
      Merge branch 'qca8k-mirror-and-lag-support' · 33e2ec52
      David S. Miller authored
      Ansuel Smith says:
      
      ====================
      Add mirror and LAG support to qca8k
      
      With the continue of adding 'Multiple feature to qca8k'
      
      The switch supports mirror mode and LAG.
      In mirror mode a port is set as mirror and other port are configured
      to both igress or egress mode. With no port configured for mirror,
      the mirror port is disabled and reverted to normal port.
      
      The switch supports max 4 LAG with 4 different member max.
      Current supported mode is Hash mode in both L2 or L2+3 mode.
      There is a problematic implementation for the hash mode where
      with multiple LAG configured, someone has to remove them to
      change the hash mode as it's global.
      When a member of the LAG is disconnected, the traffic is redirected
      to the other port.
      
      Some warning are present from checkpatch but can't really be fixed
      as it would result in making the regs less readable.
      (They really did their best with the LAG reg logic and complexity)
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      33e2ec52
    • Ansuel Smith's avatar
      net: dsa: qca8k: add LAG support · def97530
      Ansuel Smith authored
      Add LAG support to this switch. In Documentation this is described as
      trunk mode. A max of 4 LAGs are supported and each can support up to 4
      port. The current tx mode supported is Hash mode with both L2 and L2+3
      mode.
      When no port are present in the trunk, the trunk is disabled in the
      switch.
      When a port is disconnected, the traffic is redirected to the other
      available port.
      The hash mode is global and each LAG require to have the same hash mode
      set. To change the hash mode when multiple LAG are configured, it's
      required to remove each LAG and set the desired hash mode to the last.
      An error is printed when it's asked to set a not supported hadh mode.
      Signed-off-by: default avatarAnsuel Smith <ansuelsmth@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      def97530
    • Ansuel Smith's avatar
      net: dsa: qca8k: add support for mirror mode · 2c1bdbc7
      Ansuel Smith authored
      The switch supports mirror mode. Only one port can set as mirror port and
      every other port can set to both ingress and egress mode. The mirror
      port is disabled and reverted to normal operation once every port is
      removed from sending packet to it.
      Signed-off-by: default avatarAnsuel Smith <ansuelsmth@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2c1bdbc7
    • Yajun Deng's avatar
      neigh: introduce neigh_confirm() helper function · 1e84dc6b
      Yajun Deng authored
      Add neigh_confirm() for the confirmed member in struct neighbour,
      it can be called as an independent unit by other functions.
      Signed-off-by: default avatarYajun Deng <yajun.deng@linux.dev>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1e84dc6b
    • Jeremy Kerr's avatar
      mctp: Add MCTP-over-serial transport binding · a0c2ccd9
      Jeremy Kerr authored
      This change adds a MCTP Serial transport binding, as defined by DMTF
      specificiation DSP0253 - "MCTP Serial Transport Binding". This is
      implemented as a new serial line discipline, and can be attached to
      arbitrary tty devices.
      
      From the Kconfig description:
      
        This driver provides an MCTP-over-serial interface, through a
        serial line-discipline, as defined by DMTF specification "DSP0253 -
        MCTP Serial Transport Binding". By attaching the ldisc to a serial
        device, we get a new net device to transport MCTP packets.
      
        This allows communication with external MCTP endpoints which use
        serial as their transport. It can also be used as an easy way to
        provide MCTP connectivity between virtual machines, by forwarding
        data between simple virtual serial devices.
      
        Say y here if you need to connect to MCTP endpoints over serial. To
        compile as a module, use m; the module will be called mctp-serial.
      
      Once the N_MCTP line discipline is set [using ioctl(TCIOSETD)], we get a
      new netdev suitable for MCTP communication.
      
      The 'mctp' utility[1] provides a simple wrapper for this ioctl, using
      'link serial <device>':
      
        # mctp link serial /dev/ttyS0 &
        # mctp link
        dev lo index 1 address 0x00:00:00:00:00:00 net 1 mtu 65536 up
        dev mctpserial0 index 5 address 0x(no-addr) net 1 mtu 68 down
      
      [1]: https://github.com/CodeConstruct/mctpSigned-off-by: default avatarJeremy Kerr <jk@codeconstruct.com.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a0c2ccd9
    • David S. Miller's avatar
      Merge branch 'mlxsw-updates' · 25e2735d
      David S. Miller authored
      Ido Schimmel says:
      
      ====================
      mlxsw: Various updates
      
      Patch #1 removes deadcode reported by Coverity.
      
      Patch #2 adds a shutdown method in the PCI driver to ensure the kexeced
      kernel starts working with a device that is in a sane state.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      25e2735d
    • Danielle Ratson's avatar
      mlxsw: pci: Add shutdown method in PCI driver · c1020d3c
      Danielle Ratson authored
      On an arm64 platform with the Spectrum ASIC, after loading and executing
      a new kernel via kexec, the following trace [1] is observed. This seems
      to be caused by the fact that the device is not properly shutdown before
      executing the new kernel.
      
      Fix this by implementing a shutdown method which mirrors the remove
      method, as recommended by the kexec maintainer [2][3].
      
      [1]
      BUG: Bad page state in process devlink pfn:22f73d
      page:fffffe00089dcf40 refcount:-1 mapcount:0 mapping:0000000000000000 index:0x0
      flags: 0x2ffff00000000000()
      raw: 2ffff00000000000 0000000000000000 ffffffff089d0201 0000000000000000
      raw: 0000000000000000 0000000000000000 ffffffffffffffff 0000000000000000
      page dumped because: nonzero _refcount
      Modules linked in:
      CPU: 1 PID: 16346 Comm: devlink Tainted: G B 5.8.0-rc6-custom-273020-gac6b365b1bf5 #44
      Hardware name: Marvell Armada 7040 TX4810M (DT)
      Call trace:
       dump_backtrace+0x0/0x1d0
       show_stack+0x1c/0x28
       dump_stack+0xbc/0x118
       bad_page+0xcc/0xf8
       check_free_page_bad+0x80/0x88
       __free_pages_ok+0x3f8/0x418
       __free_pages+0x38/0x60
       kmem_freepages+0x200/0x2a8
       slab_destroy+0x28/0x68
       slabs_destroy+0x60/0x90
       ___cache_free+0x1b4/0x358
       kfree+0xc0/0x1d0
       skb_free_head+0x2c/0x38
       skb_release_data+0x110/0x1a0
       skb_release_all+0x2c/0x38
       consume_skb+0x38/0x130
       __dev_kfree_skb_any+0x44/0x50
       mlxsw_pci_rdq_fini+0x8c/0xb0
       mlxsw_pci_queue_fini.isra.0+0x28/0x58
       mlxsw_pci_queue_group_fini+0x58/0x88
       mlxsw_pci_aqs_fini+0x2c/0x60
       mlxsw_pci_fini+0x34/0x50
       mlxsw_core_bus_device_unregister+0x104/0x1d0
       mlxsw_devlink_core_bus_device_reload_down+0x2c/0x48
       devlink_reload+0x44/0x158
       devlink_nl_cmd_reload+0x270/0x290
       genl_rcv_msg+0x188/0x2f0
       netlink_rcv_skb+0x5c/0x118
       genl_rcv+0x3c/0x50
       netlink_unicast+0x1bc/0x278
       netlink_sendmsg+0x194/0x390
       __sys_sendto+0xe0/0x158
       __arm64_sys_sendto+0x2c/0x38
       el0_svc_common.constprop.0+0x70/0x168
       do_el0_svc+0x28/0x88
       el0_sync_handler+0x88/0x190
       el0_sync+0x140/0x180
      
      [2]
      https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1195432.html
      
      [3]
      https://patchwork.kernel.org/project/linux-scsi/patch/20170212214920.28866-1-anton@ozlabs.org/#20116693
      
      Cc: Eric Biederman <ebiederm@xmission.com>
      Signed-off-by: default avatarDanielle Ratson <danieller@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c1020d3c
    • Danielle Ratson's avatar
      mlxsw: spectrum_router: Remove deadcode in mlxsw_sp_rif_mac_profile_find · ed1607e2
      Danielle Ratson authored
      The function idr_for_each_entry() already checks that the next entry in
      the IDR is not NULL.
      
      Therefore, checking that again in every iteration leads to deadcode.
      
      Remove the unnecessary check in order to avoid that.
      
      Addresses-Coverity: ("Logically dead code")
      Signed-off-by: default avatarDanielle Ratson <danieller@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ed1607e2
  2. 22 Nov, 2021 32 commits