[hns3-0901]add hns3_gro_complete for HW GRO process
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
kunpeng920 |
Fix Released
|
Undecided
|
Unassigned | ||
Ubuntu-18.04 |
Fix Released
|
Critical
|
Ike Panhc | ||
Ubuntu-18.04-hwe |
Fix Released
|
Undecided
|
Unassigned | ||
Ubuntu-20.04 |
Fix Released
|
Undecided
|
Unassigned | ||
Upstream-kernel |
Fix Released
|
Undecided
|
Unassigned | ||
linux (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
High
|
Ike Panhc |
Bug Description
[Impact]
kernel oops on hns3 driver when GRO is enabled.
[Fix]
Cherry-pick patches from upstream
d474d88f8826 net: hns3: add hns3_gro_complete for HW GRO process
a4d2cdcbb878 net: hns3: minor refactor for hns3_rx_checksum
[Test]
No known way to reproduce it in our lab. Regression test only.
[Regression Potential]
Patchset only affects hns3 driver. Minimal risk for other drivers and platform.
Stress test on hns3 driver looks good and we also have positive
feedback from different lab.
Patches also in Ubuntu kernel since Eoan and no regression observed.
-------
[Bug Description]
When a GRO packet is received by driver, the cwr field in the
struct tcphdr needs to be checked to decide whether to set the
SKB_GSO_TCP_ECN for skb_shinfo(
[Steps to Reproduce]
1.load PF driver
2.turn off GRO of stack, turn on HW GRO
[Actual Results]
[ 32.597752] bond-dcn: link status definitely up for interface enp189s0f0, 10000 Mbps full duplex
[1048422.589438] Unable to handle kernel paging request at virtual address ffff806000005d0c
[1048422.597506] Mem abort info:
[1048422.600463] ESR = 0x96000005
[1048422.603679] Exception class = DABT (current EL), IL = 32 bits
[1048422.609747] SET = 0, FnV = 0
[1048422.612963] EA = 0, S1PTW = 0
[1048422.616265] Data abort info:
[1048422.619309] ISV = 0, ISS = 0x00000005
[1048422.623301] CM = 0, WnR = 0
[1048422.626431] swapper pgtable: 4k pages, 48-bit VAs, pgd = 0000000096615bf4
[1048422.633360] [ffff806000005d0c] *pgd=0000205fff
[1048422.640465] Internal error: Oops: 96000005 [#1] SMP
[1048422.645496] Modules linked in: bonding zfs(PO) zunicode(PO) zavl(PO) icp(PO) nls_iso8859_1 zcommon(PO) znvpair(PO) spl(O) joydev input_leds ipmi_ssif ipmi_si ipmi_devintf shpchp ipmi_msghandler cppc_cpufreq sch_fq_codel ib_iser rdma_cm iw_cm ib_cm ib_core iscsi_tcp libiscsi_tcp libiscsi scsi_transport_
[1048422.715911] usbhid hid aes_neon_bs aes_neon_blk crypto_simd cryptd aes_arm64
[1048422.723192] Process swapper/22 (pid: 0, stack limit = 0x00000000dc9798e5)
[1048422.730122] CPU: 22 PID: 0 Comm: swapper/22 Tainted: P O 4.15.0-96-generic #97-Ubuntu
[1048422.739297] Hardware name: Huawei TaiShan 200 (Model 2280)/BC82AMDDA, BIOS 1.35 04/30/2020
[1048422.747695] pstate: 80400009 (Nzcv daif +PAN -UAO)
[1048422.752641] pc : tcp_gro_
[1048422.756988] lr : hns3_clean_
[1048422.762274] sp : ffff000009893d00
[1048422.765746] x29: ffff000009893d00 x28: ffffa05de384d900
[1048422.771207] x27: ffffa05dc660c6c0 x26: ffffa05dc7a6c280
[1048422.776668] x25: 0000000000000040 x24: ffffa05dc7a4e000
[1048422.782130] x23: 0000000000000002 x22: 0000000000000000
[1048422.787590] x21: 0000000000000000 x20: 0000000000000000
[1048422.793051] x19: ffffa05de384d900 x18: 0000ffffa3bf2a70
[1048422.798512] x17: 0000ffffa3b68698 x16: ffff000008307aa0
[1048422.803973] x15: 00000d920112ac4e x14: 0c96b6405c2a0a08
[1048422.809435] x13: 010100001cc0f601 x12: 188058b201fc85fd
[1048422.814896] x11: cd979f72c04ce5db x10: 2087e1db2087679d
[1048422.820358] x9 : 0640004090cff807 x8 : 00450008f034d971
[1048422.825820] x7 : 1502726647903506 x6 : 0000000000000002
[1048422.831281] x5 : ffffa05dc7ad0480 x4 : 0000000000000002
[1048422.836743] x3 : ffff805fffff5d00 x2 : 0000000000000060
[1048422.842203] x1 : ffff805fffff5f00 x0 : ffff806000005cff
[1048422.847665] Call trace:
[1048422.850276] tcp_gro_
[1048422.854274] hns3_clean_
[1048422.859217] hns3_nic_
[1048422.864247] net_rx_
[1048422.868153] __do_softirq+
[1048422.871973] irq_exit+0xcc/0xe0
[1048422.875275] __handle_
[1048422.879526] gic_handle_
[1048422.883431] el1_irq+0xe8/0x180
[1048422.886733] arch_cpu_
[1048422.890553] do_idle+0x138/0x1f0
[1048422.893941] cpu_startup_
[1048422.898022] secondary_
[1048422.902705] Code: 79407a64 8b202060 39024262 79000c24 (39c03400)
[1048422.909033] SMP: stopping secondary CPUs
[1048422.918364] Starting crashdump kernel...
[1048422.922444] Bye!
[Expected Results]
GRO run ok
[Reproducibility]
Inevitably
[Additional information]
Hardware: D06
Firmware: NA
Kernel: NA
[Resolution]
Adds hns3_gro_complete to do that, and adds the
hns3_handle_bdinfo to handle the hns3_gro_complete and
hns3_rx_checksum.
net: hns3: add hns3_gro_complete for HW GRO process
net: hns3: minor refactor for hns3_rx_checksum
CVE References
tags: | added: ikeradar |
Changed in linux (Ubuntu): | |
status: | New → In Progress |
assignee: | nobody → Ike Panhc (ikepanhc) |
Changed in linux (Ubuntu Bionic): | |
status: | New → In Progress |
assignee: | nobody → Ike Panhc (ikepanhc) |
Changed in linux (Ubuntu): | |
assignee: | Ike Panhc (ikepanhc) → nobody |
status: | In Progress → Fix Released |
description: | updated |
Changed in linux (Ubuntu Bionic): | |
importance: | Undecided → High |
Changed in linux (Ubuntu Bionic): | |
status: | In Progress → Fix Committed |
Changed in kunpeng920: | |
status: | In Progress → Fix Committed |
Changed in kunpeng920: | |
status: | Fix Committed → Fix Released |
d474d88f8826 <email address hidden> 2019-04-14 13:47:35 -0700 net: hns3: add hns3_gro_complete for HW GRO process
a4d2cdcbb878 <email address hidden> 2019-04-14 13:47:35 -0700 net: hns3: minor refactor for hns3_rx_checksum