1. 11 Mar, 2024 15 commits
  2. 09 Mar, 2024 4 commits
    • Jakub Kicinski's avatar
      Merge tag 'mlx5-socket-direct-v3' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux · d7e14e53
      Jakub Kicinski authored
      Saeed Mahameed says:
      
      ====================
      Support Multi-PF netdev (Socket Direct)
      
      This series adds support for combining multiple devices (PFs) of the
      same port under one netdev instance. Passing traffic through different
      devices belonging to different NUMA sockets saves cross-numa traffic and
      allows apps running on the same netdev from different numas to still
      feel a sense of proximity to the device and achieve improved
      performance.
      
      We achieve this by grouping PFs together, and creating the netdev only
      once all group members are probed. Symmetrically, we destroy the netdev
      once any of the PFs is removed.
      
      The channels are distributed between all devices, a proper configuration
      would utilize the correct close numa when working on a certain app/cpu.
      
      We pick one device to be a primary (leader), and it fills a special
      role.  The other devices (secondaries) are disconnected from the network
      in the chip level (set to silent mode). All RX/TX traffic is steered
      through the primary to/from the secondaries.
      
      Currently, we limit the support to PFs only, and up to two devices
      (sockets).
      
      * tag 'mlx5-socket-direct-v3' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux:
        Documentation: networking: Add description for multi-pf netdev
        net/mlx5: Enable SD feature
        net/mlx5e: Block TLS device offload on combined SD netdev
        net/mlx5e: Support per-mdev queue counter
        net/mlx5e: Support cross-vhca RSS
        net/mlx5e: Let channels be SD-aware
        net/mlx5e: Create EN core HW resources for all secondary devices
        net/mlx5e: Create single netdev per SD group
        net/mlx5: SD, Add debugfs
        net/mlx5: SD, Add informative prints in kernel log
        net/mlx5: SD, Implement steering for primary and secondaries
        net/mlx5: SD, Implement devcom communication and primary election
        net/mlx5: SD, Implement basic query and instantiation
        net/mlx5: SD, Introduce SD lib
        net/mlx5: Add MPIR bit in mcam_access_reg
      ====================
      
      Link: https://lore.kernel.org/r/20240307084229.500776-1-saeed@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      d7e14e53
    • Jakub Kicinski's avatar
      Merge tag 'for-net-next-2024-03-08' of... · 2f901582
      Jakub Kicinski authored
      Merge tag 'for-net-next-2024-03-08' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next
      
      Luiz Augusto von Dentz says:
      
      ====================
      bluetooth-next pull request for net-next:
      
       - hci_conn: Only do ACL connections sequentially
       - hci_core: Cancel request on command timeout
       - Remove CONFIG_BT_HS
       - btrtl: Add the support for RTL8852BT/RTL8852BE-VT
       - btusb: Add support Mediatek MT7920
       - btusb: Add new VID/PID 13d3/3602 for MT7925
       - Add new quirk for broken read key length on ATS2851
      
      * tag 'for-net-next-2024-03-08' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next: (52 commits)
        Bluetooth: hci_sync: Fix UAF in hci_acl_create_conn_sync
        Bluetooth: Fix eir name length
        Bluetooth: ISO: Align broadcast sync_timeout with connection timeout
        Bluetooth: Add new quirk for broken read key length on ATS2851
        Bluetooth: mgmt: remove NULL check in add_ext_adv_params_complete()
        Bluetooth: mgmt: remove NULL check in mgmt_set_connectable_complete()
        Bluetooth: btusb: Add support Mediatek MT7920
        Bluetooth: btmtk: Add MODULE_FIRMWARE() for MT7922
        Bluetooth: btnxpuart: Fix btnxpuart_close
        Bluetooth: ISO: Clean up returns values in iso_connect_ind()
        Bluetooth: fix use-after-free in accessing skb after sending it
        Bluetooth: af_bluetooth: Fix deadlock
        Bluetooth: bnep: Fix out-of-bound access
        Bluetooth: btusb: Fix memory leak
        Bluetooth: msft: Fix memory leak
        Bluetooth: hci_core: Fix possible buffer overflow
        Bluetooth: btrtl: fix out of bounds memory access
        Bluetooth: hci_h5: Add ability to allocate memory for private data
        Bluetooth: hci_sync: Fix overwriting request callback
        Bluetooth: hci_sync: Use QoS to determine which PHY to scan
        ...
      ====================
      
      Link: https://lore.kernel.org/r/20240308181056.120547-1-luiz.dentz@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      2f901582
    • Jakub Kicinski's avatar
      Merge tag 'ieee802154-for-net-next-2024-03-07' of... · 2612b9f1
      Jakub Kicinski authored
      Merge tag 'ieee802154-for-net-next-2024-03-07' of git://git.kernel.org/pub/scm/linux/kernel/git/wpan/wpan-next
      
      Stefan Schmidt says:
      
      ====================
      pull-request: ieee802154-next 2024-03-07
      
      Various cross tree patches for ieee802154v drivers and a resource leak
      fix for ieee802154 llsec.
      
      Andy Shevchenko changed GPIO header usage for at86rf230 and mcr20a to
      only include needed headers.
      
      Bo Liu converted the at86rf230, mcr20a and mrf24j40 driver regmap
      support to use the maple tree register cache.
      
      Fedor Pchelkin fixed a resource leak in the llsec key deletion path.
      
      Ricardo B. Marliere made wpan_phy_class const.
      
      Tejun Heo removed WQ_UNBOUND from a workqueue call in ca8210.
      
      * tag 'ieee802154-for-net-next-2024-03-07' of git://git.kernel.org/pub/scm/linux/kernel/git/wpan/wpan-next:
        ieee802154: cfg802154: make wpan_phy_class constant
        ieee802154: mcr20a: Remove unused of_gpio.h
        ieee802154: at86rf230: Replace of_gpio.h by proper one
        mac802154: fix llsec key resources release in mac802154_llsec_key_del
        ieee802154: ca8210: Drop spurious WQ_UNBOUND from alloc_ordered_workqueue() call
        net: ieee802154: mrf24j40: convert to use maple tree register cache
        net: ieee802154: mcr20a: convert to use maple tree register cache
        net: ieee802154: at86rf230: convert to use maple tree register cache
      ====================
      
      Link: https://lore.kernel.org/r/20240307195105.292085-1-stefan@datenfreihafen.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      2612b9f1
    • Colin Ian King's avatar
  3. 08 Mar, 2024 21 commits
    • Eric Dumazet's avatar
      ipv4: raw: check sk->sk_rcvbuf earlier · d721812a
      Eric Dumazet authored
      There is no point cloning an skb and having to free the clone
      if the receive queue of the raw socket is full.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
      Link: https://lore.kernel.org/r/20240307163020.2524409-1-edumazet@google.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      d721812a
    • Eric Dumazet's avatar
      ipv6: raw: check sk->sk_rcvbuf earlier · 026763ec
      Eric Dumazet authored
      There is no point cloning an skb and having to free the clone
      if the receive queue of the raw socket is full.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
      Link: https://lore.kernel.org/r/20240307162943.2523817-1-edumazet@google.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      026763ec
    • Ido Schimmel's avatar
      nexthop: Simplify dump error handling · 5d9b7cb3
      Ido Schimmel authored
      The only error that can happen during a nexthop dump is insufficient
      space in the skb caring the netlink messages (EMSGSIZE). If this happens
      and some messages were already filled in, the nexthop code returns the
      skb length to signal the netlink core that more objects need to be
      dumped.
      
      After commit b5a89915 ("netlink: handle EMSGSIZE errors in the
      core") there is no need to handle this error in the nexthop code as it
      is now handled in the core.
      
      Simplify the code and simply return the error to the core.
      
      No regressions in nexthop tests:
      
       # ./fib_nexthops.sh
       Tests passed: 234
       Tests failed:   0
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Link: https://lore.kernel.org/r/20240307154727.3555462-1-idosch@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      5d9b7cb3
    • Eric Dumazet's avatar
      net: add skb_data_unref() helper · 1cface55
      Eric Dumazet authored
      Similar to skb_unref(), add skb_data_unref() to save an expensive
      atomic operation (and cache line dirtying) when last reference
      on shinfo->dataref is released.
      
      I saw this opportunity on hosts with RAW sockets accidentally
      bound to UDP protocol, forcing an skb_clone() on all received packets.
      
      These RAW sockets had their receive queue full, so all clone
      packets were immediately dropped.
      
      When UDP recvmsg() consumes later the original skb, skb_release_data()
      is hitting atomic_sub_return() quite badly, because skb->clone
      has been set permanently.
      
      Note that this patch helps TCP TX performance, because
      TCP stack also use (fast) clones.
      
      This means that at least one of the two packets (the main skb or
      its clone) will no longer have to perform this atomic operation
      in skb_release_data().
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Link: https://lore.kernel.org/r/20240307123446.2302230-1-edumazet@google.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      1cface55
    • Jakub Kicinski's avatar
      Merge tag 'wireless-next-2024-03-08' of... · 75c2946d
      Jakub Kicinski authored
      Merge tag 'wireless-next-2024-03-08' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next
      
      Kalle Valo says:
      
      ====================
      wireless-next patches for v6.9
      
      The fourth "new features" pull request for v6.9 with changes both in
      stack and in drivers. The theme in this pull request is to fix sparse
      warnings but we still have some left in wireless subsystem. Otherwise
      quite normal.
      
      Major changes:
      
      rtw89
       * NL80211_EXT_FEATURE_SCAN_RANDOM_SN support
       * NL80211_EXT_FEATURE_SET_SCAN_DWELL support
      
      rtw88
       * support for more rtw8811cu and rtw8821cu devices
      
      mt76
       * mt76x2u: add Netgear WNDA3100v3 USB
       * mt7915: newer ADIE version support
       * mt7925: radio temperature sensor support
       * mt7996: remove GCMP IGTK offload
      
      * tag 'wireless-next-2024-03-08' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next: (125 commits)
        wifi: rtw89: wow: move release offload packet earlier for WoWLAN mode
        wifi: rtw89: wow: set security engine options for 802.11ax chips only
        wifi: rtw89: update suspend/resume for different generation
        wifi: rtw89: wow: update config mac function with different generation
        wifi: rtw89: update DMA function with different generation
        wifi: rtw89: wow: update WoWLAN status register for different generation
        wifi: rtw89: wow: update WoWLAN reason register for different chips
        wifi: brcm80211: handle pmk_op allocation failure
        wifi: rtw89: coex: Add coexistence policy to decrease WiFi packet CRC-ERR
        wifi: rtw89: coex: When Bluetooth not available don't set power/gain
        wifi: rtw89: coex: add return value to ensure H2C command is success or not
        wifi: rtw89: coex: Reorder H2C command index to align with firmware
        wifi: rtw89: coex: add BTC ctrl_info version 7 and related logic
        wifi: rtw89: coex: add init_info H2C command format version 7
        wifi: rtw89: 8922a: add coexistence helpers of SW grant
        wifi: rtw89: mac: add coexistence helpers {cfg/get}_plt
        wifi: cw1200: restore endian swapping
        wifi: wlcore: sdio: Rate limit wl12xx_sdio_raw_{read,write}() failures warns
        wifi: rtlwifi: Remove rtl_intf_ops.read_efuse_byte
        wifi: rtw88: 8821c: Fix false alarm count
        ...
      ====================
      
      Link: https://lore.kernel.org/r/20240308100429.B8EA2C433F1@smtp.kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      75c2946d
    • Luiz Augusto von Dentz's avatar
      Bluetooth: hci_sync: Fix UAF in hci_acl_create_conn_sync · 3d1c16e9
      Luiz Augusto von Dentz authored
      This fixes the following error caused by hci_conn being freed while
      hcy_acl_create_conn_sync is pending:
      
      ==================================================================
      BUG: KASAN: slab-use-after-free in hci_acl_create_conn_sync+0xa7/0x2e0
      Write of size 2 at addr ffff888002ae0036 by task kworker/u3:0/848
      
      CPU: 0 PID: 848 Comm: kworker/u3:0 Not tainted 6.8.0-rc6-g2ab3e8d6
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38
      04/01/2014
      Workqueue: hci0 hci_cmd_sync_work
      Call Trace:
       <TASK>
       dump_stack_lvl+0x21/0x70
       print_report+0xce/0x620
       ? preempt_count_sub+0x13/0xc0
       ? __virt_addr_valid+0x15f/0x310
       ? hci_acl_create_conn_sync+0xa7/0x2e0
       kasan_report+0xdf/0x110
       ? hci_acl_create_conn_sync+0xa7/0x2e0
       hci_acl_create_conn_sync+0xa7/0x2e0
       ? __pfx_hci_acl_create_conn_sync+0x10/0x10
       ? __pfx_lock_release+0x10/0x10
       ? __pfx_hci_acl_create_conn_sync+0x10/0x10
       hci_cmd_sync_work+0x138/0x1c0
       process_one_work+0x405/0x800
       ? __pfx_lock_acquire+0x10/0x10
       ? __pfx_process_one_work+0x10/0x10
       worker_thread+0x37b/0x670
       ? __pfx_worker_thread+0x10/0x10
       kthread+0x19b/0x1e0
       ? kthread+0xfe/0x1e0
       ? __pfx_kthread+0x10/0x10
       ret_from_fork+0x2f/0x50
       ? __pfx_kthread+0x10/0x10
       ret_from_fork_asm+0x1a/0x30
       </TASK>
      
      Allocated by task 847:
       kasan_save_stack+0x33/0x60
       kasan_save_track+0x14/0x30
       __kasan_kmalloc+0x8f/0xa0
       hci_conn_add+0xc6/0x970
       hci_connect_acl+0x309/0x410
       pair_device+0x4fb/0x710
       hci_sock_sendmsg+0x933/0xef0
       sock_write_iter+0x2c3/0x2d0
       do_iter_readv_writev+0x21a/0x2e0
       vfs_writev+0x21c/0x7b0
       do_writev+0x14a/0x180
       do_syscall_64+0x77/0x150
       entry_SYSCALL_64_after_hwframe+0x6c/0x74
      
      Freed by task 847:
       kasan_save_stack+0x33/0x60
       kasan_save_track+0x14/0x30
       kasan_save_free_info+0x3b/0x60
       __kasan_slab_free+0xfa/0x150
       kfree+0xcb/0x250
       device_release+0x58/0xf0
       kobject_put+0xbb/0x160
       hci_conn_del+0x281/0x570
       hci_conn_hash_flush+0xfc/0x130
       hci_dev_close_sync+0x336/0x960
       hci_dev_close+0x10e/0x140
       hci_sock_ioctl+0x14a/0x5c0
       sock_ioctl+0x58a/0x5d0
       __x64_sys_ioctl+0x480/0xf60
       do_syscall_64+0x77/0x150
       entry_SYSCALL_64_after_hwframe+0x6c/0x74
      
      Fixes: 45340097 ("Bluetooth: hci_conn: Only do ACL connections sequentially")
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      3d1c16e9
    • Frédéric Danis's avatar
      Bluetooth: Fix eir name length · 2ab3e8d6
      Frédéric Danis authored
      According to Section 1.2 of Core Specification Supplement Part A the
      complete or short name strings are defined as utf8s, which should not
      include the trailing NULL for variable length array as defined in Core
      Specification Vol1 Part E Section 2.9.3.
      
      Removing the trailing NULL allows PTS to retrieve the random address based
      on device name, e.g. for SM/PER/KDU/BV-02-C, SM/PER/KDU/BV-08-C or
      GAP/BROB/BCST/BV-03-C.
      
      Fixes: f61851f6 ("Bluetooth: Fix append max 11 bytes of name to scan rsp data")
      Signed-off-by: default avatarFrédéric Danis <frederic.danis@collabora.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      2ab3e8d6
    • David S. Miller's avatar
      Merge branch 'hns3-fixes' · 19cfdc0d
      David S. Miller authored
      Jijie Shao says:
      
      ====================
      There are some bugfix for the HNS3 ethernet driver
      
      There are some bugfix for the HNS3 ethernet driver
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      19cfdc0d
    • Jian Shen's avatar
      net: hns3: add checking for vf id of mailbox · 4e2969a0
      Jian Shen authored
      Add checking for vf id of mailbox, in order to avoid array
      out-of-bounds risk.
      Signed-off-by: default avatarJian Shen <shenjian15@huawei.com>
      Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
      Reviewed-by: default avatarSunil Goutham <sgoutham@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4e2969a0
    • Jie Wang's avatar
      net: hns3: fix port duplex configure error in IMP reset · 11d80f79
      Jie Wang authored
      Currently, the mac port is fixed to configured as full dplex mode in
      hclge_mac_init() when driver initialization or reset restore. Users may
      change the mode to half duplex with ethtool,  so it may cause the user
      configuration dropped after reset.
      
      To fix it, don't change the duplex mode when resetting.
      
      Fixes: 2d03eacc ("net: hns3: Only update mac configuation when necessary")
      Signed-off-by: default avatarJie Wang <wangjie125@huawei.com>
      Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      11d80f79
    • Peiyang Wang's avatar
      net: hns3: fix reset timeout under full functions and queues · 216bc415
      Peiyang Wang authored
      The cmdq reset command times out when all VFs are enabled and the queue is
      full. The hardware processing time exceeds the timeout set by the driver.
      In order to avoid the above extreme situations, the driver extends the
      reset timeout to 1 second.
      Signed-off-by: default avatarPeiyang Wang <wangpeiyang1@huawei.com>
      Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
      Reviewed-by: default avatarSunil Goutham <sgoutham@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      216bc415
    • Jijie Shao's avatar
      net: hns3: fix delete tc fail issue · 03f92287
      Jijie Shao authored
      When the tc is removed during reset, hns3 driver will return a errcode.
      But kernel ignores this errcode, As a result,
      the driver status is inconsistent with the kernel status.
      
      This patch retains the deletion status when the deletion fails
      and continues to delete after the reset to ensure that
      the status of the driver is consistent with that of kernel.
      Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      03f92287
    • Yonglong Liu's avatar
      net: hns3: fix kernel crash when 1588 is received on HIP08 devices · 0fbcf236
      Yonglong Liu authored
      The HIP08 devices does not register the ptp devices, so the
      hdev->ptp is NULL, but the hardware can receive 1588 messages,
      and set the HNS3_RXD_TS_VLD_B bit, so, if match this case, the
      access of hdev->ptp->flags will cause a kernel crash:
      
      [ 5888.946472] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000018
      [ 5888.946475] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000018
      ...
      [ 5889.266118] pc : hclge_ptp_get_rx_hwts+0x40/0x170 [hclge]
      [ 5889.272612] lr : hclge_ptp_get_rx_hwts+0x34/0x170 [hclge]
      [ 5889.279101] sp : ffff800012c3bc50
      [ 5889.283516] x29: ffff800012c3bc50 x28: ffff2040002be040
      [ 5889.289927] x27: ffff800009116484 x26: 0000000080007500
      [ 5889.296333] x25: 0000000000000000 x24: ffff204001c6f000
      [ 5889.302738] x23: ffff204144f53c00 x22: 0000000000000000
      [ 5889.309134] x21: 0000000000000000 x20: ffff204004220080
      [ 5889.315520] x19: ffff204144f53c00 x18: 0000000000000000
      [ 5889.321897] x17: 0000000000000000 x16: 0000000000000000
      [ 5889.328263] x15: 0000004000140ec8 x14: 0000000000000000
      [ 5889.334617] x13: 0000000000000000 x12: 00000000010011df
      [ 5889.340965] x11: bbfeff4d22000000 x10: 0000000000000000
      [ 5889.347303] x9 : ffff800009402124 x8 : 0200f78811dfbb4d
      [ 5889.353637] x7 : 2200000000191b01 x6 : ffff208002a7d480
      [ 5889.359959] x5 : 0000000000000000 x4 : 0000000000000000
      [ 5889.366271] x3 : 0000000000000000 x2 : 0000000000000000
      [ 5889.372567] x1 : 0000000000000000 x0 : ffff20400095c080
      [ 5889.378857] Call trace:
      [ 5889.382285] hclge_ptp_get_rx_hwts+0x40/0x170 [hclge]
      [ 5889.388304] hns3_handle_bdinfo+0x324/0x410 [hns3]
      [ 5889.394055] hns3_handle_rx_bd+0x60/0x150 [hns3]
      [ 5889.399624] hns3_clean_rx_ring+0x84/0x170 [hns3]
      [ 5889.405270] hns3_nic_common_poll+0xa8/0x220 [hns3]
      [ 5889.411084] napi_poll+0xcc/0x264
      [ 5889.415329] net_rx_action+0xd4/0x21c
      [ 5889.419911] __do_softirq+0x130/0x358
      [ 5889.424484] irq_exit+0x134/0x154
      [ 5889.428700] __handle_domain_irq+0x88/0xf0
      [ 5889.433684] gic_handle_irq+0x78/0x2c0
      [ 5889.438319] el1_irq+0xb8/0x140
      [ 5889.442354] arch_cpu_idle+0x18/0x40
      [ 5889.446816] default_idle_call+0x5c/0x1c0
      [ 5889.451714] cpuidle_idle_call+0x174/0x1b0
      [ 5889.456692] do_idle+0xc8/0x160
      [ 5889.460717] cpu_startup_entry+0x30/0xfc
      [ 5889.465523] secondary_start_kernel+0x158/0x1ec
      [ 5889.470936] Code: 97ffab78 f9411c14 91408294 f9457284 (f9400c80)
      [ 5889.477950] SMP: stopping secondary CPUs
      [ 5890.514626] SMP: failed to stop secondary CPUs 0-69,71-95
      [ 5890.522951] Starting crashdump kernel...
      
      Fixes: 0bf5eb78 ("net: hns3: add support for PTP")
      Signed-off-by: default avatarYonglong Liu <liuyonglong@huawei.com>
      Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0fbcf236
    • Hao Lan's avatar
      net: hns3: Disable SerDes serial loopback for HiLink H60 · 0448825b
      Hao Lan authored
      When the hilink version is H60, the serdes serial loopback test is not
      supported. This patch add hilink version detection. When the version
      is H60, the serdes serial loopback test will be disable.
      Signed-off-by: default avatarHao Lan <lanhao@huawei.com>
      Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0448825b
    • Hao Lan's avatar
      net: hns3: add new 200G link modes for hisilicon device · dd1f65f0
      Hao Lan authored
      The hisilicon device now supports a new 200G link interface,
      which query from firmware in a new bit. Therefore,
      the HCLGE_SUPPORT_200G_R4_BIT capability bit has been added.
      The HCLGE_SUPPORT_200G_BIT has been renamed as
      HCLGE_SUPPORT_200G_R4_EXT_BIT, and the firmware has
      extended support for this mode.
      
      Fixes: ae6f010c ("net: hns3: add support for 200G device")
      Signed-off-by: default avatarHao Lan <lanhao@huawei.com>
      Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dd1f65f0
    • Jijie Shao's avatar
      net: hns3: fix wrong judgment condition issue · 07a1d6dc
      Jijie Shao authored
      In hns3_dcbnl_ieee_delapp, should check ieee_delapp not ieee_setapp.
      This path fix the wrong judgment.
      
      Fixes: 0ba22bcb ("net: hns3: add support config dscp map to tc")
      Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      07a1d6dc
    • David S. Miller's avatar
      Merge branch 'ionic-diet' · 147a1c06
      David S. Miller authored
      Shannon Nelson says:
      
      ====================
      ionic: putting ionic on a diet
      
      Building on the performance work done in the previous patchset
          [Link] https://lore.kernel.org/netdev/20240229193935.14197-1-shannon.nelson@amd.com/
      this patchset puts the ionic driver on a diet, decreasing the memory
      requirements per queue, and simplifies a few more bits of logic.
      
      We trimmed the queue management structs and gained some ground, but
      the most savings came from trimming the individual buffer descriptors.
      The original design used a single generic buffer descriptor for Tx, Rx and
      Adminq needs, but the Rx and Adminq descriptors really don't need all the
      info that the Tx descriptors track.  By splitting up the descriptor types
      we can significantly reduce the descriptor sizes for Rx and Adminq use.
      
      There is a small reduction in the queue management structs, saving about
      3 cachelines per queuepair:
      
          ionic_qcq:
      	Before:	/* size: 2176, cachelines: 34, members: 23 */
      	After:	/* size: 2048, cachelines: 32, members: 23 */
      
      We also remove an array of completion descriptor pointers, or about
      8 Kbytes per queue.
      
      But the biggest savings came from splitting the desc_info struct into
      queue specific structs and trimming out what was unnecessary.
      
          Before:
      	ionic_desc_info:
      		/* size: 496, cachelines: 8, members: 10 */
          After:
      	ionic_tx_desc_info:
      		/* size: 496, cachelines: 8, members: 6 */
      	ionic_rx_desc_info:
      		/* size: 224, cachelines: 4, members: 2 */
      	ionic_admin_desc_info:
      		/* size: 8, cachelines: 1, members: 1 */
      
      In a 64 core host the ionic driver will default to 64 queuepairs of
      1024 descriptors for Rx, 1024 for Tx, and 80 for Adminq and Notifyq.
      
      The total memory usage for 64 queues:
          Before:
      	  65 * sizeof(ionic_qcq)			   141,440
      	+ 64 * 1024 * sizeof(ionic_desc_info)		32,505,856
      	+ 64 * 1024 * sizeof(ionic_desc_info)		32,505,856
      	+ 64 * 1024 * 2 * sizeof(ionic_qc_info)		    16,384
      	+  1 *   80 * sizeof(ionic_desc_info)		    39,690
      							----------
      							65,201,038
      
          After:
      	  65 * sizeof(ionic_qcq)			   133,120
      	+ 64 * 1024 * sizeof(ionic_tx_desc_info)	32,505,856
      	+ 64 * 1024 * sizeof(ionic_rx_desc_info)	14,680,064
      	+                           (removed)		         0
      	+  1 *   80 * sizeof(ionic_admin desc_info)	       640
      							----------
      							47,319,680
      
      This saves us approximately 18 Mbytes per port in a 64 core machine,
      a 28% savings in our memory needs.
      
      In addition, this improves our simple single thread / single queue
      iperf case on a 9100 MTU connection from 86.7 to 95 Gbits/sec.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      147a1c06
    • Shannon Nelson's avatar
      ionic: keep stats struct local to error handling · 2854242d
      Shannon Nelson authored
      When possible, keep the stats struct references strictly
      in the error handling blocks and out of the fastpath.
      Reviewed-by: default avatarBrett Creeley <brett.creeley@amd.com>
      Signed-off-by: default avatarShannon Nelson <shannon.nelson@amd.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2854242d
    • Shannon Nelson's avatar
      ionic: better dma-map error handling · 56e41ee1
      Shannon Nelson authored
      Fix up a couple of small dma_addr handling issues
        - don't double-count dma-map-err stat in ionic_tx_map_skb()
          or ionic_xdp_post_frame()
        - return 0 on error from both ionic_tx_map_single() and
          ionic_tx_map_frag() and check for !dma_addr in ionic_tx_map_skb()
          and ionic_xdp_post_frame()
        - be sure to unmap buf_info[0] in ionic_tx_map_skb() error path
        - don't assign rx buf->dma_addr until error checked in ionic_rx_page_alloc()
        - remove unnecessary dma_addr_t casts
      Reviewed-by: default avatarBrett Creeley <brett.creeley@amd.com>
      Signed-off-by: default avatarShannon Nelson <shannon.nelson@amd.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      56e41ee1
    • Shannon Nelson's avatar
      ionic: remove unnecessary NULL test · a12c1e7a
      Shannon Nelson authored
      We call ionic_rx_page_alloc() only on existing buf_info structs from
      ionic_rx_fill().  There's no need for the additional NULL test.
      Reviewed-by: default avatarBrett Creeley <brett.creeley@amd.com>
      Signed-off-by: default avatarShannon Nelson <shannon.nelson@amd.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a12c1e7a
    • Shannon Nelson's avatar
      ionic: rearrange ionic_queue for better layout · 4554341d
      Shannon Nelson authored
      A simple change to the struct ionic_queue layout removes some
      unnecessary padding and saves us a cacheline in the struct
      ionic_qcq layout.
      
          struct ionic_queue {
      	Before: /* size: 256, cachelines: 4, members: 29 */
      	After:  /* size: 192, cachelines: 3, members: 29 */
      
          struct ionic_qcq {
      	Before: /* size: 2112, cachelines: 33, members: 23 */
      	After:  /* size: 2048, cachelines: 32, members: 23 */
      Reviewed-by: default avatarBrett Creeley <brett.creeley@amd.com>
      Signed-off-by: default avatarShannon Nelson <shannon.nelson@amd.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4554341d