[hns3-0114]net: hns3: fix ETS bandwidth validation bug

Bug #1859569 reported by Fred Kimmy on 2020-01-14
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
kunpeng920
Undecided
Unassigned
Ubuntu-18.04
Undecided
Taihsiang Ho
Ubuntu-18.04-hwe
Undecided
Unassigned
Ubuntu-19.10
Undecided
Unassigned
Ubuntu-20.04
Undecided
Unassigned
Upstream-kernel
Undecided
Unassigned
linux (Ubuntu)
Undecided
Unassigned
Bionic
Undecided
Unassigned
Eoan
Undecided
Unassigned
Focal
Undecided
Unassigned

Bug Description

When a TC's PFC is disabled or enabled, the RX private buffer for
this TC need to be changed too, otherwise this may cause packet
dropped problem.

[Impact]
The corresponding ethernet interface could not be up again.

[Fix]
cherry picked from commit c2d56897819338eb0ba8b93184f7d10329b36653
net: hns3: fix ETS bandwidth validation bug

[Test Case]
1.lldpad -d
2.lldptool -L -i eth0 adminStatus=rxtx
3.lldptool -T -i eth0 -V ETS-CFG
tsa=0:ets,1:ets,2:ets,3:ets,4:ets,5:ets,6:ets,7:ets
up2tc=0:0,1:0,2:1,3:1,4:2,5:2,6:3,7:3 tcbw=25,25,50,0,0,0,0,0
4.down device
5.up

[Regression Risk]
Low, the patch is only specific to the hns3 driver.

====== Original Bug Description ======

[Bug Description]
When a TC's PFC is disabled or enabled, the RX private buffer for
this TC need to be changed too, otherwise this may cause packet
dropped problem.

[Steps to Reproduce]
1.lldpad -d
2.lldptool -L -i eth0 adminStatus=rxtx
3.lldptool -T -i eth0 -V ETS-CFG tsa=0:ets,1:ets,2:ets,3:ets,4:ets,5:ets,6:ets,7:ets up2tc=0:0,1:0,2:1,3:1,4:2,5:2,6:3,7:3 tcbw=25,25,50,0,0,0,0,0
4.down device
5.up

[Actual Results]
up fail

[Expected Results]
up ok

[Reproducibility]
Inevitably

[Additional information]
Hardware: D06
Firmware: NA
Kernel: NA

[Resolution]
This patch fixes it by calling hclge_buffer_alloc to reallocate
buffer when pfc_en changes.

c2d568978193 net: hns3: fix ETS bandwidth validation bug

CVE References

Ike Panhc (ikepanhc) on 2020-01-14
description: updated
Ike Panhc (ikepanhc) on 2020-01-14
tags: added: ikeradar
tags: added: tairadar
Ike Panhc (ikepanhc) on 2020-02-27
Changed in kunpeng920:
status: New → In Progress
tags: removed: ikeradar
Taihsiang Ho (taihsiangho) wrote :

The fix landed in eoan kernel 5.3.0-40.32.

===

$ git log lp/master-next --abbrev-commit --pretty=onel
ine --grep="net: hns3: fix ETS bandwidth validation bug"
0afb5b928e17 net: hns3: fix ETS bandwidth validation bug

$ git tag --contains 0afb5b928e17
Ubuntu-5.3.0-40.32
Ubuntu-5.3.0-41.33
Ubuntu-5.3.0-42.34
Ubuntu-raspi2-5.3.0-1018.20
Ubuntu-raspi2-5.3.0-1019.21

$ rmadison -asource linux
<skip>
 linux | 5.3.0-18.19 | eoan | source
 linux | 5.3.0-40.32 | eoan-security | source
 linux | 5.3.0-40.32 | eoan-updates | source
 linux | 5.3.0-42.34 | eoan-proposed | source
<skip>

Taihsiang Ho (taihsiangho) wrote :

The fix begins to show up in upstream v5.4-rc8

======

$ git log origin/master --abbrev-commit --pretty=oneline --grep="net: hns3: fix ETS bandwidth validation bug"
c2d568978193 net: hns3: fix ETS bandwidth validation bug

$ git tag --contains c2d568978193
v5.4
v5.4-rc8
v5.5
v5.5-rc1
v5.5-rc2
v5.5-rc3
v5.5-rc4
v5.5-rc5
v5.5-rc6
v5.5-rc7
v5.6-rc1
v5.6-rc2
v5.6-rc3

Taihsiang Ho (taihsiangho) wrote :

The fix could be cherry-picked cleaning for bionic.

Taihsiang Ho (taihsiangho) wrote :

Similar to the comment #1, the fix should have landed in bionic-hwe.

======

bionic$ git tag --contains 0afb5b928e17
Ubuntu-hwe-5.3.0-40.32_18.04.1
Ubuntu-hwe-5.3.0-41.33_18.04.1
Ubuntu-hwe-5.3.0-42.34_18.04.1
Ubuntu-raspi2-5.3-5.3.0-1018.20_18.04.1
Ubuntu-raspi2-5.3-5.3.0-1019.21_18.04.1

Taihsiang Ho (taihsiangho) wrote :

The fix has been in focal tree.

======

focal$ git log origin/master --abbrev-commit --pretty=oneline --grep="net: hns3: fix ETS bandwidth validation bug"
c2d568978193 net: hns3: fix ETS bandwidth validation bug

focal$ git tag --contains c2d568978193
Ubuntu-5.4-5.4.0-10.13
Ubuntu-5.4-5.4.0-11.14
Ubuntu-5.4-5.4.0-12.15
Ubuntu-5.4-5.4.0-13.16
Ubuntu-5.4-5.4.0-14.17
Ubuntu-5.4.0-15.18
Ubuntu-5.4.0-16.19
Ubuntu-5.4.0-17.20
Ubuntu-5.4.0-17.21
Ubuntu-5.4.0-8.11
Ubuntu-5.4.0-9.12
Ubuntu-raspi2-5.4-5.4.0-1001.1
Ubuntu-raspi2-5.4.0-1003.3
Ubuntu-raspi2-5.4.0-1004.4
v5.4

Taihsiang Ho (taihsiangho) wrote :

I could not reproduce this issue on d06-2 and scobee with bionic 4.15.0-88-generic.

Taihsiang Ho (taihsiangho) wrote :

@Fred , may you please provide more details about the step to reproduce the issue? e.g.

1. Is any device up/down able to reproduce the issue? Or the device should be in connected status.
2. How did you up/down the device? For example, via the "ip link set <DEVICE> down" command?

description: updated

This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:

apport-collect 1859569

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: New → Incomplete
Ike Panhc (ikepanhc) on 2020-03-10
Changed in linux (Ubuntu Focal):
status: Incomplete → Fix Released
Changed in linux (Ubuntu Bionic):
status: New → Incomplete
status: Incomplete → In Progress
Ike Panhc (ikepanhc) on 2020-03-10
Changed in linux (Ubuntu Eoan):
status: New → Fix Released
Taihsiang Ho (taihsiangho) wrote :

This patch https://lists.ubuntu.com/archives/kernel-team/2020-March/108124.html has been tested on bionic to look for regression:

1. ping and is accessible externally via eth

2. checked the loaded kernel modules and enablement log of dmesg

3. checkbox-cli

ubuntu@scobee:~$ checkbox-cli run com.canonical.certification::ethernet/detect com.canonical.certification::ethernet/info_automated com.canonical.certification::ethernet/info_automated_server

Finalizing session that hasn't been submitted anywhere: checkbox-run-2020-03-10T13.13.52
==================================[ Results ]===================================
 ☑ : Hardware Manifest
 ☑ : Detect if at least one ethernet device is detected
 ☑ : Enumerate available system executables
 ☑ : Collect information about hardware devices (udev)
 ☑ : Gather info on current state of network devices
 ☑ : Provide information about detected ethernet devices
ubuntu@scobee:~$

Changed in linux (Ubuntu Bionic):
status: In Progress → Fix Committed

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-bionic' to 'verification-done-bionic'. If the problem still exists, change the tag 'verification-needed-bionic' to 'verification-failed-bionic'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-bionic
Changed in kunpeng920:
status: In Progress → Fix Committed
Taihsiang Ho (taihsiangho) wrote :

Verified via

1. ping and is accessible externally via eth

2. checked the loaded kernel modules and enablement log of dmesg

3. checkbox-cli

$ checkbox-cli run com.canonical.certification::ethernet/detect com.canonical.certification::ethernet/info_automated com.canonical.certification::ethernet/info_automated_server

Finalizing session that hasn't been submitted anywhere: checkbox-run-2020-03-18T18.30.47
==================================[ Results ]===================================
 ☑ : Hardware Manifest
 ☑ : Detect if at least one ethernet device is detected
 ☑ : Enumerate available system executables
 ☑ : Collect information about hardware devices (udev)
 ☑ : Gather info on current state of network devices
 ☑ : Provide information about detected ethernet devices
ubuntu@scobee:~$ uname -a
Linux scobee 4.15.0-92-generic #93-Ubuntu SMP Mon Mar 16 15:40:04 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux

tags: added: verification-done-bionic
removed: verification-needed-bionic
Launchpad Janitor (janitor) wrote :
Download full text (27.7 KiB)

This bug was fixed in the package linux - 4.15.0-96.97

---------------
linux (4.15.0-96.97) bionic; urgency=medium

  * CVE-2020-8834
    - KVM: PPC: Book3S HV: Factor fake-suspend handling out of
      kvmppc_save/restore_tm
    - KVM: PPC: Book3S PR: Move kvmppc_save_tm/kvmppc_restore_tm to separate file
    - KVM: PPC: Book3S PR: Add guest MSR parameter for
      kvmppc_save_tm()/kvmppc_restore_tm()

linux (4.15.0-94.95) bionic; urgency=medium

  * bionic/linux: 4.15.0-94.95 -proposed tracker (LP: #1868984)

  * Missing wireless network interface after kernel 5.3.0-43 upgrade with eoan
    (LP: #1868442)
    - iwlwifi: mvm: Do not require PHY_SKU NVM section for 3168 devices

linux (4.15.0-93.94) bionic; urgency=medium

  * bionic/linux: 4.15.0-93.94 -proposed tracker (LP: #1868764)

  * quotactl04 from ubuntu_ltp_syscalls failed with B (LP: #1868665)
    - ext4: fix mount failure with quota configured as module

linux (4.15.0-92.93) bionic; urgency=medium

  * bionic/linux: 4.15.0-92.93 -proposed tracker (LP: #1867272)

  * Packaging resync (LP: #1786013)
    - [Packaging] resync getabis
    - [Packaging] update helper scripts

  * Introduce the new NVIDIA 440 series, and add 5.4 Linux compatibility to the
    340 and 390 series (LP: #1854485)
    - [Packaging] NVIDIA -- add support for the 435 and the 440 series

  * Stop using get_scalar_status command in Dell AIO uart backlight driver
    (LP: #1865402)
    - SAUCE: platform/x86: dell-uart-backlight: add get_display_mode command

  * Bionic update: upstream stable patchset 2020-03-12 (LP: #1867194)
    - RDMA/core: Fix locking in ib_uverbs_event_read
    - gpio: zynq: Report gpio direction at boot
    - arm64: ptrace: nofpsimd: Fail FP/SIMD regset operations
    - KVM: arm: Fix DFSR setting for non-LPAE aarch32 guests
    - KVM: arm: Make inject_abt32() inject an external abort instead
    - mtd: onenand_base: Adjust indentation in onenand_read_ops_nolock
    - mtd: sharpslpart: Fix unsigned comparison to zero
    - padata: fix null pointer deref of pd->pinst
    - Input: synaptics - switch T470s to RMI4 by default
    - Input: synaptics - enable SMBus on ThinkPad L470
    - Input: synaptics - remove the LEN0049 dmi id from topbuttonpad list
    - ALSA: hda/realtek - Fix silent output on MSI-GL73
    - ALSA: usb-audio: Apply sample rate quirk for Audioengine D1
    - arm64: cpufeature: Set the FP/SIMD compat HWCAP bits properly
    - ALSA: usb-audio: sound: usb: usb true/false for bool return type
    - ext4: don't assume that mmp_nodename/bdevname have NUL
    - ext4: fix support for inode sizes > 1024 bytes
    - ext4: fix checksum errors with indexed dirs
    - ext4: add cond_resched() to ext4_protect_reserved_inode
    - ext4: improve explanation of a mount failure caused by a misconfigured
      kernel
    - Btrfs: fix race between using extent maps and merging them
    - btrfs: ref-verify: fix memory leaks
    - btrfs: print message when tree-log replay starts
    - btrfs: log message when rw remount is attempted with unclean tree-log
    - arm64: ssbs: Fix context-switch when SSBS is present on all CPUs
    - perf/x86/amd: Add missing L2 misses event spec to AMD Family 17h's ev...

Changed in linux (Ubuntu Bionic):
status: Fix Committed → Fix Released
tags: removed: tairadar
Ike Panhc (ikepanhc) on 2020-04-27
Changed in kunpeng920:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers