Add checksum offload and TSO support for HiNIC adapters

Bug #1800664 reported by dann frazier on 2018-10-30
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Undecided
dann frazier
Bionic
Undecided
dann frazier
Cosmic
Undecided
dann frazier
Disco
Undecided
dann frazier

Bug Description

[Impact]
Increases throughput by more than 2x, as measured by the iperf benchmark.

[Test Case]
iperf -c 192.168.122.10 -P5

[Fix]
cc18a7543d2f6 net-next/hinic: add checksum offload and TSO support

[Regression Risk]
Clean cherry-pick restricted to a single driver that has been explicitly tested. A regression risk is that these bugs in these new features, which are enabled by default, could impact existing deployments. These features can, however, be disabled by ethtool which helps mitigate that risk.

dann frazier (dannf) on 2018-10-30
Changed in linux (Ubuntu Cosmic):
status: New → In Progress
Changed in linux (Ubuntu Bionic):
status: New → In Progress
assignee: nobody → dann frazier (dannf)
Changed in linux (Ubuntu Cosmic):
assignee: nobody → dann frazier (dannf)
Seth Forshee (sforshee) on 2018-10-31
Changed in linux (Ubuntu Disco):
status: In Progress → Fix Committed
Stefan Bader (smb) on 2018-11-08
Changed in linux (Ubuntu Cosmic):
status: In Progress → Fix Committed
Brad Figg (brad-figg) wrote :

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-cosmic' to 'verification-done-cosmic'. If the problem still exists, change the tag 'verification-needed-cosmic' to 'verification-failed-cosmic'.

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-cosmic
Ike Panhc (ikepanhc) wrote :

Performance is much increased with cosmic-proposed kernel

ubuntu@d06-3:~$ iperf -c 192.168.99.1 -P5 -t 900;uname -a
------------------------------------------------------------
Client connecting to 192.168.99.1, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 7] local 192.168.99.2 port 49762 connected with 192.168.99.1 port 5001
[ 6] local 192.168.99.2 port 49760 connected with 192.168.99.1 port 5001
[ 5] local 192.168.99.2 port 49758 connected with 192.168.99.1 port 5001
[ 4] local 192.168.99.2 port 49754 connected with 192.168.99.1 port 5001
[ 3] local 192.168.99.2 port 49756 connected with 192.168.99.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-900.0 sec 60.9 GBytes 582 Mbits/sec
[ 3] 0.0-900.0 sec 61.8 GBytes 589 Mbits/sec
[ 7] 0.0-900.0 sec 71.4 GBytes 681 Mbits/sec
[ 6] 0.0-900.0 sec 69.1 GBytes 659 Mbits/sec
[ 5] 0.0-900.0 sec 44.3 GBytes 423 Mbits/sec
[SUM] 0.0-900.0 sec 307 GBytes 2.93 Gbits/sec
Linux d06-3 4.18.0-11-generic #12-Ubuntu SMP Tue Oct 23 19:24:51 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux

ubuntu@d06-3:~$ iperf -c 192.168.99.1 -P5
------------------------------------------------------------
Client connecting to 192.168.99.1, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 6] local 192.168.99.2 port 38962 connected with 192.168.99.1 port 5001
[ 7] local 192.168.99.2 port 38960 connected with 192.168.99.1 port 5001
[ 5] local 192.168.99.2 port 38958 connected with 192.168.99.1 port 5001
[ 4] local 192.168.99.2 port 38954 connected with 192.168.99.1 port 5001
[ 3] local 192.168.99.2 port 38956 connected with 192.168.99.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 6] 0.0-10.0 sec 1.52 GBytes 1.31 Gbits/sec
[ 7] 0.0-10.0 sec 1.63 GBytes 1.40 Gbits/sec
[ 5] 0.0-10.0 sec 1.56 GBytes 1.34 Gbits/sec
[ 3] 0.0-10.0 sec 1.59 GBytes 1.37 Gbits/sec
[ 4] 0.0-10.0 sec 1.75 GBytes 1.50 Gbits/sec
[SUM] 0.0-10.0 sec 8.05 GBytes 6.89 Gbits/sec
ubuntu@d06-3:~$ uname -a
Linux d06-3 4.18.0-12-generic #13-Ubuntu SMP Wed Nov 14 15:16:52 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux

tags: added: verification-done-cosmic
removed: verification-needed-cosmic
dann frazier (dannf) wrote :

Ike has since done some more extensive testing, and found that performance actually *drops* with longer iperf runs. With a 900s run, he's seeing it go down to ~200Mbps, while the kernel emits messages like these:

    [ 1070.047048] ITS queue timeout (65440 65504 1120)
    [ 1070.051658] ITS cmd its_build_inv_cmd failed

It's unclear if this is actually an issue with the patch, or a platform-specific issue, but either way I think we need to change this status to verification-failed. I've reported this upstream.

dann frazier (dannf) on 2018-11-20
tags: added: verification-failed-cosmic
removed: verification-done-cosmic
Launchpad Janitor (janitor) wrote :
Download full text (39.7 KiB)

This bug was fixed in the package linux - 4.18.0-12.13

---------------
linux (4.18.0-12.13) cosmic; urgency=medium

  * linux: 4.18.0-12.13 -proposed tracker (LP: #1802743)

  * [FEAT] Guest-dedicated Crypto Adapters (LP: #1787405)
    - s390/zcrypt: Add ZAPQ inline function.
    - s390/zcrypt: Review inline assembler constraints.
    - s390/zcrypt: Integrate ap_asm.h into include/asm/ap.h.
    - s390/zcrypt: fix ap_instructions_available() returncodes
    - KVM: s390: vsie: simulate VCPU SIE entry/exit
    - KVM: s390: introduce and use KVM_REQ_VSIE_RESTART
    - KVM: s390: refactor crypto initialization
    - s390: vfio-ap: base implementation of VFIO AP device driver
    - s390: vfio-ap: register matrix device with VFIO mdev framework
    - s390: vfio-ap: sysfs interfaces to configure adapters
    - s390: vfio-ap: sysfs interfaces to configure domains
    - s390: vfio-ap: sysfs interfaces to configure control domains
    - s390: vfio-ap: sysfs interface to view matrix mdev matrix
    - KVM: s390: interface to clear CRYCB masks
    - s390: vfio-ap: implement mediated device open callback
    - s390: vfio-ap: implement VFIO_DEVICE_GET_INFO ioctl
    - s390: vfio-ap: zeroize the AP queues
    - s390: vfio-ap: implement VFIO_DEVICE_RESET ioctl
    - KVM: s390: Clear Crypto Control Block when using vSIE
    - KVM: s390: vsie: Do the CRYCB validation first
    - KVM: s390: vsie: Make use of CRYCB FORMAT2 clear
    - KVM: s390: vsie: Allow CRYCB FORMAT-2
    - KVM: s390: vsie: allow CRYCB FORMAT-1
    - KVM: s390: vsie: allow CRYCB FORMAT-0
    - KVM: s390: vsie: allow guest FORMAT-0 CRYCB on host FORMAT-1
    - KVM: s390: vsie: allow guest FORMAT-1 CRYCB on host FORMAT-2
    - KVM: s390: vsie: allow guest FORMAT-0 CRYCB on host FORMAT-2
    - KVM: s390: device attrs to enable/disable AP interpretation
    - KVM: s390: CPU model support for AP virtualization
    - s390: doc: detailed specifications for AP virtualization
    - KVM: s390: fix locking for crypto setting error path
    - KVM: s390: Tracing APCB changes
    - s390: vfio-ap: setup APCB mask using KVM dedicated function
    - [Config:] Enable CONFIG_S390_AP_IOMMU and set CONFIG_VFIO_AP to module.

  * Bypass of mount visibility through userns + mount propagation (LP: #1789161)
    - mount: Retest MNT_LOCKED in do_umount
    - mount: Don't allow copying MNT_UNBINDABLE|MNT_LOCKED mounts

  * CVE-2018-18955: nested user namespaces with more than five extents
    incorrectly grant privileges over inode (LP: #1801924) // CVE-2018-18955
    - userns: also map extents in the reverse map to kernel IDs

  * kdump fail due to an IRQ storm (LP: #1797990)
    - SAUCE: x86/PCI: Export find_cap() to be used in early PCI code
    - SAUCE: x86/quirks: Add parameter to clear MSIs early on boot
    - SAUCE: x86/quirks: Scan all busses for early PCI quirks

  * crash in ENA driver on removing an interface (LP: #1802341)
    - SAUCE: net: ena: fix crash during ena_remove()

  * Ubuntu 18.04.1 - [s390x] Kernel panic while stressing network bonding
    (LP: #1797367)
    - s390/qeth: reduce hard-coded access to ccw channels
    - s390/qeth: sanitize strings in debug messages

  * Add checksum offload and T...

Changed in linux (Ubuntu Cosmic):
status: Fix Committed → Fix Released
Launchpad Janitor (janitor) wrote :
Download full text (14.1 KiB)

This bug was fixed in the package linux - 4.19.0-12.13

---------------
linux (4.19.0-12.13) disco; urgency=medium

  * linux: 4.19.0-12.13 -proposed tracker (LP: #1813664)

  * kernel oops in bcache module (LP: #1793901)
    - SAUCE: bcache: never writeback a discard operation

  * Disco update: 4.19.18 upstream stable release (LP: #1813611)
    - ipv6: Consider sk_bound_dev_if when binding a socket to a v4 mapped address
    - mlxsw: spectrum: Disable lag port TX before removing it
    - mlxsw: spectrum_switchdev: Set PVID correctly during VLAN deletion
    - net: dsa: mv88x6xxx: mv88e6390 errata
    - net, skbuff: do not prefer skb allocation fails early
    - qmi_wwan: add MTU default to qmap network interface
    - ipv6: Take rcu_read_lock in __inet6_bind for mapped addresses
    - net: clear skb->tstamp in bridge forwarding path
    - netfilter: ipset: Allow matching on destination MAC address for mac and
      ipmac sets
    - gpio: pl061: Move irq_chip definition inside struct pl061
    - drm/amd/display: Guard against null stream_state in set_crc_source
    - drm/amdkfd: fix interrupt spin lock
    - ixgbe: allow IPsec Tx offload in VEPA mode
    - platform/x86: asus-wmi: Tell the EC the OS will handle the display off
      hotkey
    - e1000e: allow non-monotonic SYSTIM readings
    - usb: typec: tcpm: Do not disconnect link for self powered devices
    - selftests/bpf: enable (uncomment) all tests in test_libbpf.sh
    - of: overlay: add missing of_node_put() after add new node to changeset
    - writeback: don't decrement wb->refcnt if !wb->bdi
    - serial: set suppress_bind_attrs flag only if builtin
    - bpf: Allow narrow loads with offset > 0
    - ALSA: oxfw: add support for APOGEE duet FireWire
    - x86/mce: Fix -Wmissing-prototypes warnings
    - MIPS: SiByte: Enable swiotlb for SWARM, LittleSur and BigSur
    - crypto: ecc - regularize scalar for scalar multiplication
    - arm64: perf: set suppress_bind_attrs flag to true
    - drm/atomic-helper: Complete fake_commit->flip_done potentially earlier
    - clk: meson: meson8b: fix incorrect divider mapping in cpu_scale_table
    - samples: bpf: fix: error handling regarding kprobe_events
    - usb: gadget: udc: renesas_usb3: add a safety connection way for
      forced_b_device
    - fpga: altera-cvp: fix probing for multiple FPGAs on the bus
    - selinux: always allow mounting submounts
    - ASoC: pcm3168a: Don't disable pcm3168a when CONFIG_PM defined
    - scsi: qedi: Check for session online before getting iSCSI TLV data.
    - drm/amdgpu: Reorder uvd ring init before uvd resume
    - rxe: IB_WR_REG_MR does not capture MR's iova field
    - efi/libstub: Disable some warnings for x86{,_64}
    - jffs2: Fix use of uninitialized delayed_work, lockdep breakage
    - clk: imx: make mux parent strings const
    - pstore/ram: Do not treat empty buffers as valid
    - media: uvcvideo: Refactor teardown of uvc on USB disconnect
    - powerpc/xmon: Fix invocation inside lock region
    - powerpc/pseries/cpuidle: Fix preempt warning
    - media: firewire: Fix app_info parameter type in avc_ca{,_app}_info
    - ASoC: use dma_ops of parent device for acp_audio_dma
    - media: ve...

Changed in linux (Ubuntu Disco):
status: Fix Committed → Fix Released
Brad Figg (brad-figg) wrote :

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
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers