Skip to content
  1. Dec 07, 2021
    • Seevalamuthu Mariappan's avatar
      ath11k: Fix QMI file type enum value · 18ae1ab0
      Seevalamuthu Mariappan authored
      bdf_type for caldata in QMI_WLANFW_BDF_DOWNLOAD_REQ_V01 is wrongly
      sent as 1. But, expected bdf_type value for caldata and EEPROM is 2 and 3
      respectively. It leads to firmware crash. Fix ath11k_qmi_file_type enum
      values.
      
      Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.5.0.1-01100-QCAHKSWPL_SILICONZ-1
      Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.4.0.1-00192-QCAHKSWPL_SILICONZ-1
      
      Fixes: 336e7b53
      
       ("ath11k: clean up BDF download functions")
      Signed-off-by: default avatarSeevalamuthu Mariappan <quic_seevalam@quicinc.com>
      Signed-off-by: default avatarKalle Valo <quic_kvalo@quicinc.com>
      Link: https://lore.kernel.org/r/1638182754-18408-1-git-send-email-quic_seevalam@quicinc.com
      18ae1ab0
    • Baochen Qiang's avatar
      ath11k: add support for WCN6855 hw2.1 · d1147a31
      Baochen Qiang authored
      Ath11k fails to probe WCN6855 hw2.1 chip:
      
      [ 6.983821] ath11k_pci 0000:06:00.0: enabling device (0000 -> 0002)
      [ 6.983841] ath11k_pci 0000:06:00.0: Unsupported WCN6855 SOC hardware version: 18 17
      
      This is caused by the wrong bit mask setting of hardware major version:
      for QCA6390/QCN6855, it should be BIT8-11, not BIT8-16, so change the
      definition to GENMASK(11, 8).
      
      Also, add a separate entry for WCN6855 hw2.1 in ath11k_hw_params.
      
      Please note that currently WCN6855 hw2.1 shares the same firmwares
      as hw2.0, so users of this chip need to create a symlink as below:
      
      	ln -s hw2.0 hw2.1
      
      Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
      Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
      Tested-on: QCA6390 hw2.0 PCI WLAN.HST.1.0.1-01740-QCAHSTSWPLZ_V2_TO_X86-1
      
      Fixes: 18ac1665
      
       ("ath11k: pci: check TCSR_SOC_HW_VERSION")
      Signed-off-by: default avatarBaochen Qiang <quic_bqiang@quicinc.com>
      Signed-off-by: default avatarKalle Valo <quic_kvalo@quicinc.com>
      Link: https://lore.kernel.org/r/20211129025613.21594-1-quic_bqiang@quicinc.com
      d1147a31
    • Jonas Jelonek's avatar
      ath9k: switch to rate table based lookup · 7f3a6f5d
      Jonas Jelonek authored
      This patch changes mac80211 rate control for the ath9k driver.  The rate lookup
      per packet is changed from legacy usage of ieee80211_get_tx_rates() to the new
      rate table based lookup in struct ieee80211_sta->rates.
      
      The most recent rate control API, introduced with commit 0d528d85
      
      
      ("mac80211: improve the rate control API"), allows drivers to directly get
      rates from ieee80211_sta->rates. This is not used by every driver yet, the
      translation/merge is currently performed in ieee80211_get_tx_rates.  This patch
      changes the behaviour and avoids the call to ieee80211_get_tx_rates and
      subsequent calls. ath9k now directly reads rates from sta->rates into its rate
      table. Cause ath9k does not expect rate selection in SKB->CB, the table merge
      does not consider rate array in SKB->CB except for the first entry (used for
      probing).
      
      Tested with a 8devices Rambutan with QCA9558 SoC by performing two runs, one
      without the patch and one with. Generated traffic between AP and multiple STAs
      in each run, measured throughput and captured rc_stats.  Comparison of both
      runs resulted in same rate selection and no performance loss or other negative
      effects.
      
      Co-developed-by: default avatarThomas Huehn <thomas.huehn@hs-nordhausen.de>
      Signed-off-by: default avatarThomas Huehn <thomas.huehn@hs-nordhausen.de>
      Signed-off-by: default avatarJonas Jelonek <jelonek.jonas@gmail.com>
      Acked-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
      Signed-off-by: default avatarKalle Valo <quic_kvalo@quicinc.com>
      Link: https://lore.kernel.org/r/20211128090753.958-1-jelonek.jonas@gmail.com
      7f3a6f5d
    • Fabio Estevam's avatar
      ath10k: Fix the MTU size on QCA9377 SDIO · 09b8cd69
      Fabio Estevam authored
      On an imx6dl-pico-pi board with a QCA9377 SDIO chip, simply trying to
      connect via ssh to another machine causes:
      
      [   55.824159] ath10k_sdio mmc1:0001:1: failed to transmit packet, dropping: -12
      [   55.832169] ath10k_sdio mmc1:0001:1: failed to submit frame: -12
      [   55.838529] ath10k_sdio mmc1:0001:1: failed to push frame: -12
      [   55.905863] ath10k_sdio mmc1:0001:1: failed to transmit packet, dropping: -12
      [   55.913650] ath10k_sdio mmc1:0001:1: failed to submit frame: -12
      [   55.919887] ath10k_sdio mmc1:0001:1: failed to push frame: -12
      
      , leading to an ssh connection failure.
      
      One user inspected the size of frames on Wireshark and reported
      the followig:
      
      "I was able to narrow the issue down to the mtu. If I set the mtu for
      the wlan0 device to 1486 instead of 1500, the issue does not happen.
      
      The size of frames that I see on Wireshark is exactly 1500 after
      setting it to 1486."
      
      Clearing the HI_ACS_FLAGS_ALT_DATA_CREDIT_SIZE avoids the problem and
      the ssh command works successfully after that.
      
      Introduce a 'credit_size_workaround' field to ath10k_hw_params for
      the QCA9377 SDIO, so that the HI_ACS_FLAGS_ALT_DATA_CREDIT_SIZE
      is not set in this case.
      
      Tested with QCA9377 SDIO with firmware WLAN.TF.1.1.1-00061-QCATFSWPZ-1.
      
      Fixes: 2f918ea9
      
       ("ath10k: enable alt data of TX path for sdio")
      Signed-off-by: default avatarFabio Estevam <festevam@denx.de>
      Signed-off-by: default avatarKalle Valo <quic_kvalo@quicinc.com>
      Link: https://lore.kernel.org/r/20211124131047.713756-1-festevam@denx.de
      09b8cd69
  2. Nov 29, 2021
    • Sriram R's avatar
      ath11k: Avoid NULL ptr access during mgmt tx cleanup · a93789ae
      Sriram R authored
      
      
      Currently 'ar' reference is not added in skb_cb during
      WMI mgmt tx. Though this is generally not used during tx completion
      callbacks, on interface removal the remaining idr cleanup callback
      uses the ar ptr from skb_cb from mgmt txmgmt_idr. Hence
      fill them during tx call for proper usage.
      
      Also free the skb which is missing currently in these
      callbacks.
      
      Crash_info:
      
      [19282.489476] Unable to handle kernel NULL pointer dereference at virtual address 00000000
      [19282.489515] pgd = 91eb8000
      [19282.496702] [00000000] *pgd=00000000
      [19282.502524] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
      [19282.783728] PC is at ath11k_mac_vif_txmgmt_idr_remove+0x28/0xd8 [ath11k]
      [19282.789170] LR is at idr_for_each+0xa0/0xc8
      
      Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-00729-QCAHKSWPL_SILICONZ-3 v2
      Signed-off-by: default avatarSriram R <quic_srirrama@quicinc.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/1637832614-13831-1-git-send-email-quic_srirrama@quicinc.com
      a93789ae
  3. Nov 26, 2021
  4. Nov 25, 2021
  5. Nov 22, 2021
  6. Nov 19, 2021
    • Kalle Valo's avatar
      Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git · 728e26c3
      Kalle Valo authored
      ath.git patches for v5.17. Major changes:
      
      ath10k
      
      * fetch (pre-)calibration data via nvmem subsystem
      
      ath11k
      
      * enable 802.11 power save mode in station mode for qca6390 and wcn6855
      
      * trace log support
      
      * proper board file detection for WCN6855 based on PCI ids
      
      * BSS color change support
      728e26c3
    • Peter Seiderer's avatar
      ath9k: fix intr_txqs setting · 5125b9a9
      Peter Seiderer authored
      
      
      The struct ath_hw member intr_txqs is never reset/assigned outside
      of ath9k_hw_init_queues() and with the used bitwise-or in the interrupt
      handling ar9002_hw_get_isr() accumulates all ever set interrupt flags.
      
      Fix this by using a pure assign instead of bitwise-or for the
      first line (note: intr_txqs is only evaluated in case ATH9K_INT_TX bit
      is set).
      
      Signed-off-by: default avatarPeter Seiderer <ps.report@gmx.net>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/20211116220720.30145-1-ps.report@gmx.net
      5125b9a9
    • Seevalamuthu Mariappan's avatar
      ath11k: add hw_param for wakeup_mhi · 081e2d64
      Seevalamuthu Mariappan authored
      Wakeup mhi is needed before pci_read/write only for QCA6390 and WCN6855. Since
      wakeup & release mhi is enabled for all hardwares, below mhi assert is seen in
      QCN9074 when doing 'rmmod ath11k_pci':
      
      	Kernel panic - not syncing: dev_wake != 0
      	CPU: 2 PID: 13535 Comm: procd Not tainted 4.4.60 #1
      	Hardware name: Generic DT based system
      	[<80316dac>] (unwind_backtrace) from [<80313700>] (show_stack+0x10/0x14)
      	[<80313700>] (show_stack) from [<805135dc>] (dump_stack+0x7c/0x9c)
      	[<805135dc>] (dump_stack) from [<8032136c>] (panic+0x84/0x1f8)
      	[<8032136c>] (panic) from [<80549b24>] (mhi_pm_disable_transition+0x3b8/0x5b8)
      	[<80549b24>] (mhi_pm_disable_transition) from [<80549ddc>] (mhi_power_down+0xb8/0x100)
      	[<80549ddc>] (mhi_power_down) from [<7f5242b0>] (ath11k_mhi_op_status_cb+0x284/0x3ac [ath11k_pci])
      	[E][__mhi_device_get_sync] Did not enter M0 state, cur_state:RESET pm_state:SHUTDOWN Process
      	[E][__mhi_device_get_sync] Did not enter M0 state, cur_state:RESET pm_state:SHUTDOWN Process
      	[E][__mhi_device_get_sync] Did not enter M0 state, cur_state:RESET pm_state:SHUTDOWN Process
      	[<7f5242b0>] (ath11k_mhi_op_status_cb [ath11k_pci]) from [<7f524878>] (ath11k_mhi_stop+0x10/0x20 [ath11k_pci])
      	[<7f524878>] (ath11k_mhi_stop [ath11k_pci]) from [<7f525b94>] (ath11k_pci_power_down+0x54/0x90 [ath11k_pci])
      	[<7f525b94>] (ath11k_pci_power_down [ath11k_pci]) from [<8056b2a8>] (pci_device_shutdown+0x30/0x44)
      	[<8056b2a8>] (pci_device_shutdown) from [<805cfa0c>] (device_shutdown+0x124/0x174)
      	[<805cfa0c>] (device_shutdown) from [<8033aaa4>] (kernel_restart+0xc/0x50)
      	[<8033aaa4>] (kernel_restart) from [<8033ada8>] (SyS_reboot+0x178/0x1ec)
      	[<8033ada8>] (SyS_reboot) from [<80301b80>] (ret_fast_syscall+0x0/0x34)
      
      Hence, disable wakeup/release mhi using hw_param for other hardwares.
      
      Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.5.0.1-01060-QCAHKSWPL_SILICONZ-1
      
      Fixes: a05bd851
      
       ("ath11k: read and write registers below unwindowed address")
      Signed-off-by: default avatarSeevalamuthu Mariappan <quic_seevalam@quicinc.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/1636702019-26142-1-git-send-email-quic_seevalam@quicinc.com
      081e2d64
    • Jakub Kicinski's avatar
      Merge tag 'regmap-no-bus-update-bits' of... · 3b1abcf1
      Jakub Kicinski authored
      Merge tag 'regmap-no-bus-update-bits' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap
      
      Mark Brown says:
      
      ===================
      regmap: Allow regmap_update_bits() to be offloaded with no bus
      
      Some hardware can do this so let's use that capability.
      ===================
      
      Link: https://lore.kernel.org/all/YZWDOidBOssP10yS@sirena.org.uk/
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      3b1abcf1
    • Jakub Kicinski's avatar
    • Linus Torvalds's avatar
      Merge tag 'net-5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 8d0112ac
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Including fixes from bpf, mac80211.
      
        Current release - regressions:
      
         - devlink: don't throw an error if flash notification sent before
           devlink visible
      
         - page_pool: Revert "page_pool: disable dma mapping support...",
           turns out there are active arches who need it
      
        Current release - new code bugs:
      
         - amt: cancel delayed_work synchronously in amt_fini()
      
        Previous releases - regressions:
      
         - xsk: fix crash on double free in buffer pool
      
         - bpf: fix inner map state pruning regression causing program
           rejections
      
         - mac80211: drop check for DONT_REORDER in __ieee80211_select_queue,
           preventing mis-selecting the best effort queue
      
         - mac80211: do not access the IV when it was stripped
      
         - mac80211: fix radiotap header generation, off-by-one
      
         - nl80211: fix getting radio statistics in survey dump
      
         - e100: fix device suspend/resume
      
        Previous releases - always broken:
      
         - tcp: fix uninitialized access in skb frags array for Rx 0cp
      
         - bpf: fix toctou on read-only map's constant scalar tracking
      
         - bpf: forbid bpf_ktime_get_coarse_ns and bpf_timer_* in tracing
           progs
      
         - tipc: only accept encrypted MSG_CRYPTO msgs
      
         - smc: transfer remaining wait queue entries during fallback, fix
           missing wake ups
      
         - udp: validate checksum in udp_read_sock() (when sockmap is used)
      
         - sched: act_mirred: drop dst for the direction from egress to
           ingress
      
         - virtio_net_hdr_to_skb: count transport header in UFO, prevent
           allowing bad skbs into the stack
      
         - nfc: reorder the logic in nfc_{un,}register_device, fix unregister
      
         - ipsec: check return value of ipv6_skip_exthdr
      
         - usb: r8152: add MAC passthrough support for more Lenovo Docks"
      
      * tag 'net-5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (96 commits)
        ptp: ocp: Fix a couple NULL vs IS_ERR() checks
        net: ethernet: dec: tulip: de4x5: fix possible array overflows in type3_infoblock()
        net: tulip: de4x5: fix the problem that the array 'lp->phy[8]' may be out of bound
        ipv6: check return value of ipv6_skip_exthdr
        e100: fix device suspend/resume
        devlink: Don't throw an error if flash notification sent before devlink visible
        page_pool: Revert "page_pool: disable dma mapping support..."
        ethernet: hisilicon: hns: hns_dsaf_misc: fix a possible array overflow in hns_dsaf_ge_srst_by_port()
        octeontx2-af: debugfs: don't corrupt user memory
        NFC: add NCI_UNREG flag to eliminate the race
        NFC: reorder the logic in nfc_{un,}register_device
        NFC: reorganize the functions in nci_request
        tipc: check for null after calling kmemdup
        i40e: Fix display error code in dmesg
        i40e: Fix creation of first queue by omitting it if is not power of two
        i40e: Fix warning message and call stack during rmmod i40e driver
        i40e: Fix ping is lost after configuring ADq on VF
        i40e: Fix changing previously set num_queue_pairs for PFs
        i40e: Fix NULL ptr dereference on VSI filter sync
        i40e: Fix correct max_pkt_size on VF RX queue
        ...
      8d0112ac
    • Linus Torvalds's avatar
      Merge tag 'for-5.16-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · 6fdf8864
      Linus Torvalds authored
      Pull btrfs fixes from David Sterba:
       "Several xes and one old ioctl deprecation. Namely there's fix for
        crashes/warnings with lzo compression that was suspected to be caused
        by first pull merge resolution, but it was a different bug.
      
        Summary:
      
         - regression fix for a crash in lzo due to missing boundary checks of
           the page array
      
         - fix crashes on ARM64 due to missing barriers when synchronizing
           status bits between work queues
      
         - silence lockdep when reading chunk tree during mount
      
         - fix false positive warning in integrity checker on devices with
           disabled write caching
      
         - fix signedness of bitfields in scrub
      
         - start deprecation of balance v1 ioctl"
      
      * tag 'for-5.16-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
        btrfs: deprecate BTRFS_IOC_BALANCE ioctl
        btrfs: make 1-bit bit-fields of scrub_page unsigned int
        btrfs: check-integrity: fix a warning on write caching disabled disk
        btrfs: silence lockdep when reading chunk tree during mount
        btrfs: fix memory ordering between normal and ordered work functions
        btrfs: fix a out-of-bound access in copy_compressed_data_to_page()
      6fdf8864
    • Linus Torvalds's avatar
      Merge tag 'fs_for_v5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · db850a9b
      Linus Torvalds authored
      Pull UDF fix from Jan Kara:
       "A fix for a long-standing UDF bug where we were not properly
        validating directory position inside readdir"
      
      * tag 'fs_for_v5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
        udf: Fix crash after seekdir
      db850a9b
    • Linus Torvalds's avatar
      Merge tag 'fs.idmapped.v5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux · 7cf7eed1
      Linus Torvalds authored
      Pull setattr idmapping fix from Christian Brauner:
       "This contains a simple fix for setattr. When determining the validity
        of the attributes the ia_{g,u}id fields contain the value that will be
        written to inode->i_{g,u}id. When the {g,u}id attribute of the file
        isn't altered and the caller's fs{g,u}id matches the current {g,u}id
        attribute the attribute change is allowed.
      
        The value in ia_{g,u}id does already account for idmapped mounts and
        will have taken the relevant idmapping into account. So in order to
        verify that the {g,u}id attribute isn't changed we simple need to
        compare the ia_{g,u}id value against the inode's i_{g,u}id value.
      
        This only has any meaning for idmapped mounts as idmapping helpers are
        idempotent without them. And for idmapped mounts this really only has
        a meaning when circular idmappings are used, i.e. mappings where e.g.
        id 1000 is mapped to id 1001 and id 1001 is mapped to id 1000. Such
        ciruclar mappings can e.g. be useful when sharing the same home
        directory between multiple users at the same time.
      
        Before this patch we could end up denying legitimate attribute changes
        and allowing invalid attribute changes when circular mappings are
        used. To even get into this situation the caller must've been
        privileged both to create that mapping and to create that idmapped
        mount.
      
        This hasn't been seen in the wild anywhere but came up when expanding
        the fstest suite during work on a series of hardening patches. All
        idmapped fstests pass without any regressions and we're adding new
        tests to verify the behavior of circular mappings.
      
        The new tests can be found at [1]"
      
      Link: https://lore.kernel.org/linux-fsdevel/20211109145713.1868404-2-brauner@kernel.org [1]
      
      * tag 'fs.idmapped.v5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
        fs: handle circular mappings correctly
      7cf7eed1
    • Linus Torvalds's avatar
      Merge tag 'for-5.16/parisc-4' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · a6a6d227
      Linus Torvalds authored
      Pull parisc fixes from Helge Deller:
       "parisc bug and warning fixes and wire up futex_waitv.
      
        Fix some warnings which showed up with allmodconfig builds, a revert
        of a change to the sigreturn trampoline which broke signal handling,
        wire up futex_waitv and add CONFIG_PRINTK_TIME=y to 32bit defconfig"
      
      * tag 'for-5.16/parisc-4' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: Enable CONFIG_PRINTK_TIME=y in 32bit defconfig
        Revert "parisc: Reduce sigreturn trampoline to 3 instructions"
        parisc: Wrap assembler related defines inside __ASSEMBLY__
        parisc: Wire up futex_waitv
        parisc: Include stringify.h to avoid build error in crypto/api.c
        parisc/sticon: fix reverse colors
      a6a6d227
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · c46e8ece
      Linus Torvalds authored
      Pull KVM fixes from Paolo Bonzini:
       "Selftest changes:
      
         - Cleanups for the perf test infrastructure and mapping hugepages
      
         - Avoid contention on mmap_sem when the guests start to run
      
         - Add event channel upcall support to xen_shinfo_test
      
        x86 changes:
      
         - Fixes for Xen emulation
      
         - Kill kvm_map_gfn() / kvm_unmap_gfn() and broken gfn_to_pfn_cache
      
         - Fixes for migration of 32-bit nested guests on 64-bit hypervisor
      
         - Compilation fixes
      
         - More SEV cleanups
      
        Generic:
      
         - Cap the return value of KVM_CAP_NR_VCPUS to both KVM_CAP_MAX_VCPUS
           and num_online_cpus(). Most architectures were only using one of
           the two"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (42 commits)
        KVM: x86: Cap KVM_CAP_NR_VCPUS by KVM_CAP_MAX_VCPUS
        KVM: s390: Cap KVM_CAP_NR_VCPUS by num_online_cpus()
        KVM: RISC-V: Cap KVM_CAP_NR_VCPUS by KVM_CAP_MAX_VCPUS
        KVM: PPC: Cap KVM_CAP_NR_VCPUS by KVM_CAP_MAX_VCPUS
        KVM: MIPS: Cap KVM_CAP_NR_VCPUS by KVM_CAP_MAX_VCPUS
        KVM: arm64: Cap KVM_CAP_NR_VCPUS by kvm_arm_default_max_vcpus()
        KVM: x86: Assume a 64-bit hypercall for guests with protected state
        selftests: KVM: Add /x86_64/sev_migrate_tests to .gitignore
        riscv: kvm: fix non-kernel-doc comment block
        KVM: SEV: Fix typo in and tweak name of cmd_allowed_from_miror()
        KVM: SEV: Drop a redundant setting of sev->asid during initialization
        KVM: SEV: WARN if SEV-ES is marked active but SEV is not
        KVM: SEV: Set sev_info.active after initial checks in sev_guest_init()
        KVM: SEV: Disallow COPY_ENC_CONTEXT_FROM if target has created vCPUs
        KVM: Kill kvm_map_gfn() / kvm_unmap_gfn() and gfn_to_pfn_cache
        KVM: nVMX: Use a gfn_to_hva_cache for vmptrld
        KVM: nVMX: Use kvm_read_guest_offset_cached() for nested VMCS check
        KVM: x86/xen: Use sizeof_field() instead of open-coding it
        KVM: nVMX: Use kvm_{read,write}_guest_cached() for shadow_vmcs12
        KVM: x86/xen: Fix get_attr of KVM_XEN_ATTR_TYPE_SHARED_INFO
        ...
      c46e8ece
    • Linus Torvalds's avatar
      Merge tag 'docs-5.16-2' of git://git.lwn.net/linux · 4ae275bc
      Linus Torvalds authored
      Pull documentation fixes from Jonathan Corbet:
       "A handful of documentation fixes for 5.16"
      
      * tag 'docs-5.16-2' of git://git.lwn.net/linux:
        Documentation/process: fix a cross reference
        Documentation: update vcpu-requests.rst reference
        docs: accounting: update delay-accounting.rst reference
        libbpf: update index.rst reference
        docs: filesystems: Fix grammatical error "with" to "which"
        doc/zh_CN: fix a translation error in management-style
        docs: ftrace: fix the wrong path of tracefs
        Documentation: arm: marvell: Fix link to armada_1000_pb.pdf document
        Documentation: arm: marvell: Put Armada XP section between Armada 370 and 375
        Documentation: arm: marvell: Add some links to homepage / product infos
        docs: Update Sphinx requirements
      4ae275bc
    • Linus Torvalds's avatar
      Merge tag 'printk-for-5.16-fixup' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux · 7d5775d4
      Linus Torvalds authored
      Pull printk fixes from Petr Mladek:
      
       - Try to flush backtraces from other CPUs also on the local one. This
         was a regression caused by printk_safe buffers removal.
      
       - Remove header dependency warning.
      
      * tag 'printk-for-5.16-fixup' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux:
        printk: Remove printk.h inclusion in percpu.h
        printk: restore flushing of NMI buffers on remote CPUs after NMI backtraces
      7d5775d4
  7. Nov 18, 2021
    • Dan Carpenter's avatar
      ptp: ocp: Fix a couple NULL vs IS_ERR() checks · c7521d3a
      Dan Carpenter authored
      The ptp_ocp_get_mem() function does not return NULL, it returns error
      pointers.
      
      Fixes: 773bda96
      
       ("ptp: ocp: Expose various resources on the timecard.")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c7521d3a
    • David S. Miller's avatar
      Merge branch 'lan78xx-napi' · bb8cecf8
      David S. Miller authored
      
      
      John Efstathiades says:
      
      ===================
      lan78xx NAPI Performance Improvements
      
      This patch set introduces a set of changes to the lan78xx driver
      that were originally developed as part of an investigation into
      the performance of TCP and UDP transfers on an Android system.
      The changes increase the throughput of both UDP and TCP transfers
      and reduce the overall CPU load.
      
      These improvements are also seen on a standard Linux kernel. Typical
      results are included at the end of this document.
      
      The changes to the driver evolved over time. The patches presented
      here attempt to organise the changes in to coherent blocks that
      affect logically connected parts of the driver. The patches do not
      reflect the way in which the code evolved during the performance
      investigation.
      
      Each patch produces a working driver that has an incremental
      improvement but patches 2, 3 and 6 should be considered a single
      update.
      
      The changes affect the following parts of the driver:
      
      1. Deferred URB processing
      
      The deferred URB processing that was originally done by a tasklet
      is now done by a NAPI polling routine. The NAPI cycle has a fixed
      work budget that controls how many received frames are passed to
      the network stack.
      
      Patch 6 introduces the NAPI polling but depends on preceding patches.
      
      The new NAPI polling routine is also responsible for submitting
      Rx and Tx URBs to the USB host controller.
      
      Moving the URB processing to a NAPI-based system "smoothed"
      incoming and outgoing data flows on the Android system under
      investigation. However, taken in isolation, moving from a tasklet
      approach to a NAPI approach made little or no difference to the
      overall performance.
      
      2. URB buffer management
      
      The driver creates a pool of Tx and a pool of Rx URB buffers. Each
      buffer is large enough to accommodate a packet with the maximum MTU
      data. URBs are allocated from these pools as required.
      
      Patch 2 introduces the new Tx buffer pool.
      Patch 3 introduces the new Rx buffer pool.
      
      3. Tx pending data
      
      SKBs containing data to be transmitted are added to a queue. The
      driver tracks free Tx URBs and the corresponding free Tx URB space.
      When new Tx URBs are submitted, pending data is copied into the
      URB buffer until the URB buffer is filled or there is no more
      pending data. This maximises utilisation the LAN78xx internal
      USB and network frame buffers.
      
      New Tx URBs are submitted to the USB host controller as part of the
      NAPI polling cycle.
      
      Patch 2 introduces these changes.
      
      4. Rx URB completion
      
      A new URB is no longer submitted as part of the URB completion
      callback.
      New URBs are submitted during the NAPI polling cycle.
      
      Patch 3 introduces these changes.
      
      5. Rx URB processing
      
      Completed URBs are put on to queue for processing (as is done in the
      current driver). Network packets in completed URBs are copied from
      the URB buffer in to dynamically allocated SKBs and passed to
      the network stack.
      
      The emptied URBs are resubmitted to the USB host controller.
      
      Patch 3 introduces this change. Patch 6 updates the change to use
      NAPI SKBs.
      
      Each packet passed to the network stack is a single NAPI work item.
      If the NAPI work budget is exhausted the remaining packets in the
      URB are put onto an overflow queue that is processed at the start
      of the next NAPI cycle.
      
      Patch 6 introduces this change.
      
      6. Driver-specific hard_header_len
      
      The driver-specific hard_header_len adjustment was removed as it
      broke generic receive offload (GRO) processing. Moreover, it was no
      longer required due the change in Tx pending data management (see
      point 3. above).
      
      Patch 5 introduces this change.
      
      The modification has been tested on four different target machines:
      
      Target           |    CPU     |   ARCH  | cores | kernel |  RAM  |
      -----------------+------------+---------+-------+--------+-------|
      Raspberry Pi 4B  | Cortex-A72 | aarch64 |   4   | 64-bit |  2 GB |
      Nitrogen8M SBC   | Cortex-A53 | aarch64 |   4   | 64-bit |  2 GB |
      Compaq Pressario | Pentium D  | i686    |   2   | 32-bit |  4 GB |
      Dell T3620       | Core i3    | x86_64  |  2+2  | 64-bit | 16 GB |
      
      The targets, apart from the Compaq, each have an on-chip USB3 host
      controller. A PCIe-based USB3 host controller card was added to the
      Compaq to provide the necessary USB3 host interface.
      
      The network throughput was measured using iperf3. The peer device was
      a second Dell T3620 fitted with an Intel i210 network interface. The
      target machine and the peer device were connected via a Netgear GS105
      gigabit switch.
      
      The CPU load was measured using mpstat running on the target machine.
      
      The tables below summarise the throughput and CPU load improvements
      achieved by the updated driver.
      
      The bandwidth is the average bandwidth reported by iperf3 at the end
      of a 60-second test.
      
      The percentage idle figure is the average idle reported across all
      CPU cores on the target machine for the duration of the test.
      
      TCP Rx (target receiving, peer transmitting)
      
                       |   Standard Driver  |   NAPI Driver      |
      Target           | Bandwidth | % Idle | Bandwidth | % Idle |
      -----------------+-----------+--------+--------------------|
      RPi4 Model B     |    941    |  74.9  |    941    |  91.5  |
      Nitrogen8M       |    941    |  76.2  |    941    |  92.7  |
      Compaq Pressario |    941    |  44.5  |    941    |  82.1  |
      Dell T3620       |    941    |  88.9  |    941    |  98.3  |
      
      TCP Tx (target transmitting, peer receiving)
      
                       |   Standard Driver  |   NAPI Driver      |
      Target           | Bandwidth | % Idle | Bandwidth | % Idle |
      -----------------+-----------+--------+--------------------|
      RPi4 Model B     |    683    |  80.1  |    942    |  97.6  |
      Nitrogen8M       |    942    |  97.8  |    942    |  97.3  |
      Compaq Pressario |    939    |  80.0  |    942    |  91.2  |
      Dell T3620       |    942    |  95.3  |    942    |  97.6  |
      
      UDP Rx (target receiving, peer transmitting)
      
                       |   Standard Driver  |   NAPI Driver      |
      Target           | Bandwidth | % Idle | Bandwidth | % Idle |
      -----------------+-----------+--------+--------------------|
      RPi4 Model B     |     -     |    -   | 958 (0%)  |  76.2  |
      Nitrogen8M       | 690 (25%) |  57.7  | 937 (0%)  |  68.5  |
      Compaq Pressario | 958 (0%)  |  50.2  | 958 (0%)  |  61.6  |
      Dell T3620       | 958 (0%)  |  89.6  | 958 (0%)  |  85.3  |
      
      The figure in brackets is the percentage packet loss.
      
      UDP Tx (target transmitting, peer receiving)
      
                       |   Standard Driver  |   NAPI Driver      |
      Target           | Bandwidth | % Idle | Bandwidth | % Idle |
      -----------------+-----------+--------+--------------------|
      RPi4 Model B     |    370    |  75.0  |    886    |  78.9  |
      Nitrogen8M       |    710    |  75.0  |    958    |  85.3  |
      Compaq Pressario |    958    |  65.5  |    958    |  76.6  |
      Dell T3620       |    958    |  97.0  |    958    |  97.3  |
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bb8cecf8
    • John Efstathiades's avatar
      lan78xx: Introduce NAPI polling support · ec4c7e12
      John Efstathiades authored
      
      
      This patch introduces a NAPI-style approach for processing completed
      Rx URBs that contributes to improving driver throughput and reducing
      CPU load.
      
      Packets in completed URBs are copied to NAPI SKBs and passed to the
      network stack for processing. Each frame passed to the stack is one
      work item in the NAPI budget.
      
      If the NAPI budget is consumed and frames remain, they are added to
      an overflow queue that is processed at the start of the next NAPI
      polling cycle.
      
      The NAPI handler is also responsible for copying pending Tx data to
      Tx URBs and submitting them to the USB host controller for
      transmission.
      
      Signed-off-by: default avatarJohn Efstathiades <john.efstathiades@pebblebay.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ec4c7e12
    • John Efstathiades's avatar
      lan78xx: Remove hardware-specific header update · 0dd87266
      John Efstathiades authored
      
      
      Remove hardware-specific header length adjustment as it is no longer
      required. It also breaks generic receive offload (GRO) processing of
      received TCP frames that results in a TCP ACK being sent for each
      received frame.
      
      Signed-off-by: default avatarJohn Efstathiades <john.efstathiades@pebblebay.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0dd87266