netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* Re: r8169: transmit queue timeouts and IRQ masking
  2024-05-06 21:28  2% r8169: transmit queue timeouts and IRQ masking Ken Milmore
@ 2024-05-08 21:14  0% ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2024-05-08 21:14 UTC (permalink / raw)
  To: Ken Milmore, netdev; +Cc: nic_swsd

On 06.05.2024 23:28, Ken Milmore wrote:
> I have a motherboard with an integrated RTL8125B network adapter, and I have found a way to predictably cause TX queue timeouts with the r8169 driver.
> 
> Briefly, if rtl8169_poll() ever gets called with interrupts unmasked on the device, then it seems to be possible to get it stuck in a non-interrupting state.
> It appears disaster can be averted in this case by making sure device interrupts are always masked when inside rtl8169_poll()! For which see below...
> 
> The preconditions I found for causing a timeout are:
> - Set gro_flush_timeout to a NON-ZERO value
> - Set napi_defer_hard_irqs to ZERO
> - Put some heavy bidirectional load on the interface (I find iperf3 to another host does the job nicely: 1Gbps is enough).
> 
> e.g.
> # echo 20000 > /sys/class/net/eth0/gro_flush_timeout
> # echo 0 > /sys/class/net/eth0/napi_defer_hard_irqs
> # iperf3 --bidir -c hostname
> 

Thanks for the interesting report and the thorough analysis.
I could reproduce the issue on RTL8168h. It didn't even take heavy
bidirectional load, iperf3 -R -c hostname was enough in my case.

> The bitrate falls off to zero almost immediately, whereafter the interface just stops working:
> 
> [ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd
> [  5][TX-C]   0.00-1.00   sec  1010 KBytes  8.26 Mbits/sec    1   1.39 KBytes       
> [  7][RX-C]   0.00-1.00   sec   421 KBytes  3.45 Mbits/sec                  
> [  5][TX-C]   1.00-2.00   sec  0.00 Bytes  0.00 bits/sec    0   1.39 KBytes       
> [  7][RX-C]   1.00-2.00   sec  0.00 Bytes  0.00 bits/sec                  
> [  5][TX-C]   2.00-3.00   sec  0.00 Bytes  0.00 bits/sec    0   1.39 KBytes       
> 
> On recent(ish) kernels I see the "ASPM disabled on Tx timeout" message as it tries to recover, then after some delay, the familiar "transmit queue 0 timed out" warning usually occurs.
> 
> 
> [  149.473134] ------------[ cut here ]------------
> [  149.473155] NETDEV WATCHDOG: eth0 (r8169): transmit queue 0 timed out 6812 ms
> [  149.473188] WARNING: CPU: 18 PID: 0 at net/sched/sch_generic.c:525 dev_watchdog+0x235/0x240
> [  149.473206] Modules linked in: nft_chain_nat nf_nat bridge stp llc qrtr sunrpc binfmt_misc ip6t_REJECT nf_reject_ipv6 joydev ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nft_compat nf_tables libcrc32c nfnetlink hid_generic nls_ascii nls_cp437 usbhid vfat hid fat amdgpu intel_rapl_msr snd_sof_pci_intel_tgl intel_rapl_common snd_sof_intel_hda_common soundwire_intel soundwire_generic_allocation intel_uncore_frequency intel_uncore_frequency_common snd_sof_intel_hda_mlink soundwire_cadence snd_sof_intel_hda snd_sof_pci x86_pkg_temp_thermal intel_powerclamp snd_sof_xtensa_dsp iwlmvm snd_sof coretemp kvm_intel snd_sof_utils snd_hda_codec_realtek snd_soc_hdac_hda mac80211 kvm snd_hda_ext_core snd_hda_codec_generic snd_soc_acpi_intel_match snd_soc_acpi ledtrig_audio snd_soc_core irqbypass snd_compress libarc4 drm_exec snd_pcm_dmaengine snd_hda_codec_hdmi ghash_clmulni_intel amdxcp soundwire_bus drm_buddy sha512_ssse3 gpu_sched sha256_ssse3 snd_hda_intel sha1_ssse3
> [  149.473574]  drm_suballoc_helper snd_intel_dspcfg iwlwifi snd_intel_sdw_acpi drm_display_helper snd_hda_codec cec aesni_intel snd_hda_core crypto_simd cryptd rc_core snd_hwdep mei_pxp mei_hdcp snd_pcm rapl drm_ttm_helper pmt_telemetry iTCO_wdt cfg80211 ttm pmt_class snd_timer intel_pmc_bxt evdev intel_cstate drm_kms_helper wmi_bmof mxm_wmi snd iTCO_vendor_support mei_me intel_uncore i2c_algo_bit ee1004 pcspkr watchdog mei soundcore rfkill intel_vsec serial_multi_instantiate intel_pmc_core acpi_pad acpi_tad button drm nct6683 parport_pc ppdev lp parport loop efi_pstore configfs efivarfs ip_tables x_tables autofs4 ext4 crc16 mbcache jbd2 crc32c_generic dm_mod nvme ahci nvme_core xhci_pci libahci t10_pi xhci_hcd r8169 libata realtek crc64_rocksoft mdio_devres crc64 usbcore scsi_mod crc_t10dif i2c_i801 crct10dif_generic libphy crc32_pclmul crct10dif_pclmul crc32c_intel i2c_smbus video scsi_common usb_common crct10dif_common fan wmi pinctrl_alderlake
> [  149.474122] CPU: 18 PID: 0 Comm: swapper/18 Not tainted 6.6.13+bpo-amd64 #1  Debian 6.6.13-1~bpo12+1
> [  149.474134] Hardware name: Micro-Star International Co., Ltd. MS-7D43/PRO B660M-A WIFI DDR4 (MS-7D43), BIOS 1.E0 09/14/2023
> [  149.474141] RIP: 0010:dev_watchdog+0x235/0x240
> [  149.474154] Code: ff ff ff 48 89 df c6 05 6c 2a 40 01 01 e8 e3 37 fa ff 45 89 f8 44 89 f1 48 89 de 48 89 c2 48 c7 c7 60 5f f2 9f e8 0b e3 6a ff <0f> 0b e9 2a ff ff ff 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90
> [  149.474163] RSP: 0018:ffffa4c3c0444e78 EFLAGS: 00010286
> [  149.474176] RAX: 0000000000000000 RBX: ffff93d94b354000 RCX: 000000000000083f
> [  149.474185] RDX: 0000000000000000 RSI: 00000000000000f6 RDI: 000000000000083f
> [  149.474192] RBP: ffff93d94b3544c8 R08: 0000000000000000 R09: ffffa4c3c0444d00
> [  149.474199] R10: 0000000000000003 R11: ffff93e0bf780228 R12: ffff93d94b346a00
> [  149.474207] R13: ffff93d94b35441c R14: 0000000000000000 R15: 0000000000001a9c
> [  149.474215] FS:  0000000000000000(0000) GS:ffff93e09f680000(0000) knlGS:0000000000000000
> [  149.474225] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [  149.474232] CR2: 00007f616800a008 CR3: 0000000136820000 CR4: 0000000000f50ee0
> [  149.474240] PKRU: 55555554
> [  149.474247] Call Trace:
> [  149.474254]  <IRQ>
> [  149.474261]  ? dev_watchdog+0x235/0x240
> [  149.474271]  ? __warn+0x81/0x130
> [  149.474289]  ? dev_watchdog+0x235/0x240
> [  149.474298]  ? report_bug+0x171/0x1a0
> [  149.474314]  ? handle_bug+0x41/0x70
> [  149.474326]  ? exc_invalid_op+0x17/0x70
> [  149.474338]  ? asm_exc_invalid_op+0x1a/0x20
> [  149.474353]  ? dev_watchdog+0x235/0x240
> [  149.474363]  ? dev_watchdog+0x235/0x240
> [  149.474372]  ? __pfx_dev_watchdog+0x10/0x10
> [  149.474381]  call_timer_fn+0x24/0x130
> [  149.474396]  ? __pfx_dev_watchdog+0x10/0x10
> [  149.474404]  __run_timers+0x222/0x2c0
> [  149.474420]  run_timer_softirq+0x1d/0x40
> [  149.474433]  __do_softirq+0xc7/0x2ae
> [  149.474444]  __irq_exit_rcu+0x96/0xb0
> [  149.474459]  sysvec_apic_timer_interrupt+0x72/0x90
> [  149.474469]  </IRQ>
> [  149.474473]  <TASK>
> [  149.474479]  asm_sysvec_apic_timer_interrupt+0x1a/0x20
> [  149.474492] RIP: 0010:cpuidle_enter_state+0xcc/0x440
> [  149.474504] Code: fa b6 53 ff e8 35 f4 ff ff 8b 53 04 49 89 c5 0f 1f 44 00 00 31 ff e8 43 c4 52 ff 45 84 ff 0f 85 57 02 00 00 fb 0f 1f 44 00 00 <45> 85 f6 0f 88 85 01 00 00 49 63 d6 48 8d 04 52 48 8d 04 82 49 8d
> [  149.474514] RSP: 0018:ffffa4c3c022be90 EFLAGS: 00000246
> [  149.474524] RAX: ffff93e09f6b3440 RBX: ffffc4c3bfcb2140 RCX: 000000000000001f
> [  149.474529] RDX: 0000000000000012 RSI: 000000003c9b26c9 RDI: 0000000000000000
> [  149.474536] RBP: 0000000000000004 R08: 0000000000000000 R09: 0000000000000500
> [  149.474542] R10: 0000000000000007 R11: ffff93e09f6b1fe4 R12: ffffffffa079a500
> [  149.474548] R13: 00000022cd4ab97d R14: 0000000000000004 R15: 0000000000000000
> [  149.474560]  cpuidle_enter+0x2d/0x40
> [  149.474571]  do_idle+0x20d/0x270
> [  149.474585]  cpu_startup_entry+0x2a/0x30
> [  149.474598]  start_secondary+0x11e/0x140
> [  149.474613]  secondary_startup_64_no_verify+0x18f/0x19b
> [  149.474630]  </TASK>
> [  149.474635] ---[ end trace 0000000000000000 ]---
> 
> 
> Here's a dump of the registers (MAC Address redacted).
> It seems to be stuck on TxDescUnavail | RxOverflow | TxOK | RxOk, and interrupts are unmasked.
> 
> # ethtool -d eth0
> Unknown RealTek chip (TxConfig: 0x67100f00)
> Offset		Values
> ------		------
> 0x0000:		XXXXXXXXXXXXXXXXX fe 09 40 00 00 00 80 00 01 00 
> 0x0010:		00 00 57 ff 00 00 00 00 0a 00 00 00 00 00 00 00 
> 0x0020:		00 10 7d ff 00 00 00 00 19 1e 9f b4 79 a5 3f 3b 
> 0x0030:		00 00 00 00 00 00 00 0c 3f 00 00 00 95 00 00 00 
> 0x0040:		00 0f 10 67 0e 0f c2 40 00 00 00 00 00 00 00 00 
> 0x0050:		11 00 cf bc 60 11 03 01 00 00 00 00 00 00 00 00 
> 0x0060:		00 00 00 00 00 00 00 00 00 00 02 00 f3 00 80 f0 
> 0x0070:		00 00 00 00 00 00 00 00 07 00 00 00 00 00 b3 e9 
> 0x0080:		62 60 02 00 00 02 20 00 00 00 00 00 00 00 00 00 
> 0x0090:		00 00 00 00 60 00 20 02 62 64 00 00 00 00 00 00 
> 0x00a0:		00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
> 0x00b0:		1f 00 00 00 80 00 00 00 ec 10 1a d2 01 00 01 00 
> 0x00c0:		00 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 
> 0x00d0:		21 00 04 12 00 00 01 00 00 00 00 40 ff ff ff ff 
> 0x00e0:		20 20 03 01 00 00 91 fe 00 00 00 00 ff 02 00 00 
> 0x00f0:		3f 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 
> 
> 
> I tried instrumenting the code a bit and found that rtl8169_poll() being called with interrupts unmasked seems to be a precursor to the problem occuring.
> The *only* time this usually happens is when a GRO timer has been set but napi_defer_hard_irqs is off.
> Now that the defaults are gro_flush_timeout=20000, napi_defer_hard_irqs=1, this probably doesn't happen very often for most people.
> I guess it will happen with busy polling, but I haven't tested that yet.
> 
> 
> diff --git linux-source-6.6~/drivers/net/ethernet/realtek/r8169_main.c linux-source-6.6/drivers/net/ethernet/realtek/r8169_main.c
> index 81fd31f..927786f 100644
> --- linux-source-6.6~/drivers/net/ethernet/realtek/r8169_main.c
> +++ linux-source-6.6/drivers/net/ethernet/realtek/r8169_main.c
> @@ -4601,6 +4601,8 @@ static int rtl8169_poll(struct napi_struct *napi, int budget)
>         struct net_device *dev = tp->dev;
>         int work_done;
>  
> +       WARN_ONCE(RTL_R32(tp, IntrMask_8125) != 0, "rtl8169_poll: IRQs enabled!");
> +
>         rtl_tx(dev, tp, budget);
>  
>         work_done = rtl_rx(dev, tp, budget);
> 
> [ 5055.978473] ------------[ cut here ]------------
> [ 5055.978503] rtl8169_poll: IRQs enabled!
> [ 5055.978527] WARNING: CPU: 15 PID: 0 at /home/ken/work/r8169/linux-source-6.6/drivers/net/ethernet/realtek/r8169_main.c:4604 rtl8169_poll+0x4e5/0x520 [r8169]
> [ 5055.978568] Modules linked in: r8169(OE) realtek mdio_devres libphy nft_chain_nat nf_nat bridge stp llc ip6t_REJECT nf_reject_ipv6 qrtr ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 sunrpc nft_compat nf_tables libcrc32c nfnetlink binfmt_misc joydev nls_ascii nls_cp437 vfat fat hid_generic usbhid hid amdgpu intel_rapl_msr intel_rapl_common intel_uncore_frequency snd_sof_pci_intel_tgl intel_uncore_frequency_common snd_sof_intel_hda_common x86_pkg_temp_thermal soundwire_intel intel_powerclamp soundwire_generic_allocation snd_sof_intel_hda_mlink coretemp iwlmvm soundwire_cadence kvm_intel snd_sof_intel_hda snd_sof_pci snd_sof_xtensa_dsp snd_sof kvm mac80211 snd_sof_utils snd_soc_hdac_hda snd_hda_ext_core irqbypass snd_soc_acpi_intel_match snd_soc_acpi libarc4 snd_hda_codec_realtek ghash_clmulni_intel snd_soc_core sha512_ssse3 snd_hda_codec_generic drm_exec sha256_ssse3 amdxcp sha1_ssse3 ledtrig_audio drm_buddy iwlwifi gpu_sched snd_compress snd_hda_codec_hdmi snd_pcm_dmaengine
> [ 5055.979159]  drm_suballoc_helper soundwire_bus drm_display_helper aesni_intel snd_hda_intel cec crypto_simd cryptd snd_intel_dspcfg rc_core snd_intel_sdw_acpi rapl snd_hda_codec mei_hdcp drm_ttm_helper mei_pxp pmt_telemetry intel_cstate cfg80211 evdev pmt_class snd_hda_core ttm snd_hwdep mei_me snd_pcm drm_kms_helper iTCO_wdt wmi_bmof intel_pmc_bxt snd_timer intel_uncore snd iTCO_vendor_support i2c_algo_bit mei ee1004 mxm_wmi watchdog pcspkr soundcore rfkill intel_vsec serial_multi_instantiate intel_pmc_core acpi_tad acpi_pad button drm nct6683 parport_pc ppdev lp parport loop configfs efi_pstore efivarfs ip_tables x_tables autofs4 ext4 crc16 mbcache jbd2 crc32c_generic dm_mod nvme ahci nvme_core libahci xhci_pci t10_pi libata xhci_hcd crc64_rocksoft crc64 usbcore scsi_mod crc_t10dif i2c_i801 crc32_pclmul crct10dif_generic crct10dif_pclmul crc32c_intel i2c_smbus video scsi_common usb_common fan crct10dif_common wmi pinctrl_alderlake [last unloaded: r8169(OE)]
> [ 5055.979787] CPU: 15 PID: 0 Comm: swapper/15 Tainted: G        W  OE      6.6.13+bpo-amd64 #1  Debian 6.6.13-1~bpo12+1
> [ 5055.979797] Hardware name: Micro-Star International Co., Ltd. MS-7D43/PRO B660M-A WIFI DDR4 (MS-7D43), BIOS 1.E0 09/14/2023
> [ 5055.979803] RIP: 0010:rtl8169_poll+0x4e5/0x520 [r8169]
> [ 5055.979829] Code: 19 00 00 76 40 89 50 38 eb 98 80 3d 24 e2 00 00 00 0f 85 66 fb ff ff 48 c7 c7 7a d0 8d c0 c6 05 10 e2 00 00 01 e8 ab f6 fe f4 <0f> 0b e9 4c fb ff ff ba 40 00 00 00 88 50 38 e9 a5 fc ff ff 31 c0
> [ 5055.979836] RSP: 0018:ffffad4340618e88 EFLAGS: 00010286
> [ 5055.979846] RAX: 0000000000000000 RBX: ffff8f799b16c9e0 RCX: 000000000000083f
> [ 5055.979853] RDX: 0000000000000000 RSI: 00000000000000f6 RDI: 000000000000083f
> [ 5055.979859] RBP: ffff8f799b16c9e0 R08: 0000000000000000 R09: ffffad4340618d10
> [ 5055.979864] R10: 0000000000000003 R11: ffff8f80ff780228 R12: ffff8f799b16c000
> [ 5055.979871] R13: 0000000000000040 R14: ffff8f799b16c9c0 R15: ffff8f799b16c9e0
> [ 5055.979877] FS:  0000000000000000(0000) GS:ffff8f80df5c0000(0000) knlGS:0000000000000000
> [ 5055.979884] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 5055.979890] CR2: 00007f0062503000 CR3: 00000004afc20000 CR4: 0000000000f50ee0
> [ 5055.979897] PKRU: 55555554
> [ 5055.979903] Call Trace:
> [ 5055.979911]  <IRQ>
> [ 5055.979916]  ? rtl8169_poll+0x4e5/0x520 [r8169]
> [ 5055.979940]  ? __warn+0x81/0x130
> [ 5055.979955]  ? rtl8169_poll+0x4e5/0x520 [r8169]
> [ 5055.979978]  ? report_bug+0x171/0x1a0
> [ 5055.979992]  ? handle_bug+0x41/0x70
> [ 5055.980004]  ? exc_invalid_op+0x17/0x70
> [ 5055.980014]  ? asm_exc_invalid_op+0x1a/0x20
> [ 5055.980026]  ? rtl8169_poll+0x4e5/0x520 [r8169]
> [ 5055.980048]  ? rtl8169_poll+0x4e5/0x520 [r8169]
> [ 5055.980070]  ? ktime_get+0x3c/0xa0
> [ 5055.980079]  ? sched_clock+0x10/0x30
> [ 5055.980090]  __napi_poll+0x28/0x1b0
> [ 5055.980104]  net_rx_action+0x2a4/0x380
> [ 5055.980116]  __do_softirq+0xc7/0x2ae
> [ 5055.980126]  __irq_exit_rcu+0x96/0xb0
> [ 5055.980139]  sysvec_apic_timer_interrupt+0x72/0x90
> [ 5055.980148]  </IRQ>
> [ 5055.980152]  <TASK>
> [ 5055.980156]  asm_sysvec_apic_timer_interrupt+0x1a/0x20
> [ 5055.980167] RIP: 0010:cpuidle_enter_state+0xcc/0x440
> [ 5055.980179] Code: fa b6 53 ff e8 35 f4 ff ff 8b 53 04 49 89 c5 0f 1f 44 00 00 31 ff e8 43 c4 52 ff 45 84 ff 0f 85 57 02 00 00 fb 0f 1f 44 00 00 <45> 85 f6 0f 88 85 01 00 00 49 63 d6 48 8d 04 52 48 8d 04 82 49 8d
> [ 5055.980187] RSP: 0018:ffffad4340213e90 EFLAGS: 00000246
> [ 5055.980197] RAX: ffff8f80df5f3440 RBX: ffffcd433fbf2140 RCX: 000000000000001f
> [ 5055.980203] RDX: 000000000000000f RSI: 000000003c9b26c9 RDI: 0000000000000000
> [ 5055.980208] RBP: 0000000000000004 R08: 0000000000000000 R09: 0000000000000012
> [ 5055.980214] R10: 0000000000000008 R11: ffff8f80df5f1fe4 R12: ffffffffb759a500
> [ 5055.980219] R13: 000004992fcca629 R14: 0000000000000004 R15: 0000000000000000
> [ 5055.980229]  cpuidle_enter+0x2d/0x40
> [ 5055.980238]  do_idle+0x20d/0x270
> [ 5055.980253]  cpu_startup_entry+0x2a/0x30
> [ 5055.980265]  start_secondary+0x11e/0x140
> [ 5055.980279]  secondary_startup_64_no_verify+0x18f/0x19b
> [ 5055.980294]  </TASK>
> [ 5055.980298] ---[ end trace 0000000000000000 ]---
> 
> 
> So to make the problem go away, I found that putting an unconditional call to rtl_irq_disable() up front in rtl8169_poll() is sufficient.
> This seems a shame, since in almost every case, interrupts are already off at this point so it is an unnecessary write to the card.
> 
> I assume it is rtl8169_interrupt() clearing the interrupt status register while something inside rtl8169_interrupt() is going on that causes the problem, so this needs to be avoided.
> I tried moving the interrupt masking around inside rtl_tx() and rtl_rx() to see if I could work out which specific place is vulnerable to the race, but it was inconclusive.
> 
In general there's nothing wrong with having interrupts enabled.
Disabling them is just an optimization. Seems like this scenario
triggers some silicon bug.

> 
> The cheap hack below seems like a more performant solution than masking interrupts unconditionally in the poll function:
> If a hardware interrupt comes in and NAPI_STATE_SCHED is set, we assume we're either in the poll function already or it will be called again soon, so we can safely disable interrupts.
> It has worked perfectly for me so far, although it doesn't prevent the poll function from *ever* getting called with interrupts on. I suspect it will come apart with busy polling or the like.
> 
> No doubt some sort of semaphore between the interrupt handler and poll function will be needed to decide who gets to disable interrupts.
> It would be great if NAPI had a "begin polling" upcall or something...
> 
> 
> diff --git linux-source-6.6~/drivers/net/ethernet/realtek/r8169_main.c linux-source-6.6/drivers/net/ethernet/realtek/r8169_main.c
> index 81fd31f..60cf4f6 100644
> --- linux-source-6.6~/drivers/net/ethernet/realtek/r8169_main.c
> +++ linux-source-6.6/drivers/net/ethernet/realtek/r8169_main.c
> @@ -4521,6 +4521,11 @@ release_descriptor:
>         return count;
>  }
>  
> +static inline bool napi_is_scheduled(struct napi_struct *n)
> +{
> +       return test_bit(NAPI_STATE_SCHED, &n->state);
> +}
> +
>  static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
>  {
>         struct rtl8169_private *tp = dev_instance;
> @@ -4546,7 +4551,8 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
>         if (napi_schedule_prep(&tp->napi)) {
>                 rtl_irq_disable(tp);
>                 __napi_schedule(&tp->napi);
> -       }
> +       } else if (napi_is_scheduled(&tp->napi))
> +               rtl_irq_disable(tp);

Re-reading &tp->napi may be racy, and I think the code delivers
a wrong result if NAPI_STATE_SCHEDand NAPI_STATE_DISABLE
both are set.

>  out:
>         rtl_ack_events(tp, status);

The following uses a modified version of napi_schedule_prep()
to avoid re-reading the napi state.
We would have to see whether this extension to the net core is
acceptable, as r8169 would be the only user for now.
For testing it's one patch, for submitting it would need to be
splitted.

---
 drivers/net/ethernet/realtek/r8169_main.c |  6 ++++--
 include/linux/netdevice.h                 |  7 ++++++-
 net/core/dev.c                            | 12 ++++++------
 3 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index eb329f0ab..94b97a16d 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -4639,6 +4639,7 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
 {
 	struct rtl8169_private *tp = dev_instance;
 	u32 status = rtl_get_events(tp);
+	int ret;
 
 	if ((status & 0xffff) == 0xffff || !(status & tp->irq_mask))
 		return IRQ_NONE;
@@ -4657,10 +4658,11 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
 		rtl_schedule_task(tp, RTL_FLAG_TASK_RESET_PENDING);
 	}
 
-	if (napi_schedule_prep(&tp->napi)) {
+	ret = __napi_schedule_prep(&tp->napi);
+	if (ret >= 0)
 		rtl_irq_disable(tp);
+	if (ret > 0)
 		__napi_schedule(&tp->napi);
-	}
 out:
 	rtl_ack_events(tp, status);
 
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 42b9e6dc6..3df560264 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -498,7 +498,12 @@ static inline bool napi_is_scheduled(struct napi_struct *n)
 	return test_bit(NAPI_STATE_SCHED, &n->state);
 }
 
-bool napi_schedule_prep(struct napi_struct *n);
+int __napi_schedule_prep(struct napi_struct *n);
+
+static inline bool napi_schedule_prep(struct napi_struct *n)
+{
+	return __napi_schedule_prep(n) > 0;
+}
 
 /**
  *	napi_schedule - schedule NAPI poll
diff --git a/net/core/dev.c b/net/core/dev.c
index 4bf081c5a..126eab121 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -6102,21 +6102,21 @@ void __napi_schedule(struct napi_struct *n)
 EXPORT_SYMBOL(__napi_schedule);
 
 /**
- *	napi_schedule_prep - check if napi can be scheduled
+ *	__napi_schedule_prep - check if napi can be scheduled
  *	@n: napi context
  *
  * Test if NAPI routine is already running, and if not mark
  * it as running.  This is used as a condition variable to
- * insure only one NAPI poll instance runs.  We also make
- * sure there is no pending NAPI disable.
+ * insure only one NAPI poll instance runs. Return -1 if
+ * there is a pending NAPI disable.
  */
-bool napi_schedule_prep(struct napi_struct *n)
+int __napi_schedule_prep(struct napi_struct *n)
 {
 	unsigned long new, val = READ_ONCE(n->state);
 
 	do {
 		if (unlikely(val & NAPIF_STATE_DISABLE))
-			return false;
+			return -1;
 		new = val | NAPIF_STATE_SCHED;
 
 		/* Sets STATE_MISSED bit if STATE_SCHED was already set
@@ -6131,7 +6131,7 @@ bool napi_schedule_prep(struct napi_struct *n)
 
 	return !(val & NAPIF_STATE_SCHED);
 }
-EXPORT_SYMBOL(napi_schedule_prep);
+EXPORT_SYMBOL(__napi_schedule_prep);
 
 /**
  * __napi_schedule_irqoff - schedule for receive
-- 
2.45.0



^ permalink raw reply related	[relevance 0%]

* r8169: transmit queue timeouts and IRQ masking
@ 2024-05-06 21:28  2% Ken Milmore
  2024-05-08 21:14  0% ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Ken Milmore @ 2024-05-06 21:28 UTC (permalink / raw)
  To: netdev; +Cc: Heiner Kallweit, nic_swsd

I have a motherboard with an integrated RTL8125B network adapter, and I have found a way to predictably cause TX queue timeouts with the r8169 driver.

Briefly, if rtl8169_poll() ever gets called with interrupts unmasked on the device, then it seems to be possible to get it stuck in a non-interrupting state.
It appears disaster can be averted in this case by making sure device interrupts are always masked when inside rtl8169_poll()! For which see below...

The preconditions I found for causing a timeout are:
- Set gro_flush_timeout to a NON-ZERO value
- Set napi_defer_hard_irqs to ZERO
- Put some heavy bidirectional load on the interface (I find iperf3 to another host does the job nicely: 1Gbps is enough).

e.g.
# echo 20000 > /sys/class/net/eth0/gro_flush_timeout
# echo 0 > /sys/class/net/eth0/napi_defer_hard_irqs
# iperf3 --bidir -c hostname

The bitrate falls off to zero almost immediately, whereafter the interface just stops working:

[ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd
[  5][TX-C]   0.00-1.00   sec  1010 KBytes  8.26 Mbits/sec    1   1.39 KBytes       
[  7][RX-C]   0.00-1.00   sec   421 KBytes  3.45 Mbits/sec                  
[  5][TX-C]   1.00-2.00   sec  0.00 Bytes  0.00 bits/sec    0   1.39 KBytes       
[  7][RX-C]   1.00-2.00   sec  0.00 Bytes  0.00 bits/sec                  
[  5][TX-C]   2.00-3.00   sec  0.00 Bytes  0.00 bits/sec    0   1.39 KBytes       

On recent(ish) kernels I see the "ASPM disabled on Tx timeout" message as it tries to recover, then after some delay, the familiar "transmit queue 0 timed out" warning usually occurs.


[  149.473134] ------------[ cut here ]------------
[  149.473155] NETDEV WATCHDOG: eth0 (r8169): transmit queue 0 timed out 6812 ms
[  149.473188] WARNING: CPU: 18 PID: 0 at net/sched/sch_generic.c:525 dev_watchdog+0x235/0x240
[  149.473206] Modules linked in: nft_chain_nat nf_nat bridge stp llc qrtr sunrpc binfmt_misc ip6t_REJECT nf_reject_ipv6 joydev ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nft_compat nf_tables libcrc32c nfnetlink hid_generic nls_ascii nls_cp437 usbhid vfat hid fat amdgpu intel_rapl_msr snd_sof_pci_intel_tgl intel_rapl_common snd_sof_intel_hda_common soundwire_intel soundwire_generic_allocation intel_uncore_frequency intel_uncore_frequency_common snd_sof_intel_hda_mlink soundwire_cadence snd_sof_intel_hda snd_sof_pci x86_pkg_temp_thermal intel_powerclamp snd_sof_xtensa_dsp iwlmvm snd_sof coretemp kvm_intel snd_sof_utils snd_hda_codec_realtek snd_soc_hdac_hda mac80211 kvm snd_hda_ext_core snd_hda_codec_generic snd_soc_acpi_intel_match snd_soc_acpi ledtrig_audio snd_soc_core irqbypass snd_compress libarc4 drm_exec snd_pcm_dmaengine snd_hda_codec_hdmi ghash_clmulni_intel amdxcp soundwire_bus drm_buddy sha512_ssse3 gpu_sched sha256_ssse3 snd_hda_intel sha1_ssse3
[  149.473574]  drm_suballoc_helper snd_intel_dspcfg iwlwifi snd_intel_sdw_acpi drm_display_helper snd_hda_codec cec aesni_intel snd_hda_core crypto_simd cryptd rc_core snd_hwdep mei_pxp mei_hdcp snd_pcm rapl drm_ttm_helper pmt_telemetry iTCO_wdt cfg80211 ttm pmt_class snd_timer intel_pmc_bxt evdev intel_cstate drm_kms_helper wmi_bmof mxm_wmi snd iTCO_vendor_support mei_me intel_uncore i2c_algo_bit ee1004 pcspkr watchdog mei soundcore rfkill intel_vsec serial_multi_instantiate intel_pmc_core acpi_pad acpi_tad button drm nct6683 parport_pc ppdev lp parport loop efi_pstore configfs efivarfs ip_tables x_tables autofs4 ext4 crc16 mbcache jbd2 crc32c_generic dm_mod nvme ahci nvme_core xhci_pci libahci t10_pi xhci_hcd r8169 libata realtek crc64_rocksoft mdio_devres crc64 usbcore scsi_mod crc_t10dif i2c_i801 crct10dif_generic libphy crc32_pclmul crct10dif_pclmul crc32c_intel i2c_smbus video scsi_common usb_common crct10dif_common fan wmi pinctrl_alderlake
[  149.474122] CPU: 18 PID: 0 Comm: swapper/18 Not tainted 6.6.13+bpo-amd64 #1  Debian 6.6.13-1~bpo12+1
[  149.474134] Hardware name: Micro-Star International Co., Ltd. MS-7D43/PRO B660M-A WIFI DDR4 (MS-7D43), BIOS 1.E0 09/14/2023
[  149.474141] RIP: 0010:dev_watchdog+0x235/0x240
[  149.474154] Code: ff ff ff 48 89 df c6 05 6c 2a 40 01 01 e8 e3 37 fa ff 45 89 f8 44 89 f1 48 89 de 48 89 c2 48 c7 c7 60 5f f2 9f e8 0b e3 6a ff <0f> 0b e9 2a ff ff ff 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90
[  149.474163] RSP: 0018:ffffa4c3c0444e78 EFLAGS: 00010286
[  149.474176] RAX: 0000000000000000 RBX: ffff93d94b354000 RCX: 000000000000083f
[  149.474185] RDX: 0000000000000000 RSI: 00000000000000f6 RDI: 000000000000083f
[  149.474192] RBP: ffff93d94b3544c8 R08: 0000000000000000 R09: ffffa4c3c0444d00
[  149.474199] R10: 0000000000000003 R11: ffff93e0bf780228 R12: ffff93d94b346a00
[  149.474207] R13: ffff93d94b35441c R14: 0000000000000000 R15: 0000000000001a9c
[  149.474215] FS:  0000000000000000(0000) GS:ffff93e09f680000(0000) knlGS:0000000000000000
[  149.474225] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  149.474232] CR2: 00007f616800a008 CR3: 0000000136820000 CR4: 0000000000f50ee0
[  149.474240] PKRU: 55555554
[  149.474247] Call Trace:
[  149.474254]  <IRQ>
[  149.474261]  ? dev_watchdog+0x235/0x240
[  149.474271]  ? __warn+0x81/0x130
[  149.474289]  ? dev_watchdog+0x235/0x240
[  149.474298]  ? report_bug+0x171/0x1a0
[  149.474314]  ? handle_bug+0x41/0x70
[  149.474326]  ? exc_invalid_op+0x17/0x70
[  149.474338]  ? asm_exc_invalid_op+0x1a/0x20
[  149.474353]  ? dev_watchdog+0x235/0x240
[  149.474363]  ? dev_watchdog+0x235/0x240
[  149.474372]  ? __pfx_dev_watchdog+0x10/0x10
[  149.474381]  call_timer_fn+0x24/0x130
[  149.474396]  ? __pfx_dev_watchdog+0x10/0x10
[  149.474404]  __run_timers+0x222/0x2c0
[  149.474420]  run_timer_softirq+0x1d/0x40
[  149.474433]  __do_softirq+0xc7/0x2ae
[  149.474444]  __irq_exit_rcu+0x96/0xb0
[  149.474459]  sysvec_apic_timer_interrupt+0x72/0x90
[  149.474469]  </IRQ>
[  149.474473]  <TASK>
[  149.474479]  asm_sysvec_apic_timer_interrupt+0x1a/0x20
[  149.474492] RIP: 0010:cpuidle_enter_state+0xcc/0x440
[  149.474504] Code: fa b6 53 ff e8 35 f4 ff ff 8b 53 04 49 89 c5 0f 1f 44 00 00 31 ff e8 43 c4 52 ff 45 84 ff 0f 85 57 02 00 00 fb 0f 1f 44 00 00 <45> 85 f6 0f 88 85 01 00 00 49 63 d6 48 8d 04 52 48 8d 04 82 49 8d
[  149.474514] RSP: 0018:ffffa4c3c022be90 EFLAGS: 00000246
[  149.474524] RAX: ffff93e09f6b3440 RBX: ffffc4c3bfcb2140 RCX: 000000000000001f
[  149.474529] RDX: 0000000000000012 RSI: 000000003c9b26c9 RDI: 0000000000000000
[  149.474536] RBP: 0000000000000004 R08: 0000000000000000 R09: 0000000000000500
[  149.474542] R10: 0000000000000007 R11: ffff93e09f6b1fe4 R12: ffffffffa079a500
[  149.474548] R13: 00000022cd4ab97d R14: 0000000000000004 R15: 0000000000000000
[  149.474560]  cpuidle_enter+0x2d/0x40
[  149.474571]  do_idle+0x20d/0x270
[  149.474585]  cpu_startup_entry+0x2a/0x30
[  149.474598]  start_secondary+0x11e/0x140
[  149.474613]  secondary_startup_64_no_verify+0x18f/0x19b
[  149.474630]  </TASK>
[  149.474635] ---[ end trace 0000000000000000 ]---


Here's a dump of the registers (MAC Address redacted).
It seems to be stuck on TxDescUnavail | RxOverflow | TxOK | RxOk, and interrupts are unmasked.

# ethtool -d eth0
Unknown RealTek chip (TxConfig: 0x67100f00)
Offset		Values
------		------
0x0000:		XXXXXXXXXXXXXXXXX fe 09 40 00 00 00 80 00 01 00 
0x0010:		00 00 57 ff 00 00 00 00 0a 00 00 00 00 00 00 00 
0x0020:		00 10 7d ff 00 00 00 00 19 1e 9f b4 79 a5 3f 3b 
0x0030:		00 00 00 00 00 00 00 0c 3f 00 00 00 95 00 00 00 
0x0040:		00 0f 10 67 0e 0f c2 40 00 00 00 00 00 00 00 00 
0x0050:		11 00 cf bc 60 11 03 01 00 00 00 00 00 00 00 00 
0x0060:		00 00 00 00 00 00 00 00 00 00 02 00 f3 00 80 f0 
0x0070:		00 00 00 00 00 00 00 00 07 00 00 00 00 00 b3 e9 
0x0080:		62 60 02 00 00 02 20 00 00 00 00 00 00 00 00 00 
0x0090:		00 00 00 00 60 00 20 02 62 64 00 00 00 00 00 00 
0x00a0:		00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0x00b0:		1f 00 00 00 80 00 00 00 ec 10 1a d2 01 00 01 00 
0x00c0:		00 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 
0x00d0:		21 00 04 12 00 00 01 00 00 00 00 40 ff ff ff ff 
0x00e0:		20 20 03 01 00 00 91 fe 00 00 00 00 ff 02 00 00 
0x00f0:		3f 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 


I tried instrumenting the code a bit and found that rtl8169_poll() being called with interrupts unmasked seems to be a precursor to the problem occuring.
The *only* time this usually happens is when a GRO timer has been set but napi_defer_hard_irqs is off.
Now that the defaults are gro_flush_timeout=20000, napi_defer_hard_irqs=1, this probably doesn't happen very often for most people.
I guess it will happen with busy polling, but I haven't tested that yet.


diff --git linux-source-6.6~/drivers/net/ethernet/realtek/r8169_main.c linux-source-6.6/drivers/net/ethernet/realtek/r8169_main.c
index 81fd31f..927786f 100644
--- linux-source-6.6~/drivers/net/ethernet/realtek/r8169_main.c
+++ linux-source-6.6/drivers/net/ethernet/realtek/r8169_main.c
@@ -4601,6 +4601,8 @@ static int rtl8169_poll(struct napi_struct *napi, int budget)
        struct net_device *dev = tp->dev;
        int work_done;
 
+       WARN_ONCE(RTL_R32(tp, IntrMask_8125) != 0, "rtl8169_poll: IRQs enabled!");
+
        rtl_tx(dev, tp, budget);
 
        work_done = rtl_rx(dev, tp, budget);

[ 5055.978473] ------------[ cut here ]------------
[ 5055.978503] rtl8169_poll: IRQs enabled!
[ 5055.978527] WARNING: CPU: 15 PID: 0 at /home/ken/work/r8169/linux-source-6.6/drivers/net/ethernet/realtek/r8169_main.c:4604 rtl8169_poll+0x4e5/0x520 [r8169]
[ 5055.978568] Modules linked in: r8169(OE) realtek mdio_devres libphy nft_chain_nat nf_nat bridge stp llc ip6t_REJECT nf_reject_ipv6 qrtr ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 sunrpc nft_compat nf_tables libcrc32c nfnetlink binfmt_misc joydev nls_ascii nls_cp437 vfat fat hid_generic usbhid hid amdgpu intel_rapl_msr intel_rapl_common intel_uncore_frequency snd_sof_pci_intel_tgl intel_uncore_frequency_common snd_sof_intel_hda_common x86_pkg_temp_thermal soundwire_intel intel_powerclamp soundwire_generic_allocation snd_sof_intel_hda_mlink coretemp iwlmvm soundwire_cadence kvm_intel snd_sof_intel_hda snd_sof_pci snd_sof_xtensa_dsp snd_sof kvm mac80211 snd_sof_utils snd_soc_hdac_hda snd_hda_ext_core irqbypass snd_soc_acpi_intel_match snd_soc_acpi libarc4 snd_hda_codec_realtek ghash_clmulni_intel snd_soc_core sha512_ssse3 snd_hda_codec_generic drm_exec sha256_ssse3 amdxcp sha1_ssse3 ledtrig_audio drm_buddy iwlwifi gpu_sched snd_compress snd_hda_codec_hdmi snd_pcm_dmaengine
[ 5055.979159]  drm_suballoc_helper soundwire_bus drm_display_helper aesni_intel snd_hda_intel cec crypto_simd cryptd snd_intel_dspcfg rc_core snd_intel_sdw_acpi rapl snd_hda_codec mei_hdcp drm_ttm_helper mei_pxp pmt_telemetry intel_cstate cfg80211 evdev pmt_class snd_hda_core ttm snd_hwdep mei_me snd_pcm drm_kms_helper iTCO_wdt wmi_bmof intel_pmc_bxt snd_timer intel_uncore snd iTCO_vendor_support i2c_algo_bit mei ee1004 mxm_wmi watchdog pcspkr soundcore rfkill intel_vsec serial_multi_instantiate intel_pmc_core acpi_tad acpi_pad button drm nct6683 parport_pc ppdev lp parport loop configfs efi_pstore efivarfs ip_tables x_tables autofs4 ext4 crc16 mbcache jbd2 crc32c_generic dm_mod nvme ahci nvme_core libahci xhci_pci t10_pi libata xhci_hcd crc64_rocksoft crc64 usbcore scsi_mod crc_t10dif i2c_i801 crc32_pclmul crct10dif_generic crct10dif_pclmul crc32c_intel i2c_smbus video scsi_common usb_common fan crct10dif_common wmi pinctrl_alderlake [last unloaded: r8169(OE)]
[ 5055.979787] CPU: 15 PID: 0 Comm: swapper/15 Tainted: G        W  OE      6.6.13+bpo-amd64 #1  Debian 6.6.13-1~bpo12+1
[ 5055.979797] Hardware name: Micro-Star International Co., Ltd. MS-7D43/PRO B660M-A WIFI DDR4 (MS-7D43), BIOS 1.E0 09/14/2023
[ 5055.979803] RIP: 0010:rtl8169_poll+0x4e5/0x520 [r8169]
[ 5055.979829] Code: 19 00 00 76 40 89 50 38 eb 98 80 3d 24 e2 00 00 00 0f 85 66 fb ff ff 48 c7 c7 7a d0 8d c0 c6 05 10 e2 00 00 01 e8 ab f6 fe f4 <0f> 0b e9 4c fb ff ff ba 40 00 00 00 88 50 38 e9 a5 fc ff ff 31 c0
[ 5055.979836] RSP: 0018:ffffad4340618e88 EFLAGS: 00010286
[ 5055.979846] RAX: 0000000000000000 RBX: ffff8f799b16c9e0 RCX: 000000000000083f
[ 5055.979853] RDX: 0000000000000000 RSI: 00000000000000f6 RDI: 000000000000083f
[ 5055.979859] RBP: ffff8f799b16c9e0 R08: 0000000000000000 R09: ffffad4340618d10
[ 5055.979864] R10: 0000000000000003 R11: ffff8f80ff780228 R12: ffff8f799b16c000
[ 5055.979871] R13: 0000000000000040 R14: ffff8f799b16c9c0 R15: ffff8f799b16c9e0
[ 5055.979877] FS:  0000000000000000(0000) GS:ffff8f80df5c0000(0000) knlGS:0000000000000000
[ 5055.979884] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 5055.979890] CR2: 00007f0062503000 CR3: 00000004afc20000 CR4: 0000000000f50ee0
[ 5055.979897] PKRU: 55555554
[ 5055.979903] Call Trace:
[ 5055.979911]  <IRQ>
[ 5055.979916]  ? rtl8169_poll+0x4e5/0x520 [r8169]
[ 5055.979940]  ? __warn+0x81/0x130
[ 5055.979955]  ? rtl8169_poll+0x4e5/0x520 [r8169]
[ 5055.979978]  ? report_bug+0x171/0x1a0
[ 5055.979992]  ? handle_bug+0x41/0x70
[ 5055.980004]  ? exc_invalid_op+0x17/0x70
[ 5055.980014]  ? asm_exc_invalid_op+0x1a/0x20
[ 5055.980026]  ? rtl8169_poll+0x4e5/0x520 [r8169]
[ 5055.980048]  ? rtl8169_poll+0x4e5/0x520 [r8169]
[ 5055.980070]  ? ktime_get+0x3c/0xa0
[ 5055.980079]  ? sched_clock+0x10/0x30
[ 5055.980090]  __napi_poll+0x28/0x1b0
[ 5055.980104]  net_rx_action+0x2a4/0x380
[ 5055.980116]  __do_softirq+0xc7/0x2ae
[ 5055.980126]  __irq_exit_rcu+0x96/0xb0
[ 5055.980139]  sysvec_apic_timer_interrupt+0x72/0x90
[ 5055.980148]  </IRQ>
[ 5055.980152]  <TASK>
[ 5055.980156]  asm_sysvec_apic_timer_interrupt+0x1a/0x20
[ 5055.980167] RIP: 0010:cpuidle_enter_state+0xcc/0x440
[ 5055.980179] Code: fa b6 53 ff e8 35 f4 ff ff 8b 53 04 49 89 c5 0f 1f 44 00 00 31 ff e8 43 c4 52 ff 45 84 ff 0f 85 57 02 00 00 fb 0f 1f 44 00 00 <45> 85 f6 0f 88 85 01 00 00 49 63 d6 48 8d 04 52 48 8d 04 82 49 8d
[ 5055.980187] RSP: 0018:ffffad4340213e90 EFLAGS: 00000246
[ 5055.980197] RAX: ffff8f80df5f3440 RBX: ffffcd433fbf2140 RCX: 000000000000001f
[ 5055.980203] RDX: 000000000000000f RSI: 000000003c9b26c9 RDI: 0000000000000000
[ 5055.980208] RBP: 0000000000000004 R08: 0000000000000000 R09: 0000000000000012
[ 5055.980214] R10: 0000000000000008 R11: ffff8f80df5f1fe4 R12: ffffffffb759a500
[ 5055.980219] R13: 000004992fcca629 R14: 0000000000000004 R15: 0000000000000000
[ 5055.980229]  cpuidle_enter+0x2d/0x40
[ 5055.980238]  do_idle+0x20d/0x270
[ 5055.980253]  cpu_startup_entry+0x2a/0x30
[ 5055.980265]  start_secondary+0x11e/0x140
[ 5055.980279]  secondary_startup_64_no_verify+0x18f/0x19b
[ 5055.980294]  </TASK>
[ 5055.980298] ---[ end trace 0000000000000000 ]---


So to make the problem go away, I found that putting an unconditional call to rtl_irq_disable() up front in rtl8169_poll() is sufficient.
This seems a shame, since in almost every case, interrupts are already off at this point so it is an unnecessary write to the card.

I assume it is rtl8169_interrupt() clearing the interrupt status register while something inside rtl8169_interrupt() is going on that causes the problem, so this needs to be avoided.
I tried moving the interrupt masking around inside rtl_tx() and rtl_rx() to see if I could work out which specific place is vulnerable to the race, but it was inconclusive.


The cheap hack below seems like a more performant solution than masking interrupts unconditionally in the poll function:
If a hardware interrupt comes in and NAPI_STATE_SCHED is set, we assume we're either in the poll function already or it will be called again soon, so we can safely disable interrupts.
It has worked perfectly for me so far, although it doesn't prevent the poll function from *ever* getting called with interrupts on. I suspect it will come apart with busy polling or the like.

No doubt some sort of semaphore between the interrupt handler and poll function will be needed to decide who gets to disable interrupts.
It would be great if NAPI had a "begin polling" upcall or something...


diff --git linux-source-6.6~/drivers/net/ethernet/realtek/r8169_main.c linux-source-6.6/drivers/net/ethernet/realtek/r8169_main.c
index 81fd31f..60cf4f6 100644
--- linux-source-6.6~/drivers/net/ethernet/realtek/r8169_main.c
+++ linux-source-6.6/drivers/net/ethernet/realtek/r8169_main.c
@@ -4521,6 +4521,11 @@ release_descriptor:
        return count;
 }
 
+static inline bool napi_is_scheduled(struct napi_struct *n)
+{
+       return test_bit(NAPI_STATE_SCHED, &n->state);
+}
+
 static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
 {
        struct rtl8169_private *tp = dev_instance;
@@ -4546,7 +4551,8 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
        if (napi_schedule_prep(&tp->napi)) {
                rtl_irq_disable(tp);
                __napi_schedule(&tp->napi);
-       }
+       } else if (napi_is_scheduled(&tp->napi))
+               rtl_irq_disable(tp);
 out:
        rtl_ack_events(tp, status);

^ permalink raw reply related	[relevance 2%]

* [PATCH net-next] r8169: add support for RTL8126A
@ 2024-02-01 21:38  5% Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2024-02-01 21:38 UTC (permalink / raw)
  To: Realtek linux nic maintainers, Paolo Abeni, Eric Dumazet,
	David Miller, Jakub Kicinski
  Cc: netdev

This adds support for the RTL8126A found on Asus z790 Maximus Formula.
It was successfully tested w/o the firmware at 1000Mbps. Firmware file
has been provided by Realtek and submitted to linux-firmware.
2.5G and 5G modes are untested.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169.h          |   1 +
 drivers/net/ethernet/realtek/r8169_main.c     | 105 ++++++++++++++----
 .../net/ethernet/realtek/r8169_phy_config.c   |   7 ++
 3 files changed, 89 insertions(+), 24 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
index 81567fcf3..c921456ed 100644
--- a/drivers/net/ethernet/realtek/r8169.h
+++ b/drivers/net/ethernet/realtek/r8169.h
@@ -68,6 +68,7 @@ enum mac_version {
 	/* support for RTL_GIGA_MAC_VER_60 has been removed */
 	RTL_GIGA_MAC_VER_61,
 	RTL_GIGA_MAC_VER_63,
+	RTL_GIGA_MAC_VER_65,
 	RTL_GIGA_MAC_NONE
 };
 
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 3d30d4499..e0c2e050b 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -55,6 +55,7 @@
 #define FIRMWARE_8107E_2	"rtl_nic/rtl8107e-2.fw"
 #define FIRMWARE_8125A_3	"rtl_nic/rtl8125a-3.fw"
 #define FIRMWARE_8125B_2	"rtl_nic/rtl8125b-2.fw"
+#define FIRMWARE_8126A_2	"rtl_nic/rtl8126a-2.fw"
 
 #define TX_DMA_BURST	7	/* Maximum PCI burst, '7' is unlimited */
 #define InterFrameGap	0x03	/* 3 means InterFrameGap = the shortest one */
@@ -136,6 +137,7 @@ static const struct {
 	[RTL_GIGA_MAC_VER_61] = {"RTL8125A",		FIRMWARE_8125A_3},
 	/* reserve 62 for CFG_METHOD_4 in the vendor driver */
 	[RTL_GIGA_MAC_VER_63] = {"RTL8125B",		FIRMWARE_8125B_2},
+	[RTL_GIGA_MAC_VER_65] = {"RTL8126A",		FIRMWARE_8126A_2},
 };
 
 static const struct pci_device_id rtl8169_pci_tbl[] = {
@@ -158,6 +160,7 @@ static const struct pci_device_id rtl8169_pci_tbl[] = {
 	{ PCI_VENDOR_ID_LINKSYS, 0x1032, PCI_ANY_ID, 0x0024 },
 	{ 0x0001, 0x8168, PCI_ANY_ID, 0x2410 },
 	{ PCI_VDEVICE(REALTEK,	0x8125) },
+	{ PCI_VDEVICE(REALTEK,	0x8126) },
 	{ PCI_VDEVICE(REALTEK,	0x3000) },
 	{}
 };
@@ -327,8 +330,12 @@ enum rtl8168_registers {
 };
 
 enum rtl8125_registers {
+	INT_CFG0_8125		= 0x34,
+#define INT_CFG0_ENABLE_8125		BIT(0)
+#define INT_CFG0_CLKREQEN		BIT(3)
 	IntrMask_8125		= 0x38,
 	IntrStatus_8125		= 0x3c,
+	INT_CFG1_8125		= 0x7a,
 	TxPoll_8125		= 0x90,
 	MAC0_BKP		= 0x19e0,
 	EEE_TXIDLE_TIMER_8125	= 0x6048,
@@ -1140,7 +1147,7 @@ static void rtl_writephy(struct rtl8169_private *tp, int location, int val)
 	case RTL_GIGA_MAC_VER_31:
 		r8168dp_2_mdio_write(tp, location, val);
 		break;
-	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
 		r8168g_mdio_write(tp, location, val);
 		break;
 	default:
@@ -1155,7 +1162,7 @@ static int rtl_readphy(struct rtl8169_private *tp, int location)
 	case RTL_GIGA_MAC_VER_28:
 	case RTL_GIGA_MAC_VER_31:
 		return r8168dp_2_mdio_read(tp, location);
-	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
 		return r8168g_mdio_read(tp, location);
 	default:
 		return r8169_mdio_read(tp, location);
@@ -1341,7 +1348,7 @@ static void rtl_set_d3_pll_down(struct rtl8169_private *tp, bool enable)
 	case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_26:
 	case RTL_GIGA_MAC_VER_29 ... RTL_GIGA_MAC_VER_30:
 	case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_37:
-	case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65:
 		if (enable)
 			RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) & ~D3_NO_PLL_DOWN);
 		else
@@ -1508,7 +1515,7 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
 		break;
 	case RTL_GIGA_MAC_VER_34:
 	case RTL_GIGA_MAC_VER_37:
-	case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65:
 		if (wolopts)
 			rtl_mod_config2(tp, 0, PME_SIGNAL);
 		else
@@ -2095,6 +2102,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
 		u16 val;
 		enum mac_version ver;
 	} mac_info[] = {
+		/* 8126A family. */
+		{ 0x7cf, 0x649,	RTL_GIGA_MAC_VER_65 },
+
 		/* 8125B family. */
 		{ 0x7cf, 0x641,	RTL_GIGA_MAC_VER_63 },
 
@@ -2368,6 +2378,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
 		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
 		break;
 	case RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_65:
 		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
 			RX_PAUSE_SLOT_ON);
 		break;
@@ -2554,7 +2565,7 @@ static void rtl_wait_txrx_fifo_empty(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_61:
 		rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42);
 		break;
-	case RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_65:
 		RTL_W8(tp, ChipCmd, RTL_R8(tp, ChipCmd) | StopReq);
 		rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42);
 		rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond_2, 100, 42);
@@ -2797,7 +2808,7 @@ static void rtl_enable_exit_l1(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
 		rtl_eri_set_bits(tp, 0xd4, 0x0c00);
 		break;
-	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
 		r8168_mac_ocp_modify(tp, 0xc0ac, 0, 0x1f80);
 		break;
 	default:
@@ -2811,7 +2822,7 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38:
 		rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
 		break;
-	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
 		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
 		break;
 	default:
@@ -2821,6 +2832,8 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
 
 static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 {
+	u8 val8;
+
 	if (tp->mac_version < RTL_GIGA_MAC_VER_32)
 		return;
 
@@ -2834,11 +2847,19 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 			return;
 
 		rtl_mod_config5(tp, 0, ASPM_en);
-		rtl_mod_config2(tp, 0, ClkReqEn);
+		switch (tp->mac_version) {
+		case RTL_GIGA_MAC_VER_65:
+			val8 = RTL_R8(tp, INT_CFG0_8125) | INT_CFG0_CLKREQEN;
+			RTL_W8(tp, INT_CFG0_8125, val8);
+			break;
+		default:
+			rtl_mod_config2(tp, 0, ClkReqEn);
+			break;
+		}
 
 		switch (tp->mac_version) {
 		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
-		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
+		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
 			/* reset ephy tx/rx disable timer */
 			r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
 			/* chip can trigger L1.2 */
@@ -2850,14 +2871,22 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 	} else {
 		switch (tp->mac_version) {
 		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
-		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
+		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
 			r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
 			break;
 		default:
 			break;
 		}
 
-		rtl_mod_config2(tp, ClkReqEn, 0);
+		switch (tp->mac_version) {
+		case RTL_GIGA_MAC_VER_65:
+			val8 = RTL_R8(tp, INT_CFG0_8125) & ~INT_CFG0_CLKREQEN;
+			RTL_W8(tp, INT_CFG0_8125, val8);
+			break;
+		default:
+			rtl_mod_config2(tp, ClkReqEn, 0);
+			break;
+		}
 		rtl_mod_config5(tp, ASPM_en, 0);
 	}
 }
@@ -3570,10 +3599,15 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	/* disable new tx descriptor format */
 	r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
 
-	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
+	if (tp->mac_version == RTL_GIGA_MAC_VER_65)
+		RTL_W8(tp, 0xD8, RTL_R8(tp, 0xD8) & ~0x02);
+
+	if (tp->mac_version == RTL_GIGA_MAC_VER_65)
+		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
+	else if (tp->mac_version == RTL_GIGA_MAC_VER_63)
 		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
 	else
-		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
+		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0300);
 
 	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
 		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
@@ -3586,6 +3620,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
 	r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
 	r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
+	if (tp->mac_version == RTL_GIGA_MAC_VER_65)
+		r8168_mac_ocp_modify(tp, 0xea1c, 0x0300, 0x0000);
+	else
+		r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
 	r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
 	r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
 	r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
@@ -3600,10 +3638,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 
 	rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
 
-	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
-		rtl8125b_config_eee_mac(tp);
-	else
+	if (tp->mac_version == RTL_GIGA_MAC_VER_61)
 		rtl8125a_config_eee_mac(tp);
+	else
+		rtl8125b_config_eee_mac(tp);
 
 	rtl_disable_rxdvgate(tp);
 }
@@ -3647,6 +3685,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
 	rtl_hw_start_8125_common(tp);
 }
 
+static void rtl_hw_start_8126a(struct rtl8169_private *tp)
+{
+	rtl_set_def_aspm_entry_latency(tp);
+	rtl_hw_start_8125_common(tp);
+}
+
 static void rtl_hw_config(struct rtl8169_private *tp)
 {
 	static const rtl_generic_fct hw_configs[] = {
@@ -3689,6 +3733,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
 		[RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
 		[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
 		[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
+		[RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
 	};
 
 	if (hw_configs[tp->mac_version])
@@ -3699,9 +3744,23 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
 {
 	int i;
 
+	RTL_W8(tp, INT_CFG0_8125, 0x00);
+
 	/* disable interrupt coalescing */
-	for (i = 0xa00; i < 0xb00; i += 4)
-		RTL_W32(tp, i, 0);
+	switch (tp->mac_version) {
+	case RTL_GIGA_MAC_VER_61:
+		for (i = 0xa00; i < 0xb00; i += 4)
+			RTL_W32(tp, i, 0);
+		break;
+	case RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_65:
+		for (i = 0xa00; i < 0xa80; i += 4)
+			RTL_W32(tp, i, 0);
+		RTL_W16(tp, INT_CFG1_8125, 0x0000);
+		break;
+	default:
+		break;
+	}
 
 	rtl_hw_config(tp);
 }
@@ -3779,8 +3838,7 @@ static int rtl8169_change_mtu(struct net_device *dev, int new_mtu)
 	rtl_jumbo_config(tp);
 
 	switch (tp->mac_version) {
-	case RTL_GIGA_MAC_VER_61:
-	case RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
 		rtl8125_set_eee_txidle_timer(tp);
 		break;
 	default:
@@ -3929,7 +3987,7 @@ static void rtl8169_cleanup(struct rtl8169_private *tp)
 		RTL_W8(tp, ChipCmd, RTL_R8(tp, ChipCmd) | StopReq);
 		rtl_loop_wait_high(tp, &rtl_txcfg_empty_cond, 100, 666);
 		break;
-	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
 		rtl_enable_rxdvgate(tp);
 		fsleep(2000);
 		break;
@@ -4080,8 +4138,7 @@ static unsigned int rtl_quirk_packet_padto(struct rtl8169_private *tp,
 
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_34:
-	case RTL_GIGA_MAC_VER_61:
-	case RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
 		padto = max_t(unsigned int, padto, ETH_ZLEN);
 		break;
 	default:
@@ -5108,7 +5165,7 @@ static void rtl_hw_initialize(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
 		rtl_hw_init_8168g(tp);
 		break;
-	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
 		rtl_hw_init_8125(tp);
 		break;
 	default:
diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
index b50f16786..1f74317be 100644
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
@@ -1102,6 +1102,12 @@ static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
 	rtl8125b_config_eee_phy(phydev);
 }
 
+static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
+				   struct phy_device *phydev)
+{
+	r8169_apply_firmware(tp);
+}
+
 void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
 			 enum mac_version ver)
 {
@@ -1152,6 +1158,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
 		[RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
 		[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
+		[RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
 	};
 
 	if (phy_configs[ver])
-- 
2.43.0


^ permalink raw reply related	[relevance 5%]

* Re: Kernel Module r8169 and the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter
  2024-01-31 23:36  0%         ` Joe Salmeri
@ 2024-02-01  7:09  0%           ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2024-02-01  7:09 UTC (permalink / raw)
  To: Joe Salmeri, netdev, tiwai

On 01.02.2024 00:36, Joe Salmeri wrote:
> On 1/31/24 15:40, Heiner Kallweit wrote:
>> On 31.01.2024 17:14, Joe Salmeri wrote:
>>> On 1/30/24 14:59, Heiner Kallweit wrote:
>>>> On 30.01.2024 17:34, Joe Salmeri wrote:
>>>>> On 1/29/24 17:19, Heiner Kallweit wrote:
>>>>>> On 29.01.2024 19:31, Joe Salmeri wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I recently built a new PC using the Asus z790 Maximus Formula motherboard.
>>>>>>>
>>>>>>> The z790 Formula uses the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter.
>>>>>>>
>>>>>>> I am using openSUSE Tumbleweed build 20231228 with kernel 6.6.7-1
>>>>>>>
>>>>>>> There does not seem to be a driver for the Realtek 8126.
>>>>>>>
>>>>>>> Here is the device info from "lspci | grep -i net"
>>>>>>>
>>>>>>>        04:00.0 Network controller: Intel Corporation Device 272b (rev 1a)
>>>>>>>        05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8126 (rev 01)
>>>>>>>
>>>>>>> So it is detects the 8126 just fine it just doesn't have a driver for it.
>>>>>>>
>>>>>>> I checked realtek.com and found
>>>>>>>
>>>>>>> https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software
>>>>>>>
>>>>>>> The download link still says 8125 ( and kernel 6.4 ), but I compiled the source and since I have Secure boot enabled, I signed the
>>>>>>> resulting module file.
>>>>>>>
>>>>>>> The driver loads successfully and I now have wired networking and it has worked flawlessly for the last 2 months.
>>>>>>>
>>>>>>> I submitted a bug in Tumbleweed requesting support for the Realtek 8126 be added and was informed that the r8169 kernel module
>>>>>>> is what is used to support the older Realtek 8125 device.
>>>>>>>
>>>>>>> Since the drivers from Realtek seem to support both the r8125 and my newer r8126, the Tumbleweed support prepared a test
>>>>>>> kernel 6.6.7-1 for me where they added the PCI entry for the r8126 and I installed and tested it out.
>>>>>>>
>>>>>>> Although it does now load the r8169 module with their test kernel, the r8126 device still does not work.
>>>>>>>
>>>>>>> The only 2 lines that reference the r8169 in the dmesg log are these 2 lines:
>>>>>>>
>>>>>>> [    3.237151] r8169 0000:05:00.0: enabling device (0000 -> 0003)
>>>>>>> [    3.237289] r8169 0000:05:00.0: error -ENODEV: unknown chip XID 649, contact r8169 maintainers (see MAINTAINERS file)
>>>>>>>
>>>>>>> I reported the results of the test to Tumbleweed support and they said that additional tweaks will be needed for the r8169
>>>>>>> module to support the r8126 wired network adapter and thatn I should request to you to add support.
>>>>>>>
>>>>>>> The details of the openSUSE bug report on the issue can be found here:
>>>>>>>
>>>>>>>        https://bugzilla.suse.com/show_bug.cgi?id=1217417
>>>>>>>
>>>>>>> Could we please get support added for the r8126 - Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter added to the kernel ?
>>>>>>>
>>>>>> Thanks for the report. Actually it's not a bug report but a feature request.
>>>>>> Realtek provides no information about new chip versions and no data sheets, therefore the only
>>>>>> source of information is the r8125 vendor driver. Each chip requires a lot of version-specific
>>>>>> handling, therefore the first steps you described go in the right direction, but are by far not
>>>>>> sufficient. Patch below applies on linux-next, please test whether it works for you, and report back.
>>>>>>
>>>>>> Disclaimer:
>>>>>> r8125 references a firmware file that hasn't been provided to linux-firmware by Realtek yet.
>>>>>> Typically the firmware files tune PHY parameters to deal with compatibility issues.
>>>>>> In addition r8125 includes a lot of PHY tuning for RTL8126A.
>>>>>> Depending on cabling, link partner etc. the patch may work for you, or you may experience
>>>>>> link instability or worst case no link at all.
>>>>>>
>>>>>> Maybe RTL8126a also has a new integrated PHY version that isn't supported yet.
>>>>>> In this case the driver will complain with the following message and I'd need the PHY ID.
>>>>>> "no dedicated PHY driver found for PHY ID xxx"
>>>>> Thanks very much for your quick response.
>>>>>
>>>>> I forward your patch to the openSUSE people I have been working and they prepared a new test kernel 6.7.2 with the patches for for me to test.
>>>>>
>>>>> I just installed the test kernel provided with the patches but just as you expected it complains about no dedicated PHY driver found.
>>>>>
>>>>> Here is the dmesg | grep 8169 output with the information you requested
>>>>>
>>>>> [    3.176753] r8169 0000:05:00.0: enabling device (0000 -> 0003)
>>>>> [    3.184887] r8169 0000:05:00.0: no dedicated PHY driver found for PHY ID 0x001cc862, maybe realtek.ko needs to be added to initramfs?
>>>>> [    3.184912] r8169: probe of 0000:05:00.0 failed with error -49
>>>>>
>>>>> Thank you for your efforts.
>>>>>
>>>>> Please let me know if you need any further details.
>>>>>
>>>>>> ---
>>>>>>     drivers/net/ethernet/realtek/r8169.h          |  1 +
>>>>>>     drivers/net/ethernet/realtek/r8169_main.c     | 91 +++++++++++++++----
>>>>>>     .../net/ethernet/realtek/r8169_phy_config.c   |  1 +
>>>>>>     3 files changed, 77 insertions(+), 16 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
>>>>>> index 81567fcf3..c921456ed 100644
>>>>>> --- a/drivers/net/ethernet/realtek/r8169.h
>>>>>> +++ b/drivers/net/ethernet/realtek/r8169.h
>>>>>> @@ -68,6 +68,7 @@ enum mac_version {
>>>>>>         /* support for RTL_GIGA_MAC_VER_60 has been removed */
>>>>>>         RTL_GIGA_MAC_VER_61,
>>>>>>         RTL_GIGA_MAC_VER_63,
>>>>>> +    RTL_GIGA_MAC_VER_65,
>>>>>>         RTL_GIGA_MAC_NONE
>>>>>>     };
>>>>>>     diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
>>>>>> index e0abdbcfa..ebf7a3b13 100644
>>>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>>>>> @@ -55,6 +55,7 @@
>>>>>>     #define FIRMWARE_8107E_2    "rtl_nic/rtl8107e-2.fw"
>>>>>>     #define FIRMWARE_8125A_3    "rtl_nic/rtl8125a-3.fw"
>>>>>>     #define FIRMWARE_8125B_2    "rtl_nic/rtl8125b-2.fw"
>>>>>> +#define FIRMWARE_8126A_2    "rtl_nic/rtl8126a-2.fw"
>>>>>>       #define TX_DMA_BURST    7    /* Maximum PCI burst, '7' is unlimited */
>>>>>>     #define InterFrameGap    0x03    /* 3 means InterFrameGap = the shortest one */
>>>>>> @@ -136,6 +137,7 @@ static const struct {
>>>>>>         [RTL_GIGA_MAC_VER_61] = {"RTL8125A",        FIRMWARE_8125A_3},
>>>>>>         /* reserve 62 for CFG_METHOD_4 in the vendor driver */
>>>>>>         [RTL_GIGA_MAC_VER_63] = {"RTL8125B",        FIRMWARE_8125B_2},
>>>>>> +    [RTL_GIGA_MAC_VER_65] = {"RTL8126A",        FIRMWARE_8126A_2},
>>>>>>     };
>>>>>>       static const struct pci_device_id rtl8169_pci_tbl[] = {
>>>>>> @@ -158,6 +160,7 @@ static const struct pci_device_id rtl8169_pci_tbl[] = {
>>>>>>         { PCI_VENDOR_ID_LINKSYS, 0x1032, PCI_ANY_ID, 0x0024 },
>>>>>>         { 0x0001, 0x8168, PCI_ANY_ID, 0x2410 },
>>>>>>         { PCI_VDEVICE(REALTEK,    0x8125) },
>>>>>> +    { PCI_VDEVICE(REALTEK,    0x8126) },
>>>>>>         { PCI_VDEVICE(REALTEK,    0x3000) },
>>>>>>         {}
>>>>>>     };
>>>>>> @@ -327,8 +330,12 @@ enum rtl8168_registers {
>>>>>>     };
>>>>>>       enum rtl8125_registers {
>>>>>> +    INT_CFG0_8125        = 0x34,
>>>>>> +#define INT_CFG0_ENABLE_8125        BIT(0)
>>>>>> +#define INT_CFG0_CLKREQEN        BIT(3)
>>>>>>         IntrMask_8125        = 0x38,
>>>>>>         IntrStatus_8125        = 0x3c,
>>>>>> +    INT_CFG1_8125        = 0x7a,
>>>>>>         TxPoll_8125        = 0x90,
>>>>>>         MAC0_BKP        = 0x19e0,
>>>>>>         EEE_TXIDLE_TIMER_8125    = 0x6048,
>>>>>> @@ -1139,7 +1146,7 @@ static void rtl_writephy(struct rtl8169_private *tp, int location, int val)
>>>>>>         case RTL_GIGA_MAC_VER_31:
>>>>>>             r8168dp_2_mdio_write(tp, location, val);
>>>>>>             break;
>>>>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>>>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>>>>             r8168g_mdio_write(tp, location, val);
>>>>>>             break;
>>>>>>         default:
>>>>>> @@ -1154,7 +1161,7 @@ static int rtl_readphy(struct rtl8169_private *tp, int location)
>>>>>>         case RTL_GIGA_MAC_VER_28:
>>>>>>         case RTL_GIGA_MAC_VER_31:
>>>>>>             return r8168dp_2_mdio_read(tp, location);
>>>>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>>>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>>>>             return r8168g_mdio_read(tp, location);
>>>>>>         default:
>>>>>>             return r8169_mdio_read(tp, location);
>>>>>> @@ -1507,7 +1514,7 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
>>>>>>             break;
>>>>>>         case RTL_GIGA_MAC_VER_34:
>>>>>>         case RTL_GIGA_MAC_VER_37:
>>>>>> -    case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
>>>>>> +    case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65:
>>>>>>             if (wolopts)
>>>>>>                 rtl_mod_config2(tp, 0, PME_SIGNAL);
>>>>>>             else
>>>>>> @@ -2073,6 +2080,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
>>>>>>             u16 val;
>>>>>>             enum mac_version ver;
>>>>>>         } mac_info[] = {
>>>>>> +        /* 8126A family. */
>>>>>> +        { 0x7cf, 0x649,    RTL_GIGA_MAC_VER_65 },
>>>>>> +
>>>>>>             /* 8125B family. */
>>>>>>             { 0x7cf, 0x641,    RTL_GIGA_MAC_VER_63 },
>>>>>>     @@ -2343,6 +2353,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>>>>>>             RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>>>>>>             break;
>>>>>>         case RTL_GIGA_MAC_VER_63:
>>>>>> +    case RTL_GIGA_MAC_VER_65:
>>>>>>             RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
>>>>>>                 RX_PAUSE_SLOT_ON);
>>>>>>             break;
>>>>>> @@ -2772,7 +2783,7 @@ static void rtl_enable_exit_l1(struct rtl8169_private *tp)
>>>>>>         case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
>>>>>>             rtl_eri_set_bits(tp, 0xd4, 0x0c00);
>>>>>>             break;
>>>>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>>>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>>>>             r8168_mac_ocp_modify(tp, 0xc0ac, 0, 0x1f80);
>>>>>>             break;
>>>>>>         default:
>>>>>> @@ -2786,7 +2797,7 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
>>>>>>         case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38:
>>>>>>             rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
>>>>>>             break;
>>>>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>>>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>>>>             r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
>>>>>>             break;
>>>>>>         default:
>>>>>> @@ -2796,6 +2807,8 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
>>>>>>       static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>>>>>     {
>>>>>> +    u8 val8;
>>>>>> +
>>>>>>         if (tp->mac_version < RTL_GIGA_MAC_VER_32)
>>>>>>             return;
>>>>>>     @@ -2809,11 +2822,19 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>>>>>                 return;
>>>>>>               rtl_mod_config5(tp, 0, ASPM_en);
>>>>>> -        rtl_mod_config2(tp, 0, ClkReqEn);
>>>>>> +        switch (tp->mac_version) {
>>>>>> +        case RTL_GIGA_MAC_VER_65:
>>>>>> +            val8 = RTL_R8(tp, INT_CFG0_8125) | INT_CFG0_CLKREQEN;
>>>>>> +            RTL_W8(tp, INT_CFG0_8125, val8);
>>>>>> +            break;
>>>>>> +        default:
>>>>>> +            rtl_mod_config2(tp, 0, ClkReqEn);
>>>>>> +            break;
>>>>>> +        }
>>>>>>               switch (tp->mac_version) {
>>>>>>             case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
>>>>>> -        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
>>>>>> +        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
>>>>>>                 /* reset ephy tx/rx disable timer */
>>>>>>                 r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
>>>>>>                 /* chip can trigger L1.2 */
>>>>>> @@ -2825,14 +2846,22 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>>>>>         } else {
>>>>>>             switch (tp->mac_version) {
>>>>>>             case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
>>>>>> -        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
>>>>>> +        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
>>>>>>                 r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
>>>>>>                 break;
>>>>>>             default:
>>>>>>                 break;
>>>>>>             }
>>>>>>     -        rtl_mod_config2(tp, ClkReqEn, 0);
>>>>>> +        switch (tp->mac_version) {
>>>>>> +        case RTL_GIGA_MAC_VER_65:
>>>>>> +            val8 = RTL_R8(tp, INT_CFG0_8125) & ~INT_CFG0_CLKREQEN;
>>>>>> +            RTL_W8(tp, INT_CFG0_8125, val8);
>>>>>> +            break;
>>>>>> +        default:
>>>>>> +            rtl_mod_config2(tp, ClkReqEn, 0);
>>>>>> +            break;
>>>>>> +        }
>>>>>>             rtl_mod_config5(tp, ASPM_en, 0);
>>>>>>         }
>>>>>>     }
>>>>>> @@ -3545,10 +3574,15 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>>>>         /* disable new tx descriptor format */
>>>>>>         r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
>>>>>>     -    if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>>>>>> +        RTL_W8(tp, 0xD8, RTL_R8(tp, 0xD8) & ~0x02);
>>>>>> +
>>>>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>>>>>> +        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>>>>>> +    else if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>>>>             r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
>>>>>>         else
>>>>>> -        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>>>>>> +        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0300);
>>>>>>           if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>>>>             r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
>>>>>> @@ -3561,6 +3595,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>>>>         r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
>>>>>>         r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
>>>>>>         r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
>>>>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>>>>>> +        r8168_mac_ocp_modify(tp, 0xea1c, 0x0300, 0x0000);
>>>>>> +    else
>>>>>> +        r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
>>>>>>         r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
>>>>>>         r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
>>>>>>         r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
>>>>>> @@ -3575,10 +3613,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>>>>           rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
>>>>>>     -    if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>>>> -        rtl8125b_config_eee_mac(tp);
>>>>>> -    else
>>>>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_61)
>>>>>>             rtl8125a_config_eee_mac(tp);
>>>>>> +    else
>>>>>> +        rtl8125b_config_eee_mac(tp);
>>>>>>           rtl_disable_rxdvgate(tp);
>>>>>>     }
>>>>>> @@ -3622,6 +3660,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>>>>>>         rtl_hw_start_8125_common(tp);
>>>>>>     }
>>>>>>     +static void rtl_hw_start_8126a(struct rtl8169_private *tp)
>>>>>> +{
>>>>>> +    rtl_set_def_aspm_entry_latency(tp);
>>>>>> +    rtl_hw_start_8125_common(tp);
>>>>>> +}
>>>>>> +
>>>>>>     static void rtl_hw_config(struct rtl8169_private *tp)
>>>>>>     {
>>>>>>         static const rtl_generic_fct hw_configs[] = {
>>>>>> @@ -3664,6 +3708,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
>>>>>>             [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
>>>>>>             [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
>>>>>>             [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
>>>>>> +        [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
>>>>>>         };
>>>>>>           if (hw_configs[tp->mac_version])
>>>>>> @@ -3674,9 +3719,23 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
>>>>>>     {
>>>>>>         int i;
>>>>>>     +    RTL_W8(tp, INT_CFG0_8125, 0x00);
>>>>>> +
>>>>>>         /* disable interrupt coalescing */
>>>>>> -    for (i = 0xa00; i < 0xb00; i += 4)
>>>>>> -        RTL_W32(tp, i, 0);
>>>>>> +    switch (tp->mac_version) {
>>>>>> +    case RTL_GIGA_MAC_VER_61:
>>>>>> +        for (i = 0xa00; i < 0xb00; i += 4)
>>>>>> +            RTL_W32(tp, i, 0);
>>>>>> +        break;
>>>>>> +    case RTL_GIGA_MAC_VER_63:
>>>>>> +    case RTL_GIGA_MAC_VER_65:
>>>>>> +        for (i = 0xa00; i < 0xa80; i += 4)
>>>>>> +            RTL_W32(tp, i, 0);
>>>>>> +        RTL_W16(tp, INT_CFG1_8125, 0x0000);
>>>>>> +        break;
>>>>>> +    default:
>>>>>> +        break;
>>>>>> +    }
>>>>>>           rtl_hw_config(tp);
>>>>>>     }
>>>>>> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>>>> index b50f16786..badf78f81 100644
>>>>>> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>>>> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>>>> @@ -1152,6 +1152,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
>>>>>>             [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
>>>>>>             [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
>>>>>>             [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
>>>>>> +        [RTL_GIGA_MAC_VER_65] = NULL,
>>>>>>         };
>>>>>>           if (phy_configs[ver])
>>>> The followoing adds support for the integrated PHY.
>>>> Please apply it on-top and re-test.
>>>>
>>>> ---
>>>>    drivers/net/phy/realtek.c | 10 ++++++++++
>>>>    1 file changed, 10 insertions(+)
>>>>
>>>> diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
>>>> index 894172a3e..132784321 100644
>>>> --- a/drivers/net/phy/realtek.c
>>>> +++ b/drivers/net/phy/realtek.c
>>>> @@ -1047,6 +1047,16 @@ static struct phy_driver realtek_drvs[] = {
>>>>            .resume         = rtlgen_resume,
>>>>            .read_page      = rtl821x_read_page,
>>>>            .write_page     = rtl821x_write_page,
>>>> +    }, {
>>>> +        PHY_ID_MATCH_EXACT(0x001cc862),
>>>> +        .name           = "RTL8251B 5Gbps PHY",
>>>> +        .get_features   = rtl822x_get_features,
>>>> +        .config_aneg    = rtl822x_config_aneg,
>>>> +        .read_status    = rtl822x_read_status,
>>>> +        .suspend        = genphy_suspend,
>>>> +        .resume         = rtlgen_resume,
>>>> +        .read_page      = rtl821x_read_page,
>>>> +        .write_page     = rtl821x_write_page,
>>>>        }, {
>>>>            PHY_ID_MATCH_EXACT(0x001cc961),
>>>>            .name        = "RTL8366RB Gigabit Ethernet",
>>> Thank you !
>>>
>>> I forward your 2nd patch to the openSUSE people I have been working and they prepared a new test kernel 6.7.2 with both patches for for me to test.
>>>
>>> I just installed the test kernel provided with both patches.
>>>
>>> Here is the dmesg | grep 8169 output using this new test kernel
>>>
>>> [    3.630222] r8169 0000:05:00.0: enabling device (0000 -> 0003)
>>> [    3.632148] r8169 0000:05:00.0 eth0: RTL8126A, e8:9c:25:78:c9:bf, XID 649, IRQ 207
>>> [    3.632150] r8169 0000:05:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
>>> [    3.633218] r8169 0000:05:00.0 enp5s0: renamed from eth0
>>> [    4.212381] r8169 0000:05:00.0: Direct firmware load for rtl_nic/rtl8126a-2.fw failed with error -2
>>> [    4.212384] r8169 0000:05:00.0: Unable to load firmware rtl_nic/rtl8126a-2.fw (-2)
>>> [    4.236119] RTL8251B 5Gbps PHY r8169-0-500:00: attached PHY driver (mii_bus:phy_addr=r8169-0-500:00, irq=MAC)
>>> [    4.349625] r8169 0000:05:00.0 enp5s0: Link is Down
>>> [    7.858055] r8169 0000:05:00.0 enp5s0: Link is Up - 1Gbps/Full - flow control rx/tx
>>>
>>> Although dmesg has these 2 error messages, I have network connectivity, ran a quick speed test and am getting the correct speeds.
>>>
>> Thanks for the feedback. The firmware-related errors are expected, Realtek didn't provide the
>> firmware file to linux-firmware yet. I contacted Realtek in this matter.
>> Based on the experimental patches I'll prepare support for RTL8126A, and it should show up
>> in kernel version 6.9.
> 
> THANK YOU for all your efforts they are greatly appreciated !
> 
> I remember you mentioned about not having the firmware from Realtek but wasn't sure if the errors might mean I would run into issues.
> 
RTL NIC firmware typically isn't something executable, but a collection of tuning parameters
to deal with compatibility issues. So it may or may not work on your system.

> So far everything has been working fine all day.
> 
> Thanks for contacting Realtek about the firmware.
> 
> You mentioned support showing up in the 6.9 kernel.   Was that correct or did you mean 6.8 which comes out in March ?
> 
6.8 is already in rc phase and closed for new features.

>>> [    4.212381] r8169 0000:05:00.0: Direct firmware load for rtl_nic/rtl8126a-2.fw failed with error -2
>>> [    4.212384] r8169 0000:05:00.0: Unable to load firmware rtl_nic/rtl8126a-2.fw (-2)
>>>
>>> Here is the 'lsmod | grep 8169' results so you can see what is loaded
>>>
>>> r8169                 114688  0 mdio_devres            12288  1 r8169 libphy                245760  3 r8169,mdio_devres,realtek I will continue to test and report back if there are any network issues.
>>>
>> Please do so. Thank you
>>


^ permalink raw reply	[relevance 0%]

* Re: Kernel Module r8169 and the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter
  2024-01-31 20:40  0%       ` Heiner Kallweit
@ 2024-01-31 23:36  0%         ` Joe Salmeri
  2024-02-01  7:09  0%           ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Joe Salmeri @ 2024-01-31 23:36 UTC (permalink / raw)
  To: Heiner Kallweit, netdev, tiwai

On 1/31/24 15:40, Heiner Kallweit wrote:
> On 31.01.2024 17:14, Joe Salmeri wrote:
>> On 1/30/24 14:59, Heiner Kallweit wrote:
>>> On 30.01.2024 17:34, Joe Salmeri wrote:
>>>> On 1/29/24 17:19, Heiner Kallweit wrote:
>>>>> On 29.01.2024 19:31, Joe Salmeri wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I recently built a new PC using the Asus z790 Maximus Formula motherboard.
>>>>>>
>>>>>> The z790 Formula uses the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter.
>>>>>>
>>>>>> I am using openSUSE Tumbleweed build 20231228 with kernel 6.6.7-1
>>>>>>
>>>>>> There does not seem to be a driver for the Realtek 8126.
>>>>>>
>>>>>> Here is the device info from "lspci | grep -i net"
>>>>>>
>>>>>>        04:00.0 Network controller: Intel Corporation Device 272b (rev 1a)
>>>>>>        05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8126 (rev 01)
>>>>>>
>>>>>> So it is detects the 8126 just fine it just doesn't have a driver for it.
>>>>>>
>>>>>> I checked realtek.com and found
>>>>>>
>>>>>> https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software
>>>>>>
>>>>>> The download link still says 8125 ( and kernel 6.4 ), but I compiled the source and since I have Secure boot enabled, I signed the
>>>>>> resulting module file.
>>>>>>
>>>>>> The driver loads successfully and I now have wired networking and it has worked flawlessly for the last 2 months.
>>>>>>
>>>>>> I submitted a bug in Tumbleweed requesting support for the Realtek 8126 be added and was informed that the r8169 kernel module
>>>>>> is what is used to support the older Realtek 8125 device.
>>>>>>
>>>>>> Since the drivers from Realtek seem to support both the r8125 and my newer r8126, the Tumbleweed support prepared a test
>>>>>> kernel 6.6.7-1 for me where they added the PCI entry for the r8126 and I installed and tested it out.
>>>>>>
>>>>>> Although it does now load the r8169 module with their test kernel, the r8126 device still does not work.
>>>>>>
>>>>>> The only 2 lines that reference the r8169 in the dmesg log are these 2 lines:
>>>>>>
>>>>>> [    3.237151] r8169 0000:05:00.0: enabling device (0000 -> 0003)
>>>>>> [    3.237289] r8169 0000:05:00.0: error -ENODEV: unknown chip XID 649, contact r8169 maintainers (see MAINTAINERS file)
>>>>>>
>>>>>> I reported the results of the test to Tumbleweed support and they said that additional tweaks will be needed for the r8169
>>>>>> module to support the r8126 wired network adapter and thatn I should request to you to add support.
>>>>>>
>>>>>> The details of the openSUSE bug report on the issue can be found here:
>>>>>>
>>>>>>        https://bugzilla.suse.com/show_bug.cgi?id=1217417
>>>>>>
>>>>>> Could we please get support added for the r8126 - Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter added to the kernel ?
>>>>>>
>>>>> Thanks for the report. Actually it's not a bug report but a feature request.
>>>>> Realtek provides no information about new chip versions and no data sheets, therefore the only
>>>>> source of information is the r8125 vendor driver. Each chip requires a lot of version-specific
>>>>> handling, therefore the first steps you described go in the right direction, but are by far not
>>>>> sufficient. Patch below applies on linux-next, please test whether it works for you, and report back.
>>>>>
>>>>> Disclaimer:
>>>>> r8125 references a firmware file that hasn't been provided to linux-firmware by Realtek yet.
>>>>> Typically the firmware files tune PHY parameters to deal with compatibility issues.
>>>>> In addition r8125 includes a lot of PHY tuning for RTL8126A.
>>>>> Depending on cabling, link partner etc. the patch may work for you, or you may experience
>>>>> link instability or worst case no link at all.
>>>>>
>>>>> Maybe RTL8126a also has a new integrated PHY version that isn't supported yet.
>>>>> In this case the driver will complain with the following message and I'd need the PHY ID.
>>>>> "no dedicated PHY driver found for PHY ID xxx"
>>>> Thanks very much for your quick response.
>>>>
>>>> I forward your patch to the openSUSE people I have been working and they prepared a new test kernel 6.7.2 with the patches for for me to test.
>>>>
>>>> I just installed the test kernel provided with the patches but just as you expected it complains about no dedicated PHY driver found.
>>>>
>>>> Here is the dmesg | grep 8169 output with the information you requested
>>>>
>>>> [    3.176753] r8169 0000:05:00.0: enabling device (0000 -> 0003)
>>>> [    3.184887] r8169 0000:05:00.0: no dedicated PHY driver found for PHY ID 0x001cc862, maybe realtek.ko needs to be added to initramfs?
>>>> [    3.184912] r8169: probe of 0000:05:00.0 failed with error -49
>>>>
>>>> Thank you for your efforts.
>>>>
>>>> Please let me know if you need any further details.
>>>>
>>>>> ---
>>>>>     drivers/net/ethernet/realtek/r8169.h          |  1 +
>>>>>     drivers/net/ethernet/realtek/r8169_main.c     | 91 +++++++++++++++----
>>>>>     .../net/ethernet/realtek/r8169_phy_config.c   |  1 +
>>>>>     3 files changed, 77 insertions(+), 16 deletions(-)
>>>>>
>>>>> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
>>>>> index 81567fcf3..c921456ed 100644
>>>>> --- a/drivers/net/ethernet/realtek/r8169.h
>>>>> +++ b/drivers/net/ethernet/realtek/r8169.h
>>>>> @@ -68,6 +68,7 @@ enum mac_version {
>>>>>         /* support for RTL_GIGA_MAC_VER_60 has been removed */
>>>>>         RTL_GIGA_MAC_VER_61,
>>>>>         RTL_GIGA_MAC_VER_63,
>>>>> +    RTL_GIGA_MAC_VER_65,
>>>>>         RTL_GIGA_MAC_NONE
>>>>>     };
>>>>>     diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
>>>>> index e0abdbcfa..ebf7a3b13 100644
>>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>>>> @@ -55,6 +55,7 @@
>>>>>     #define FIRMWARE_8107E_2    "rtl_nic/rtl8107e-2.fw"
>>>>>     #define FIRMWARE_8125A_3    "rtl_nic/rtl8125a-3.fw"
>>>>>     #define FIRMWARE_8125B_2    "rtl_nic/rtl8125b-2.fw"
>>>>> +#define FIRMWARE_8126A_2    "rtl_nic/rtl8126a-2.fw"
>>>>>       #define TX_DMA_BURST    7    /* Maximum PCI burst, '7' is unlimited */
>>>>>     #define InterFrameGap    0x03    /* 3 means InterFrameGap = the shortest one */
>>>>> @@ -136,6 +137,7 @@ static const struct {
>>>>>         [RTL_GIGA_MAC_VER_61] = {"RTL8125A",        FIRMWARE_8125A_3},
>>>>>         /* reserve 62 for CFG_METHOD_4 in the vendor driver */
>>>>>         [RTL_GIGA_MAC_VER_63] = {"RTL8125B",        FIRMWARE_8125B_2},
>>>>> +    [RTL_GIGA_MAC_VER_65] = {"RTL8126A",        FIRMWARE_8126A_2},
>>>>>     };
>>>>>       static const struct pci_device_id rtl8169_pci_tbl[] = {
>>>>> @@ -158,6 +160,7 @@ static const struct pci_device_id rtl8169_pci_tbl[] = {
>>>>>         { PCI_VENDOR_ID_LINKSYS, 0x1032, PCI_ANY_ID, 0x0024 },
>>>>>         { 0x0001, 0x8168, PCI_ANY_ID, 0x2410 },
>>>>>         { PCI_VDEVICE(REALTEK,    0x8125) },
>>>>> +    { PCI_VDEVICE(REALTEK,    0x8126) },
>>>>>         { PCI_VDEVICE(REALTEK,    0x3000) },
>>>>>         {}
>>>>>     };
>>>>> @@ -327,8 +330,12 @@ enum rtl8168_registers {
>>>>>     };
>>>>>       enum rtl8125_registers {
>>>>> +    INT_CFG0_8125        = 0x34,
>>>>> +#define INT_CFG0_ENABLE_8125        BIT(0)
>>>>> +#define INT_CFG0_CLKREQEN        BIT(3)
>>>>>         IntrMask_8125        = 0x38,
>>>>>         IntrStatus_8125        = 0x3c,
>>>>> +    INT_CFG1_8125        = 0x7a,
>>>>>         TxPoll_8125        = 0x90,
>>>>>         MAC0_BKP        = 0x19e0,
>>>>>         EEE_TXIDLE_TIMER_8125    = 0x6048,
>>>>> @@ -1139,7 +1146,7 @@ static void rtl_writephy(struct rtl8169_private *tp, int location, int val)
>>>>>         case RTL_GIGA_MAC_VER_31:
>>>>>             r8168dp_2_mdio_write(tp, location, val);
>>>>>             break;
>>>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>>>             r8168g_mdio_write(tp, location, val);
>>>>>             break;
>>>>>         default:
>>>>> @@ -1154,7 +1161,7 @@ static int rtl_readphy(struct rtl8169_private *tp, int location)
>>>>>         case RTL_GIGA_MAC_VER_28:
>>>>>         case RTL_GIGA_MAC_VER_31:
>>>>>             return r8168dp_2_mdio_read(tp, location);
>>>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>>>             return r8168g_mdio_read(tp, location);
>>>>>         default:
>>>>>             return r8169_mdio_read(tp, location);
>>>>> @@ -1507,7 +1514,7 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
>>>>>             break;
>>>>>         case RTL_GIGA_MAC_VER_34:
>>>>>         case RTL_GIGA_MAC_VER_37:
>>>>> -    case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
>>>>> +    case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65:
>>>>>             if (wolopts)
>>>>>                 rtl_mod_config2(tp, 0, PME_SIGNAL);
>>>>>             else
>>>>> @@ -2073,6 +2080,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
>>>>>             u16 val;
>>>>>             enum mac_version ver;
>>>>>         } mac_info[] = {
>>>>> +        /* 8126A family. */
>>>>> +        { 0x7cf, 0x649,    RTL_GIGA_MAC_VER_65 },
>>>>> +
>>>>>             /* 8125B family. */
>>>>>             { 0x7cf, 0x641,    RTL_GIGA_MAC_VER_63 },
>>>>>     @@ -2343,6 +2353,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>>>>>             RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>>>>>             break;
>>>>>         case RTL_GIGA_MAC_VER_63:
>>>>> +    case RTL_GIGA_MAC_VER_65:
>>>>>             RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
>>>>>                 RX_PAUSE_SLOT_ON);
>>>>>             break;
>>>>> @@ -2772,7 +2783,7 @@ static void rtl_enable_exit_l1(struct rtl8169_private *tp)
>>>>>         case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
>>>>>             rtl_eri_set_bits(tp, 0xd4, 0x0c00);
>>>>>             break;
>>>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>>>             r8168_mac_ocp_modify(tp, 0xc0ac, 0, 0x1f80);
>>>>>             break;
>>>>>         default:
>>>>> @@ -2786,7 +2797,7 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
>>>>>         case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38:
>>>>>             rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
>>>>>             break;
>>>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>>>             r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
>>>>>             break;
>>>>>         default:
>>>>> @@ -2796,6 +2807,8 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
>>>>>       static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>>>>     {
>>>>> +    u8 val8;
>>>>> +
>>>>>         if (tp->mac_version < RTL_GIGA_MAC_VER_32)
>>>>>             return;
>>>>>     @@ -2809,11 +2822,19 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>>>>                 return;
>>>>>               rtl_mod_config5(tp, 0, ASPM_en);
>>>>> -        rtl_mod_config2(tp, 0, ClkReqEn);
>>>>> +        switch (tp->mac_version) {
>>>>> +        case RTL_GIGA_MAC_VER_65:
>>>>> +            val8 = RTL_R8(tp, INT_CFG0_8125) | INT_CFG0_CLKREQEN;
>>>>> +            RTL_W8(tp, INT_CFG0_8125, val8);
>>>>> +            break;
>>>>> +        default:
>>>>> +            rtl_mod_config2(tp, 0, ClkReqEn);
>>>>> +            break;
>>>>> +        }
>>>>>               switch (tp->mac_version) {
>>>>>             case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
>>>>> -        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
>>>>> +        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
>>>>>                 /* reset ephy tx/rx disable timer */
>>>>>                 r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
>>>>>                 /* chip can trigger L1.2 */
>>>>> @@ -2825,14 +2846,22 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>>>>         } else {
>>>>>             switch (tp->mac_version) {
>>>>>             case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
>>>>> -        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
>>>>> +        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
>>>>>                 r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
>>>>>                 break;
>>>>>             default:
>>>>>                 break;
>>>>>             }
>>>>>     -        rtl_mod_config2(tp, ClkReqEn, 0);
>>>>> +        switch (tp->mac_version) {
>>>>> +        case RTL_GIGA_MAC_VER_65:
>>>>> +            val8 = RTL_R8(tp, INT_CFG0_8125) & ~INT_CFG0_CLKREQEN;
>>>>> +            RTL_W8(tp, INT_CFG0_8125, val8);
>>>>> +            break;
>>>>> +        default:
>>>>> +            rtl_mod_config2(tp, ClkReqEn, 0);
>>>>> +            break;
>>>>> +        }
>>>>>             rtl_mod_config5(tp, ASPM_en, 0);
>>>>>         }
>>>>>     }
>>>>> @@ -3545,10 +3574,15 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>>>         /* disable new tx descriptor format */
>>>>>         r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
>>>>>     -    if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>>>>> +        RTL_W8(tp, 0xD8, RTL_R8(tp, 0xD8) & ~0x02);
>>>>> +
>>>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>>>>> +        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>>>>> +    else if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>>>             r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
>>>>>         else
>>>>> -        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>>>>> +        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0300);
>>>>>           if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>>>             r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
>>>>> @@ -3561,6 +3595,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>>>         r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
>>>>>         r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
>>>>>         r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
>>>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>>>>> +        r8168_mac_ocp_modify(tp, 0xea1c, 0x0300, 0x0000);
>>>>> +    else
>>>>> +        r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
>>>>>         r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
>>>>>         r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
>>>>>         r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
>>>>> @@ -3575,10 +3613,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>>>           rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
>>>>>     -    if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>>> -        rtl8125b_config_eee_mac(tp);
>>>>> -    else
>>>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_61)
>>>>>             rtl8125a_config_eee_mac(tp);
>>>>> +    else
>>>>> +        rtl8125b_config_eee_mac(tp);
>>>>>           rtl_disable_rxdvgate(tp);
>>>>>     }
>>>>> @@ -3622,6 +3660,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>>>>>         rtl_hw_start_8125_common(tp);
>>>>>     }
>>>>>     +static void rtl_hw_start_8126a(struct rtl8169_private *tp)
>>>>> +{
>>>>> +    rtl_set_def_aspm_entry_latency(tp);
>>>>> +    rtl_hw_start_8125_common(tp);
>>>>> +}
>>>>> +
>>>>>     static void rtl_hw_config(struct rtl8169_private *tp)
>>>>>     {
>>>>>         static const rtl_generic_fct hw_configs[] = {
>>>>> @@ -3664,6 +3708,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
>>>>>             [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
>>>>>             [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
>>>>>             [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
>>>>> +        [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
>>>>>         };
>>>>>           if (hw_configs[tp->mac_version])
>>>>> @@ -3674,9 +3719,23 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
>>>>>     {
>>>>>         int i;
>>>>>     +    RTL_W8(tp, INT_CFG0_8125, 0x00);
>>>>> +
>>>>>         /* disable interrupt coalescing */
>>>>> -    for (i = 0xa00; i < 0xb00; i += 4)
>>>>> -        RTL_W32(tp, i, 0);
>>>>> +    switch (tp->mac_version) {
>>>>> +    case RTL_GIGA_MAC_VER_61:
>>>>> +        for (i = 0xa00; i < 0xb00; i += 4)
>>>>> +            RTL_W32(tp, i, 0);
>>>>> +        break;
>>>>> +    case RTL_GIGA_MAC_VER_63:
>>>>> +    case RTL_GIGA_MAC_VER_65:
>>>>> +        for (i = 0xa00; i < 0xa80; i += 4)
>>>>> +            RTL_W32(tp, i, 0);
>>>>> +        RTL_W16(tp, INT_CFG1_8125, 0x0000);
>>>>> +        break;
>>>>> +    default:
>>>>> +        break;
>>>>> +    }
>>>>>           rtl_hw_config(tp);
>>>>>     }
>>>>> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>>> index b50f16786..badf78f81 100644
>>>>> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>>> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>>> @@ -1152,6 +1152,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
>>>>>             [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
>>>>>             [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
>>>>>             [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
>>>>> +        [RTL_GIGA_MAC_VER_65] = NULL,
>>>>>         };
>>>>>           if (phy_configs[ver])
>>> The followoing adds support for the integrated PHY.
>>> Please apply it on-top and re-test.
>>>
>>> ---
>>>    drivers/net/phy/realtek.c | 10 ++++++++++
>>>    1 file changed, 10 insertions(+)
>>>
>>> diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
>>> index 894172a3e..132784321 100644
>>> --- a/drivers/net/phy/realtek.c
>>> +++ b/drivers/net/phy/realtek.c
>>> @@ -1047,6 +1047,16 @@ static struct phy_driver realtek_drvs[] = {
>>>            .resume         = rtlgen_resume,
>>>            .read_page      = rtl821x_read_page,
>>>            .write_page     = rtl821x_write_page,
>>> +    }, {
>>> +        PHY_ID_MATCH_EXACT(0x001cc862),
>>> +        .name           = "RTL8251B 5Gbps PHY",
>>> +        .get_features   = rtl822x_get_features,
>>> +        .config_aneg    = rtl822x_config_aneg,
>>> +        .read_status    = rtl822x_read_status,
>>> +        .suspend        = genphy_suspend,
>>> +        .resume         = rtlgen_resume,
>>> +        .read_page      = rtl821x_read_page,
>>> +        .write_page     = rtl821x_write_page,
>>>        }, {
>>>            PHY_ID_MATCH_EXACT(0x001cc961),
>>>            .name        = "RTL8366RB Gigabit Ethernet",
>> Thank you !
>>
>> I forward your 2nd patch to the openSUSE people I have been working and they prepared a new test kernel 6.7.2 with both patches for for me to test.
>>
>> I just installed the test kernel provided with both patches.
>>
>> Here is the dmesg | grep 8169 output using this new test kernel
>>
>> [    3.630222] r8169 0000:05:00.0: enabling device (0000 -> 0003)
>> [    3.632148] r8169 0000:05:00.0 eth0: RTL8126A, e8:9c:25:78:c9:bf, XID 649, IRQ 207
>> [    3.632150] r8169 0000:05:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
>> [    3.633218] r8169 0000:05:00.0 enp5s0: renamed from eth0
>> [    4.212381] r8169 0000:05:00.0: Direct firmware load for rtl_nic/rtl8126a-2.fw failed with error -2
>> [    4.212384] r8169 0000:05:00.0: Unable to load firmware rtl_nic/rtl8126a-2.fw (-2)
>> [    4.236119] RTL8251B 5Gbps PHY r8169-0-500:00: attached PHY driver (mii_bus:phy_addr=r8169-0-500:00, irq=MAC)
>> [    4.349625] r8169 0000:05:00.0 enp5s0: Link is Down
>> [    7.858055] r8169 0000:05:00.0 enp5s0: Link is Up - 1Gbps/Full - flow control rx/tx
>>
>> Although dmesg has these 2 error messages, I have network connectivity, ran a quick speed test and am getting the correct speeds.
>>
> Thanks for the feedback. The firmware-related errors are expected, Realtek didn't provide the
> firmware file to linux-firmware yet. I contacted Realtek in this matter.
> Based on the experimental patches I'll prepare support for RTL8126A, and it should show up
> in kernel version 6.9.

THANK YOU for all your efforts they are greatly appreciated !

I remember you mentioned about not having the firmware from Realtek but 
wasn't sure if the errors might mean I would run into issues.

So far everything has been working fine all day.

Thanks for contacting Realtek about the firmware.

You mentioned support showing up in the 6.9 kernel.   Was that correct 
or did you mean 6.8 which comes out in March ?

>> [    4.212381] r8169 0000:05:00.0: Direct firmware load for rtl_nic/rtl8126a-2.fw failed with error -2
>> [    4.212384] r8169 0000:05:00.0: Unable to load firmware rtl_nic/rtl8126a-2.fw (-2)
>>
>> Here is the 'lsmod | grep 8169' results so you can see what is loaded
>>
>> r8169                 114688  0 mdio_devres            12288  1 r8169 libphy                245760  3 r8169,mdio_devres,realtek I will continue to test and report back if there are any network issues.
>>
> Please do so. Thank you
>
-- 
Regards,

Joe


^ permalink raw reply	[relevance 0%]

* Re: Kernel Module r8169 and the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter
  2024-01-31 16:14  0%     ` Joe Salmeri
@ 2024-01-31 20:40  0%       ` Heiner Kallweit
  2024-01-31 23:36  0%         ` Joe Salmeri
  0 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2024-01-31 20:40 UTC (permalink / raw)
  To: Joe Salmeri, netdev, tiwai

On 31.01.2024 17:14, Joe Salmeri wrote:
> On 1/30/24 14:59, Heiner Kallweit wrote:
>> On 30.01.2024 17:34, Joe Salmeri wrote:
>>> On 1/29/24 17:19, Heiner Kallweit wrote:
>>>> On 29.01.2024 19:31, Joe Salmeri wrote:
>>>>> Hi,
>>>>>
>>>>> I recently built a new PC using the Asus z790 Maximus Formula motherboard.
>>>>>
>>>>> The z790 Formula uses the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter.
>>>>>
>>>>> I am using openSUSE Tumbleweed build 20231228 with kernel 6.6.7-1
>>>>>
>>>>> There does not seem to be a driver for the Realtek 8126.
>>>>>
>>>>> Here is the device info from "lspci | grep -i net"
>>>>>
>>>>>       04:00.0 Network controller: Intel Corporation Device 272b (rev 1a)
>>>>>       05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8126 (rev 01)
>>>>>
>>>>> So it is detects the 8126 just fine it just doesn't have a driver for it.
>>>>>
>>>>> I checked realtek.com and found
>>>>>
>>>>> https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software
>>>>>
>>>>> The download link still says 8125 ( and kernel 6.4 ), but I compiled the source and since I have Secure boot enabled, I signed the
>>>>> resulting module file.
>>>>>
>>>>> The driver loads successfully and I now have wired networking and it has worked flawlessly for the last 2 months.
>>>>>
>>>>> I submitted a bug in Tumbleweed requesting support for the Realtek 8126 be added and was informed that the r8169 kernel module
>>>>> is what is used to support the older Realtek 8125 device.
>>>>>
>>>>> Since the drivers from Realtek seem to support both the r8125 and my newer r8126, the Tumbleweed support prepared a test
>>>>> kernel 6.6.7-1 for me where they added the PCI entry for the r8126 and I installed and tested it out.
>>>>>
>>>>> Although it does now load the r8169 module with their test kernel, the r8126 device still does not work.
>>>>>
>>>>> The only 2 lines that reference the r8169 in the dmesg log are these 2 lines:
>>>>>
>>>>> [    3.237151] r8169 0000:05:00.0: enabling device (0000 -> 0003)
>>>>> [    3.237289] r8169 0000:05:00.0: error -ENODEV: unknown chip XID 649, contact r8169 maintainers (see MAINTAINERS file)
>>>>>
>>>>> I reported the results of the test to Tumbleweed support and they said that additional tweaks will be needed for the r8169
>>>>> module to support the r8126 wired network adapter and thatn I should request to you to add support.
>>>>>
>>>>> The details of the openSUSE bug report on the issue can be found here:
>>>>>
>>>>>       https://bugzilla.suse.com/show_bug.cgi?id=1217417
>>>>>
>>>>> Could we please get support added for the r8126 - Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter added to the kernel ?
>>>>>
>>>> Thanks for the report. Actually it's not a bug report but a feature request.
>>>> Realtek provides no information about new chip versions and no data sheets, therefore the only
>>>> source of information is the r8125 vendor driver. Each chip requires a lot of version-specific
>>>> handling, therefore the first steps you described go in the right direction, but are by far not
>>>> sufficient. Patch below applies on linux-next, please test whether it works for you, and report back.
>>>>
>>>> Disclaimer:
>>>> r8125 references a firmware file that hasn't been provided to linux-firmware by Realtek yet.
>>>> Typically the firmware files tune PHY parameters to deal with compatibility issues.
>>>> In addition r8125 includes a lot of PHY tuning for RTL8126A.
>>>> Depending on cabling, link partner etc. the patch may work for you, or you may experience
>>>> link instability or worst case no link at all.
>>>>
>>>> Maybe RTL8126a also has a new integrated PHY version that isn't supported yet.
>>>> In this case the driver will complain with the following message and I'd need the PHY ID.
>>>> "no dedicated PHY driver found for PHY ID xxx"
>>> Thanks very much for your quick response.
>>>
>>> I forward your patch to the openSUSE people I have been working and they prepared a new test kernel 6.7.2 with the patches for for me to test.
>>>
>>> I just installed the test kernel provided with the patches but just as you expected it complains about no dedicated PHY driver found.
>>>
>>> Here is the dmesg | grep 8169 output with the information you requested
>>>
>>> [    3.176753] r8169 0000:05:00.0: enabling device (0000 -> 0003)
>>> [    3.184887] r8169 0000:05:00.0: no dedicated PHY driver found for PHY ID 0x001cc862, maybe realtek.ko needs to be added to initramfs?
>>> [    3.184912] r8169: probe of 0000:05:00.0 failed with error -49
>>>
>>> Thank you for your efforts.
>>>
>>> Please let me know if you need any further details.
>>>
>>>> ---
>>>>    drivers/net/ethernet/realtek/r8169.h          |  1 +
>>>>    drivers/net/ethernet/realtek/r8169_main.c     | 91 +++++++++++++++----
>>>>    .../net/ethernet/realtek/r8169_phy_config.c   |  1 +
>>>>    3 files changed, 77 insertions(+), 16 deletions(-)
>>>>
>>>> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
>>>> index 81567fcf3..c921456ed 100644
>>>> --- a/drivers/net/ethernet/realtek/r8169.h
>>>> +++ b/drivers/net/ethernet/realtek/r8169.h
>>>> @@ -68,6 +68,7 @@ enum mac_version {
>>>>        /* support for RTL_GIGA_MAC_VER_60 has been removed */
>>>>        RTL_GIGA_MAC_VER_61,
>>>>        RTL_GIGA_MAC_VER_63,
>>>> +    RTL_GIGA_MAC_VER_65,
>>>>        RTL_GIGA_MAC_NONE
>>>>    };
>>>>    diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
>>>> index e0abdbcfa..ebf7a3b13 100644
>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>>> @@ -55,6 +55,7 @@
>>>>    #define FIRMWARE_8107E_2    "rtl_nic/rtl8107e-2.fw"
>>>>    #define FIRMWARE_8125A_3    "rtl_nic/rtl8125a-3.fw"
>>>>    #define FIRMWARE_8125B_2    "rtl_nic/rtl8125b-2.fw"
>>>> +#define FIRMWARE_8126A_2    "rtl_nic/rtl8126a-2.fw"
>>>>      #define TX_DMA_BURST    7    /* Maximum PCI burst, '7' is unlimited */
>>>>    #define InterFrameGap    0x03    /* 3 means InterFrameGap = the shortest one */
>>>> @@ -136,6 +137,7 @@ static const struct {
>>>>        [RTL_GIGA_MAC_VER_61] = {"RTL8125A",        FIRMWARE_8125A_3},
>>>>        /* reserve 62 for CFG_METHOD_4 in the vendor driver */
>>>>        [RTL_GIGA_MAC_VER_63] = {"RTL8125B",        FIRMWARE_8125B_2},
>>>> +    [RTL_GIGA_MAC_VER_65] = {"RTL8126A",        FIRMWARE_8126A_2},
>>>>    };
>>>>      static const struct pci_device_id rtl8169_pci_tbl[] = {
>>>> @@ -158,6 +160,7 @@ static const struct pci_device_id rtl8169_pci_tbl[] = {
>>>>        { PCI_VENDOR_ID_LINKSYS, 0x1032, PCI_ANY_ID, 0x0024 },
>>>>        { 0x0001, 0x8168, PCI_ANY_ID, 0x2410 },
>>>>        { PCI_VDEVICE(REALTEK,    0x8125) },
>>>> +    { PCI_VDEVICE(REALTEK,    0x8126) },
>>>>        { PCI_VDEVICE(REALTEK,    0x3000) },
>>>>        {}
>>>>    };
>>>> @@ -327,8 +330,12 @@ enum rtl8168_registers {
>>>>    };
>>>>      enum rtl8125_registers {
>>>> +    INT_CFG0_8125        = 0x34,
>>>> +#define INT_CFG0_ENABLE_8125        BIT(0)
>>>> +#define INT_CFG0_CLKREQEN        BIT(3)
>>>>        IntrMask_8125        = 0x38,
>>>>        IntrStatus_8125        = 0x3c,
>>>> +    INT_CFG1_8125        = 0x7a,
>>>>        TxPoll_8125        = 0x90,
>>>>        MAC0_BKP        = 0x19e0,
>>>>        EEE_TXIDLE_TIMER_8125    = 0x6048,
>>>> @@ -1139,7 +1146,7 @@ static void rtl_writephy(struct rtl8169_private *tp, int location, int val)
>>>>        case RTL_GIGA_MAC_VER_31:
>>>>            r8168dp_2_mdio_write(tp, location, val);
>>>>            break;
>>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>>            r8168g_mdio_write(tp, location, val);
>>>>            break;
>>>>        default:
>>>> @@ -1154,7 +1161,7 @@ static int rtl_readphy(struct rtl8169_private *tp, int location)
>>>>        case RTL_GIGA_MAC_VER_28:
>>>>        case RTL_GIGA_MAC_VER_31:
>>>>            return r8168dp_2_mdio_read(tp, location);
>>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>>            return r8168g_mdio_read(tp, location);
>>>>        default:
>>>>            return r8169_mdio_read(tp, location);
>>>> @@ -1507,7 +1514,7 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
>>>>            break;
>>>>        case RTL_GIGA_MAC_VER_34:
>>>>        case RTL_GIGA_MAC_VER_37:
>>>> -    case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
>>>> +    case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65:
>>>>            if (wolopts)
>>>>                rtl_mod_config2(tp, 0, PME_SIGNAL);
>>>>            else
>>>> @@ -2073,6 +2080,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
>>>>            u16 val;
>>>>            enum mac_version ver;
>>>>        } mac_info[] = {
>>>> +        /* 8126A family. */
>>>> +        { 0x7cf, 0x649,    RTL_GIGA_MAC_VER_65 },
>>>> +
>>>>            /* 8125B family. */
>>>>            { 0x7cf, 0x641,    RTL_GIGA_MAC_VER_63 },
>>>>    @@ -2343,6 +2353,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>>>>            RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>>>>            break;
>>>>        case RTL_GIGA_MAC_VER_63:
>>>> +    case RTL_GIGA_MAC_VER_65:
>>>>            RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
>>>>                RX_PAUSE_SLOT_ON);
>>>>            break;
>>>> @@ -2772,7 +2783,7 @@ static void rtl_enable_exit_l1(struct rtl8169_private *tp)
>>>>        case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
>>>>            rtl_eri_set_bits(tp, 0xd4, 0x0c00);
>>>>            break;
>>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>>            r8168_mac_ocp_modify(tp, 0xc0ac, 0, 0x1f80);
>>>>            break;
>>>>        default:
>>>> @@ -2786,7 +2797,7 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
>>>>        case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38:
>>>>            rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
>>>>            break;
>>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>>            r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
>>>>            break;
>>>>        default:
>>>> @@ -2796,6 +2807,8 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
>>>>      static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>>>    {
>>>> +    u8 val8;
>>>> +
>>>>        if (tp->mac_version < RTL_GIGA_MAC_VER_32)
>>>>            return;
>>>>    @@ -2809,11 +2822,19 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>>>                return;
>>>>              rtl_mod_config5(tp, 0, ASPM_en);
>>>> -        rtl_mod_config2(tp, 0, ClkReqEn);
>>>> +        switch (tp->mac_version) {
>>>> +        case RTL_GIGA_MAC_VER_65:
>>>> +            val8 = RTL_R8(tp, INT_CFG0_8125) | INT_CFG0_CLKREQEN;
>>>> +            RTL_W8(tp, INT_CFG0_8125, val8);
>>>> +            break;
>>>> +        default:
>>>> +            rtl_mod_config2(tp, 0, ClkReqEn);
>>>> +            break;
>>>> +        }
>>>>              switch (tp->mac_version) {
>>>>            case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
>>>> -        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
>>>> +        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
>>>>                /* reset ephy tx/rx disable timer */
>>>>                r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
>>>>                /* chip can trigger L1.2 */
>>>> @@ -2825,14 +2846,22 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>>>        } else {
>>>>            switch (tp->mac_version) {
>>>>            case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
>>>> -        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
>>>> +        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
>>>>                r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
>>>>                break;
>>>>            default:
>>>>                break;
>>>>            }
>>>>    -        rtl_mod_config2(tp, ClkReqEn, 0);
>>>> +        switch (tp->mac_version) {
>>>> +        case RTL_GIGA_MAC_VER_65:
>>>> +            val8 = RTL_R8(tp, INT_CFG0_8125) & ~INT_CFG0_CLKREQEN;
>>>> +            RTL_W8(tp, INT_CFG0_8125, val8);
>>>> +            break;
>>>> +        default:
>>>> +            rtl_mod_config2(tp, ClkReqEn, 0);
>>>> +            break;
>>>> +        }
>>>>            rtl_mod_config5(tp, ASPM_en, 0);
>>>>        }
>>>>    }
>>>> @@ -3545,10 +3574,15 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>>        /* disable new tx descriptor format */
>>>>        r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
>>>>    -    if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>>>> +        RTL_W8(tp, 0xD8, RTL_R8(tp, 0xD8) & ~0x02);
>>>> +
>>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>>>> +        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>>>> +    else if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>>            r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
>>>>        else
>>>> -        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>>>> +        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0300);
>>>>          if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>>            r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
>>>> @@ -3561,6 +3595,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>>        r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
>>>>        r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
>>>>        r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
>>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>>>> +        r8168_mac_ocp_modify(tp, 0xea1c, 0x0300, 0x0000);
>>>> +    else
>>>> +        r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
>>>>        r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
>>>>        r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
>>>>        r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
>>>> @@ -3575,10 +3613,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>>          rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
>>>>    -    if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>> -        rtl8125b_config_eee_mac(tp);
>>>> -    else
>>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_61)
>>>>            rtl8125a_config_eee_mac(tp);
>>>> +    else
>>>> +        rtl8125b_config_eee_mac(tp);
>>>>          rtl_disable_rxdvgate(tp);
>>>>    }
>>>> @@ -3622,6 +3660,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>>>>        rtl_hw_start_8125_common(tp);
>>>>    }
>>>>    +static void rtl_hw_start_8126a(struct rtl8169_private *tp)
>>>> +{
>>>> +    rtl_set_def_aspm_entry_latency(tp);
>>>> +    rtl_hw_start_8125_common(tp);
>>>> +}
>>>> +
>>>>    static void rtl_hw_config(struct rtl8169_private *tp)
>>>>    {
>>>>        static const rtl_generic_fct hw_configs[] = {
>>>> @@ -3664,6 +3708,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
>>>>            [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
>>>>            [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
>>>>            [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
>>>> +        [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
>>>>        };
>>>>          if (hw_configs[tp->mac_version])
>>>> @@ -3674,9 +3719,23 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
>>>>    {
>>>>        int i;
>>>>    +    RTL_W8(tp, INT_CFG0_8125, 0x00);
>>>> +
>>>>        /* disable interrupt coalescing */
>>>> -    for (i = 0xa00; i < 0xb00; i += 4)
>>>> -        RTL_W32(tp, i, 0);
>>>> +    switch (tp->mac_version) {
>>>> +    case RTL_GIGA_MAC_VER_61:
>>>> +        for (i = 0xa00; i < 0xb00; i += 4)
>>>> +            RTL_W32(tp, i, 0);
>>>> +        break;
>>>> +    case RTL_GIGA_MAC_VER_63:
>>>> +    case RTL_GIGA_MAC_VER_65:
>>>> +        for (i = 0xa00; i < 0xa80; i += 4)
>>>> +            RTL_W32(tp, i, 0);
>>>> +        RTL_W16(tp, INT_CFG1_8125, 0x0000);
>>>> +        break;
>>>> +    default:
>>>> +        break;
>>>> +    }
>>>>          rtl_hw_config(tp);
>>>>    }
>>>> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>> index b50f16786..badf78f81 100644
>>>> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>> @@ -1152,6 +1152,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
>>>>            [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
>>>>            [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
>>>>            [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
>>>> +        [RTL_GIGA_MAC_VER_65] = NULL,
>>>>        };
>>>>          if (phy_configs[ver])
>>>
>> The followoing adds support for the integrated PHY.
>> Please apply it on-top and re-test.
>>
>> ---
>>   drivers/net/phy/realtek.c | 10 ++++++++++
>>   1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
>> index 894172a3e..132784321 100644
>> --- a/drivers/net/phy/realtek.c
>> +++ b/drivers/net/phy/realtek.c
>> @@ -1047,6 +1047,16 @@ static struct phy_driver realtek_drvs[] = {
>>           .resume         = rtlgen_resume,
>>           .read_page      = rtl821x_read_page,
>>           .write_page     = rtl821x_write_page,
>> +    }, {
>> +        PHY_ID_MATCH_EXACT(0x001cc862),
>> +        .name           = "RTL8251B 5Gbps PHY",
>> +        .get_features   = rtl822x_get_features,
>> +        .config_aneg    = rtl822x_config_aneg,
>> +        .read_status    = rtl822x_read_status,
>> +        .suspend        = genphy_suspend,
>> +        .resume         = rtlgen_resume,
>> +        .read_page      = rtl821x_read_page,
>> +        .write_page     = rtl821x_write_page,
>>       }, {
>>           PHY_ID_MATCH_EXACT(0x001cc961),
>>           .name        = "RTL8366RB Gigabit Ethernet",
> 
> Thank you !
> 
> I forward your 2nd patch to the openSUSE people I have been working and they prepared a new test kernel 6.7.2 with both patches for for me to test.
> 
> I just installed the test kernel provided with both patches.
> 
> Here is the dmesg | grep 8169 output using this new test kernel
> 
> [    3.630222] r8169 0000:05:00.0: enabling device (0000 -> 0003)
> [    3.632148] r8169 0000:05:00.0 eth0: RTL8126A, e8:9c:25:78:c9:bf, XID 649, IRQ 207
> [    3.632150] r8169 0000:05:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
> [    3.633218] r8169 0000:05:00.0 enp5s0: renamed from eth0
> [    4.212381] r8169 0000:05:00.0: Direct firmware load for rtl_nic/rtl8126a-2.fw failed with error -2
> [    4.212384] r8169 0000:05:00.0: Unable to load firmware rtl_nic/rtl8126a-2.fw (-2)
> [    4.236119] RTL8251B 5Gbps PHY r8169-0-500:00: attached PHY driver (mii_bus:phy_addr=r8169-0-500:00, irq=MAC)
> [    4.349625] r8169 0000:05:00.0 enp5s0: Link is Down
> [    7.858055] r8169 0000:05:00.0 enp5s0: Link is Up - 1Gbps/Full - flow control rx/tx
> 
> Although dmesg has these 2 error messages, I have network connectivity, ran a quick speed test and am getting the correct speeds.
> 
Thanks for the feedback. The firmware-related errors are expected, Realtek didn't provide the
firmware file to linux-firmware yet. I contacted Realtek in this matter.
Based on the experimental patches I'll prepare support for RTL8126A, and it should show up
in kernel version 6.9.

> [    4.212381] r8169 0000:05:00.0: Direct firmware load for rtl_nic/rtl8126a-2.fw failed with error -2
> [    4.212384] r8169 0000:05:00.0: Unable to load firmware rtl_nic/rtl8126a-2.fw (-2)
> 
> Here is the 'lsmod | grep 8169' results so you can see what is loaded
> 
> r8169                 114688  0 mdio_devres            12288  1 r8169 libphy                245760  3 r8169,mdio_devres,realtek I will continue to test and report back if there are any network issues.
> 
Please do so. Thank you


^ permalink raw reply	[relevance 0%]

* Re: Kernel Module r8169 and the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter
  2024-01-30 19:59  0%   ` Heiner Kallweit
@ 2024-01-31 16:14  0%     ` Joe Salmeri
  2024-01-31 20:40  0%       ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Joe Salmeri @ 2024-01-31 16:14 UTC (permalink / raw)
  To: Heiner Kallweit, netdev, tiwai

On 1/30/24 14:59, Heiner Kallweit wrote:
> On 30.01.2024 17:34, Joe Salmeri wrote:
>> On 1/29/24 17:19, Heiner Kallweit wrote:
>>> On 29.01.2024 19:31, Joe Salmeri wrote:
>>>> Hi,
>>>>
>>>> I recently built a new PC using the Asus z790 Maximus Formula motherboard.
>>>>
>>>> The z790 Formula uses the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter.
>>>>
>>>> I am using openSUSE Tumbleweed build 20231228 with kernel 6.6.7-1
>>>>
>>>> There does not seem to be a driver for the Realtek 8126.
>>>>
>>>> Here is the device info from "lspci | grep -i net"
>>>>
>>>>       04:00.0 Network controller: Intel Corporation Device 272b (rev 1a)
>>>>       05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8126 (rev 01)
>>>>
>>>> So it is detects the 8126 just fine it just doesn't have a driver for it.
>>>>
>>>> I checked realtek.com and found
>>>>
>>>> https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software
>>>>
>>>> The download link still says 8125 ( and kernel 6.4 ), but I compiled the source and since I have Secure boot enabled, I signed the
>>>> resulting module file.
>>>>
>>>> The driver loads successfully and I now have wired networking and it has worked flawlessly for the last 2 months.
>>>>
>>>> I submitted a bug in Tumbleweed requesting support for the Realtek 8126 be added and was informed that the r8169 kernel module
>>>> is what is used to support the older Realtek 8125 device.
>>>>
>>>> Since the drivers from Realtek seem to support both the r8125 and my newer r8126, the Tumbleweed support prepared a test
>>>> kernel 6.6.7-1 for me where they added the PCI entry for the r8126 and I installed and tested it out.
>>>>
>>>> Although it does now load the r8169 module with their test kernel, the r8126 device still does not work.
>>>>
>>>> The only 2 lines that reference the r8169 in the dmesg log are these 2 lines:
>>>>
>>>> [    3.237151] r8169 0000:05:00.0: enabling device (0000 -> 0003)
>>>> [    3.237289] r8169 0000:05:00.0: error -ENODEV: unknown chip XID 649, contact r8169 maintainers (see MAINTAINERS file)
>>>>
>>>> I reported the results of the test to Tumbleweed support and they said that additional tweaks will be needed for the r8169
>>>> module to support the r8126 wired network adapter and thatn I should request to you to add support.
>>>>
>>>> The details of the openSUSE bug report on the issue can be found here:
>>>>
>>>>       https://bugzilla.suse.com/show_bug.cgi?id=1217417
>>>>
>>>> Could we please get support added for the r8126 - Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter added to the kernel ?
>>>>
>>> Thanks for the report. Actually it's not a bug report but a feature request.
>>> Realtek provides no information about new chip versions and no data sheets, therefore the only
>>> source of information is the r8125 vendor driver. Each chip requires a lot of version-specific
>>> handling, therefore the first steps you described go in the right direction, but are by far not
>>> sufficient. Patch below applies on linux-next, please test whether it works for you, and report back.
>>>
>>> Disclaimer:
>>> r8125 references a firmware file that hasn't been provided to linux-firmware by Realtek yet.
>>> Typically the firmware files tune PHY parameters to deal with compatibility issues.
>>> In addition r8125 includes a lot of PHY tuning for RTL8126A.
>>> Depending on cabling, link partner etc. the patch may work for you, or you may experience
>>> link instability or worst case no link at all.
>>>
>>> Maybe RTL8126a also has a new integrated PHY version that isn't supported yet.
>>> In this case the driver will complain with the following message and I'd need the PHY ID.
>>> "no dedicated PHY driver found for PHY ID xxx"
>> Thanks very much for your quick response.
>>
>> I forward your patch to the openSUSE people I have been working and they prepared a new test kernel 6.7.2 with the patches for for me to test.
>>
>> I just installed the test kernel provided with the patches but just as you expected it complains about no dedicated PHY driver found.
>>
>> Here is the dmesg | grep 8169 output with the information you requested
>>
>> [    3.176753] r8169 0000:05:00.0: enabling device (0000 -> 0003)
>> [    3.184887] r8169 0000:05:00.0: no dedicated PHY driver found for PHY ID 0x001cc862, maybe realtek.ko needs to be added to initramfs?
>> [    3.184912] r8169: probe of 0000:05:00.0 failed with error -49
>>
>> Thank you for your efforts.
>>
>> Please let me know if you need any further details.
>>
>>> ---
>>>    drivers/net/ethernet/realtek/r8169.h          |  1 +
>>>    drivers/net/ethernet/realtek/r8169_main.c     | 91 +++++++++++++++----
>>>    .../net/ethernet/realtek/r8169_phy_config.c   |  1 +
>>>    3 files changed, 77 insertions(+), 16 deletions(-)
>>>
>>> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
>>> index 81567fcf3..c921456ed 100644
>>> --- a/drivers/net/ethernet/realtek/r8169.h
>>> +++ b/drivers/net/ethernet/realtek/r8169.h
>>> @@ -68,6 +68,7 @@ enum mac_version {
>>>        /* support for RTL_GIGA_MAC_VER_60 has been removed */
>>>        RTL_GIGA_MAC_VER_61,
>>>        RTL_GIGA_MAC_VER_63,
>>> +    RTL_GIGA_MAC_VER_65,
>>>        RTL_GIGA_MAC_NONE
>>>    };
>>>    diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
>>> index e0abdbcfa..ebf7a3b13 100644
>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>> @@ -55,6 +55,7 @@
>>>    #define FIRMWARE_8107E_2    "rtl_nic/rtl8107e-2.fw"
>>>    #define FIRMWARE_8125A_3    "rtl_nic/rtl8125a-3.fw"
>>>    #define FIRMWARE_8125B_2    "rtl_nic/rtl8125b-2.fw"
>>> +#define FIRMWARE_8126A_2    "rtl_nic/rtl8126a-2.fw"
>>>      #define TX_DMA_BURST    7    /* Maximum PCI burst, '7' is unlimited */
>>>    #define InterFrameGap    0x03    /* 3 means InterFrameGap = the shortest one */
>>> @@ -136,6 +137,7 @@ static const struct {
>>>        [RTL_GIGA_MAC_VER_61] = {"RTL8125A",        FIRMWARE_8125A_3},
>>>        /* reserve 62 for CFG_METHOD_4 in the vendor driver */
>>>        [RTL_GIGA_MAC_VER_63] = {"RTL8125B",        FIRMWARE_8125B_2},
>>> +    [RTL_GIGA_MAC_VER_65] = {"RTL8126A",        FIRMWARE_8126A_2},
>>>    };
>>>      static const struct pci_device_id rtl8169_pci_tbl[] = {
>>> @@ -158,6 +160,7 @@ static const struct pci_device_id rtl8169_pci_tbl[] = {
>>>        { PCI_VENDOR_ID_LINKSYS, 0x1032, PCI_ANY_ID, 0x0024 },
>>>        { 0x0001, 0x8168, PCI_ANY_ID, 0x2410 },
>>>        { PCI_VDEVICE(REALTEK,    0x8125) },
>>> +    { PCI_VDEVICE(REALTEK,    0x8126) },
>>>        { PCI_VDEVICE(REALTEK,    0x3000) },
>>>        {}
>>>    };
>>> @@ -327,8 +330,12 @@ enum rtl8168_registers {
>>>    };
>>>      enum rtl8125_registers {
>>> +    INT_CFG0_8125        = 0x34,
>>> +#define INT_CFG0_ENABLE_8125        BIT(0)
>>> +#define INT_CFG0_CLKREQEN        BIT(3)
>>>        IntrMask_8125        = 0x38,
>>>        IntrStatus_8125        = 0x3c,
>>> +    INT_CFG1_8125        = 0x7a,
>>>        TxPoll_8125        = 0x90,
>>>        MAC0_BKP        = 0x19e0,
>>>        EEE_TXIDLE_TIMER_8125    = 0x6048,
>>> @@ -1139,7 +1146,7 @@ static void rtl_writephy(struct rtl8169_private *tp, int location, int val)
>>>        case RTL_GIGA_MAC_VER_31:
>>>            r8168dp_2_mdio_write(tp, location, val);
>>>            break;
>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>            r8168g_mdio_write(tp, location, val);
>>>            break;
>>>        default:
>>> @@ -1154,7 +1161,7 @@ static int rtl_readphy(struct rtl8169_private *tp, int location)
>>>        case RTL_GIGA_MAC_VER_28:
>>>        case RTL_GIGA_MAC_VER_31:
>>>            return r8168dp_2_mdio_read(tp, location);
>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>            return r8168g_mdio_read(tp, location);
>>>        default:
>>>            return r8169_mdio_read(tp, location);
>>> @@ -1507,7 +1514,7 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
>>>            break;
>>>        case RTL_GIGA_MAC_VER_34:
>>>        case RTL_GIGA_MAC_VER_37:
>>> -    case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
>>> +    case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65:
>>>            if (wolopts)
>>>                rtl_mod_config2(tp, 0, PME_SIGNAL);
>>>            else
>>> @@ -2073,6 +2080,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
>>>            u16 val;
>>>            enum mac_version ver;
>>>        } mac_info[] = {
>>> +        /* 8126A family. */
>>> +        { 0x7cf, 0x649,    RTL_GIGA_MAC_VER_65 },
>>> +
>>>            /* 8125B family. */
>>>            { 0x7cf, 0x641,    RTL_GIGA_MAC_VER_63 },
>>>    @@ -2343,6 +2353,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>>>            RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>>>            break;
>>>        case RTL_GIGA_MAC_VER_63:
>>> +    case RTL_GIGA_MAC_VER_65:
>>>            RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
>>>                RX_PAUSE_SLOT_ON);
>>>            break;
>>> @@ -2772,7 +2783,7 @@ static void rtl_enable_exit_l1(struct rtl8169_private *tp)
>>>        case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
>>>            rtl_eri_set_bits(tp, 0xd4, 0x0c00);
>>>            break;
>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>            r8168_mac_ocp_modify(tp, 0xc0ac, 0, 0x1f80);
>>>            break;
>>>        default:
>>> @@ -2786,7 +2797,7 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
>>>        case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38:
>>>            rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
>>>            break;
>>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>>            r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
>>>            break;
>>>        default:
>>> @@ -2796,6 +2807,8 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
>>>      static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>>    {
>>> +    u8 val8;
>>> +
>>>        if (tp->mac_version < RTL_GIGA_MAC_VER_32)
>>>            return;
>>>    @@ -2809,11 +2822,19 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>>                return;
>>>              rtl_mod_config5(tp, 0, ASPM_en);
>>> -        rtl_mod_config2(tp, 0, ClkReqEn);
>>> +        switch (tp->mac_version) {
>>> +        case RTL_GIGA_MAC_VER_65:
>>> +            val8 = RTL_R8(tp, INT_CFG0_8125) | INT_CFG0_CLKREQEN;
>>> +            RTL_W8(tp, INT_CFG0_8125, val8);
>>> +            break;
>>> +        default:
>>> +            rtl_mod_config2(tp, 0, ClkReqEn);
>>> +            break;
>>> +        }
>>>              switch (tp->mac_version) {
>>>            case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
>>> -        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
>>> +        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
>>>                /* reset ephy tx/rx disable timer */
>>>                r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
>>>                /* chip can trigger L1.2 */
>>> @@ -2825,14 +2846,22 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>>        } else {
>>>            switch (tp->mac_version) {
>>>            case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
>>> -        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
>>> +        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
>>>                r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
>>>                break;
>>>            default:
>>>                break;
>>>            }
>>>    -        rtl_mod_config2(tp, ClkReqEn, 0);
>>> +        switch (tp->mac_version) {
>>> +        case RTL_GIGA_MAC_VER_65:
>>> +            val8 = RTL_R8(tp, INT_CFG0_8125) & ~INT_CFG0_CLKREQEN;
>>> +            RTL_W8(tp, INT_CFG0_8125, val8);
>>> +            break;
>>> +        default:
>>> +            rtl_mod_config2(tp, ClkReqEn, 0);
>>> +            break;
>>> +        }
>>>            rtl_mod_config5(tp, ASPM_en, 0);
>>>        }
>>>    }
>>> @@ -3545,10 +3574,15 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>        /* disable new tx descriptor format */
>>>        r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
>>>    -    if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>>> +        RTL_W8(tp, 0xD8, RTL_R8(tp, 0xD8) & ~0x02);
>>> +
>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>>> +        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>>> +    else if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>            r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
>>>        else
>>> -        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>>> +        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0300);
>>>          if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>>            r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
>>> @@ -3561,6 +3595,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>        r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
>>>        r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
>>>        r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>>> +        r8168_mac_ocp_modify(tp, 0xea1c, 0x0300, 0x0000);
>>> +    else
>>> +        r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
>>>        r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
>>>        r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
>>>        r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
>>> @@ -3575,10 +3613,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>          rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
>>>    -    if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>> -        rtl8125b_config_eee_mac(tp);
>>> -    else
>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_61)
>>>            rtl8125a_config_eee_mac(tp);
>>> +    else
>>> +        rtl8125b_config_eee_mac(tp);
>>>          rtl_disable_rxdvgate(tp);
>>>    }
>>> @@ -3622,6 +3660,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>>>        rtl_hw_start_8125_common(tp);
>>>    }
>>>    +static void rtl_hw_start_8126a(struct rtl8169_private *tp)
>>> +{
>>> +    rtl_set_def_aspm_entry_latency(tp);
>>> +    rtl_hw_start_8125_common(tp);
>>> +}
>>> +
>>>    static void rtl_hw_config(struct rtl8169_private *tp)
>>>    {
>>>        static const rtl_generic_fct hw_configs[] = {
>>> @@ -3664,6 +3708,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
>>>            [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
>>>            [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
>>>            [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
>>> +        [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
>>>        };
>>>          if (hw_configs[tp->mac_version])
>>> @@ -3674,9 +3719,23 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
>>>    {
>>>        int i;
>>>    +    RTL_W8(tp, INT_CFG0_8125, 0x00);
>>> +
>>>        /* disable interrupt coalescing */
>>> -    for (i = 0xa00; i < 0xb00; i += 4)
>>> -        RTL_W32(tp, i, 0);
>>> +    switch (tp->mac_version) {
>>> +    case RTL_GIGA_MAC_VER_61:
>>> +        for (i = 0xa00; i < 0xb00; i += 4)
>>> +            RTL_W32(tp, i, 0);
>>> +        break;
>>> +    case RTL_GIGA_MAC_VER_63:
>>> +    case RTL_GIGA_MAC_VER_65:
>>> +        for (i = 0xa00; i < 0xa80; i += 4)
>>> +            RTL_W32(tp, i, 0);
>>> +        RTL_W16(tp, INT_CFG1_8125, 0x0000);
>>> +        break;
>>> +    default:
>>> +        break;
>>> +    }
>>>          rtl_hw_config(tp);
>>>    }
>>> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
>>> index b50f16786..badf78f81 100644
>>> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
>>> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
>>> @@ -1152,6 +1152,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
>>>            [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
>>>            [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
>>>            [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
>>> +        [RTL_GIGA_MAC_VER_65] = NULL,
>>>        };
>>>          if (phy_configs[ver])
>>
> The followoing adds support for the integrated PHY.
> Please apply it on-top and re-test.
>
> ---
>   drivers/net/phy/realtek.c | 10 ++++++++++
>   1 file changed, 10 insertions(+)
>
> diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
> index 894172a3e..132784321 100644
> --- a/drivers/net/phy/realtek.c
> +++ b/drivers/net/phy/realtek.c
> @@ -1047,6 +1047,16 @@ static struct phy_driver realtek_drvs[] = {
>   		.resume         = rtlgen_resume,
>   		.read_page      = rtl821x_read_page,
>   		.write_page     = rtl821x_write_page,
> +	}, {
> +		PHY_ID_MATCH_EXACT(0x001cc862),
> +		.name           = "RTL8251B 5Gbps PHY",
> +		.get_features   = rtl822x_get_features,
> +		.config_aneg    = rtl822x_config_aneg,
> +		.read_status    = rtl822x_read_status,
> +		.suspend        = genphy_suspend,
> +		.resume         = rtlgen_resume,
> +		.read_page      = rtl821x_read_page,
> +		.write_page     = rtl821x_write_page,
>   	}, {
>   		PHY_ID_MATCH_EXACT(0x001cc961),
>   		.name		= "RTL8366RB Gigabit Ethernet",

Thank you !

I forward your 2nd patch to the openSUSE people I have been working and they prepared a new test kernel 6.7.2 with both patches for for me to test.

I just installed the test kernel provided with both patches.

Here is the dmesg | grep 8169 output using this new test kernel

[    3.630222] r8169 0000:05:00.0: enabling device (0000 -> 0003)
[    3.632148] r8169 0000:05:00.0 eth0: RTL8126A, e8:9c:25:78:c9:bf, XID 649, IRQ 207
[    3.632150] r8169 0000:05:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
[    3.633218] r8169 0000:05:00.0 enp5s0: renamed from eth0
[    4.212381] r8169 0000:05:00.0: Direct firmware load for rtl_nic/rtl8126a-2.fw failed with error -2
[    4.212384] r8169 0000:05:00.0: Unable to load firmware rtl_nic/rtl8126a-2.fw (-2)
[    4.236119] RTL8251B 5Gbps PHY r8169-0-500:00: attached PHY driver (mii_bus:phy_addr=r8169-0-500:00, irq=MAC)
[    4.349625] r8169 0000:05:00.0 enp5s0: Link is Down
[    7.858055] r8169 0000:05:00.0 enp5s0: Link is Up - 1Gbps/Full - flow control rx/tx

Although dmesg has these 2 error messages, I have network connectivity, ran a quick speed test and am getting the correct speeds.

[    4.212381] r8169 0000:05:00.0: Direct firmware load for rtl_nic/rtl8126a-2.fw failed with error -2
[    4.212384] r8169 0000:05:00.0: Unable to load firmware rtl_nic/rtl8126a-2.fw (-2)

Here is the 'lsmod | grep 8169' results so you can see what is loaded

r8169                 114688  0 mdio_devres            12288  1 r8169 
libphy                245760  3 r8169,mdio_devres,realtek I will continue to test and report back if there are any network issues.

-- 
Regards,

Joe


^ permalink raw reply	[relevance 0%]

* Re: Kernel Module r8169 and the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter
  2024-01-30 16:34  0% ` Joe Salmeri
@ 2024-01-30 19:59  0%   ` Heiner Kallweit
  2024-01-31 16:14  0%     ` Joe Salmeri
  0 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2024-01-30 19:59 UTC (permalink / raw)
  To: Joe Salmeri, netdev

On 30.01.2024 17:34, Joe Salmeri wrote:
> On 1/29/24 17:19, Heiner Kallweit wrote:
>> On 29.01.2024 19:31, Joe Salmeri wrote:
>>> Hi,
>>>
>>> I recently built a new PC using the Asus z790 Maximus Formula motherboard.
>>>
>>> The z790 Formula uses the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter.
>>>
>>> I am using openSUSE Tumbleweed build 20231228 with kernel 6.6.7-1
>>>
>>> There does not seem to be a driver for the Realtek 8126.
>>>
>>> Here is the device info from "lspci | grep -i net"
>>>
>>>      04:00.0 Network controller: Intel Corporation Device 272b (rev 1a)
>>>      05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8126 (rev 01)
>>>
>>> So it is detects the 8126 just fine it just doesn't have a driver for it.
>>>
>>> I checked realtek.com and found
>>>
>>> https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software
>>>
>>> The download link still says 8125 ( and kernel 6.4 ), but I compiled the source and since I have Secure boot enabled, I signed the
>>> resulting module file.
>>>
>>> The driver loads successfully and I now have wired networking and it has worked flawlessly for the last 2 months.
>>>
>>> I submitted a bug in Tumbleweed requesting support for the Realtek 8126 be added and was informed that the r8169 kernel module
>>> is what is used to support the older Realtek 8125 device.
>>>
>>> Since the drivers from Realtek seem to support both the r8125 and my newer r8126, the Tumbleweed support prepared a test
>>> kernel 6.6.7-1 for me where they added the PCI entry for the r8126 and I installed and tested it out.
>>>
>>> Although it does now load the r8169 module with their test kernel, the r8126 device still does not work.
>>>
>>> The only 2 lines that reference the r8169 in the dmesg log are these 2 lines:
>>>
>>> [    3.237151] r8169 0000:05:00.0: enabling device (0000 -> 0003)
>>> [    3.237289] r8169 0000:05:00.0: error -ENODEV: unknown chip XID 649, contact r8169 maintainers (see MAINTAINERS file)
>>>
>>> I reported the results of the test to Tumbleweed support and they said that additional tweaks will be needed for the r8169
>>> module to support the r8126 wired network adapter and thatn I should request to you to add support.
>>>
>>> The details of the openSUSE bug report on the issue can be found here:
>>>
>>>      https://bugzilla.suse.com/show_bug.cgi?id=1217417
>>>
>>> Could we please get support added for the r8126 - Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter added to the kernel ?
>>>
>> Thanks for the report. Actually it's not a bug report but a feature request.
>> Realtek provides no information about new chip versions and no data sheets, therefore the only
>> source of information is the r8125 vendor driver. Each chip requires a lot of version-specific
>> handling, therefore the first steps you described go in the right direction, but are by far not
>> sufficient. Patch below applies on linux-next, please test whether it works for you, and report back.
>>
>> Disclaimer:
>> r8125 references a firmware file that hasn't been provided to linux-firmware by Realtek yet.
>> Typically the firmware files tune PHY parameters to deal with compatibility issues.
>> In addition r8125 includes a lot of PHY tuning for RTL8126A.
>> Depending on cabling, link partner etc. the patch may work for you, or you may experience
>> link instability or worst case no link at all.
>>
>> Maybe RTL8126a also has a new integrated PHY version that isn't supported yet.
>> In this case the driver will complain with the following message and I'd need the PHY ID.
>> "no dedicated PHY driver found for PHY ID xxx"
> 
> Thanks very much for your quick response.
> 
> I forward your patch to the openSUSE people I have been working and they prepared a new test kernel 6.7.2 with the patches for for me to test.
> 
> I just installed the test kernel provided with the patches but just as you expected it complains about no dedicated PHY driver found.
> 
> Here is the dmesg | grep 8169 output with the information you requested
> 
> [    3.176753] r8169 0000:05:00.0: enabling device (0000 -> 0003)
> [    3.184887] r8169 0000:05:00.0: no dedicated PHY driver found for PHY ID 0x001cc862, maybe realtek.ko needs to be added to initramfs?
> [    3.184912] r8169: probe of 0000:05:00.0 failed with error -49
> 
> Thank you for your efforts.
> 
> Please let me know if you need any further details.
> 
>> ---
>>   drivers/net/ethernet/realtek/r8169.h          |  1 +
>>   drivers/net/ethernet/realtek/r8169_main.c     | 91 +++++++++++++++----
>>   .../net/ethernet/realtek/r8169_phy_config.c   |  1 +
>>   3 files changed, 77 insertions(+), 16 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
>> index 81567fcf3..c921456ed 100644
>> --- a/drivers/net/ethernet/realtek/r8169.h
>> +++ b/drivers/net/ethernet/realtek/r8169.h
>> @@ -68,6 +68,7 @@ enum mac_version {
>>       /* support for RTL_GIGA_MAC_VER_60 has been removed */
>>       RTL_GIGA_MAC_VER_61,
>>       RTL_GIGA_MAC_VER_63,
>> +    RTL_GIGA_MAC_VER_65,
>>       RTL_GIGA_MAC_NONE
>>   };
>>   diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
>> index e0abdbcfa..ebf7a3b13 100644
>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>> @@ -55,6 +55,7 @@
>>   #define FIRMWARE_8107E_2    "rtl_nic/rtl8107e-2.fw"
>>   #define FIRMWARE_8125A_3    "rtl_nic/rtl8125a-3.fw"
>>   #define FIRMWARE_8125B_2    "rtl_nic/rtl8125b-2.fw"
>> +#define FIRMWARE_8126A_2    "rtl_nic/rtl8126a-2.fw"
>>     #define TX_DMA_BURST    7    /* Maximum PCI burst, '7' is unlimited */
>>   #define InterFrameGap    0x03    /* 3 means InterFrameGap = the shortest one */
>> @@ -136,6 +137,7 @@ static const struct {
>>       [RTL_GIGA_MAC_VER_61] = {"RTL8125A",        FIRMWARE_8125A_3},
>>       /* reserve 62 for CFG_METHOD_4 in the vendor driver */
>>       [RTL_GIGA_MAC_VER_63] = {"RTL8125B",        FIRMWARE_8125B_2},
>> +    [RTL_GIGA_MAC_VER_65] = {"RTL8126A",        FIRMWARE_8126A_2},
>>   };
>>     static const struct pci_device_id rtl8169_pci_tbl[] = {
>> @@ -158,6 +160,7 @@ static const struct pci_device_id rtl8169_pci_tbl[] = {
>>       { PCI_VENDOR_ID_LINKSYS, 0x1032, PCI_ANY_ID, 0x0024 },
>>       { 0x0001, 0x8168, PCI_ANY_ID, 0x2410 },
>>       { PCI_VDEVICE(REALTEK,    0x8125) },
>> +    { PCI_VDEVICE(REALTEK,    0x8126) },
>>       { PCI_VDEVICE(REALTEK,    0x3000) },
>>       {}
>>   };
>> @@ -327,8 +330,12 @@ enum rtl8168_registers {
>>   };
>>     enum rtl8125_registers {
>> +    INT_CFG0_8125        = 0x34,
>> +#define INT_CFG0_ENABLE_8125        BIT(0)
>> +#define INT_CFG0_CLKREQEN        BIT(3)
>>       IntrMask_8125        = 0x38,
>>       IntrStatus_8125        = 0x3c,
>> +    INT_CFG1_8125        = 0x7a,
>>       TxPoll_8125        = 0x90,
>>       MAC0_BKP        = 0x19e0,
>>       EEE_TXIDLE_TIMER_8125    = 0x6048,
>> @@ -1139,7 +1146,7 @@ static void rtl_writephy(struct rtl8169_private *tp, int location, int val)
>>       case RTL_GIGA_MAC_VER_31:
>>           r8168dp_2_mdio_write(tp, location, val);
>>           break;
>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>           r8168g_mdio_write(tp, location, val);
>>           break;
>>       default:
>> @@ -1154,7 +1161,7 @@ static int rtl_readphy(struct rtl8169_private *tp, int location)
>>       case RTL_GIGA_MAC_VER_28:
>>       case RTL_GIGA_MAC_VER_31:
>>           return r8168dp_2_mdio_read(tp, location);
>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>           return r8168g_mdio_read(tp, location);
>>       default:
>>           return r8169_mdio_read(tp, location);
>> @@ -1507,7 +1514,7 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
>>           break;
>>       case RTL_GIGA_MAC_VER_34:
>>       case RTL_GIGA_MAC_VER_37:
>> -    case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
>> +    case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65:
>>           if (wolopts)
>>               rtl_mod_config2(tp, 0, PME_SIGNAL);
>>           else
>> @@ -2073,6 +2080,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
>>           u16 val;
>>           enum mac_version ver;
>>       } mac_info[] = {
>> +        /* 8126A family. */
>> +        { 0x7cf, 0x649,    RTL_GIGA_MAC_VER_65 },
>> +
>>           /* 8125B family. */
>>           { 0x7cf, 0x641,    RTL_GIGA_MAC_VER_63 },
>>   @@ -2343,6 +2353,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>>           RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>>           break;
>>       case RTL_GIGA_MAC_VER_63:
>> +    case RTL_GIGA_MAC_VER_65:
>>           RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
>>               RX_PAUSE_SLOT_ON);
>>           break;
>> @@ -2772,7 +2783,7 @@ static void rtl_enable_exit_l1(struct rtl8169_private *tp)
>>       case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
>>           rtl_eri_set_bits(tp, 0xd4, 0x0c00);
>>           break;
>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>           r8168_mac_ocp_modify(tp, 0xc0ac, 0, 0x1f80);
>>           break;
>>       default:
>> @@ -2786,7 +2797,7 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
>>       case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38:
>>           rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
>>           break;
>> -    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
>> +    case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>>           r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
>>           break;
>>       default:
>> @@ -2796,6 +2807,8 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
>>     static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>   {
>> +    u8 val8;
>> +
>>       if (tp->mac_version < RTL_GIGA_MAC_VER_32)
>>           return;
>>   @@ -2809,11 +2822,19 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>               return;
>>             rtl_mod_config5(tp, 0, ASPM_en);
>> -        rtl_mod_config2(tp, 0, ClkReqEn);
>> +        switch (tp->mac_version) {
>> +        case RTL_GIGA_MAC_VER_65:
>> +            val8 = RTL_R8(tp, INT_CFG0_8125) | INT_CFG0_CLKREQEN;
>> +            RTL_W8(tp, INT_CFG0_8125, val8);
>> +            break;
>> +        default:
>> +            rtl_mod_config2(tp, 0, ClkReqEn);
>> +            break;
>> +        }
>>             switch (tp->mac_version) {
>>           case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
>> -        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
>> +        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
>>               /* reset ephy tx/rx disable timer */
>>               r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
>>               /* chip can trigger L1.2 */
>> @@ -2825,14 +2846,22 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>>       } else {
>>           switch (tp->mac_version) {
>>           case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
>> -        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
>> +        case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
>>               r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
>>               break;
>>           default:
>>               break;
>>           }
>>   -        rtl_mod_config2(tp, ClkReqEn, 0);
>> +        switch (tp->mac_version) {
>> +        case RTL_GIGA_MAC_VER_65:
>> +            val8 = RTL_R8(tp, INT_CFG0_8125) & ~INT_CFG0_CLKREQEN;
>> +            RTL_W8(tp, INT_CFG0_8125, val8);
>> +            break;
>> +        default:
>> +            rtl_mod_config2(tp, ClkReqEn, 0);
>> +            break;
>> +        }
>>           rtl_mod_config5(tp, ASPM_en, 0);
>>       }
>>   }
>> @@ -3545,10 +3574,15 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>       /* disable new tx descriptor format */
>>       r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
>>   -    if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>> +        RTL_W8(tp, 0xD8, RTL_R8(tp, 0xD8) & ~0x02);
>> +
>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>> +        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>> +    else if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>           r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
>>       else
>> -        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>> +        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0300);
>>         if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>           r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
>> @@ -3561,6 +3595,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>       r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
>>       r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
>>       r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_65)
>> +        r8168_mac_ocp_modify(tp, 0xea1c, 0x0300, 0x0000);
>> +    else
>> +        r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
>>       r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
>>       r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
>>       r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
>> @@ -3575,10 +3613,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>         rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
>>   -    if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>> -        rtl8125b_config_eee_mac(tp);
>> -    else
>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_61)
>>           rtl8125a_config_eee_mac(tp);
>> +    else
>> +        rtl8125b_config_eee_mac(tp);
>>         rtl_disable_rxdvgate(tp);
>>   }
>> @@ -3622,6 +3660,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>>       rtl_hw_start_8125_common(tp);
>>   }
>>   +static void rtl_hw_start_8126a(struct rtl8169_private *tp)
>> +{
>> +    rtl_set_def_aspm_entry_latency(tp);
>> +    rtl_hw_start_8125_common(tp);
>> +}
>> +
>>   static void rtl_hw_config(struct rtl8169_private *tp)
>>   {
>>       static const rtl_generic_fct hw_configs[] = {
>> @@ -3664,6 +3708,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
>>           [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
>>           [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
>>           [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
>> +        [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
>>       };
>>         if (hw_configs[tp->mac_version])
>> @@ -3674,9 +3719,23 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
>>   {
>>       int i;
>>   +    RTL_W8(tp, INT_CFG0_8125, 0x00);
>> +
>>       /* disable interrupt coalescing */
>> -    for (i = 0xa00; i < 0xb00; i += 4)
>> -        RTL_W32(tp, i, 0);
>> +    switch (tp->mac_version) {
>> +    case RTL_GIGA_MAC_VER_61:
>> +        for (i = 0xa00; i < 0xb00; i += 4)
>> +            RTL_W32(tp, i, 0);
>> +        break;
>> +    case RTL_GIGA_MAC_VER_63:
>> +    case RTL_GIGA_MAC_VER_65:
>> +        for (i = 0xa00; i < 0xa80; i += 4)
>> +            RTL_W32(tp, i, 0);
>> +        RTL_W16(tp, INT_CFG1_8125, 0x0000);
>> +        break;
>> +    default:
>> +        break;
>> +    }
>>         rtl_hw_config(tp);
>>   }
>> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
>> index b50f16786..badf78f81 100644
>> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
>> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
>> @@ -1152,6 +1152,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
>>           [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
>>           [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
>>           [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
>> +        [RTL_GIGA_MAC_VER_65] = NULL,
>>       };
>>         if (phy_configs[ver])
> 
> 

The followoing adds support for the integrated PHY.
Please apply it on-top and re-test.

---
 drivers/net/phy/realtek.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
index 894172a3e..132784321 100644
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -1047,6 +1047,16 @@ static struct phy_driver realtek_drvs[] = {
 		.resume         = rtlgen_resume,
 		.read_page      = rtl821x_read_page,
 		.write_page     = rtl821x_write_page,
+	}, {
+		PHY_ID_MATCH_EXACT(0x001cc862),
+		.name           = "RTL8251B 5Gbps PHY",
+		.get_features   = rtl822x_get_features,
+		.config_aneg    = rtl822x_config_aneg,
+		.read_status    = rtl822x_read_status,
+		.suspend        = genphy_suspend,
+		.resume         = rtlgen_resume,
+		.read_page      = rtl821x_read_page,
+		.write_page     = rtl821x_write_page,
 	}, {
 		PHY_ID_MATCH_EXACT(0x001cc961),
 		.name		= "RTL8366RB Gigabit Ethernet",
-- 
2.43.0



^ permalink raw reply related	[relevance 0%]

* Re: Kernel Module r8169 and the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter
       [not found]     <edabbc1f-5440-4170-83a4-f436a6d04f76@gmail.com>
@ 2024-01-30 16:34  0% ` Joe Salmeri
  2024-01-30 19:59  0%   ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Joe Salmeri @ 2024-01-30 16:34 UTC (permalink / raw)
  To: Heiner Kallweit, netdev

On 1/29/24 17:19, Heiner Kallweit wrote:
> On 29.01.2024 19:31, Joe Salmeri wrote:
>> Hi,
>>
>> I recently built a new PC using the Asus z790 Maximus Formula motherboard.
>>
>> The z790 Formula uses the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter.
>>
>> I am using openSUSE Tumbleweed build 20231228 with kernel 6.6.7-1
>>
>> There does not seem to be a driver for the Realtek 8126.
>>
>> Here is the device info from "lspci | grep -i net"
>>
>>      04:00.0 Network controller: Intel Corporation Device 272b (rev 1a)
>>      05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8126 (rev 01)
>>
>> So it is detects the 8126 just fine it just doesn't have a driver for it.
>>
>> I checked realtek.com and found
>>
>> https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software
>>
>> The download link still says 8125 ( and kernel 6.4 ), but I compiled the source and since I have Secure boot enabled, I signed the
>> resulting module file.
>>
>> The driver loads successfully and I now have wired networking and it has worked flawlessly for the last 2 months.
>>
>> I submitted a bug in Tumbleweed requesting support for the Realtek 8126 be added and was informed that the r8169 kernel module
>> is what is used to support the older Realtek 8125 device.
>>
>> Since the drivers from Realtek seem to support both the r8125 and my newer r8126, the Tumbleweed support prepared a test
>> kernel 6.6.7-1 for me where they added the PCI entry for the r8126 and I installed and tested it out.
>>
>> Although it does now load the r8169 module with their test kernel, the r8126 device still does not work.
>>
>> The only 2 lines that reference the r8169 in the dmesg log are these 2 lines:
>>
>> [    3.237151] r8169 0000:05:00.0: enabling device (0000 -> 0003)
>> [    3.237289] r8169 0000:05:00.0: error -ENODEV: unknown chip XID 649, contact r8169 maintainers (see MAINTAINERS file)
>>
>> I reported the results of the test to Tumbleweed support and they said that additional tweaks will be needed for the r8169
>> module to support the r8126 wired network adapter and thatn I should request to you to add support.
>>
>> The details of the openSUSE bug report on the issue can be found here:
>>
>>      https://bugzilla.suse.com/show_bug.cgi?id=1217417
>>
>> Could we please get support added for the r8126 - Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter added to the kernel ?
>>
> Thanks for the report. Actually it's not a bug report but a feature request.
> Realtek provides no information about new chip versions and no data sheets, therefore the only
> source of information is the r8125 vendor driver. Each chip requires a lot of version-specific
> handling, therefore the first steps you described go in the right direction, but are by far not
> sufficient. Patch below applies on linux-next, please test whether it works for you, and report back.
>
> Disclaimer:
> r8125 references a firmware file that hasn't been provided to linux-firmware by Realtek yet.
> Typically the firmware files tune PHY parameters to deal with compatibility issues.
> In addition r8125 includes a lot of PHY tuning for RTL8126A.
> Depending on cabling, link partner etc. the patch may work for you, or you may experience
> link instability or worst case no link at all.
>
> Maybe RTL8126a also has a new integrated PHY version that isn't supported yet.
> In this case the driver will complain with the following message and I'd need the PHY ID.
> "no dedicated PHY driver found for PHY ID xxx"

Thanks very much for your quick response.

I forward your patch to the openSUSE people I have been working and they 
prepared a new test kernel 6.7.2 with the patches for for me to test.

I just installed the test kernel provided with the patches but just as 
you expected it complains about no dedicated PHY driver found.

Here is the dmesg | grep 8169 output with the information you requested

[    3.176753] r8169 0000:05:00.0: enabling device (0000 -> 0003)
[    3.184887] r8169 0000:05:00.0: no dedicated PHY driver found for PHY 
ID 0x001cc862, maybe realtek.ko needs to be added to initramfs?
[    3.184912] r8169: probe of 0000:05:00.0 failed with error -49

Thank you for your efforts.

Please let me know if you need any further details.

> ---
>   drivers/net/ethernet/realtek/r8169.h          |  1 +
>   drivers/net/ethernet/realtek/r8169_main.c     | 91 +++++++++++++++----
>   .../net/ethernet/realtek/r8169_phy_config.c   |  1 +
>   3 files changed, 77 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
> index 81567fcf3..c921456ed 100644
> --- a/drivers/net/ethernet/realtek/r8169.h
> +++ b/drivers/net/ethernet/realtek/r8169.h
> @@ -68,6 +68,7 @@ enum mac_version {
>   	/* support for RTL_GIGA_MAC_VER_60 has been removed */
>   	RTL_GIGA_MAC_VER_61,
>   	RTL_GIGA_MAC_VER_63,
> +	RTL_GIGA_MAC_VER_65,
>   	RTL_GIGA_MAC_NONE
>   };
>   
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index e0abdbcfa..ebf7a3b13 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -55,6 +55,7 @@
>   #define FIRMWARE_8107E_2	"rtl_nic/rtl8107e-2.fw"
>   #define FIRMWARE_8125A_3	"rtl_nic/rtl8125a-3.fw"
>   #define FIRMWARE_8125B_2	"rtl_nic/rtl8125b-2.fw"
> +#define FIRMWARE_8126A_2	"rtl_nic/rtl8126a-2.fw"
>   
>   #define TX_DMA_BURST	7	/* Maximum PCI burst, '7' is unlimited */
>   #define InterFrameGap	0x03	/* 3 means InterFrameGap = the shortest one */
> @@ -136,6 +137,7 @@ static const struct {
>   	[RTL_GIGA_MAC_VER_61] = {"RTL8125A",		FIRMWARE_8125A_3},
>   	/* reserve 62 for CFG_METHOD_4 in the vendor driver */
>   	[RTL_GIGA_MAC_VER_63] = {"RTL8125B",		FIRMWARE_8125B_2},
> +	[RTL_GIGA_MAC_VER_65] = {"RTL8126A",		FIRMWARE_8126A_2},
>   };
>   
>   static const struct pci_device_id rtl8169_pci_tbl[] = {
> @@ -158,6 +160,7 @@ static const struct pci_device_id rtl8169_pci_tbl[] = {
>   	{ PCI_VENDOR_ID_LINKSYS, 0x1032, PCI_ANY_ID, 0x0024 },
>   	{ 0x0001, 0x8168, PCI_ANY_ID, 0x2410 },
>   	{ PCI_VDEVICE(REALTEK,	0x8125) },
> +	{ PCI_VDEVICE(REALTEK,	0x8126) },
>   	{ PCI_VDEVICE(REALTEK,	0x3000) },
>   	{}
>   };
> @@ -327,8 +330,12 @@ enum rtl8168_registers {
>   };
>   
>   enum rtl8125_registers {
> +	INT_CFG0_8125		= 0x34,
> +#define INT_CFG0_ENABLE_8125		BIT(0)
> +#define INT_CFG0_CLKREQEN		BIT(3)
>   	IntrMask_8125		= 0x38,
>   	IntrStatus_8125		= 0x3c,
> +	INT_CFG1_8125		= 0x7a,
>   	TxPoll_8125		= 0x90,
>   	MAC0_BKP		= 0x19e0,
>   	EEE_TXIDLE_TIMER_8125	= 0x6048,
> @@ -1139,7 +1146,7 @@ static void rtl_writephy(struct rtl8169_private *tp, int location, int val)
>   	case RTL_GIGA_MAC_VER_31:
>   		r8168dp_2_mdio_write(tp, location, val);
>   		break;
> -	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
> +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>   		r8168g_mdio_write(tp, location, val);
>   		break;
>   	default:
> @@ -1154,7 +1161,7 @@ static int rtl_readphy(struct rtl8169_private *tp, int location)
>   	case RTL_GIGA_MAC_VER_28:
>   	case RTL_GIGA_MAC_VER_31:
>   		return r8168dp_2_mdio_read(tp, location);
> -	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
> +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>   		return r8168g_mdio_read(tp, location);
>   	default:
>   		return r8169_mdio_read(tp, location);
> @@ -1507,7 +1514,7 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
>   		break;
>   	case RTL_GIGA_MAC_VER_34:
>   	case RTL_GIGA_MAC_VER_37:
> -	case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
> +	case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65:
>   		if (wolopts)
>   			rtl_mod_config2(tp, 0, PME_SIGNAL);
>   		else
> @@ -2073,6 +2080,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
>   		u16 val;
>   		enum mac_version ver;
>   	} mac_info[] = {
> +		/* 8126A family. */
> +		{ 0x7cf, 0x649,	RTL_GIGA_MAC_VER_65 },
> +
>   		/* 8125B family. */
>   		{ 0x7cf, 0x641,	RTL_GIGA_MAC_VER_63 },
>   
> @@ -2343,6 +2353,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>   		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>   		break;
>   	case RTL_GIGA_MAC_VER_63:
> +	case RTL_GIGA_MAC_VER_65:
>   		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
>   			RX_PAUSE_SLOT_ON);
>   		break;
> @@ -2772,7 +2783,7 @@ static void rtl_enable_exit_l1(struct rtl8169_private *tp)
>   	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
>   		rtl_eri_set_bits(tp, 0xd4, 0x0c00);
>   		break;
> -	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
> +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>   		r8168_mac_ocp_modify(tp, 0xc0ac, 0, 0x1f80);
>   		break;
>   	default:
> @@ -2786,7 +2797,7 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
>   	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38:
>   		rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
>   		break;
> -	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
> +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
>   		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
>   		break;
>   	default:
> @@ -2796,6 +2807,8 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
>   
>   static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>   {
> +	u8 val8;
> +
>   	if (tp->mac_version < RTL_GIGA_MAC_VER_32)
>   		return;
>   
> @@ -2809,11 +2822,19 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>   			return;
>   
>   		rtl_mod_config5(tp, 0, ASPM_en);
> -		rtl_mod_config2(tp, 0, ClkReqEn);
> +		switch (tp->mac_version) {
> +		case RTL_GIGA_MAC_VER_65:
> +			val8 = RTL_R8(tp, INT_CFG0_8125) | INT_CFG0_CLKREQEN;
> +			RTL_W8(tp, INT_CFG0_8125, val8);
> +			break;
> +		default:
> +			rtl_mod_config2(tp, 0, ClkReqEn);
> +			break;
> +		}
>   
>   		switch (tp->mac_version) {
>   		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
> -		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
> +		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
>   			/* reset ephy tx/rx disable timer */
>   			r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
>   			/* chip can trigger L1.2 */
> @@ -2825,14 +2846,22 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
>   	} else {
>   		switch (tp->mac_version) {
>   		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
> -		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
> +		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
>   			r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
>   			break;
>   		default:
>   			break;
>   		}
>   
> -		rtl_mod_config2(tp, ClkReqEn, 0);
> +		switch (tp->mac_version) {
> +		case RTL_GIGA_MAC_VER_65:
> +			val8 = RTL_R8(tp, INT_CFG0_8125) & ~INT_CFG0_CLKREQEN;
> +			RTL_W8(tp, INT_CFG0_8125, val8);
> +			break;
> +		default:
> +			rtl_mod_config2(tp, ClkReqEn, 0);
> +			break;
> +		}
>   		rtl_mod_config5(tp, ASPM_en, 0);
>   	}
>   }
> @@ -3545,10 +3574,15 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>   	/* disable new tx descriptor format */
>   	r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
>   
> -	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
> +	if (tp->mac_version == RTL_GIGA_MAC_VER_65)
> +		RTL_W8(tp, 0xD8, RTL_R8(tp, 0xD8) & ~0x02);
> +
> +	if (tp->mac_version == RTL_GIGA_MAC_VER_65)
> +		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
> +	else if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>   		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
>   	else
> -		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
> +		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0300);
>   
>   	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>   		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
> @@ -3561,6 +3595,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>   	r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
>   	r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
>   	r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
> +	if (tp->mac_version == RTL_GIGA_MAC_VER_65)
> +		r8168_mac_ocp_modify(tp, 0xea1c, 0x0300, 0x0000);
> +	else
> +		r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
>   	r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
>   	r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
>   	r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
> @@ -3575,10 +3613,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>   
>   	rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
>   
> -	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
> -		rtl8125b_config_eee_mac(tp);
> -	else
> +	if (tp->mac_version == RTL_GIGA_MAC_VER_61)
>   		rtl8125a_config_eee_mac(tp);
> +	else
> +		rtl8125b_config_eee_mac(tp);
>   
>   	rtl_disable_rxdvgate(tp);
>   }
> @@ -3622,6 +3660,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>   	rtl_hw_start_8125_common(tp);
>   }
>   
> +static void rtl_hw_start_8126a(struct rtl8169_private *tp)
> +{
> +	rtl_set_def_aspm_entry_latency(tp);
> +	rtl_hw_start_8125_common(tp);
> +}
> +
>   static void rtl_hw_config(struct rtl8169_private *tp)
>   {
>   	static const rtl_generic_fct hw_configs[] = {
> @@ -3664,6 +3708,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
>   		[RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
>   		[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
>   		[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
> +		[RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
>   	};
>   
>   	if (hw_configs[tp->mac_version])
> @@ -3674,9 +3719,23 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
>   {
>   	int i;
>   
> +	RTL_W8(tp, INT_CFG0_8125, 0x00);
> +
>   	/* disable interrupt coalescing */
> -	for (i = 0xa00; i < 0xb00; i += 4)
> -		RTL_W32(tp, i, 0);
> +	switch (tp->mac_version) {
> +	case RTL_GIGA_MAC_VER_61:
> +		for (i = 0xa00; i < 0xb00; i += 4)
> +			RTL_W32(tp, i, 0);
> +		break;
> +	case RTL_GIGA_MAC_VER_63:
> +	case RTL_GIGA_MAC_VER_65:
> +		for (i = 0xa00; i < 0xa80; i += 4)
> +			RTL_W32(tp, i, 0);
> +		RTL_W16(tp, INT_CFG1_8125, 0x0000);
> +		break;
> +	default:
> +		break;
> +	}
>   
>   	rtl_hw_config(tp);
>   }
> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
> index b50f16786..badf78f81 100644
> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
> @@ -1152,6 +1152,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
>   		[RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
>   		[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
>   		[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
> +		[RTL_GIGA_MAC_VER_65] = NULL,
>   	};
>   
>   	if (phy_configs[ver])


-- 
Regards,

Joe


^ permalink raw reply	[relevance 0%]

* Re: Kernel Module r8169 and the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter
       [not found]     <ab516cfd-24e8-4761-93a3-49f96a4e6b8f@gmail.com>
@ 2024-01-29 22:19  5% ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2024-01-29 22:19 UTC (permalink / raw)
  To: Joe Salmeri; +Cc: netdev

On 29.01.2024 19:31, Joe Salmeri wrote:
> Hi,
> 
> I recently built a new PC using the Asus z790 Maximus Formula motherboard.
> 
> The z790 Formula uses the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter.
> 
> I am using openSUSE Tumbleweed build 20231228 with kernel 6.6.7-1
> 
> There does not seem to be a driver for the Realtek 8126.
> 
> Here is the device info from "lspci | grep -i net"
> 
>     04:00.0 Network controller: Intel Corporation Device 272b (rev 1a)
>     05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8126 (rev 01)
> 
> So it is detects the 8126 just fine it just doesn't have a driver for it.
> 
> I checked realtek.com and found
> 
> https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software
> 
> The download link still says 8125 ( and kernel 6.4 ), but I compiled the source and since I have Secure boot enabled, I signed the
> resulting module file.
> 
> The driver loads successfully and I now have wired networking and it has worked flawlessly for the last 2 months.
> 
> I submitted a bug in Tumbleweed requesting support for the Realtek 8126 be added and was informed that the r8169 kernel module
> is what is used to support the older Realtek 8125 device.
> 
> Since the drivers from Realtek seem to support both the r8125 and my newer r8126, the Tumbleweed support prepared a test
> kernel 6.6.7-1 for me where they added the PCI entry for the r8126 and I installed and tested it out.
> 
> Although it does now load the r8169 module with their test kernel, the r8126 device still does not work.
> 
> The only 2 lines that reference the r8169 in the dmesg log are these 2 lines:
> 
> [    3.237151] r8169 0000:05:00.0: enabling device (0000 -> 0003)
> [    3.237289] r8169 0000:05:00.0: error -ENODEV: unknown chip XID 649, contact r8169 maintainers (see MAINTAINERS file)
> 
> I reported the results of the test to Tumbleweed support and they said that additional tweaks will be needed for the r8169
> module to support the r8126 wired network adapter and thatn I should request to you to add support.
> 
> The details of the openSUSE bug report on the issue can be found here:
> 
>     https://bugzilla.suse.com/show_bug.cgi?id=1217417
> 
> Could we please get support added for the r8126 - Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter added to the kernel ?
> 

Thanks for the report. Actually it's not a bug report but a feature request.
Realtek provides no information about new chip versions and no data sheets, therefore the only
source of information is the r8125 vendor driver. Each chip requires a lot of version-specific
handling, therefore the first steps you described go in the right direction, but are by far not
sufficient. Patch below applies on linux-next, please test whether it works for you, and report back.

Disclaimer:
r8125 references a firmware file that hasn't been provided to linux-firmware by Realtek yet.
Typically the firmware files tune PHY parameters to deal with compatibility issues.
In addition r8125 includes a lot of PHY tuning for RTL8126A.
Depending on cabling, link partner etc. the patch may work for you, or you may experience
link instability or worst case no link at all.

Maybe RTL8126a also has a new integrated PHY version that isn't supported yet.
In this case the driver will complain with the following message and I'd need the PHY ID.
"no dedicated PHY driver found for PHY ID xxx"

> Please let me know if you need any further details.
> 
> Thank you!
> 

---
 drivers/net/ethernet/realtek/r8169.h          |  1 +
 drivers/net/ethernet/realtek/r8169_main.c     | 91 +++++++++++++++----
 .../net/ethernet/realtek/r8169_phy_config.c   |  1 +
 3 files changed, 77 insertions(+), 16 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
index 81567fcf3..c921456ed 100644
--- a/drivers/net/ethernet/realtek/r8169.h
+++ b/drivers/net/ethernet/realtek/r8169.h
@@ -68,6 +68,7 @@ enum mac_version {
 	/* support for RTL_GIGA_MAC_VER_60 has been removed */
 	RTL_GIGA_MAC_VER_61,
 	RTL_GIGA_MAC_VER_63,
+	RTL_GIGA_MAC_VER_65,
 	RTL_GIGA_MAC_NONE
 };
 
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index e0abdbcfa..ebf7a3b13 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -55,6 +55,7 @@
 #define FIRMWARE_8107E_2	"rtl_nic/rtl8107e-2.fw"
 #define FIRMWARE_8125A_3	"rtl_nic/rtl8125a-3.fw"
 #define FIRMWARE_8125B_2	"rtl_nic/rtl8125b-2.fw"
+#define FIRMWARE_8126A_2	"rtl_nic/rtl8126a-2.fw"
 
 #define TX_DMA_BURST	7	/* Maximum PCI burst, '7' is unlimited */
 #define InterFrameGap	0x03	/* 3 means InterFrameGap = the shortest one */
@@ -136,6 +137,7 @@ static const struct {
 	[RTL_GIGA_MAC_VER_61] = {"RTL8125A",		FIRMWARE_8125A_3},
 	/* reserve 62 for CFG_METHOD_4 in the vendor driver */
 	[RTL_GIGA_MAC_VER_63] = {"RTL8125B",		FIRMWARE_8125B_2},
+	[RTL_GIGA_MAC_VER_65] = {"RTL8126A",		FIRMWARE_8126A_2},
 };
 
 static const struct pci_device_id rtl8169_pci_tbl[] = {
@@ -158,6 +160,7 @@ static const struct pci_device_id rtl8169_pci_tbl[] = {
 	{ PCI_VENDOR_ID_LINKSYS, 0x1032, PCI_ANY_ID, 0x0024 },
 	{ 0x0001, 0x8168, PCI_ANY_ID, 0x2410 },
 	{ PCI_VDEVICE(REALTEK,	0x8125) },
+	{ PCI_VDEVICE(REALTEK,	0x8126) },
 	{ PCI_VDEVICE(REALTEK,	0x3000) },
 	{}
 };
@@ -327,8 +330,12 @@ enum rtl8168_registers {
 };
 
 enum rtl8125_registers {
+	INT_CFG0_8125		= 0x34,
+#define INT_CFG0_ENABLE_8125		BIT(0)
+#define INT_CFG0_CLKREQEN		BIT(3)
 	IntrMask_8125		= 0x38,
 	IntrStatus_8125		= 0x3c,
+	INT_CFG1_8125		= 0x7a,
 	TxPoll_8125		= 0x90,
 	MAC0_BKP		= 0x19e0,
 	EEE_TXIDLE_TIMER_8125	= 0x6048,
@@ -1139,7 +1146,7 @@ static void rtl_writephy(struct rtl8169_private *tp, int location, int val)
 	case RTL_GIGA_MAC_VER_31:
 		r8168dp_2_mdio_write(tp, location, val);
 		break;
-	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
 		r8168g_mdio_write(tp, location, val);
 		break;
 	default:
@@ -1154,7 +1161,7 @@ static int rtl_readphy(struct rtl8169_private *tp, int location)
 	case RTL_GIGA_MAC_VER_28:
 	case RTL_GIGA_MAC_VER_31:
 		return r8168dp_2_mdio_read(tp, location);
-	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
 		return r8168g_mdio_read(tp, location);
 	default:
 		return r8169_mdio_read(tp, location);
@@ -1507,7 +1514,7 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
 		break;
 	case RTL_GIGA_MAC_VER_34:
 	case RTL_GIGA_MAC_VER_37:
-	case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65:
 		if (wolopts)
 			rtl_mod_config2(tp, 0, PME_SIGNAL);
 		else
@@ -2073,6 +2080,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
 		u16 val;
 		enum mac_version ver;
 	} mac_info[] = {
+		/* 8126A family. */
+		{ 0x7cf, 0x649,	RTL_GIGA_MAC_VER_65 },
+
 		/* 8125B family. */
 		{ 0x7cf, 0x641,	RTL_GIGA_MAC_VER_63 },
 
@@ -2343,6 +2353,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
 		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
 		break;
 	case RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_65:
 		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
 			RX_PAUSE_SLOT_ON);
 		break;
@@ -2772,7 +2783,7 @@ static void rtl_enable_exit_l1(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
 		rtl_eri_set_bits(tp, 0xd4, 0x0c00);
 		break;
-	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
 		r8168_mac_ocp_modify(tp, 0xc0ac, 0, 0x1f80);
 		break;
 	default:
@@ -2786,7 +2797,7 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38:
 		rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
 		break;
-	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
 		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
 		break;
 	default:
@@ -2796,6 +2807,8 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp)
 
 static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 {
+	u8 val8;
+
 	if (tp->mac_version < RTL_GIGA_MAC_VER_32)
 		return;
 
@@ -2809,11 +2822,19 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 			return;
 
 		rtl_mod_config5(tp, 0, ASPM_en);
-		rtl_mod_config2(tp, 0, ClkReqEn);
+		switch (tp->mac_version) {
+		case RTL_GIGA_MAC_VER_65:
+			val8 = RTL_R8(tp, INT_CFG0_8125) | INT_CFG0_CLKREQEN;
+			RTL_W8(tp, INT_CFG0_8125, val8);
+			break;
+		default:
+			rtl_mod_config2(tp, 0, ClkReqEn);
+			break;
+		}
 
 		switch (tp->mac_version) {
 		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
-		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
+		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
 			/* reset ephy tx/rx disable timer */
 			r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
 			/* chip can trigger L1.2 */
@@ -2825,14 +2846,22 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 	} else {
 		switch (tp->mac_version) {
 		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
-		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
+		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
 			r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
 			break;
 		default:
 			break;
 		}
 
-		rtl_mod_config2(tp, ClkReqEn, 0);
+		switch (tp->mac_version) {
+		case RTL_GIGA_MAC_VER_65:
+			val8 = RTL_R8(tp, INT_CFG0_8125) & ~INT_CFG0_CLKREQEN;
+			RTL_W8(tp, INT_CFG0_8125, val8);
+			break;
+		default:
+			rtl_mod_config2(tp, ClkReqEn, 0);
+			break;
+		}
 		rtl_mod_config5(tp, ASPM_en, 0);
 	}
 }
@@ -3545,10 +3574,15 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	/* disable new tx descriptor format */
 	r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
 
-	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
+	if (tp->mac_version == RTL_GIGA_MAC_VER_65)
+		RTL_W8(tp, 0xD8, RTL_R8(tp, 0xD8) & ~0x02);
+
+	if (tp->mac_version == RTL_GIGA_MAC_VER_65)
+		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
+	else if (tp->mac_version == RTL_GIGA_MAC_VER_63)
 		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
 	else
-		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
+		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0300);
 
 	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
 		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
@@ -3561,6 +3595,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
 	r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
 	r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
+	if (tp->mac_version == RTL_GIGA_MAC_VER_65)
+		r8168_mac_ocp_modify(tp, 0xea1c, 0x0300, 0x0000);
+	else
+		r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
 	r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
 	r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
 	r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
@@ -3575,10 +3613,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 
 	rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
 
-	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
-		rtl8125b_config_eee_mac(tp);
-	else
+	if (tp->mac_version == RTL_GIGA_MAC_VER_61)
 		rtl8125a_config_eee_mac(tp);
+	else
+		rtl8125b_config_eee_mac(tp);
 
 	rtl_disable_rxdvgate(tp);
 }
@@ -3622,6 +3660,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
 	rtl_hw_start_8125_common(tp);
 }
 
+static void rtl_hw_start_8126a(struct rtl8169_private *tp)
+{
+	rtl_set_def_aspm_entry_latency(tp);
+	rtl_hw_start_8125_common(tp);
+}
+
 static void rtl_hw_config(struct rtl8169_private *tp)
 {
 	static const rtl_generic_fct hw_configs[] = {
@@ -3664,6 +3708,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
 		[RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
 		[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
 		[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
+		[RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
 	};
 
 	if (hw_configs[tp->mac_version])
@@ -3674,9 +3719,23 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
 {
 	int i;
 
+	RTL_W8(tp, INT_CFG0_8125, 0x00);
+
 	/* disable interrupt coalescing */
-	for (i = 0xa00; i < 0xb00; i += 4)
-		RTL_W32(tp, i, 0);
+	switch (tp->mac_version) {
+	case RTL_GIGA_MAC_VER_61:
+		for (i = 0xa00; i < 0xb00; i += 4)
+			RTL_W32(tp, i, 0);
+		break;
+	case RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_65:
+		for (i = 0xa00; i < 0xa80; i += 4)
+			RTL_W32(tp, i, 0);
+		RTL_W16(tp, INT_CFG1_8125, 0x0000);
+		break;
+	default:
+		break;
+	}
 
 	rtl_hw_config(tp);
 }
diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
index b50f16786..badf78f81 100644
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
@@ -1152,6 +1152,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
 		[RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
 		[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
+		[RTL_GIGA_MAC_VER_65] = NULL,
 	};
 
 	if (phy_configs[ver])
-- 
2.43.0



^ permalink raw reply related	[relevance 5%]

* Re: [PATCH RFC net-next] net: pcs: pcs-mtk-lynxi fix mtk_pcs_lynxi_get_state() for 2500base-x
  2024-01-02 12:55  5%   ` Eric Woudstra
@ 2024-01-02 19:33  0%     ` Eric Woudstra
  0 siblings, 0 replies; 107+ results
From: Eric Woudstra @ 2024-01-02 19:33 UTC (permalink / raw)
  To: Russell King (Oracle)
  Cc: Alexander Couzens, Daniel Golle, Andrew Lunn, Heiner Kallweit,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Matthias Brugger, AngeloGioacchino Del Regno, Frank Wunderlich,
	netdev, linux-kernel, linux-arm-kernel, linux-mediatek


With some extra info:

echo "file drivers/net/phy/* +p" > /sys/kernel/debug/dynamic_debug/control

The log looks like this when sfp inserted:

With the path (on original net-next, no further modifications), Traffic OK:

[   71.212634] sfp sfp-1: mod-def0 0 -> 1
[   71.216403] sfp sfp-1: tx-fault 1 -> 0
[   71.220140] sfp sfp-1: SM: enter empty:up:down event insert
[   71.225716] sfp sfp-1: SM: exit probe:up:down
[   71.230059] sfp sfp-1: SM: enter probe:up:down event tx_clear
[   71.235803] sfp sfp-1: SM: exit probe:up:down
[   71.240195] sfp sfp-1: tx-fault 0 -> 1
[   71.243939] sfp sfp-1: SM: enter probe:up:down event tx_fault
[   71.249688] sfp sfp-1: SM: exit probe:up:down
[   71.254052] sfp sfp-1: tx-fault 1 -> 0
[   71.257810] sfp sfp-1: SM: enter probe:up:down event tx_clear
[   71.263542] sfp sfp-1: SM: exit probe:up:down
[   71.534808] sfp sfp-1: SM: enter probe:up:down event timeout
[   71.570662] sfp sfp-1: module OEM              SFP-2.5G-T       rev 1.0  sn SK2301110007     dc 230110  
[   71.580153] mtk_soc_eth 15100000.ethernet eth1: optical SFP: interfaces=[mac=2-4,22-23, sfp=23]
[   71.588848] mtk_soc_eth 15100000.ethernet eth1:  interface 23 (2500base-x) rate match none supports 10,13-14,47
[   71.598941] mtk_soc_eth 15100000.ethernet eth1: optical SFP: chosen 2500base-x interface
[   71.607605] mtk_soc_eth 15100000.ethernet eth1: requesting link mode inband/2500base-x with support 00,00000000,00008000,00006400
[   71.619321] sfp sfp-1: tx disable 1 -> 0
[   71.623287] sfp sfp-1: SM: exit present:up:wait
[   71.636489] hwmon hwmon0: temp1_input not attached to any thermal zone
[   71.684749] sfp sfp-1: SM: enter present:up:wait event timeout
[   71.690587] sfp sfp-1: SM: exit present:up:wait_los
[   74.704872] sfp sfp-1: los 1 -> 0
[   74.708199] sfp sfp-1: SM: enter present:up:wait_los event los_low
[   74.714389] sfp sfp-1: SM: exit present:up:link_up
[   74.714422] mtk_soc_eth 15100000.ethernet eth1: Link is Up - 2.5Gbps/Full - flow control off

Without the patch, No traffic possible:

[  261.515414] sfp sfp-1: los 1 -> 0
[  261.518740] sfp sfp-1: SM: enter empty:up:down event los_low
[  261.524418] sfp sfp-1: SM: exit empty:up:down
[  261.528799] sfp sfp-1: mod-def0 0 -> 1
[  261.532541] sfp sfp-1: los 0 -> 1
[  261.535843] sfp sfp-1: SM: enter empty:up:down event insert
[  261.541406] sfp sfp-1: SM: exit probe:up:down
[  261.545748] sfp sfp-1: SM: enter probe:up:down event los_high
[  261.551481] sfp sfp-1: SM: exit probe:up:down
[  261.555859] sfp sfp-1: tx-fault 1 -> 0
[  261.559595] sfp sfp-1: SM: enter probe:up:down event tx_clear
[  261.565330] sfp sfp-1: SM: exit probe:up:down
[  261.859940] sfp sfp-1: SM: enter probe:up:down event timeout
[  261.895690] sfp sfp-1: module OEM              SFP-2.5G-T       rev 1.0  sn SK2301110007     dc 230110  
[  261.905218] mtk_soc_eth 15100000.ethernet eth1: optical SFP: interfaces=[mac=2-4,22-23, sfp=23]
[  261.913929] mtk_soc_eth 15100000.ethernet eth1:  interface 23 (2500base-x) rate match none supports 10,13-14,47
[  261.924104] mtk_soc_eth 15100000.ethernet eth1: optical SFP: chosen 2500base-x interface
[  261.932199] mtk_soc_eth 15100000.ethernet eth1: requesting link mode inband/2500base-x with support 00,00000000,00008000,00006400
[  261.945449] sfp sfp-1: tx disable 1 -> 0
[  261.950886] sfp sfp-1: SM: exit present:up:wait
[  261.973346] hwmon hwmon0: temp1_input not attached to any thermal zone
[  262.009896] sfp sfp-1: SM: enter present:up:wait event timeout
[  262.015771] sfp sfp-1: SM: exit present:up:wait_los
[  264.842218] sfp sfp-1: los 1 -> 0
[  264.845544] sfp sfp-1: SM: enter present:up:wait_los event los_low
[  264.851770] sfp sfp-1: SM: exit present:up:link_up
[  264.851801] mtk_soc_eth 15100000.ethernet eth1: Link is Up - Unknown/Unknown - flow control off


So if phylink_mii_c22_pcs_decode_state() should not set the speed, then it is not correctly set somewhere else.

On 1/2/24 13:55, Eric Woudstra wrote:
>> Please describe your setup more fully. What is the link partner on this
>> 2500base-X link?
> 
> I use a BananaPi R3, with the oem-sfp2.5g-t module. It has the SFP quirk that disables autoneg. I was trying Marek's rtl8221b patchset, but found that even with unmodified code,  original net-next unmodified, I could get link up, but no traffic is going through.
> 
> On the other side is a.rock5b with rtl8125b.
> 
> Only after applying this patch, it works and eth1 reports link up with 2.5Gbps instead of unknown speed.
> 
> If you need more debugging info, I can supply it at a later time.
> 
> 
> On January 2, 2024 1:10:01 PM GMT+01:00, "Russell King (Oracle)" <linux@armlinux.org.uk> wrote:
>> On Tue, Jan 02, 2024 at 08:44:08AM +0100, Eric Woudstra wrote:
>>> From: Daniel Golle <daniel@makrotopia.org>
>>>
>>> Need to fix mtk_pcs_lynxi_get_state() in order for the pcs to function
>>> correctly when the interface is set to 2500base-x, even when
>>> PHYLINK_PCS_NEG_INBAND_DISABLED is set.
>>
>> Please describe your setup more fully. What is the link partner on this
>> 2500base-X link?
>>
>> In PHYLINK_PCS_NEG_INBAND_DISABLED mode, this means that phylink is
>> operating in inband mode, but Autoneg is clear in the advertisement
>> mask, meaning Autoneg is disabled and we are using a "fixed" setting.
>> state->speed and state->duplex should already be initialised.
>>
>>> When the pcs is set to 2500base-x, the register values are not compatible
>>> with phylink_mii_c22_pcs_decode_state(). It results in parameters such as
>>> speed unknown and such. Then the mac/pcs are setup incorrectly and do not
>>> function.
>>
>> Since Autoneg is clear, phylink_mii_c22_pcs_decode_state() won't
>> change state->speed and state->duplex, which should already be
>> correctly set.
>>

^ permalink raw reply	[relevance 0%]

* Re: [PATCH RFC net-next] net: pcs: pcs-mtk-lynxi fix mtk_pcs_lynxi_get_state() for 2500base-x
  @ 2024-01-02 12:55  5%   ` Eric Woudstra
  2024-01-02 19:33  0%     ` Eric Woudstra
  0 siblings, 1 reply; 107+ results
From: Eric Woudstra @ 2024-01-02 12:55 UTC (permalink / raw)
  To: Russell King (Oracle)
  Cc: Alexander Couzens, Daniel Golle, Andrew Lunn, Heiner Kallweit,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Matthias Brugger, AngeloGioacchino Del Regno, Frank Wunderlich,
	netdev, linux-kernel, linux-arm-kernel, linux-mediatek

>Please describe your setup more fully. What is the link partner on this
>2500base-X link?

I use a BananaPi R3, with the oem-sfp2.5g-t module. It has the SFP quirk that disables autoneg. I was trying Marek's rtl8221b patchset, but found that even with unmodified code,  original net-next unmodified, I could get link up, but no traffic is going through.

On the other side is a.rock5b with rtl8125b.

Only after applying this patch, it works and eth1 reports link up with 2.5Gbps instead of unknown speed.

If you need more debugging info, I can supply it at a later time.


On January 2, 2024 1:10:01 PM GMT+01:00, "Russell King (Oracle)" <linux@armlinux.org.uk> wrote:
>On Tue, Jan 02, 2024 at 08:44:08AM +0100, Eric Woudstra wrote:
>> From: Daniel Golle <daniel@makrotopia.org>
>> 
>> Need to fix mtk_pcs_lynxi_get_state() in order for the pcs to function
>> correctly when the interface is set to 2500base-x, even when
>> PHYLINK_PCS_NEG_INBAND_DISABLED is set.
>
>Please describe your setup more fully. What is the link partner on this
>2500base-X link?
>
>In PHYLINK_PCS_NEG_INBAND_DISABLED mode, this means that phylink is
>operating in inband mode, but Autoneg is clear in the advertisement
>mask, meaning Autoneg is disabled and we are using a "fixed" setting.
>state->speed and state->duplex should already be initialised.
>
>> When the pcs is set to 2500base-x, the register values are not compatible
>> with phylink_mii_c22_pcs_decode_state(). It results in parameters such as
>> speed unknown and such. Then the mac/pcs are setup incorrectly and do not
>> function.
>
>Since Autoneg is clear, phylink_mii_c22_pcs_decode_state() won't
>change state->speed and state->duplex, which should already be
>correctly set.
>

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net-next 00/15] Realtek RTL822x PHY rework to c45 and SerDes interface switching
  @ 2023-12-26 12:46  6%         ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2023-12-26 12:46 UTC (permalink / raw)
  To: Marek Behún
  Cc: netdev, Andrew Lunn, David S. Miller, Jakub Kicinski,
	Paolo Abeni, Russell King, Alexander Couzens, Daniel Golle,
	Willy Liu, Ioana Ciornei, Marek Mojík,
	Maximilián Maliar

On 25.12.2023 11:28, Marek Behún wrote:
> On Sat, 23 Dec 2023 20:09:33 +0100
> Heiner Kallweit <hkallweit1@gmail.com> wrote:
> 
>> On 20.12.2023 17:25, Marek Behún wrote:
>>> On Wed, 20 Dec 2023 17:20:07 +0100
>>> Heiner Kallweit <hkallweit1@gmail.com> wrote:
>>>   
>>>> On 20.12.2023 16:55, Marek Behún wrote:  
>>>>> Hi,
>>>>>
>>>>> this series reworks the realtek PHY driver's support for rtl822x
>>>>> 2.5G transceivers:
>>>>>
>>>>> - First I change the driver so that the high level driver methods
>>>>>   only use clause 45 register accesses (the only clause 22 accesses
>>>>>   are left when accessing c45 registers indirectly, if the MDIO bus
>>>>>   does not support clause 45 accesses).
>>>>>   The driver starts using the genphy_c45_* methods.
>>>>>
>>>>>   At this point the driver is ready to be used on a MDIO bus capable
>>>>>   of only clause 45 accesses, but will still work on clause 22 only
>>>>>   MDIO bus.
>>>>>
>>>>> - I then add support for SerDes mode switching between 2500base-x
>>>>>   and sgmii, based on autonegotiated copper speed.
>>>>>
>>>>> All this is done so that we can support another 2.5G copper SFP
>>>>> module, which is enabled by the last patch.
>>>>>     
>>>>
>>>> Has been verified that the RTL8125-integrated PHY's still work
>>>> properly with this patch set?
>>>>  
>>>
>>> Hi Heiner,
>>>
>>> no, I wanted to send you an email to test this. I do not have the
>>> controllers with integrates PHYs.
>>>
>>> Can you test this?
>>>
>>> Also do you have a controller where the rtlgen driver is used but it
>>> only supports 1gbps ? I.e. where the PHY ID is RTL_GENERIC_PHYID
>>> (0x001cc800).
>>>
>>> I am asking because I am told that it also is clause 45, so the drivers
>>> can potentially be merged completely (the rtl822x_ functions can be
>>> merged with rtlgen_ functions and everything rewritten to clause 45,
>>> and gentphy_c45_ functions can be used).
>>>   
>> At least on RTL8168h indirect MMD reads return 0 always.
>> IIRC this was the reason why the rtlgen functions use the vendor-specific
>> registers.
> 
> Looking at the code in r8169_phy_config.c, I see function
>   rtl8168h_config_eee_phy()
> with three paged writes to vendor registers, but the writes do not access
> the same registers as the .read_mmd() methods for the PCS_EEE / AN_EEE registers
> in realtek.c PHY driver.
> 
That's some other undocumented EEE-related magic copied from the vendor driver.

> It seems for now it would be best to keep the methods for paged
> accesses.
> 
> Could you test the patchset without the patch that removes the paged
> access methods?
> 
> The rewrite of the read_mmd / write_mmd methods should not cause
> problems. I am told by the realtek contact you gave me that:
> 

I tested on RTL8125A and RTL8125B, and on both indirect MMD reads return 0.
I tested with reading MDIO_MMD_PCS / MDIO_PCS_EEE_ABLE. Reading this register
should return 6. So it seems indirect MMD access was somehow and for whatever
reason disabled by Realtek for the RTL8125-internal PHY's (provided that
indirect C22 MMD access is supported by the standalone versions).

Note:
Internal PHY of RTL8125A has PHY ID 0x001cc800 (RTL8226 2.5Gbps PHY)
Internal PHY of RTL8125B has PHY ID 0x001cc840 (RTL8226B_RTL8221B 2.5Gbps PHY)

Consequence is that we can't replace reading the vendor-specific registers
with standard MMD reads.

>   If FE PHY supports EEE, then it will support MMD register and it will
>   also support use internal registers to access theses MMD registers.
> 
> Marek

Heiner


^ permalink raw reply	[relevance 6%]

* [GIT PULL] Networking for v6.7-rc5
@ 2023-12-07 19:28  4% Jakub Kicinski
  0 siblings, 0 replies; 107+ results
From: Jakub Kicinski @ 2023-12-07 19:28 UTC (permalink / raw)
  To: torvalds; +Cc: kuba, davem, netdev, linux-kernel, pabeni, bpf

Hi Linus!

The following changes since commit 6172a5180fcc65170bfa2d49e55427567860f2a7:

  Merge tag 'net-6.7-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net (2023-12-01 08:24:46 +0900)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git net-6.7-rc5

for you to fetch changes up to b0a930e8d90caf66a94fee7a9d0b8472bc3e7561:

  vsock/virtio: fix "comparison of distinct pointer types lacks a cast" warning (2023-12-07 10:12:34 -0800)

----------------------------------------------------------------
Including fixes from bpf and netfilter.

Current release - regressions:

 - veth: fix packet segmentation in veth_convert_skb_to_xdp_buff

Current release - new code bugs:

 - tcp: assorted fixes to the new Auth Option support

Older releases - regressions:

 - tcp: fix mid stream window clamp

 - tls: fix incorrect splice handling

 - ipv4: ip_gre: handle skb_pull() failure in ipgre_xmit()

 - dsa: mv88e6xxx: restore USXGMII support for 6393X

 - arcnet: restore support for multiple Sohard Arcnet cards

Older releases - always broken:

 - tcp: do not accept ACK of bytes we never sent

 - require admin privileges to receive packet traces via netlink

 - packet: move reference count in packet_sock to atomic_long_t

 - bpf:
   - fix incorrect branch offset comparison with cpu=v4
   - fix prog_array_map_poke_run map poke update

 - netfilter:
   - 3 fixes for crashes on bad admin commands
   - xt_owner: fix race accessing sk->sk_socket, TOCTOU null-deref
   - nf_tables: fix 'exist' matching on bigendian arches

 - leds: netdev: fix RTNL handling to prevent potential deadlock

 - eth: tg3: prevent races in error/reset handling

 - eth: r8169: fix rtl8125b PAUSE storm when suspended

 - eth: r8152: improve reset and surprise removal handling

 - eth: hns: fix race between changing features and sending

 - eth: nfp: fix sleep in atomic for bonding offload

Signed-off-by: Jakub Kicinski <kuba@kernel.org>

----------------------------------------------------------------
Brett Creeley (1):
      ionic: Fix dim work handling in split interrupt mode

ChunHao Lin (1):
      r8169: fix rtl8125b PAUSE frames blasting when suspended

D. Wythe (1):
      netfilter: bpf: fix bad registration on nf_defrag

Daniel Borkmann (1):
      packet: Move reference count in packet_sock to atomic_long_t

Daniil Maximov (1):
      net: atlantic: Fix NULL dereference of skb pointer in

Dinghao Liu (1):
      net: bnxt: fix a potential use-after-free in bnxt_init_tc

Dmitry Safonov (5):
      Documentation/tcp: Fix an obvious typo
      net/tcp: Consistently align TCP-AO option in the header
      net/tcp: Limit TCP_AO_REPAIR to non-listen sockets
      net/tcp: Don't add key with non-matching VRF on connected sockets
      net/tcp: Don't store TCP-AO maclen on reqsk

Douglas Anderson (5):
      r8152: Hold the rtnl_lock for all of reset
      r8152: Add RTL8152_INACCESSIBLE checks to more loops
      r8152: Add RTL8152_INACCESSIBLE to r8156b_wait_loading_flash()
      r8152: Add RTL8152_INACCESSIBLE to r8153_pre_firmware_1()
      r8152: Add RTL8152_INACCESSIBLE to r8153_aldps_en()

Eric Dumazet (2):
      ipv6: fix potential NULL deref in fib6_add()
      tcp: do not accept ACK of bytes we never sent

Florian Westphal (2):
      netfilter: nft_set_pipapo: skip inactive elements during set walk
      netfilter: nf_tables: fix 'exist' matching on bigendian arches

Geetha sowjanya (3):
      octeontx2-af: Fix mcs sa cam entries size
      octeontx2-af: Fix mcs stats register address
      octeontx2-af: Add missing mcs flr handler call

Heiner Kallweit (1):
      leds: trigger: netdev: fix RTNL handling to prevent potential deadlock

Hui Zhou (1):
      nfp: flower: fix for take a mutex lock in soft irq context and rcu lock

Ido Schimmel (2):
      psample: Require 'CAP_NET_ADMIN' when joining "packets" group
      drop_monitor: Require 'CAP_SYS_ADMIN' when joining "events" group

Ivan Vecera (1):
      i40e: Fix unexpected MFS warning message

Jacob Keller (1):
      iavf: validate tx_coalesce_usecs even if rx_coalesce_usecs is zero

Jakub Kicinski (7):
      MAINTAINERS: exclude 9p from networking
      Merge branch 'ionic-small-driver-fixes'
      Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue
      Merge tag 'for-netdev' of https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf
      Merge tag 'nf-23-12-06' of git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf
      Merge branch 'fixes-for-ktls'
      Merge branch 'generic-netlink-multicast-fixes'

Jianheng Zhang (1):
      net: stmmac: fix FPE events losing

Jiri Olsa (2):
      bpf: Fix prog_array_map_poke_run map poke update
      selftests/bpf: Add test for early update in prog_array_map_poke_run

John Fastabend (2):
      net: tls, update curr on splice as well
      bpf: sockmap, updating the sg structure should also update curr

Kelly Kane (1):
      r8152: add vendor/device ID pair for ASUS USB-C2500

Lorenzo Bianconi (1):
      net: veth: fix packet segmentation in veth_convert_skb_to_xdp_buff

Marcin Szycik (1):
      ice: Restore fix disabling RX VLAN filtering

Michal Swiatkowski (1):
      ice: change vfs.num_msix_per to vf->num_msix

Naveen Mamindlapalli (1):
      octeontx2-pf: consider both Rx and Tx packet stats for adaptive interrupt coalescing

Nithin Dabilpuram (1):
      octeontx2-af: Adjust Tx credits when MCS external bypass is disabled

Pablo Neira Ayuso (2):
      netfilter: nf_tables: bail out on mismatching dynset and set expressions
      netfilter: nf_tables: validate family when identifying table via handle

Paolo Abeni (4):
      tcp: fix mid stream window clamp.
      Merge branch 'there-are-some-bugfix-for-the-hns-ethernet-driver'
      Merge branch 'tcp-ao-fixes'
      Merge branch 'octeontx2-af-miscellaneous-fixes'

Phil Sutter (1):
      netfilter: xt_owner: Fix for unsafe access of sk->sk_socket

Rahul Bhansali (1):
      octeontx2-af: Update Tx link register range

Randy Dunlap (1):
      hv_netvsc: rndis_filter needs to select NLS

Sean Nyekjaer (1):
      net: dsa: microchip: provide a list of valid protocols for xmit handler

Shannon Nelson (1):
      ionic: fix snprintf format length warning

Shigeru Yoshida (1):
      ipv4: ip_gre: Avoid skb_pull() failure in ipgre_xmit()

Stefano Garzarella (1):
      vsock/virtio: fix "comparison of distinct pointer types lacks a cast" warning

Subbaraya Sundeep (2):
      octeontx2-pf: Add missing mutex lock in otx2_get_pauseparam
      octeontx2-af: Check return value of nix_get_nixlf before using nixlf

Thinh Tran (1):
      net/tg3: fix race condition in tg3_reset_task()

Thomas Reichinger (1):
      arcnet: restoring support for multiple Sohard Arcnet cards

Tobias Waldekranz (1):
      net: dsa: mv88e6xxx: Restore USXGMII support for 6393X

Wen Gu (1):
      net/smc: fix missing byte order conversion in CLC handshake

Yewon Choi (1):
      xsk: Skip polling event check for unbound socket

Yonghong Song (1):
      bpf: Fix a verifier bug due to incorrect branch offset comparison with cpu=v4

Yonglong Liu (2):
      net: hns: fix wrong head when modify the tx feature when sending packets
      net: hns: fix fake link up on xge port

Zhipeng Lu (1):
      octeontx2-af: fix a use-after-free in rvu_npa_register_reporters

 Documentation/networking/tcp_ao.rst                |   2 +-
 MAINTAINERS                                        |   1 +
 arch/x86/net/bpf_jit_comp.c                        |  46 ++++++++
 drivers/leds/trigger/ledtrig-netdev.c              |  11 +-
 drivers/net/arcnet/arcdevice.h                     |   2 +
 drivers/net/arcnet/com20020-pci.c                  |  89 ++++++++-------
 drivers/net/dsa/microchip/ksz_common.c             |  16 ++-
 drivers/net/dsa/mv88e6xxx/pcs-639x.c               |  31 ++++-
 drivers/net/ethernet/aquantia/atlantic/aq_ptp.c    |  10 +-
 drivers/net/ethernet/aquantia/atlantic/aq_ptp.h    |   4 +-
 drivers/net/ethernet/aquantia/atlantic/aq_ring.c   |  18 ++-
 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c       |   1 +
 drivers/net/ethernet/broadcom/tg3.c                |  11 +-
 drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c  |  29 +++++
 drivers/net/ethernet/hisilicon/hns/hns_enet.c      |  53 +++++----
 drivers/net/ethernet/hisilicon/hns/hns_enet.h      |   3 +-
 drivers/net/ethernet/intel/i40e/i40e_main.c        |   2 +-
 drivers/net/ethernet/intel/iavf/iavf_ethtool.c     |  12 +-
 drivers/net/ethernet/intel/iavf/iavf_txrx.h        |   1 -
 drivers/net/ethernet/intel/ice/ice_sriov.c         |   7 +-
 .../net/ethernet/intel/ice/ice_vf_vsi_vlan_ops.c   |  11 +-
 drivers/net/ethernet/intel/ice/ice_virtchnl.c      |   5 +-
 drivers/net/ethernet/marvell/octeontx2/af/mbox.h   |   2 +-
 drivers/net/ethernet/marvell/octeontx2/af/mcs.c    |  18 ++-
 drivers/net/ethernet/marvell/octeontx2/af/mcs.h    |   2 +
 .../net/ethernet/marvell/octeontx2/af/mcs_reg.h    |  31 ++++-
 drivers/net/ethernet/marvell/octeontx2/af/rvu.c    |   3 +
 drivers/net/ethernet/marvell/octeontx2/af/rvu.h    |   1 +
 .../ethernet/marvell/octeontx2/af/rvu_devlink.c    |   5 +-
 .../net/ethernet/marvell/octeontx2/af/rvu_nix.c    |   8 ++
 .../net/ethernet/marvell/octeontx2/af/rvu_npc.c    |   8 +-
 .../net/ethernet/marvell/octeontx2/af/rvu_reg.c    |   4 +-
 .../net/ethernet/marvell/octeontx2/af/rvu_reg.h    |   1 +
 .../ethernet/marvell/octeontx2/nic/otx2_ethtool.c  |   6 +-
 .../net/ethernet/marvell/octeontx2/nic/otx2_pf.c   |   9 ++
 .../net/ethernet/marvell/octeontx2/nic/otx2_txrx.c |  20 ++--
 .../ethernet/netronome/nfp/flower/tunnel_conf.c    | 127 +++++++++++++++------
 drivers/net/ethernet/pensando/ionic/ionic_dev.h    |   2 +-
 drivers/net/ethernet/pensando/ionic/ionic_lif.c    |  16 +--
 drivers/net/ethernet/realtek/r8169_main.c          |   7 +-
 drivers/net/ethernet/stmicro/stmmac/dwmac5.c       |  45 +++-----
 drivers/net/ethernet/stmicro/stmmac/dwmac5.h       |   4 +-
 .../net/ethernet/stmicro/stmmac/dwxgmac2_core.c    |   3 +-
 drivers/net/ethernet/stmicro/stmmac/hwif.h         |   4 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c  |   8 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c    |   1 +
 drivers/net/hyperv/Kconfig                         |   1 +
 drivers/net/usb/r8152.c                            |  28 ++++-
 drivers/net/veth.c                                 |   3 +-
 include/linux/bpf.h                                |   3 +
 include/linux/stmmac.h                             |   1 +
 include/linux/tcp.h                                |   8 +-
 include/linux/usb/r8152.h                          |   1 +
 include/net/genetlink.h                            |   2 +
 include/net/tcp.h                                  |   9 +-
 include/net/tcp_ao.h                               |   6 +
 kernel/bpf/arraymap.c                              |  58 ++--------
 kernel/bpf/core.c                                  |  12 +-
 net/core/drop_monitor.c                            |   4 +-
 net/core/filter.c                                  |  19 +++
 net/ipv4/ip_gre.c                                  |  11 +-
 net/ipv4/tcp.c                                     |  28 ++++-
 net/ipv4/tcp_ao.c                                  |  17 ++-
 net/ipv4/tcp_input.c                               |  11 +-
 net/ipv4/tcp_ipv4.c                                |   4 +-
 net/ipv4/tcp_minisocks.c                           |   2 +-
 net/ipv4/tcp_output.c                              |  15 +--
 net/ipv6/ip6_fib.c                                 |   6 +-
 net/ipv6/tcp_ipv6.c                                |   2 +-
 net/netfilter/nf_bpf_link.c                        |  10 +-
 net/netfilter/nf_tables_api.c                      |   5 +-
 net/netfilter/nft_dynset.c                         |  13 ++-
 net/netfilter/nft_exthdr.c                         |   4 +-
 net/netfilter/nft_fib.c                            |   8 +-
 net/netfilter/nft_set_pipapo.c                     |   3 +
 net/netfilter/xt_owner.c                           |  16 ++-
 net/netlink/genetlink.c                            |   3 +
 net/packet/af_packet.c                             |  16 +--
 net/packet/internal.h                              |   2 +-
 net/psample/psample.c                              |   3 +-
 net/smc/af_smc.c                                   |   4 +-
 net/smc/smc_clc.c                                  |   9 +-
 net/smc/smc_clc.h                                  |   4 +-
 net/tls/tls_sw.c                                   |   2 +
 net/vmw_vsock/virtio_transport_common.c            |   3 +-
 net/xdp/xsk.c                                      |   5 +-
 tools/testing/selftests/bpf/prog_tests/tailcalls.c |  84 ++++++++++++++
 tools/testing/selftests/bpf/progs/tailcall_poke.c  |  32 ++++++
 88 files changed, 821 insertions(+), 356 deletions(-)
 create mode 100644 tools/testing/selftests/bpf/progs/tailcall_poke.c

^ permalink raw reply	[relevance 4%]

* Re: [PATCH net v2] r8169: fix rtl8125b PAUSE frames blasting when suspended
  2023-11-29 15:53  4% [PATCH net v2] r8169: fix rtl8125b PAUSE frames blasting when suspended ChunHao Lin
                   ` (2 preceding siblings ...)
  2023-12-02  8:19  5% ` Heiner Kallweit
@ 2023-12-02 19:30 10% ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 107+ results
From: patchwork-bot+netdevbpf @ 2023-12-02 19:30 UTC (permalink / raw)
  To: ChunHao Lin
  Cc: hkallweit1, nic_swsd, davem, edumazet, kuba, pabeni, netdev,
	linux-kernel, grundler, stable

Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Wed, 29 Nov 2023 23:53:50 +0800 you wrote:
> When FIFO reaches near full state, device will issue pause frame.
> If pause slot is enabled(set to 1), in this time, device will issue
> pause frame only once. But if pause slot is disabled(set to 0), device
> will keep sending pause frames until FIFO reaches near empty state.
> 
> When pause slot is disabled, if there is no one to handle receive
> packets, device FIFO will reach near full state and keep sending
> pause frames. That will impact entire local area network.
> 
> [...]

Here is the summary with links:
  - [net,v2] r8169: fix rtl8125b PAUSE frames blasting when suspended
    https://git.kernel.org/netdev/net/c/4b0768b6556a

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[relevance 10%]

* Re: [PATCH net v2] r8169: fix rtl8125b PAUSE frames blasting when suspended
  2023-11-29 15:53  4% [PATCH net v2] r8169: fix rtl8125b PAUSE frames blasting when suspended ChunHao Lin
  2023-11-29 23:04  5% ` Jacob Keller
  2023-12-02  4:14  5% ` Jakub Kicinski
@ 2023-12-02  8:19  5% ` Heiner Kallweit
  2023-12-02 19:30 10% ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2023-12-02  8:19 UTC (permalink / raw)
  To: ChunHao Lin
  Cc: nic_swsd, davem, edumazet, kuba, pabeni, netdev, linux-kernel,
	grundler, stable

On 29.11.2023 16:53, ChunHao Lin wrote:
> When FIFO reaches near full state, device will issue pause frame.
> If pause slot is enabled(set to 1), in this time, device will issue
> pause frame only once. But if pause slot is disabled(set to 0), device
> will keep sending pause frames until FIFO reaches near empty state.
> 
> When pause slot is disabled, if there is no one to handle receive
> packets, device FIFO will reach near full state and keep sending
> pause frames. That will impact entire local area network.
> 
> This issue can be reproduced in Chromebox (not Chromebook) in
> developer mode running a test image (and v5.10 kernel):
> 1) ping -f $CHROMEBOX (from workstation on same local network)
> 2) run "powerd_dbus_suspend" from command line on the $CHROMEBOX
> 3) ping $ROUTER (wait until ping fails from workstation)
> 
> Takes about ~20-30 seconds after step 2 for the local network to
> stop working.
> 
> Fix this issue by enabling pause slot to only send pause frame once
> when FIFO reaches near full state.
> 
> Fixes: f1bce4ad2f1c ("r8169: add support for RTL8125")
> Reported-by: Grant Grundler <grundler@chromium.org>
> Tested-by: Grant Grundler <grundler@chromium.org>
> Cc: stable@vger.kernel.org
> Signed-off-by: ChunHao Lin <hau@realtek.com>
> ---
> v2:
> - update comment and title.
> ---

Reviewed-by: Heiner Kallweit <hkallweit1@gmail.com>



^ permalink raw reply	[relevance 5%]

* Re: [PATCH net v2] r8169: fix rtl8125b PAUSE frames blasting when suspended
  2023-11-29 15:53  4% [PATCH net v2] r8169: fix rtl8125b PAUSE frames blasting when suspended ChunHao Lin
  2023-11-29 23:04  5% ` Jacob Keller
@ 2023-12-02  4:14  5% ` Jakub Kicinski
  2023-12-02  8:19  5% ` Heiner Kallweit
  2023-12-02 19:30 10% ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 107+ results
From: Jakub Kicinski @ 2023-12-02  4:14 UTC (permalink / raw)
  To: hkallweit1
  Cc: ChunHao Lin, nic_swsd, davem, edumazet, pabeni, netdev,
	linux-kernel, grundler, stable

On Wed, 29 Nov 2023 23:53:50 +0800 ChunHao Lin wrote:
> When FIFO reaches near full state, device will issue pause frame.
> If pause slot is enabled(set to 1), in this time, device will issue
> pause frame only once. But if pause slot is disabled(set to 0), device
> will keep sending pause frames until FIFO reaches near empty state.

Heiner, looks good?
-- 
pw-bot: needs-ack

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net v2] r8169: fix rtl8125b PAUSE frames blasting when suspended
  2023-11-29 23:40 10%   ` Grant Grundler
@ 2023-11-30 22:25  5%     ` Jacob Keller
  0 siblings, 0 replies; 107+ results
From: Jacob Keller @ 2023-11-30 22:25 UTC (permalink / raw)
  To: Grant Grundler
  Cc: ChunHao Lin, hkallweit1, nic_swsd, davem, edumazet, kuba, pabeni,
	netdev, linux-kernel, stable



On 11/29/2023 3:40 PM, Grant Grundler wrote:
> On Wed, Nov 29, 2023 at 3:05 PM Jacob Keller <jacob.e.keller@intel.com> wrote:
>> On 11/29/2023 7:53 AM, ChunHao Lin wrote:
>>> When FIFO reaches near full state, device will issue pause frame.
>>> If pause slot is enabled(set to 1), in this time, device will issue
>>> pause frame only once. But if pause slot is disabled(set to 0), device
>>> will keep sending pause frames until FIFO reaches near empty state.
>>>
>>> When pause slot is disabled, if there is no one to handle receive
>>> packets, device FIFO will reach near full state and keep sending
>>> pause frames. That will impact entire local area network.
>>>
>>> This issue can be reproduced in Chromebox (not Chromebook) in
>>> developer mode running a test image (and v5.10 kernel):
>>> 1) ping -f $CHROMEBOX (from workstation on same local network)
>>> 2) run "powerd_dbus_suspend" from command line on the $CHROMEBOX
>>> 3) ping $ROUTER (wait until ping fails from workstation)
>>>
>>> Takes about ~20-30 seconds after step 2 for the local network to
>>> stop working.
>>>
>>> Fix this issue by enabling pause slot to only send pause frame once
>>> when FIFO reaches near full state.
>>>
>>
>> Makes sense. Avoiding the spam is good.  The naming is a bit confusing
>> but I guess that comes from realtek datasheet?
> 
> I don't know. It doesn't matter to me what it's called since I don't
> have access to the data sheet anyway. :/
> 

The name is fine, i just found it a bit hard to parse since its
effectively "PAUSE_SLOT_ON" makes us *not* send pause frames forever.

I think its fine as-is, since this is referring to the use of the pause
slot in hardware.

>>> Fixes: f1bce4ad2f1c ("r8169: add support for RTL8125")
>>> Reported-by: Grant Grundler <grundler@chromium.org>
>>> Tested-by: Grant Grundler <grundler@chromium.org>
>>> Cc: stable@vger.kernel.org
>>> Signed-off-by: ChunHao Lin <hau@realtek.com>
>>> ---
>>> v2:
>>> - update comment and title.
>>> ---
>>>  drivers/net/ethernet/realtek/r8169_main.c | 7 ++++++-
>>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
>>> index 62cabeeb842a..bb787a52bc75 100644
>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>> @@ -196,6 +196,7 @@ enum rtl_registers {
>>>                                       /* No threshold before first PCI xfer */
>>>  #define      RX_FIFO_THRESH                  (7 << RXCFG_FIFO_SHIFT)
>>>  #define      RX_EARLY_OFF                    (1 << 11)
>>> +#define      RX_PAUSE_SLOT_ON                (1 << 11)       /* 8125b and later */
>>
>> This confuses me though: RX_EARLY_OFF is (1 << 11) as well.. Is that
>> from a different set of devices?
> 
> Yes, for a different HW version of the device.
> 

Great.

>> We're writing to the same register
>> RxConfig here I think in both cases?
> 
> Yes. But to different versions of the HW which use this bit
> differently. Ergo the comment about "8125b and later".
> 
>> Can you clarify if these are supposed to be the same bit?
> 
> Yes, they are the same bit - but different versions of HW use BIT(11)
> differently.

Thanks for the clarification!

> 
>>
>>>  #define      RXCFG_DMA_SHIFT                 8
>>>                                       /* Unlimited maximum PCI burst. */
>>>  #define      RX_DMA_BURST                    (7 << RXCFG_DMA_SHIFT)
>>> @@ -2306,9 +2307,13 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>>>       case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
>>>               RTL_W32(tp, RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST | RX_EARLY_OFF);
>>>               break;
>>> -     case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
>>> +     case RTL_GIGA_MAC_VER_61:
>>>               RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>>>               break;
>>
>> I assume there isn't a VER_62 between these?
> 
> Correct. My clue is this code near the top of this file:
> 
>  149         [RTL_GIGA_MAC_VER_61] = {"RTL8125A",            FIRMWARE_8125A_3},
>  150         /* reserve 62 for CFG_METHOD_4 in the vendor driver */
>  151         [RTL_GIGA_MAC_VER_63] = {"RTL8125B",            FIRMWARE_8125B_2},
> 
>>
>>> +     case RTL_GIGA_MAC_VER_63:
>>> +             RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
>>> +                     RX_PAUSE_SLOT_ON);
>>
>> We add RX_PAUSE_SLOT_ON now for RTL_GIGA_MAC_VER_63 in addition. Makes
>> sense.
> 
> Exactly.
> 
> thanks for reviewing!
> 

Great.

For the record:

Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net v2] r8169: fix rtl8125b PAUSE frames blasting when suspended
  2023-11-29 23:04  5% ` Jacob Keller
@ 2023-11-29 23:40 10%   ` Grant Grundler
  2023-11-30 22:25  5%     ` Jacob Keller
  0 siblings, 1 reply; 107+ results
From: Grant Grundler @ 2023-11-29 23:40 UTC (permalink / raw)
  To: Jacob Keller
  Cc: ChunHao Lin, hkallweit1, nic_swsd, davem, edumazet, kuba, pabeni,
	netdev, linux-kernel, grundler, stable

On Wed, Nov 29, 2023 at 3:05 PM Jacob Keller <jacob.e.keller@intel.com> wrote:
> On 11/29/2023 7:53 AM, ChunHao Lin wrote:
> > When FIFO reaches near full state, device will issue pause frame.
> > If pause slot is enabled(set to 1), in this time, device will issue
> > pause frame only once. But if pause slot is disabled(set to 0), device
> > will keep sending pause frames until FIFO reaches near empty state.
> >
> > When pause slot is disabled, if there is no one to handle receive
> > packets, device FIFO will reach near full state and keep sending
> > pause frames. That will impact entire local area network.
> >
> > This issue can be reproduced in Chromebox (not Chromebook) in
> > developer mode running a test image (and v5.10 kernel):
> > 1) ping -f $CHROMEBOX (from workstation on same local network)
> > 2) run "powerd_dbus_suspend" from command line on the $CHROMEBOX
> > 3) ping $ROUTER (wait until ping fails from workstation)
> >
> > Takes about ~20-30 seconds after step 2 for the local network to
> > stop working.
> >
> > Fix this issue by enabling pause slot to only send pause frame once
> > when FIFO reaches near full state.
> >
>
> Makes sense. Avoiding the spam is good.  The naming is a bit confusing
> but I guess that comes from realtek datasheet?

I don't know. It doesn't matter to me what it's called since I don't
have access to the data sheet anyway. :/

> > Fixes: f1bce4ad2f1c ("r8169: add support for RTL8125")
> > Reported-by: Grant Grundler <grundler@chromium.org>
> > Tested-by: Grant Grundler <grundler@chromium.org>
> > Cc: stable@vger.kernel.org
> > Signed-off-by: ChunHao Lin <hau@realtek.com>
> > ---
> > v2:
> > - update comment and title.
> > ---
> >  drivers/net/ethernet/realtek/r8169_main.c | 7 ++++++-
> >  1 file changed, 6 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> > index 62cabeeb842a..bb787a52bc75 100644
> > --- a/drivers/net/ethernet/realtek/r8169_main.c
> > +++ b/drivers/net/ethernet/realtek/r8169_main.c
> > @@ -196,6 +196,7 @@ enum rtl_registers {
> >                                       /* No threshold before first PCI xfer */
> >  #define      RX_FIFO_THRESH                  (7 << RXCFG_FIFO_SHIFT)
> >  #define      RX_EARLY_OFF                    (1 << 11)
> > +#define      RX_PAUSE_SLOT_ON                (1 << 11)       /* 8125b and later */
>
> This confuses me though: RX_EARLY_OFF is (1 << 11) as well.. Is that
> from a different set of devices?

Yes, for a different HW version of the device.

> We're writing to the same register
> RxConfig here I think in both cases?

Yes. But to different versions of the HW which use this bit
differently. Ergo the comment about "8125b and later".

> Can you clarify if these are supposed to be the same bit?

Yes, they are the same bit - but different versions of HW use BIT(11)
differently.

>
> >  #define      RXCFG_DMA_SHIFT                 8
> >                                       /* Unlimited maximum PCI burst. */
> >  #define      RX_DMA_BURST                    (7 << RXCFG_DMA_SHIFT)
> > @@ -2306,9 +2307,13 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
> >       case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
> >               RTL_W32(tp, RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST | RX_EARLY_OFF);
> >               break;
> > -     case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
> > +     case RTL_GIGA_MAC_VER_61:
> >               RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
> >               break;
>
> I assume there isn't a VER_62 between these?

Correct. My clue is this code near the top of this file:

 149         [RTL_GIGA_MAC_VER_61] = {"RTL8125A",            FIRMWARE_8125A_3},
 150         /* reserve 62 for CFG_METHOD_4 in the vendor driver */
 151         [RTL_GIGA_MAC_VER_63] = {"RTL8125B",            FIRMWARE_8125B_2},

>
> > +     case RTL_GIGA_MAC_VER_63:
> > +             RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
> > +                     RX_PAUSE_SLOT_ON);
>
> We add RX_PAUSE_SLOT_ON now for RTL_GIGA_MAC_VER_63 in addition. Makes
> sense.

Exactly.

thanks for reviewing!

cheers,
grant

> > +             break;
> >       default:
> >               RTL_W32(tp, RxConfig, RX128_INT_EN | RX_DMA_BURST);
> >               break;

^ permalink raw reply	[relevance 10%]

* Re: [PATCH net v2] r8169: fix rtl8125b PAUSE frames blasting when suspended
  2023-11-29 15:53  4% [PATCH net v2] r8169: fix rtl8125b PAUSE frames blasting when suspended ChunHao Lin
@ 2023-11-29 23:04  5% ` Jacob Keller
  2023-11-29 23:40 10%   ` Grant Grundler
  2023-12-02  4:14  5% ` Jakub Kicinski
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 107+ results
From: Jacob Keller @ 2023-11-29 23:04 UTC (permalink / raw)
  To: ChunHao Lin, hkallweit1
  Cc: nic_swsd, davem, edumazet, kuba, pabeni, netdev, linux-kernel,
	grundler, stable



On 11/29/2023 7:53 AM, ChunHao Lin wrote:
> When FIFO reaches near full state, device will issue pause frame.
> If pause slot is enabled(set to 1), in this time, device will issue
> pause frame only once. But if pause slot is disabled(set to 0), device
> will keep sending pause frames until FIFO reaches near empty state.
> 
> When pause slot is disabled, if there is no one to handle receive
> packets, device FIFO will reach near full state and keep sending
> pause frames. That will impact entire local area network.
> 
> This issue can be reproduced in Chromebox (not Chromebook) in
> developer mode running a test image (and v5.10 kernel):
> 1) ping -f $CHROMEBOX (from workstation on same local network)
> 2) run "powerd_dbus_suspend" from command line on the $CHROMEBOX
> 3) ping $ROUTER (wait until ping fails from workstation)
> 
> Takes about ~20-30 seconds after step 2 for the local network to
> stop working.
> 
> Fix this issue by enabling pause slot to only send pause frame once
> when FIFO reaches near full state.
> 

Makes sense. Avoiding the spam is good. The naming is a bit confusing
but I guess that comes from realtek datasheet?

> Fixes: f1bce4ad2f1c ("r8169: add support for RTL8125")
> Reported-by: Grant Grundler <grundler@chromium.org>
> Tested-by: Grant Grundler <grundler@chromium.org>
> Cc: stable@vger.kernel.org
> Signed-off-by: ChunHao Lin <hau@realtek.com>
> ---
> v2:
> - update comment and title.
> ---
>  drivers/net/ethernet/realtek/r8169_main.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index 62cabeeb842a..bb787a52bc75 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -196,6 +196,7 @@ enum rtl_registers {
>  					/* No threshold before first PCI xfer */
>  #define	RX_FIFO_THRESH			(7 << RXCFG_FIFO_SHIFT)
>  #define	RX_EARLY_OFF			(1 << 11)
> +#define	RX_PAUSE_SLOT_ON		(1 << 11)	/* 8125b and later */

This confuses me though: RX_EARLY_OFF is (1 << 11) as well.. Is that
from a different set of devices? We're writing to the same register
RxConfig here I think in both cases?

Can you clarify if these are supposed to be the same bit?

>  #define	RXCFG_DMA_SHIFT			8
>  					/* Unlimited maximum PCI burst. */
>  #define	RX_DMA_BURST			(7 << RXCFG_DMA_SHIFT)
> @@ -2306,9 +2307,13 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>  	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
>  		RTL_W32(tp, RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST | RX_EARLY_OFF);
>  		break;
> -	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
> +	case RTL_GIGA_MAC_VER_61:
>  		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>  		break;

I assume there isn't a VER_62 between these?

> +	case RTL_GIGA_MAC_VER_63:
> +		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
> +			RX_PAUSE_SLOT_ON);

We add RX_PAUSE_SLOT_ON now for RTL_GIGA_MAC_VER_63 in addition. Makes
sense.
> +		break;
>  	default:
>  		RTL_W32(tp, RxConfig, RX128_INT_EN | RX_DMA_BURST);
>  		break;

^ permalink raw reply	[relevance 5%]

* [PATCH net v2] r8169: fix rtl8125b PAUSE frames blasting when suspended
@ 2023-11-29 15:53  4% ChunHao Lin
  2023-11-29 23:04  5% ` Jacob Keller
                   ` (3 more replies)
  0 siblings, 4 replies; 107+ results
From: ChunHao Lin @ 2023-11-29 15:53 UTC (permalink / raw)
  To: hkallweit1
  Cc: nic_swsd, davem, edumazet, kuba, pabeni, netdev, linux-kernel,
	grundler, ChunHao Lin, stable

When FIFO reaches near full state, device will issue pause frame.
If pause slot is enabled(set to 1), in this time, device will issue
pause frame only once. But if pause slot is disabled(set to 0), device
will keep sending pause frames until FIFO reaches near empty state.

When pause slot is disabled, if there is no one to handle receive
packets, device FIFO will reach near full state and keep sending
pause frames. That will impact entire local area network.

This issue can be reproduced in Chromebox (not Chromebook) in
developer mode running a test image (and v5.10 kernel):
1) ping -f $CHROMEBOX (from workstation on same local network)
2) run "powerd_dbus_suspend" from command line on the $CHROMEBOX
3) ping $ROUTER (wait until ping fails from workstation)

Takes about ~20-30 seconds after step 2 for the local network to
stop working.

Fix this issue by enabling pause slot to only send pause frame once
when FIFO reaches near full state.

Fixes: f1bce4ad2f1c ("r8169: add support for RTL8125")
Reported-by: Grant Grundler <grundler@chromium.org>
Tested-by: Grant Grundler <grundler@chromium.org>
Cc: stable@vger.kernel.org
Signed-off-by: ChunHao Lin <hau@realtek.com>
---
v2:
- update comment and title.
---
 drivers/net/ethernet/realtek/r8169_main.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 62cabeeb842a..bb787a52bc75 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -196,6 +196,7 @@ enum rtl_registers {
 					/* No threshold before first PCI xfer */
 #define	RX_FIFO_THRESH			(7 << RXCFG_FIFO_SHIFT)
 #define	RX_EARLY_OFF			(1 << 11)
+#define	RX_PAUSE_SLOT_ON		(1 << 11)	/* 8125b and later */
 #define	RXCFG_DMA_SHIFT			8
 					/* Unlimited maximum PCI burst. */
 #define	RX_DMA_BURST			(7 << RXCFG_DMA_SHIFT)
@@ -2306,9 +2307,13 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
 		RTL_W32(tp, RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST | RX_EARLY_OFF);
 		break;
-	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_61:
 		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
 		break;
+	case RTL_GIGA_MAC_VER_63:
+		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
+			RX_PAUSE_SLOT_ON);
+		break;
 	default:
 		RTL_W32(tp, RxConfig, RX128_INT_EN | RX_DMA_BURST);
 		break;
-- 
2.39.2


^ permalink raw reply related	[relevance 4%]

* RE: [PATCH net 1/2] r8169: enable rtl8125b pause slot
  2023-11-27 20:03 10%   ` Heiner Kallweit
  2023-11-27 20:28  5%     ` Grant Grundler
@ 2023-11-29 15:08  5%     ` Hau
  1 sibling, 0 replies; 107+ results
From: Hau @ 2023-11-29 15:08 UTC (permalink / raw)
  To: Heiner Kallweit
  Cc: nic_swsd, davem, edumazet, kuba, pabeni, netdev, linux-kernel,
	grundler, stable

> > When FIFO reach near full state, device will issue pause frame.
> > If pause slot is enabled(set to 1), in this time, device will issue
> > pause frame once. But if pause slot is disabled(set to 0), device will
> > keep sending pause frames until FIFO reach near empty state.
> >
> > When pause slot is disabled, if there is no one to handle receive
> > packets (ex. unexpected shutdown), device FIFO will reach near full
> > state and keep sending pause frames. That will impact entire local
> > area network.
> >
> > In this patch default enable pause slot to prevent this kind of
> > situation.
> >
> Can this change have any side effect? I'm asking because apparently the hw
> engineers had a reason to make the behavior configurable.

It should not have any side effect. This setting is also used in Realtek driver.

> > Fixes: f1bce4ad2f1c ("r8169: add support for RTL8125")
> > Cc: stable@vger.kernel.org
> > Signed-off-by: ChunHao Lin <hau@realtek.com>
> > ---
> >  drivers/net/ethernet/realtek/r8169_main.c | 7 ++++++-
> >  1 file changed, 6 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> > b/drivers/net/ethernet/realtek/r8169_main.c
> > index 295366a85c63..473b3245754f 100644
> > --- a/drivers/net/ethernet/realtek/r8169_main.c
> > +++ b/drivers/net/ethernet/realtek/r8169_main.c
> > @@ -196,6 +196,7 @@ enum rtl_registers {
> >                                       /* No threshold before first PCI xfer */
> >  #define      RX_FIFO_THRESH                  (7 << RXCFG_FIFO_SHIFT)
> >  #define      RX_EARLY_OFF                    (1 << 11)
> > +#define      RX_PAUSE_SLOT_ON                (1 << 11)
> 
> Depending on the chip version this bit has different meanings. Therefore it
> would be good to add a comment that RX_PAUSE_SLOT_ON is specific to
> RTL8125B.

I will do that and submit again.

> >  #define      RXCFG_DMA_SHIFT                 8
> >                                       /* Unlimited maximum PCI burst. */
> >  #define      RX_DMA_BURST                    (7 << RXCFG_DMA_SHIFT)
> > @@ -2305,9 +2306,13 @@ static void rtl_init_rxcfg(struct rtl8169_private
> *tp)
> >       case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
> >               RTL_W32(tp, RxConfig, RX128_INT_EN | RX_MULTI_EN |
> RX_DMA_BURST | RX_EARLY_OFF);
> >               break;
> > -     case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
> > +     case RTL_GIGA_MAC_VER_61:
> >               RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
> >               break;
> > +     case RTL_GIGA_MAC_VER_63:
> > +             RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
> > +                     RX_PAUSE_SLOT_ON);
> > +             break;
> >       default:
> >               RTL_W32(tp, RxConfig, RX128_INT_EN | RX_DMA_BURST);
> >               break;


^ permalink raw reply	[relevance 5%]

* Re: [PATCH net 1/2] r8169: enable rtl8125b pause slot
  2023-11-27 20:03 10%   ` Heiner Kallweit
@ 2023-11-27 20:28  5%     ` Grant Grundler
  2023-11-29 15:08  5%     ` Hau
  1 sibling, 0 replies; 107+ results
From: Grant Grundler @ 2023-11-27 20:28 UTC (permalink / raw)
  To: Heiner Kallweit
  Cc: ChunHao Lin, nic_swsd, davem, edumazet, kuba, pabeni, netdev,
	linux-kernel, grundler, stable

On Mon, Nov 27, 2023 at 12:03 PM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>
> On 27.11.2023 18:57, ChunHao Lin wrote:
> > When FIFO reach near full state, device will issue pause frame.
> > If pause slot is enabled(set to 1), in this time, device will issue
> > pause frame once. But if pause slot is disabled(set to 0), device
> > will keep sending pause frames until FIFO reach near empty state.
> >
> > When pause slot is disabled, if there is no one to handle receive
> > packets (ex. unexpected shutdown), device FIFO will reach near full
> > state and keep sending pause frames. That will impact entire local
> > area network.

The comment is correct but should mention that this is true after a
suspend. In other words, when an idle device goes into a lower power
state, eventually the NIC will start blasting PAUSE frames on the
local network.

I was able to reproduce the problem very easily with a recent
Chromebox (not Chromebook) in developer mode running a test image (and
v5.10 kernel):
1) ping -f $CHROMEBOX (from workstation on same local network)
2) run "powerd_dbus_suspend" from command line on the $CHROMEBOX
3) ping $ROUTER (wait until ping fails from workstation)

Takes about ~20-30 seconds after step 2 for the local network to stop working.
At that point, tcpdump from the workstation is full of PAUSE frames.

I did not check that WOL still works.

The exact patches I used on chromeos-5.10 kernel branch are publicly
visible here:
    https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/5056381

> > In this patch default enable pause slot to prevent this kind of
> > situation.
> >
> Can this change have any side effect? I'm asking because apparently
> the hw engineers had a reason to make the behavior configurable.
>
> > Fixes: f1bce4ad2f1c ("r8169: add support for RTL8125")
> > Cc: stable@vger.kernel.org
> > Signed-off-by: ChunHao Lin <hau@realtek.com>

Tested-by: Grant Grundler <grundler@chromium.org>
Reviewed-by: Grant Grundler <grundler@chromiuim.org>

(adding my reviewed-by to indicate I think the code is fine... I
appreciate Heiner asking for better comments though.)

cheers,
grant

> > ---
> >  drivers/net/ethernet/realtek/r8169_main.c | 7 ++++++-
> >  1 file changed, 6 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> > index 295366a85c63..473b3245754f 100644
> > --- a/drivers/net/ethernet/realtek/r8169_main.c
> > +++ b/drivers/net/ethernet/realtek/r8169_main.c
> > @@ -196,6 +196,7 @@ enum rtl_registers {
> >                                       /* No threshold before first PCI xfer */
> >  #define      RX_FIFO_THRESH                  (7 << RXCFG_FIFO_SHIFT)
> >  #define      RX_EARLY_OFF                    (1 << 11)
> > +#define      RX_PAUSE_SLOT_ON                (1 << 11)
>
> Depending on the chip version this bit has different meanings. Therefore it
> would be good to add a comment that RX_PAUSE_SLOT_ON is specific to RTL8125B.
>
> >  #define      RXCFG_DMA_SHIFT                 8
> >                                       /* Unlimited maximum PCI burst. */
> >  #define      RX_DMA_BURST                    (7 << RXCFG_DMA_SHIFT)
> > @@ -2305,9 +2306,13 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
> >       case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
> >               RTL_W32(tp, RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST | RX_EARLY_OFF);
> >               break;
> > -     case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
> > +     case RTL_GIGA_MAC_VER_61:
> >               RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
> >               break;
> > +     case RTL_GIGA_MAC_VER_63:
> > +             RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
> > +                     RX_PAUSE_SLOT_ON);
> > +             break;
> >       default:
> >               RTL_W32(tp, RxConfig, RX128_INT_EN | RX_DMA_BURST);
> >               break;
>

^ permalink raw reply	[relevance 5%]

* [PATCH net-next] r8169: remove multicast filter limit
@ 2023-11-27 20:16  5% Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2023-11-27 20:16 UTC (permalink / raw)
  To: Realtek linux nic maintainers, Paolo Abeni, Jakub Kicinski,
	Eric Dumazet, David Miller
  Cc: netdev

Once upon a time, when r8169 was new, the multicast filter limit code
was copied from RTL8139 driver. There the filter limit is even
user-configurable.
The filtering is hash-based and we don't have perfect filtering.
Actually the mc filtering on RTL8125 still seems to be the same
as used on 8390/NE2000. So it's not clear to me which benefit it
should bring when switching to all-multi mode once a certain number
of filter bits is set. More the opposite: Filtering out at least
some unwanted mc traffic is better than no filtering.
Also the available chip documentation doesn't mention any restriction.
Therefore remove the filter limit.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index dbc5c9d35..0aed99a20 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -56,10 +56,6 @@
 #define FIRMWARE_8125A_3	"rtl_nic/rtl8125a-3.fw"
 #define FIRMWARE_8125B_2	"rtl_nic/rtl8125b-2.fw"
 
-/* Maximum number of multicast addresses to filter (vs. Rx-all-multicast).
-   The RTL chips use a 64 element hash table based on the Ethernet CRC. */
-#define	MC_FILTER_LIMIT	32
-
 #define TX_DMA_BURST	7	/* Maximum PCI burst, '7' is unlimited */
 #define InterFrameGap	0x03	/* 3 means InterFrameGap = the shortest one */
 
@@ -2597,8 +2593,7 @@ static void rtl_set_rx_mode(struct net_device *dev)
 		rx_mode |= AcceptAllPhys;
 	} else if (!(dev->flags & IFF_MULTICAST)) {
 		rx_mode &= ~AcceptMulticast;
-	} else if (netdev_mc_count(dev) > MC_FILTER_LIMIT ||
-		   dev->flags & IFF_ALLMULTI ||
+	} else if (dev->flags & IFF_ALLMULTI ||
 		   tp->mac_version == RTL_GIGA_MAC_VER_35) {
 		/* accept all multicasts */
 	} else if (netdev_mc_empty(dev)) {
-- 
2.43.0



^ permalink raw reply related	[relevance 5%]

* Re: [PATCH net 1/2] r8169: enable rtl8125b pause slot
  2023-11-27 17:57  4% ` [PATCH net 1/2] r8169: enable rtl8125b pause slot ChunHao Lin
@ 2023-11-27 20:03 10%   ` Heiner Kallweit
  2023-11-27 20:28  5%     ` Grant Grundler
  2023-11-29 15:08  5%     ` Hau
  0 siblings, 2 replies; 107+ results
From: Heiner Kallweit @ 2023-11-27 20:03 UTC (permalink / raw)
  To: ChunHao Lin
  Cc: nic_swsd, davem, edumazet, kuba, pabeni, netdev, linux-kernel,
	grundler, stable

On 27.11.2023 18:57, ChunHao Lin wrote:
> When FIFO reach near full state, device will issue pause frame.
> If pause slot is enabled(set to 1), in this time, device will issue
> pause frame once. But if pause slot is disabled(set to 0), device
> will keep sending pause frames until FIFO reach near empty state.
> 
> When pause slot is disabled, if there is no one to handle receive
> packets (ex. unexpected shutdown), device FIFO will reach near full
> state and keep sending pause frames. That will impact entire local
> area network.
> 
> In this patch default enable pause slot to prevent this kind of
> situation.
> 
Can this change have any side effect? I'm asking because apparently
the hw engineers had a reason to make the behavior configurable.

> Fixes: f1bce4ad2f1c ("r8169: add support for RTL8125")
> Cc: stable@vger.kernel.org
> Signed-off-by: ChunHao Lin <hau@realtek.com>
> ---
>  drivers/net/ethernet/realtek/r8169_main.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index 295366a85c63..473b3245754f 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -196,6 +196,7 @@ enum rtl_registers {
>  					/* No threshold before first PCI xfer */
>  #define	RX_FIFO_THRESH			(7 << RXCFG_FIFO_SHIFT)
>  #define	RX_EARLY_OFF			(1 << 11)
> +#define	RX_PAUSE_SLOT_ON		(1 << 11)

Depending on the chip version this bit has different meanings. Therefore it
would be good to add a comment that RX_PAUSE_SLOT_ON is specific to RTL8125B.

>  #define	RXCFG_DMA_SHIFT			8
>  					/* Unlimited maximum PCI burst. */
>  #define	RX_DMA_BURST			(7 << RXCFG_DMA_SHIFT)
> @@ -2305,9 +2306,13 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>  	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
>  		RTL_W32(tp, RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST | RX_EARLY_OFF);
>  		break;
> -	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
> +	case RTL_GIGA_MAC_VER_61:
>  		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>  		break;
> +	case RTL_GIGA_MAC_VER_63:
> +		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
> +			RX_PAUSE_SLOT_ON);
> +		break;
>  	default:
>  		RTL_W32(tp, RxConfig, RX128_INT_EN | RX_DMA_BURST);
>  		break;


^ permalink raw reply	[relevance 10%]

* [PATCH net 0/2] r8169: fix PAUSE frames blasting issue
@ 2023-11-27 17:57  5% ChunHao Lin
  2023-11-27 17:57  4% ` [PATCH net 1/2] r8169: enable rtl8125b pause slot ChunHao Lin
  0 siblings, 1 reply; 107+ results
From: ChunHao Lin @ 2023-11-27 17:57 UTC (permalink / raw)
  To: hkallweit1
  Cc: nic_swsd, davem, edumazet, kuba, pabeni, netdev, linux-kernel,
	grundler, ChunHao Lin

This series of patches are used to fix PAUSE frames blasting issue.

ChunHao Lin (2):
  r8169: enable rtl8125b pause slot
  r8169: fix deadlock in "r8169_phylink_handler"

 drivers/net/ethernet/realtek/r8169_main.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

-- 
2.39.2


^ permalink raw reply	[relevance 5%]

* [PATCH net 1/2] r8169: enable rtl8125b pause slot
  2023-11-27 17:57  5% [PATCH net 0/2] r8169: fix PAUSE frames blasting issue ChunHao Lin
@ 2023-11-27 17:57  4% ` ChunHao Lin
  2023-11-27 20:03 10%   ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: ChunHao Lin @ 2023-11-27 17:57 UTC (permalink / raw)
  To: hkallweit1
  Cc: nic_swsd, davem, edumazet, kuba, pabeni, netdev, linux-kernel,
	grundler, ChunHao Lin, stable

When FIFO reach near full state, device will issue pause frame.
If pause slot is enabled(set to 1), in this time, device will issue
pause frame once. But if pause slot is disabled(set to 0), device
will keep sending pause frames until FIFO reach near empty state.

When pause slot is disabled, if there is no one to handle receive
packets (ex. unexpected shutdown), device FIFO will reach near full
state and keep sending pause frames. That will impact entire local
area network.

In this patch default enable pause slot to prevent this kind of
situation.

Fixes: f1bce4ad2f1c ("r8169: add support for RTL8125")
Cc: stable@vger.kernel.org
Signed-off-by: ChunHao Lin <hau@realtek.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 295366a85c63..473b3245754f 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -196,6 +196,7 @@ enum rtl_registers {
 					/* No threshold before first PCI xfer */
 #define	RX_FIFO_THRESH			(7 << RXCFG_FIFO_SHIFT)
 #define	RX_EARLY_OFF			(1 << 11)
+#define	RX_PAUSE_SLOT_ON		(1 << 11)
 #define	RXCFG_DMA_SHIFT			8
 					/* Unlimited maximum PCI burst. */
 #define	RX_DMA_BURST			(7 << RXCFG_DMA_SHIFT)
@@ -2305,9 +2306,13 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
 		RTL_W32(tp, RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST | RX_EARLY_OFF);
 		break;
-	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_61:
 		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
 		break;
+	case RTL_GIGA_MAC_VER_63:
+		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
+			RX_PAUSE_SLOT_ON);
+		break;
 	default:
 		RTL_W32(tp, RxConfig, RX128_INT_EN | RX_DMA_BURST);
 		break;
-- 
2.39.2


^ permalink raw reply related	[relevance 4%]

* Re: Linux kernel 6.6.2: Dragon RTL8125BG network card stopped working
       [not found]     <CANy-wRkkBwjGoBhKFDYhw7K_=xH853PTsv-oU0d8jXtmf7PcDQ@mail.gmail.com>
@ 2023-11-26 10:35  0% ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2023-11-26 10:35 UTC (permalink / raw)
  To: Gregor Mlakar; +Cc: netdev

On 26.11.2023 02:46, Gregor Mlakar wrote:
> Hello,
> 
> network card (Dragon RTL8125BG) on my motherboard (B650E Steel Legend WiFi) has stopped working on Arch Linux distribution with linux kernel 6.6.2 (both normal and zen kernel). If I revert back to kernel 6.6.1 it works fine. When I try to reboot, the PC gets stuck at line saying "watchdog did not stop!".
> 
> Motherboard:
> https://www.asrock.com/mb/AMD/B650E%20Steel%20Legend%20WiFi/index.asp#Specification <https://www.asrock.com/mb/AMD/B650E%20Steel%20Legend%20WiFi/index.asp#Specification>
> 
> dmesg (the last part with call trace keeps repeating every 122s):
> 
>     [    7.612105] r8169 0000:09:00.0 eth0: RTL8125B, xx:xx:xx:xx:xx:xx, XID 641, IRQ 116
>     [    7.612109] r8169 0000:09:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
>     [    7.659150] r8169 0000:09:00.0 enp9s0: renamed from eth0
>     [    7.708638] cryptd: max_cpu_qlen set to 1000
>     [    7.726830] Bluetooth: Core ver 2.22
>     [    7.726844] NET: Registered PF_BLUETOOTH protocol family
>     [    7.726846] Bluetooth: HCI device and connection manager initialized
>     [    7.726848] Bluetooth: HCI socket layer initialized
>     [    7.726850] Bluetooth: L2CAP socket layer initialized
>     [    7.726853] Bluetooth: SCO socket layer initialized
>     [    7.726939] mc: Linux media interface: v0.10
>     [    7.730916] AVX2 version of gcm_enc/dec engaged.
>     [    7.730959] AES CTR mode by8 optimization enabled
>     [    7.741154] usbcore: registered new interface driver btusb
>     [    7.752863] Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time: xxxxxxxxxxxxxx
>     [    7.829804] kvm_amd: TSC scaling supported
>     [    7.829806] kvm_amd: Nested Virtualization enabled
>     [    7.829807] kvm_amd: Nested Paging enabled
>     [    7.829813] kvm_amd: Virtual VMLOAD VMSAVE supported
>     [    7.829813] kvm_amd: Virtual GIF supported
>     [    7.829814] kvm_amd: Virtual NMI enabled
>     [    7.829814] kvm_amd: LBR virtualization supported
>     [    7.837383] MCE: In-kernel MCE decoding enabled.
>     [    7.925523] intel_rapl_common: Found RAPL domain package
>     [    7.925525] intel_rapl_common: Found RAPL domain core
>     [    8.164594] usbcore: registered new interface driver snd-usb-audio
>     [    8.274455] cfg80211: Loading compiled-in X.509 certificates for regulatory database
>     [    8.274596] Loaded X.509 cert 'sforshee: xxxxxxxxxxxxxxxxxx'
>     [    8.274694] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
>     [    8.274697] cfg80211: failed to load regulatory.db
>     [    8.310577] RTL8226B_RTL8221B 2.5Gbps PHY r8169-0-900:00: attached PHY driver (mii_bus:phy_addr=r8169-0-900:00, irq=MAC)
>     [   29.331343] Bluetooth: hci0: Device setup in 21084167 usecs
>     [   29.331347] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
>     [   29.604845] Bluetooth: hci0: AOSP extensions version v1.00
>     [   29.604847] Bluetooth: hci0: AOSP quality report is supported
>     [  198.084608] firefox[969]: memfd_create() called without MFD_EXEC or MFD_NOEXEC_SEAL set
>     [  245.487028] INFO: task kworker/u66:4:261 blocked for more than 122 seconds.
>     [  245.487033]       Not tainted 6.6.2-arch1-1 #1
>     [  245.487034] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
>     [  245.487035] task:kworker/u66:4   state:D stack:0     pid:261   ppid:2      flags:0x00004000
>     [  245.487039] Workqueue: events_power_efficient phy_state_machine [libphy]
>     [  245.487051] Call Trace:
>     [  245.487052]  <TASK>
>     [  245.487054]  __schedule+0x3e8/0x1410
>     [  245.487058]  ? sysvec_apic_timer_interrupt+0xe/0x90
>     [  245.487063]  schedule+0x5e/0xd0
>     [  245.487065]  schedule_preempt_disabled+0x15/0x30
>     [  245.487067]  __mutex_lock.constprop.0+0x39a/0x6a0
>     [  245.487071]  phy_start_aneg+0x1d/0x40 [libphy 93248cd1d88abf54f1b4cc64a990177f549a7710]
>     [  245.487081]  rtl_reset_work+0x1bd/0x3b0 [r8169 08653ab60f23923c3943d53f140b2b697e265b93]
>     [  245.487087]  r8169_phylink_handler+0x5b/0x240 [r8169 08653ab60f23923c3943d53f140b2b697e265b93]
>     [  245.487091]  phy_link_change+0x2e/0x60 [libphy 93248cd1d88abf54f1b4cc64a990177f549a7710]
>     [  245.487101]  phy_check_link_status+0xad/0xe0 [libphy 93248cd1d88abf54f1b4cc64a990177f549a7710]
>     [  245.487110]  phy_state_machine+0x80/0x2c0 [libphy 93248cd1d88abf54f1b4cc64a990177f549a7710]
>     [  245.487119]  process_one_work+0x171/0x340
>     [  245.487123]  worker_thread+0x27b/0x3a0
>     [  245.487125]  ? __pfx_worker_thread+0x10/0x10
>     [  245.487126]  kthread+0xe5/0x120
>     [  245.487129]  ? __pfx_kthread+0x10/0x10
>     [  245.487131]  ret_from_fork+0x31/0x50
>     [  245.487134]  ? __pfx_kthread+0x10/0x10
>     [  245.487135]  ret_from_fork_asm+0x1b/0x30
>     [  245.487141]  </TASK>
> 
> 
> lspci:
> 
>     09:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
>     Subsystem: ASRock Incorporation RTL8125 2.5GbE Controller
>     Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
>     Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>     Latency: 0, Cache Line Size: 64 bytes
>     Interrupt: pin A routed to IRQ 40
>     IOMMU group: 1
>     Region 0: I/O ports at e000 [size=256]
>     Region 2: Memory at fca00000 (64-bit, non-prefetchable) [size=64K]
>     Region 4: Memory at fca10000 (64-bit, non-prefetchable) [size=16K]
>     Capabilities: [40] Power Management version 3
>     Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
>     Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
>     Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
>     Address: 0000000000000000  Data: 0000
>     Masking: 00000000  Pending: 00000000
>     Capabilities: [70] Express (v2) Endpoint, MSI 01
>     DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
>     ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 26W
>     DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
>     RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
>     MaxPayload 256 bytes, MaxReadReq 4096 bytes
>     DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
>     LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 <64us
>     ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
>     LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
>     ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>     LnkSta: Speed 5GT/s, Width x1
>     TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
>     DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
>     10BitTagComp- 10BitTagReq- OBFF Via message/WAKE#, ExtFmt- EETLPPrefix-
>     EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
>     FRS- TPHComp+ ExtTPHComp-
>     AtomicOpsCap: 32bit- 64bit- 128bitCAS-
>     DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled,
>     AtomicOpsCtl: ReqEn-
>     LnkCap2: Supported Link Speeds: 2.5-5GT/s, Crosslink- Retimer- 2Retimers- DRS-
>     LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
>     Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
>     Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
>     LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
>     EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
>     Retimer- 2Retimers- CrosslinkRes: unsupported
>     Capabilities: [b0] MSI-X: Enable+ Count=32 Masked-
>     Vector table: BAR=4 offset=00000000
>     PBA: BAR=4 offset=00000800
>     Capabilities: [d0] Vital Product Data
>     pcilib: sysfs_read_vpd: read failed: No such device
>     Not readable
>     Capabilities: [100 v2] Advanced Error Reporting
>     UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
>     UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
>     UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
>     CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
>     CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
>     AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
>     MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
>     HeaderLog: 00000000 00000000 00000000 00000000
>     Capabilities: [148 v1] Virtual Channel
>     Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
>     Arb: Fixed- WRR32- WRR64- WRR128-
>     Ctrl: ArbSelect=Fixed
>     Status: InProgress-
>     VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
>     Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
>     Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=01
>     Status: NegoPending- InProgress-
>     Capabilities: [168 v1] Device Serial Number xx-xx-xx-xx-xx-xx-xx-xx
>     Capabilities: [178 v1] Transaction Processing Hints
>     No steering table available
>     Capabilities: [204 v1] Latency Tolerance Reporting
>     Max snoop latency: 0ns
>     Max no snoop latency: 0ns
>     Capabilities: [20c v1] L1 PM Substates
>     L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
>      PortCommonModeRestoreTime=150us PortTPowerOnTime=150us
>     L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
>       T_CommonMode=0us LTR1.2_Threshold=306176ns
>     L1SubCtl2: T_PwrOn=150us
>     Capabilities: [21c v1] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
>     Kernel driver in use: r8169
>     Kernel modules: r8169
> 
> 
> Best regards,
> Gregor Mlakar


Thanks for the report. A very similar, or even same, issue has been reported already.
Are you using a jumbo mtu?
Could you please test whether the following fixes the issue for you?

---
 drivers/net/ethernet/realtek/r8169_main.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 0aed99a20..e32cc3279 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -575,6 +575,7 @@ struct rtl8169_tc_offsets {
 enum rtl_flag {
 	RTL_FLAG_TASK_ENABLED = 0,
 	RTL_FLAG_TASK_RESET_PENDING,
+	RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE,
 	RTL_FLAG_TASK_TX_TIMEOUT,
 	RTL_FLAG_MAX
 };
@@ -4494,6 +4495,8 @@ static void rtl_task(struct work_struct *work)
 reset:
 		rtl_reset_work(tp);
 		netif_wake_queue(tp->dev);
+	} else if (test_and_clear_bit(RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE, tp->wk.flags)) {
+		rtl_reset_work(tp);
 	}
 out_unlock:
 	rtnl_unlock();
@@ -4527,7 +4530,7 @@ static void r8169_phylink_handler(struct net_device *ndev)
 	} else {
 		/* In few cases rx is broken after link-down otherwise */
 		if (rtl_is_8125(tp))
-			rtl_reset_work(tp);
+			rtl_schedule_task(tp, RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE);
 		pm_runtime_idle(d);
 	}
 
@@ -4603,7 +4606,7 @@ static int rtl8169_close(struct net_device *dev)
 	rtl8169_down(tp);
 	rtl8169_rx_clear(tp);
 
-	cancel_work_sync(&tp->wk.work);
+	cancel_work(&tp->wk.work);
 
 	free_irq(tp->irq, tp);
 
-- 
2.43.0




^ permalink raw reply related	[relevance 0%]

* Re: [BUG] r8169: deadlock when NetworkManager brings link up
  2023-11-25 13:55  2% [BUG] r8169: deadlock when NetworkManager brings link up Ian Chen
  2023-11-25 14:58  0% ` Heiner Kallweit
@ 2023-11-25 17:36  0% ` Heiner Kallweit
  1 sibling, 0 replies; 107+ results
From: Heiner Kallweit @ 2023-11-25 17:36 UTC (permalink / raw)
  To: Ian Chen, netdev

On 25.11.2023 14:55, Ian Chen wrote:
> Hello,
> 
> My home server runs Arch Linux with its stock kernel on a GIGABYTE Z790
> AORUS ELITE AX with its builtin RTL8125B ethernet adapter.
> 
> After upgrading from 6.6.1.arch1 to 6.6.2.arch1, booting up the system
> would end up in a state where all operations on any netlink socket
> would block forever. The system is effectively unusable. Here's the
> relevant dmesg:
> 
> kernel: INFO: task kworker/u64:2:218 blocked for more than 122 seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:kworker/u64:2   state:D stack:0     pid:218   ppid:2     
> flags:0x00004000
> kernel: Workqueue: events_power_efficient crda_timeout_work [cfg80211]
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  crda_timeout_work+0x10/0x40 [cfg80211
> d1ff02bd631e7b94dc4a8630ea4cdb5aede1cb9b]
> kernel:  process_one_work+0x171/0x340
> kernel:  worker_thread+0x27b/0x3a0
> kernel:  ? __pfx_worker_thread+0x10/0x10
> kernel:  kthread+0xe5/0x120
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork+0x31/0x50
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork_asm+0x1b/0x30
> kernel:  </TASK>
> kernel: INFO: task kworker/5:1:250 blocked for more than 122 seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:kworker/5:1     state:D stack:0     pid:250   ppid:2     
> flags:0x00004000
> kernel: Workqueue: events linkwatch_event
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  ? sched_clock+0x10/0x30
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  linkwatch_event+0x12/0x40
> kernel:  process_one_work+0x171/0x340
> kernel:  worker_thread+0x27b/0x3a0
> kernel:  ? __pfx_worker_thread+0x10/0x10
> kernel:  kthread+0xe5/0x120
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork+0x31/0x50
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork_asm+0x1b/0x30
> kernel:  </TASK>
> kernel: INFO: task kworker/u64:6:290 blocked for more than 122 seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:kworker/u64:6   state:D stack:0     pid:290   ppid:2     
> flags:0x00004000
> kernel: Workqueue: netns cleanup_net
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  wg_netns_pre_exit+0x19/0x100 [wireguard
> 0c090e6018e49e49957d27fd2202b1db304881dc]
> kernel:  cleanup_net+0x1e0/0x3b0
> kernel:  process_one_work+0x171/0x340
> kernel:  worker_thread+0x27b/0x3a0
> kernel:  ? __pfx_worker_thread+0x10/0x10
> kernel:  kthread+0xe5/0x120
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork+0x31/0x50
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork_asm+0x1b/0x30
> kernel:  </TASK>
> kernel: INFO: task kworker/u64:19:577 blocked for more than 122
> seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:kworker/u64:19  state:D stack:0     pid:577   ppid:2     
> flags:0x00004000
> kernel: Workqueue: events_power_efficient reg_check_chans_work
> [cfg80211]
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  ? _get_random_bytes+0xc0/0x1a0
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  ? finish_task_switch.isra.0+0x94/0x2f0
> kernel:  reg_check_chans_work+0x31/0x5b0 [cfg80211
> d1ff02bd631e7b94dc4a8630ea4cdb5aede1cb9b]
> kernel:  process_one_work+0x171/0x340
> kernel:  worker_thread+0x27b/0x3a0
> kernel:  ? __pfx_worker_thread+0x10/0x10
> kernel:  kthread+0xe5/0x120
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork+0x31/0x50
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork_asm+0x1b/0x30
> kernel:  </TASK>
> kernel: INFO: task kworker/u64:23:581 blocked for more than 122
> seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:kworker/u64:23  state:D stack:0     pid:581   ppid:2     
> flags:0x00004000
> kernel: Workqueue: events_power_efficient phy_state_machine [libphy]
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  phy_state_machine+0x47/0x2c0 [libphy
> 93248cd1d88abf54f1b4cc64a990177f549a7710]
> kernel:  process_one_work+0x171/0x340
> kernel:  worker_thread+0x27b/0x3a0
> kernel:  ? __pfx_worker_thread+0x10/0x10
> kernel:  kthread+0xe5/0x120
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork+0x31/0x50
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork_asm+0x1b/0x30
> kernel:  </TASK>
> kernel: INFO: task NetworkManager:849 blocked for more than 122
> seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:NetworkManager  state:D stack:0     pid:849   ppid:1     
> flags:0x00004002
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  ? sysvec_apic_timer_interrupt+0xe/0x90
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  ? pci_conf1_write+0xae/0xf0
> kernel:  ? pcie_set_readrq+0x8e/0x160
> kernel:  phy_start_aneg+0x1d/0x40 [libphy
> 93248cd1d88abf54f1b4cc64a990177f549a7710]
> kernel:  rtl_reset_work+0x1bd/0x3b0 [r8169
> 08653ab60f23923c3943d53f140b2b697e265b93]
> kernel:  r8169_phylink_handler+0x5b/0x240 [r8169
> 08653ab60f23923c3943d53f140b2b697e265b93]
> kernel:  phy_link_change+0x2e/0x60 [libphy
> 93248cd1d88abf54f1b4cc64a990177f549a7710]
> kernel:  phy_check_link_status+0xad/0xe0 [libphy
> 93248cd1d88abf54f1b4cc64a990177f549a7710]
> kernel:  phy_start_aneg+0x25/0x40 [libphy
> 93248cd1d88abf54f1b4cc64a990177f549a7710]
> kernel:  rtl8169_change_mtu+0x24/0x60 [r8169
> 08653ab60f23923c3943d53f140b2b697e265b93]
> kernel:  dev_set_mtu_ext+0xf1/0x200
> kernel:  ? select_task_rq_fair+0x82c/0x1dd0
> kernel:  do_setlink+0x291/0x12d0
> kernel:  ? remove_entity_load_avg+0x31/0x80
> kernel:  ? sched_clock+0x10/0x30
> kernel:  ? sched_clock_cpu+0xf/0x190
> kernel:  ? __smp_call_single_queue+0xad/0x120
> kernel:  ? ttwu_queue_wakelist+0xef/0x110
> kernel:  ? __nla_validate_parse+0x61/0xd10
> kernel:  ? try_to_wake_up+0x2b7/0x640
> kernel:  __rtnl_newlink+0x651/0xa10
> kernel:  ? __kmem_cache_alloc_node+0x1a6/0x340
> kernel:  ? rtnl_newlink+0x2e/0x70
> kernel:  rtnl_newlink+0x47/0x70
> kernel:  rtnetlink_rcv_msg+0x14f/0x3c0
> kernel:  ? number+0x33b/0x3d0
> kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
> kernel:  netlink_rcv_skb+0x58/0x110
> kernel:  netlink_unicast+0x1a3/0x290
> kernel:  netlink_sendmsg+0x254/0x4d0
> kernel:  ____sys_sendmsg+0x396/0x3d0
> kernel:  ? copy_msghdr_from_user+0x7d/0xc0
> kernel:  ___sys_sendmsg+0x9a/0xe0
> kernel:  __sys_sendmsg+0x7a/0xd0
> kernel:  do_syscall_64+0x5d/0x90
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
> kernel: RIP: 0033:0x7fc9232e7b3d
> kernel: RSP: 002b:00007fffd4df2830 EFLAGS: 00000293 ORIG_RAX:
> 000000000000002e
> kernel: RAX: ffffffffffffffda RBX: 0000000000000055 RCX:
> 00007fc9232e7b3d
> kernel: RDX: 0000000000000000 RSI: 00007fffd4df2870 RDI:
> 000000000000000d
> kernel: RBP: 00007fffd4df2c40 R08: 0000000000000000 R09:
> 0000000000000000
> kernel: R10: 0000000000000000 R11: 0000000000000293 R12:
> 0000563fe71367c0
> kernel: R13: 0000000000000001 R14: 0000000000000000 R15:
> 0000000000000000
> kernel:  </TASK>
> kernel: INFO: task geoclue:1358 blocked for more than 122 seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:geoclue         state:D stack:0     pid:1358  ppid:1     
> flags:0x00000002
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  __netlink_dump_start+0x75/0x290
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  rtnetlink_rcv_msg+0x277/0x3c0
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
> kernel:  netlink_rcv_skb+0x58/0x110
> kernel:  netlink_unicast+0x1a3/0x290
> kernel:  netlink_sendmsg+0x254/0x4d0
> kernel:  __sys_sendto+0x1f6/0x200
> kernel:  __x64_sys_sendto+0x24/0x30
> kernel:  do_syscall_64+0x5d/0x90
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
> kernel: RIP: 0033:0x7f977ae729ec
> kernel: RSP: 002b:00007ffeeb6aba50 EFLAGS: 00000246 ORIG_RAX:
> 000000000000002c
> kernel: RAX: ffffffffffffffda RBX: 000056084849e910 RCX:
> 00007f977ae729ec
> kernel: RDX: 0000000000000014 RSI: 00007ffeeb6abad0 RDI:
> 0000000000000007
> kernel: RBP: 0000000000000000 R08: 0000000000000000 R09:
> 0000000000000000
> kernel: R10: 0000000000004000 R11: 0000000000000246 R12:
> 0000000000000014
> kernel: R13: 0000000000000000 R14: 0000000000000000 R15:
> 0000000000000000
> kernel:  </TASK>
> kernel: INFO: task pool-gnome-shel:1986 blocked for more than 122
> seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:pool-gnome-shel state:D stack:0     pid:1986  ppid:1513  
> flags:0x00000002
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  __netlink_dump_start+0x75/0x290
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  rtnetlink_rcv_msg+0x277/0x3c0
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
> kernel:  netlink_rcv_skb+0x58/0x110
> kernel:  netlink_unicast+0x1a3/0x290
> kernel:  netlink_sendmsg+0x254/0x4d0
> kernel:  __sys_sendto+0x1f6/0x200
> kernel:  __x64_sys_sendto+0x24/0x30
> kernel:  do_syscall_64+0x5d/0x90
> kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? exc_page_fault+0x7f/0x180
> kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
> kernel: RIP: 0033:0x7f232af30bfc
> kernel: RSP: 002b:00007f223e1fbba0 EFLAGS: 00000293 ORIG_RAX:
> 000000000000002c
> kernel: RAX: ffffffffffffffda RBX: 00007f223e1fccc0 RCX:
> 00007f232af30bfc
> kernel: RDX: 0000000000000014 RSI: 00007f223e1fccc0 RDI:
> 0000000000000028
> kernel: RBP: 0000000000000000 R08: 00007f223e1fcc64 R09:
> 000000000000000c
> kernel: R10: 0000000000000000 R11: 0000000000000293 R12:
> 0000000000000028
> kernel: R13: 00007f223e1fcc80 R14: 0000000000000665 R15:
> 000055638262fd10
> kernel:  </TASK>
> kernel: INFO: task evolution-sourc:1819 blocked for more than 122
> seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:evolution-sourc state:D stack:0     pid:1819  ppid:1513  
> flags:0x00000006
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  ? netlink_lookup+0x151/0x1d0
> kernel:  __netlink_dump_start+0x75/0x290
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  rtnetlink_rcv_msg+0x277/0x3c0
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
> kernel:  netlink_rcv_skb+0x58/0x110
> kernel:  netlink_unicast+0x1a3/0x290
> kernel:  netlink_sendmsg+0x254/0x4d0
> kernel:  __sys_sendto+0x1f6/0x200
> kernel:  __x64_sys_sendto+0x24/0x30
> kernel:  do_syscall_64+0x5d/0x90
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? sock_getsockopt+0x22/0x30
> kernel:  ? __fget_light+0x99/0x100
> kernel:  ? __sys_setsockopt+0x129/0x1d0
> kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
> kernel: RIP: 0033:0x7f6aa096c9ec
> kernel: RSP: 002b:00007fff2b442820 EFLAGS: 00000246 ORIG_RAX:
> 000000000000002c
> kernel: RAX: ffffffffffffffda RBX: 0000561e6b466d80 RCX:
> 00007f6aa096c9ec
> kernel: RDX: 0000000000000014 RSI: 00007fff2b4428a0 RDI:
> 000000000000000a
> kernel: RBP: 0000000000000000 R08: 0000000000000000 R09:
> 0000000000000000
> kernel: R10: 0000000000004000 R11: 0000000000000246 R12:
> 0000000000000014
> kernel: R13: 00007fff2b442a70 R14: 0000000000000000 R15:
> 0000000000000001
> kernel:  </TASK>
> kernel: INFO: task gnome-software:1904 blocked for more than 122
> seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:gnome-software  state:D stack:0     pid:1904  ppid:1613  
> flags:0x00000002
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  ? __pte_offset_map_lock+0x9e/0x110
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  ? netlink_lookup+0x151/0x1d0
> kernel:  __netlink_dump_start+0x75/0x290
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  rtnetlink_rcv_msg+0x277/0x3c0
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
> kernel:  netlink_rcv_skb+0x58/0x110
> kernel:  netlink_unicast+0x1a3/0x290
> kernel:  netlink_sendmsg+0x254/0x4d0
> kernel:  __sys_sendto+0x1f6/0x200
> kernel:  __x64_sys_sendto+0x24/0x30
> kernel:  do_syscall_64+0x5d/0x90
> kernel:  ? __fget_light+0x99/0x100
> kernel:  ? __sys_setsockopt+0x129/0x1d0
> kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? exc_page_fault+0x7f/0x180
> kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
> kernel: RIP: 0033:0x7fdbfd26d9ec
> kernel: RSP: 002b:00007ffd15dd63e0 EFLAGS: 00000246 ORIG_RAX:
> 000000000000002c
> kernel: RAX: ffffffffffffffda RBX: 000056133c78f580 RCX:
> 00007fdbfd26d9ec
> kernel: RDX: 0000000000000014 RSI: 00007ffd15dd6460 RDI:
> 000000000000000b
> kernel: RBP: 0000000000000000 R08: 0000000000000000 R09:
> 0000000000000000
> kernel: R10: 0000000000004000 R11: 0000000000000246 R12:
> 0000000000000014
> kernel: R13: 00007ffd15dd6630 R14: 0000000000000000 R15:
> 0000000000000001
> kernel:  </TASK>
> kernel: Future hung task reports are suppressed, see sysctl
> kernel.hung_task_warnings
> 
> From the call traces, it seems that the issue is caused by commit
> 621735f590643e3048ca2060c285b80551660601 (r8169: fix rare issue with
> broken rx after link-down on RTL8125), which got backported to 6.6.2.
> 
> Ian

Could you please test whether the following fixes the issue for you?

---
 drivers/net/ethernet/realtek/r8169_main.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 0aed99a20..e32cc3279 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -575,6 +575,7 @@ struct rtl8169_tc_offsets {
 enum rtl_flag {
 	RTL_FLAG_TASK_ENABLED = 0,
 	RTL_FLAG_TASK_RESET_PENDING,
+	RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE,
 	RTL_FLAG_TASK_TX_TIMEOUT,
 	RTL_FLAG_MAX
 };
@@ -4494,6 +4495,8 @@ static void rtl_task(struct work_struct *work)
 reset:
 		rtl_reset_work(tp);
 		netif_wake_queue(tp->dev);
+	} else if (test_and_clear_bit(RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE, tp->wk.flags)) {
+		rtl_reset_work(tp);
 	}
 out_unlock:
 	rtnl_unlock();
@@ -4527,7 +4530,7 @@ static void r8169_phylink_handler(struct net_device *ndev)
 	} else {
 		/* In few cases rx is broken after link-down otherwise */
 		if (rtl_is_8125(tp))
-			rtl_reset_work(tp);
+			rtl_schedule_task(tp, RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE);
 		pm_runtime_idle(d);
 	}
 
@@ -4603,7 +4606,7 @@ static int rtl8169_close(struct net_device *dev)
 	rtl8169_down(tp);
 	rtl8169_rx_clear(tp);
 
-	cancel_work_sync(&tp->wk.work);
+	cancel_work(&tp->wk.work);
 
 	free_irq(tp->irq, tp);
 
-- 
2.43.0



^ permalink raw reply related	[relevance 0%]

* Re: [BUG] r8169: deadlock when NetworkManager brings link up
  2023-11-25 13:55  2% [BUG] r8169: deadlock when NetworkManager brings link up Ian Chen
@ 2023-11-25 14:58  0% ` Heiner Kallweit
  2023-11-25 17:36  0% ` Heiner Kallweit
  1 sibling, 0 replies; 107+ results
From: Heiner Kallweit @ 2023-11-25 14:58 UTC (permalink / raw)
  To: Ian Chen, netdev

On 25.11.2023 14:55, Ian Chen wrote:
> Hello,
> 
> My home server runs Arch Linux with its stock kernel on a GIGABYTE Z790
> AORUS ELITE AX with its builtin RTL8125B ethernet adapter.
> 
> After upgrading from 6.6.1.arch1 to 6.6.2.arch1, booting up the system
> would end up in a state where all operations on any netlink socket
> would block forever. The system is effectively unusable. Here's the
> relevant dmesg:
> 
> kernel: INFO: task kworker/u64:2:218 blocked for more than 122 seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:kworker/u64:2   state:D stack:0     pid:218   ppid:2     
> flags:0x00004000
> kernel: Workqueue: events_power_efficient crda_timeout_work [cfg80211]
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  crda_timeout_work+0x10/0x40 [cfg80211
> d1ff02bd631e7b94dc4a8630ea4cdb5aede1cb9b]
> kernel:  process_one_work+0x171/0x340
> kernel:  worker_thread+0x27b/0x3a0
> kernel:  ? __pfx_worker_thread+0x10/0x10
> kernel:  kthread+0xe5/0x120
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork+0x31/0x50
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork_asm+0x1b/0x30
> kernel:  </TASK>
> kernel: INFO: task kworker/5:1:250 blocked for more than 122 seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:kworker/5:1     state:D stack:0     pid:250   ppid:2     
> flags:0x00004000
> kernel: Workqueue: events linkwatch_event
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  ? sched_clock+0x10/0x30
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  linkwatch_event+0x12/0x40
> kernel:  process_one_work+0x171/0x340
> kernel:  worker_thread+0x27b/0x3a0
> kernel:  ? __pfx_worker_thread+0x10/0x10
> kernel:  kthread+0xe5/0x120
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork+0x31/0x50
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork_asm+0x1b/0x30
> kernel:  </TASK>
> kernel: INFO: task kworker/u64:6:290 blocked for more than 122 seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:kworker/u64:6   state:D stack:0     pid:290   ppid:2     
> flags:0x00004000
> kernel: Workqueue: netns cleanup_net
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  wg_netns_pre_exit+0x19/0x100 [wireguard
> 0c090e6018e49e49957d27fd2202b1db304881dc]
> kernel:  cleanup_net+0x1e0/0x3b0
> kernel:  process_one_work+0x171/0x340
> kernel:  worker_thread+0x27b/0x3a0
> kernel:  ? __pfx_worker_thread+0x10/0x10
> kernel:  kthread+0xe5/0x120
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork+0x31/0x50
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork_asm+0x1b/0x30
> kernel:  </TASK>
> kernel: INFO: task kworker/u64:19:577 blocked for more than 122
> seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:kworker/u64:19  state:D stack:0     pid:577   ppid:2     
> flags:0x00004000
> kernel: Workqueue: events_power_efficient reg_check_chans_work
> [cfg80211]
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  ? _get_random_bytes+0xc0/0x1a0
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  ? finish_task_switch.isra.0+0x94/0x2f0
> kernel:  reg_check_chans_work+0x31/0x5b0 [cfg80211
> d1ff02bd631e7b94dc4a8630ea4cdb5aede1cb9b]
> kernel:  process_one_work+0x171/0x340
> kernel:  worker_thread+0x27b/0x3a0
> kernel:  ? __pfx_worker_thread+0x10/0x10
> kernel:  kthread+0xe5/0x120
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork+0x31/0x50
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork_asm+0x1b/0x30
> kernel:  </TASK>
> kernel: INFO: task kworker/u64:23:581 blocked for more than 122
> seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:kworker/u64:23  state:D stack:0     pid:581   ppid:2     
> flags:0x00004000
> kernel: Workqueue: events_power_efficient phy_state_machine [libphy]
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  phy_state_machine+0x47/0x2c0 [libphy
> 93248cd1d88abf54f1b4cc64a990177f549a7710]
> kernel:  process_one_work+0x171/0x340
> kernel:  worker_thread+0x27b/0x3a0
> kernel:  ? __pfx_worker_thread+0x10/0x10
> kernel:  kthread+0xe5/0x120
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork+0x31/0x50
> kernel:  ? __pfx_kthread+0x10/0x10
> kernel:  ret_from_fork_asm+0x1b/0x30
> kernel:  </TASK>
> kernel: INFO: task NetworkManager:849 blocked for more than 122
> seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:NetworkManager  state:D stack:0     pid:849   ppid:1     
> flags:0x00004002
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  ? sysvec_apic_timer_interrupt+0xe/0x90
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  ? pci_conf1_write+0xae/0xf0
> kernel:  ? pcie_set_readrq+0x8e/0x160
> kernel:  phy_start_aneg+0x1d/0x40 [libphy
> 93248cd1d88abf54f1b4cc64a990177f549a7710]
> kernel:  rtl_reset_work+0x1bd/0x3b0 [r8169
> 08653ab60f23923c3943d53f140b2b697e265b93]
> kernel:  r8169_phylink_handler+0x5b/0x240 [r8169
> 08653ab60f23923c3943d53f140b2b697e265b93]
> kernel:  phy_link_change+0x2e/0x60 [libphy
> 93248cd1d88abf54f1b4cc64a990177f549a7710]
> kernel:  phy_check_link_status+0xad/0xe0 [libphy
> 93248cd1d88abf54f1b4cc64a990177f549a7710]
> kernel:  phy_start_aneg+0x25/0x40 [libphy
> 93248cd1d88abf54f1b4cc64a990177f549a7710]
> kernel:  rtl8169_change_mtu+0x24/0x60 [r8169
> 08653ab60f23923c3943d53f140b2b697e265b93]
> kernel:  dev_set_mtu_ext+0xf1/0x200
> kernel:  ? select_task_rq_fair+0x82c/0x1dd0
> kernel:  do_setlink+0x291/0x12d0
> kernel:  ? remove_entity_load_avg+0x31/0x80
> kernel:  ? sched_clock+0x10/0x30
> kernel:  ? sched_clock_cpu+0xf/0x190
> kernel:  ? __smp_call_single_queue+0xad/0x120
> kernel:  ? ttwu_queue_wakelist+0xef/0x110
> kernel:  ? __nla_validate_parse+0x61/0xd10
> kernel:  ? try_to_wake_up+0x2b7/0x640
> kernel:  __rtnl_newlink+0x651/0xa10
> kernel:  ? __kmem_cache_alloc_node+0x1a6/0x340
> kernel:  ? rtnl_newlink+0x2e/0x70
> kernel:  rtnl_newlink+0x47/0x70
> kernel:  rtnetlink_rcv_msg+0x14f/0x3c0
> kernel:  ? number+0x33b/0x3d0
> kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
> kernel:  netlink_rcv_skb+0x58/0x110
> kernel:  netlink_unicast+0x1a3/0x290
> kernel:  netlink_sendmsg+0x254/0x4d0
> kernel:  ____sys_sendmsg+0x396/0x3d0
> kernel:  ? copy_msghdr_from_user+0x7d/0xc0
> kernel:  ___sys_sendmsg+0x9a/0xe0
> kernel:  __sys_sendmsg+0x7a/0xd0
> kernel:  do_syscall_64+0x5d/0x90
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
> kernel: RIP: 0033:0x7fc9232e7b3d
> kernel: RSP: 002b:00007fffd4df2830 EFLAGS: 00000293 ORIG_RAX:
> 000000000000002e
> kernel: RAX: ffffffffffffffda RBX: 0000000000000055 RCX:
> 00007fc9232e7b3d
> kernel: RDX: 0000000000000000 RSI: 00007fffd4df2870 RDI:
> 000000000000000d
> kernel: RBP: 00007fffd4df2c40 R08: 0000000000000000 R09:
> 0000000000000000
> kernel: R10: 0000000000000000 R11: 0000000000000293 R12:
> 0000563fe71367c0
> kernel: R13: 0000000000000001 R14: 0000000000000000 R15:
> 0000000000000000
> kernel:  </TASK>
> kernel: INFO: task geoclue:1358 blocked for more than 122 seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:geoclue         state:D stack:0     pid:1358  ppid:1     
> flags:0x00000002
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  __netlink_dump_start+0x75/0x290
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  rtnetlink_rcv_msg+0x277/0x3c0
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
> kernel:  netlink_rcv_skb+0x58/0x110
> kernel:  netlink_unicast+0x1a3/0x290
> kernel:  netlink_sendmsg+0x254/0x4d0
> kernel:  __sys_sendto+0x1f6/0x200
> kernel:  __x64_sys_sendto+0x24/0x30
> kernel:  do_syscall_64+0x5d/0x90
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
> kernel: RIP: 0033:0x7f977ae729ec
> kernel: RSP: 002b:00007ffeeb6aba50 EFLAGS: 00000246 ORIG_RAX:
> 000000000000002c
> kernel: RAX: ffffffffffffffda RBX: 000056084849e910 RCX:
> 00007f977ae729ec
> kernel: RDX: 0000000000000014 RSI: 00007ffeeb6abad0 RDI:
> 0000000000000007
> kernel: RBP: 0000000000000000 R08: 0000000000000000 R09:
> 0000000000000000
> kernel: R10: 0000000000004000 R11: 0000000000000246 R12:
> 0000000000000014
> kernel: R13: 0000000000000000 R14: 0000000000000000 R15:
> 0000000000000000
> kernel:  </TASK>
> kernel: INFO: task pool-gnome-shel:1986 blocked for more than 122
> seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:pool-gnome-shel state:D stack:0     pid:1986  ppid:1513  
> flags:0x00000002
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  __netlink_dump_start+0x75/0x290
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  rtnetlink_rcv_msg+0x277/0x3c0
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
> kernel:  netlink_rcv_skb+0x58/0x110
> kernel:  netlink_unicast+0x1a3/0x290
> kernel:  netlink_sendmsg+0x254/0x4d0
> kernel:  __sys_sendto+0x1f6/0x200
> kernel:  __x64_sys_sendto+0x24/0x30
> kernel:  do_syscall_64+0x5d/0x90
> kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? exc_page_fault+0x7f/0x180
> kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
> kernel: RIP: 0033:0x7f232af30bfc
> kernel: RSP: 002b:00007f223e1fbba0 EFLAGS: 00000293 ORIG_RAX:
> 000000000000002c
> kernel: RAX: ffffffffffffffda RBX: 00007f223e1fccc0 RCX:
> 00007f232af30bfc
> kernel: RDX: 0000000000000014 RSI: 00007f223e1fccc0 RDI:
> 0000000000000028
> kernel: RBP: 0000000000000000 R08: 00007f223e1fcc64 R09:
> 000000000000000c
> kernel: R10: 0000000000000000 R11: 0000000000000293 R12:
> 0000000000000028
> kernel: R13: 00007f223e1fcc80 R14: 0000000000000665 R15:
> 000055638262fd10
> kernel:  </TASK>
> kernel: INFO: task evolution-sourc:1819 blocked for more than 122
> seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:evolution-sourc state:D stack:0     pid:1819  ppid:1513  
> flags:0x00000006
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  ? netlink_lookup+0x151/0x1d0
> kernel:  __netlink_dump_start+0x75/0x290
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  rtnetlink_rcv_msg+0x277/0x3c0
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
> kernel:  netlink_rcv_skb+0x58/0x110
> kernel:  netlink_unicast+0x1a3/0x290
> kernel:  netlink_sendmsg+0x254/0x4d0
> kernel:  __sys_sendto+0x1f6/0x200
> kernel:  __x64_sys_sendto+0x24/0x30
> kernel:  do_syscall_64+0x5d/0x90
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? sock_getsockopt+0x22/0x30
> kernel:  ? __fget_light+0x99/0x100
> kernel:  ? __sys_setsockopt+0x129/0x1d0
> kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
> kernel: RIP: 0033:0x7f6aa096c9ec
> kernel: RSP: 002b:00007fff2b442820 EFLAGS: 00000246 ORIG_RAX:
> 000000000000002c
> kernel: RAX: ffffffffffffffda RBX: 0000561e6b466d80 RCX:
> 00007f6aa096c9ec
> kernel: RDX: 0000000000000014 RSI: 00007fff2b4428a0 RDI:
> 000000000000000a
> kernel: RBP: 0000000000000000 R08: 0000000000000000 R09:
> 0000000000000000
> kernel: R10: 0000000000004000 R11: 0000000000000246 R12:
> 0000000000000014
> kernel: R13: 00007fff2b442a70 R14: 0000000000000000 R15:
> 0000000000000001
> kernel:  </TASK>
> kernel: INFO: task gnome-software:1904 blocked for more than 122
> seconds.
> kernel:       Not tainted 6.6.2-arch1-1 #1
> kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
> this message.
> kernel: task:gnome-software  state:D stack:0     pid:1904  ppid:1613  
> flags:0x00000002
> kernel: Call Trace:
> kernel:  <TASK>
> kernel:  __schedule+0x3e8/0x1410
> kernel:  ? __pte_offset_map_lock+0x9e/0x110
> kernel:  schedule+0x5e/0xd0
> kernel:  schedule_preempt_disabled+0x15/0x30
> kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
> kernel:  ? netlink_lookup+0x151/0x1d0
> kernel:  __netlink_dump_start+0x75/0x290
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  rtnetlink_rcv_msg+0x277/0x3c0
> kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
> kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
> kernel:  netlink_rcv_skb+0x58/0x110
> kernel:  netlink_unicast+0x1a3/0x290
> kernel:  netlink_sendmsg+0x254/0x4d0
> kernel:  __sys_sendto+0x1f6/0x200
> kernel:  __x64_sys_sendto+0x24/0x30
> kernel:  do_syscall_64+0x5d/0x90
> kernel:  ? __fget_light+0x99/0x100
> kernel:  ? __sys_setsockopt+0x129/0x1d0
> kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
> kernel:  ? do_syscall_64+0x6c/0x90
> kernel:  ? exc_page_fault+0x7f/0x180
> kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
> kernel: RIP: 0033:0x7fdbfd26d9ec
> kernel: RSP: 002b:00007ffd15dd63e0 EFLAGS: 00000246 ORIG_RAX:
> 000000000000002c
> kernel: RAX: ffffffffffffffda RBX: 000056133c78f580 RCX:
> 00007fdbfd26d9ec
> kernel: RDX: 0000000000000014 RSI: 00007ffd15dd6460 RDI:
> 000000000000000b
> kernel: RBP: 0000000000000000 R08: 0000000000000000 R09:
> 0000000000000000
> kernel: R10: 0000000000004000 R11: 0000000000000246 R12:
> 0000000000000014
> kernel: R13: 00007ffd15dd6630 R14: 0000000000000000 R15:
> 0000000000000001
> kernel:  </TASK>
> kernel: Future hung task reports are suppressed, see sysctl
> kernel.hung_task_warnings
> 
> From the call traces, it seems that the issue is caused by commit
> 621735f590643e3048ca2060c285b80551660601 (r8169: fix rare issue with
> broken rx after link-down on RTL8125), which got backported to 6.6.2.
> 
Thanks for the report. Issue seems to be caused by a recursive call
to phy_start_aneg(), and it seems to be specific to using a jumbo mtu.

Are you using a jumbo mtu? And could you please check whether issue
is gone with the standard mtu?

> Ian

Heiner

^ permalink raw reply	[relevance 0%]

* [BUG] r8169: deadlock when NetworkManager brings link up
@ 2023-11-25 13:55  2% Ian Chen
  2023-11-25 14:58  0% ` Heiner Kallweit
  2023-11-25 17:36  0% ` Heiner Kallweit
  0 siblings, 2 replies; 107+ results
From: Ian Chen @ 2023-11-25 13:55 UTC (permalink / raw)
  To: netdev; +Cc: Heiner Kallweit

[-- Attachment #1: Type: text/plain, Size: 15232 bytes --]

Hello,

My home server runs Arch Linux with its stock kernel on a GIGABYTE Z790
AORUS ELITE AX with its builtin RTL8125B ethernet adapter.

After upgrading from 6.6.1.arch1 to 6.6.2.arch1, booting up the system
would end up in a state where all operations on any netlink socket
would block forever. The system is effectively unusable. Here's the
relevant dmesg:

kernel: INFO: task kworker/u64:2:218 blocked for more than 122 seconds.
kernel:       Not tainted 6.6.2-arch1-1 #1
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
this message.
kernel: task:kworker/u64:2   state:D stack:0     pid:218   ppid:2     
flags:0x00004000
kernel: Workqueue: events_power_efficient crda_timeout_work [cfg80211]
kernel: Call Trace:
kernel:  <TASK>
kernel:  __schedule+0x3e8/0x1410
kernel:  schedule+0x5e/0xd0
kernel:  schedule_preempt_disabled+0x15/0x30
kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
kernel:  crda_timeout_work+0x10/0x40 [cfg80211
d1ff02bd631e7b94dc4a8630ea4cdb5aede1cb9b]
kernel:  process_one_work+0x171/0x340
kernel:  worker_thread+0x27b/0x3a0
kernel:  ? __pfx_worker_thread+0x10/0x10
kernel:  kthread+0xe5/0x120
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork+0x31/0x50
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork_asm+0x1b/0x30
kernel:  </TASK>
kernel: INFO: task kworker/5:1:250 blocked for more than 122 seconds.
kernel:       Not tainted 6.6.2-arch1-1 #1
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
this message.
kernel: task:kworker/5:1     state:D stack:0     pid:250   ppid:2     
flags:0x00004000
kernel: Workqueue: events linkwatch_event
kernel: Call Trace:
kernel:  <TASK>
kernel:  __schedule+0x3e8/0x1410
kernel:  ? sched_clock+0x10/0x30
kernel:  schedule+0x5e/0xd0
kernel:  schedule_preempt_disabled+0x15/0x30
kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
kernel:  linkwatch_event+0x12/0x40
kernel:  process_one_work+0x171/0x340
kernel:  worker_thread+0x27b/0x3a0
kernel:  ? __pfx_worker_thread+0x10/0x10
kernel:  kthread+0xe5/0x120
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork+0x31/0x50
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork_asm+0x1b/0x30
kernel:  </TASK>
kernel: INFO: task kworker/u64:6:290 blocked for more than 122 seconds.
kernel:       Not tainted 6.6.2-arch1-1 #1
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
this message.
kernel: task:kworker/u64:6   state:D stack:0     pid:290   ppid:2     
flags:0x00004000
kernel: Workqueue: netns cleanup_net
kernel: Call Trace:
kernel:  <TASK>
kernel:  __schedule+0x3e8/0x1410
kernel:  schedule+0x5e/0xd0
kernel:  schedule_preempt_disabled+0x15/0x30
kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
kernel:  wg_netns_pre_exit+0x19/0x100 [wireguard
0c090e6018e49e49957d27fd2202b1db304881dc]
kernel:  cleanup_net+0x1e0/0x3b0
kernel:  process_one_work+0x171/0x340
kernel:  worker_thread+0x27b/0x3a0
kernel:  ? __pfx_worker_thread+0x10/0x10
kernel:  kthread+0xe5/0x120
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork+0x31/0x50
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork_asm+0x1b/0x30
kernel:  </TASK>
kernel: INFO: task kworker/u64:19:577 blocked for more than 122
seconds.
kernel:       Not tainted 6.6.2-arch1-1 #1
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
this message.
kernel: task:kworker/u64:19  state:D stack:0     pid:577   ppid:2     
flags:0x00004000
kernel: Workqueue: events_power_efficient reg_check_chans_work
[cfg80211]
kernel: Call Trace:
kernel:  <TASK>
kernel:  __schedule+0x3e8/0x1410
kernel:  ? _get_random_bytes+0xc0/0x1a0
kernel:  schedule+0x5e/0xd0
kernel:  schedule_preempt_disabled+0x15/0x30
kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
kernel:  ? finish_task_switch.isra.0+0x94/0x2f0
kernel:  reg_check_chans_work+0x31/0x5b0 [cfg80211
d1ff02bd631e7b94dc4a8630ea4cdb5aede1cb9b]
kernel:  process_one_work+0x171/0x340
kernel:  worker_thread+0x27b/0x3a0
kernel:  ? __pfx_worker_thread+0x10/0x10
kernel:  kthread+0xe5/0x120
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork+0x31/0x50
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork_asm+0x1b/0x30
kernel:  </TASK>
kernel: INFO: task kworker/u64:23:581 blocked for more than 122
seconds.
kernel:       Not tainted 6.6.2-arch1-1 #1
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
this message.
kernel: task:kworker/u64:23  state:D stack:0     pid:581   ppid:2     
flags:0x00004000
kernel: Workqueue: events_power_efficient phy_state_machine [libphy]
kernel: Call Trace:
kernel:  <TASK>
kernel:  __schedule+0x3e8/0x1410
kernel:  schedule+0x5e/0xd0
kernel:  schedule_preempt_disabled+0x15/0x30
kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
kernel:  phy_state_machine+0x47/0x2c0 [libphy
93248cd1d88abf54f1b4cc64a990177f549a7710]
kernel:  process_one_work+0x171/0x340
kernel:  worker_thread+0x27b/0x3a0
kernel:  ? __pfx_worker_thread+0x10/0x10
kernel:  kthread+0xe5/0x120
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork+0x31/0x50
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork_asm+0x1b/0x30
kernel:  </TASK>
kernel: INFO: task NetworkManager:849 blocked for more than 122
seconds.
kernel:       Not tainted 6.6.2-arch1-1 #1
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
this message.
kernel: task:NetworkManager  state:D stack:0     pid:849   ppid:1     
flags:0x00004002
kernel: Call Trace:
kernel:  <TASK>
kernel:  __schedule+0x3e8/0x1410
kernel:  ? sysvec_apic_timer_interrupt+0xe/0x90
kernel:  schedule+0x5e/0xd0
kernel:  schedule_preempt_disabled+0x15/0x30
kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
kernel:  ? pci_conf1_write+0xae/0xf0
kernel:  ? pcie_set_readrq+0x8e/0x160
kernel:  phy_start_aneg+0x1d/0x40 [libphy
93248cd1d88abf54f1b4cc64a990177f549a7710]
kernel:  rtl_reset_work+0x1bd/0x3b0 [r8169
08653ab60f23923c3943d53f140b2b697e265b93]
kernel:  r8169_phylink_handler+0x5b/0x240 [r8169
08653ab60f23923c3943d53f140b2b697e265b93]
kernel:  phy_link_change+0x2e/0x60 [libphy
93248cd1d88abf54f1b4cc64a990177f549a7710]
kernel:  phy_check_link_status+0xad/0xe0 [libphy
93248cd1d88abf54f1b4cc64a990177f549a7710]
kernel:  phy_start_aneg+0x25/0x40 [libphy
93248cd1d88abf54f1b4cc64a990177f549a7710]
kernel:  rtl8169_change_mtu+0x24/0x60 [r8169
08653ab60f23923c3943d53f140b2b697e265b93]
kernel:  dev_set_mtu_ext+0xf1/0x200
kernel:  ? select_task_rq_fair+0x82c/0x1dd0
kernel:  do_setlink+0x291/0x12d0
kernel:  ? remove_entity_load_avg+0x31/0x80
kernel:  ? sched_clock+0x10/0x30
kernel:  ? sched_clock_cpu+0xf/0x190
kernel:  ? __smp_call_single_queue+0xad/0x120
kernel:  ? ttwu_queue_wakelist+0xef/0x110
kernel:  ? __nla_validate_parse+0x61/0xd10
kernel:  ? try_to_wake_up+0x2b7/0x640
kernel:  __rtnl_newlink+0x651/0xa10
kernel:  ? __kmem_cache_alloc_node+0x1a6/0x340
kernel:  ? rtnl_newlink+0x2e/0x70
kernel:  rtnl_newlink+0x47/0x70
kernel:  rtnetlink_rcv_msg+0x14f/0x3c0
kernel:  ? number+0x33b/0x3d0
kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
kernel:  netlink_rcv_skb+0x58/0x110
kernel:  netlink_unicast+0x1a3/0x290
kernel:  netlink_sendmsg+0x254/0x4d0
kernel:  ____sys_sendmsg+0x396/0x3d0
kernel:  ? copy_msghdr_from_user+0x7d/0xc0
kernel:  ___sys_sendmsg+0x9a/0xe0
kernel:  __sys_sendmsg+0x7a/0xd0
kernel:  do_syscall_64+0x5d/0x90
kernel:  ? do_syscall_64+0x6c/0x90
kernel:  ? do_syscall_64+0x6c/0x90
kernel:  ? do_syscall_64+0x6c/0x90
kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
kernel: RIP: 0033:0x7fc9232e7b3d
kernel: RSP: 002b:00007fffd4df2830 EFLAGS: 00000293 ORIG_RAX:
000000000000002e
kernel: RAX: ffffffffffffffda RBX: 0000000000000055 RCX:
00007fc9232e7b3d
kernel: RDX: 0000000000000000 RSI: 00007fffd4df2870 RDI:
000000000000000d
kernel: RBP: 00007fffd4df2c40 R08: 0000000000000000 R09:
0000000000000000
kernel: R10: 0000000000000000 R11: 0000000000000293 R12:
0000563fe71367c0
kernel: R13: 0000000000000001 R14: 0000000000000000 R15:
0000000000000000
kernel:  </TASK>
kernel: INFO: task geoclue:1358 blocked for more than 122 seconds.
kernel:       Not tainted 6.6.2-arch1-1 #1
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
this message.
kernel: task:geoclue         state:D stack:0     pid:1358  ppid:1     
flags:0x00000002
kernel: Call Trace:
kernel:  <TASK>
kernel:  __schedule+0x3e8/0x1410
kernel:  schedule+0x5e/0xd0
kernel:  schedule_preempt_disabled+0x15/0x30
kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
kernel:  __netlink_dump_start+0x75/0x290
kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
kernel:  rtnetlink_rcv_msg+0x277/0x3c0
kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
kernel:  netlink_rcv_skb+0x58/0x110
kernel:  netlink_unicast+0x1a3/0x290
kernel:  netlink_sendmsg+0x254/0x4d0
kernel:  __sys_sendto+0x1f6/0x200
kernel:  __x64_sys_sendto+0x24/0x30
kernel:  do_syscall_64+0x5d/0x90
kernel:  ? do_syscall_64+0x6c/0x90
kernel:  ? do_syscall_64+0x6c/0x90
kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
kernel:  ? do_syscall_64+0x6c/0x90
kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
kernel: RIP: 0033:0x7f977ae729ec
kernel: RSP: 002b:00007ffeeb6aba50 EFLAGS: 00000246 ORIG_RAX:
000000000000002c
kernel: RAX: ffffffffffffffda RBX: 000056084849e910 RCX:
00007f977ae729ec
kernel: RDX: 0000000000000014 RSI: 00007ffeeb6abad0 RDI:
0000000000000007
kernel: RBP: 0000000000000000 R08: 0000000000000000 R09:
0000000000000000
kernel: R10: 0000000000004000 R11: 0000000000000246 R12:
0000000000000014
kernel: R13: 0000000000000000 R14: 0000000000000000 R15:
0000000000000000
kernel:  </TASK>
kernel: INFO: task pool-gnome-shel:1986 blocked for more than 122
seconds.
kernel:       Not tainted 6.6.2-arch1-1 #1
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
this message.
kernel: task:pool-gnome-shel state:D stack:0     pid:1986  ppid:1513  
flags:0x00000002
kernel: Call Trace:
kernel:  <TASK>
kernel:  __schedule+0x3e8/0x1410
kernel:  schedule+0x5e/0xd0
kernel:  schedule_preempt_disabled+0x15/0x30
kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
kernel:  __netlink_dump_start+0x75/0x290
kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
kernel:  rtnetlink_rcv_msg+0x277/0x3c0
kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
kernel:  netlink_rcv_skb+0x58/0x110
kernel:  netlink_unicast+0x1a3/0x290
kernel:  netlink_sendmsg+0x254/0x4d0
kernel:  __sys_sendto+0x1f6/0x200
kernel:  __x64_sys_sendto+0x24/0x30
kernel:  do_syscall_64+0x5d/0x90
kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
kernel:  ? do_syscall_64+0x6c/0x90
kernel:  ? exc_page_fault+0x7f/0x180
kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
kernel: RIP: 0033:0x7f232af30bfc
kernel: RSP: 002b:00007f223e1fbba0 EFLAGS: 00000293 ORIG_RAX:
000000000000002c
kernel: RAX: ffffffffffffffda RBX: 00007f223e1fccc0 RCX:
00007f232af30bfc
kernel: RDX: 0000000000000014 RSI: 00007f223e1fccc0 RDI:
0000000000000028
kernel: RBP: 0000000000000000 R08: 00007f223e1fcc64 R09:
000000000000000c
kernel: R10: 0000000000000000 R11: 0000000000000293 R12:
0000000000000028
kernel: R13: 00007f223e1fcc80 R14: 0000000000000665 R15:
000055638262fd10
kernel:  </TASK>
kernel: INFO: task evolution-sourc:1819 blocked for more than 122
seconds.
kernel:       Not tainted 6.6.2-arch1-1 #1
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
this message.
kernel: task:evolution-sourc state:D stack:0     pid:1819  ppid:1513  
flags:0x00000006
kernel: Call Trace:
kernel:  <TASK>
kernel:  __schedule+0x3e8/0x1410
kernel:  schedule+0x5e/0xd0
kernel:  schedule_preempt_disabled+0x15/0x30
kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
kernel:  ? netlink_lookup+0x151/0x1d0
kernel:  __netlink_dump_start+0x75/0x290
kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
kernel:  rtnetlink_rcv_msg+0x277/0x3c0
kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
kernel:  netlink_rcv_skb+0x58/0x110
kernel:  netlink_unicast+0x1a3/0x290
kernel:  netlink_sendmsg+0x254/0x4d0
kernel:  __sys_sendto+0x1f6/0x200
kernel:  __x64_sys_sendto+0x24/0x30
kernel:  do_syscall_64+0x5d/0x90
kernel:  ? do_syscall_64+0x6c/0x90
kernel:  ? sock_getsockopt+0x22/0x30
kernel:  ? __fget_light+0x99/0x100
kernel:  ? __sys_setsockopt+0x129/0x1d0
kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
kernel:  ? do_syscall_64+0x6c/0x90
kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
kernel: RIP: 0033:0x7f6aa096c9ec
kernel: RSP: 002b:00007fff2b442820 EFLAGS: 00000246 ORIG_RAX:
000000000000002c
kernel: RAX: ffffffffffffffda RBX: 0000561e6b466d80 RCX:
00007f6aa096c9ec
kernel: RDX: 0000000000000014 RSI: 00007fff2b4428a0 RDI:
000000000000000a
kernel: RBP: 0000000000000000 R08: 0000000000000000 R09:
0000000000000000
kernel: R10: 0000000000004000 R11: 0000000000000246 R12:
0000000000000014
kernel: R13: 00007fff2b442a70 R14: 0000000000000000 R15:
0000000000000001
kernel:  </TASK>
kernel: INFO: task gnome-software:1904 blocked for more than 122
seconds.
kernel:       Not tainted 6.6.2-arch1-1 #1
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
this message.
kernel: task:gnome-software  state:D stack:0     pid:1904  ppid:1613  
flags:0x00000002
kernel: Call Trace:
kernel:  <TASK>
kernel:  __schedule+0x3e8/0x1410
kernel:  ? __pte_offset_map_lock+0x9e/0x110
kernel:  schedule+0x5e/0xd0
kernel:  schedule_preempt_disabled+0x15/0x30
kernel:  __mutex_lock.constprop.0+0x39a/0x6a0
kernel:  ? netlink_lookup+0x151/0x1d0
kernel:  __netlink_dump_start+0x75/0x290
kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
kernel:  rtnetlink_rcv_msg+0x277/0x3c0
kernel:  ? __pfx_rtnl_dump_all+0x10/0x10
kernel:  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
kernel:  netlink_rcv_skb+0x58/0x110
kernel:  netlink_unicast+0x1a3/0x290
kernel:  netlink_sendmsg+0x254/0x4d0
kernel:  __sys_sendto+0x1f6/0x200
kernel:  __x64_sys_sendto+0x24/0x30
kernel:  do_syscall_64+0x5d/0x90
kernel:  ? __fget_light+0x99/0x100
kernel:  ? __sys_setsockopt+0x129/0x1d0
kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
kernel:  ? do_syscall_64+0x6c/0x90
kernel:  ? syscall_exit_to_user_mode+0x2b/0x40
kernel:  ? do_syscall_64+0x6c/0x90
kernel:  ? exc_page_fault+0x7f/0x180
kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
kernel: RIP: 0033:0x7fdbfd26d9ec
kernel: RSP: 002b:00007ffd15dd63e0 EFLAGS: 00000246 ORIG_RAX:
000000000000002c
kernel: RAX: ffffffffffffffda RBX: 000056133c78f580 RCX:
00007fdbfd26d9ec
kernel: RDX: 0000000000000014 RSI: 00007ffd15dd6460 RDI:
000000000000000b
kernel: RBP: 0000000000000000 R08: 0000000000000000 R09:
0000000000000000
kernel: R10: 0000000000004000 R11: 0000000000000246 R12:
0000000000000014
kernel: R13: 00007ffd15dd6630 R14: 0000000000000000 R15:
0000000000000001
kernel:  </TASK>
kernel: Future hung task reports are suppressed, see sysctl
kernel.hung_task_warnings

From the call traces, it seems that the issue is caused by commit
621735f590643e3048ca2060c285b80551660601 (r8169: fix rare issue with
broken rx after link-down on RTL8125), which got backported to 6.6.2.

Ian

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[relevance 2%]

* [PATCH net-next v6 4/5] r8169: Coalesce mac ocp commands for 8125 and 8125B start to reduce spinlock contention
  @ 2023-11-04 22:15  4% ` Mirsad Goran Todorovac
  0 siblings, 0 replies; 107+ results
From: Mirsad Goran Todorovac @ 2023-11-04 22:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: David S. Miller, Eric Dumazet, Heiner Kallweit, Jakub Kicinski,
	Paolo Abeni, netdev, nic_swsd, Mirsad Goran Todorovac,
	Marco Elver, Jacob Keller

Repeated calls to r8168_mac_ocp_write() and r8168_mac_ocp_modify() in
the startup of 8125 and 8125B involve implicit spin_lock_irqsave() and
spin_unlock_irqrestore() on each invocation.

Coalesced with the corresponding helpers r8168_mac_ocp_write_seq() and
r8168_mac_ocp_modify_seq() into sequential write or modidy with a sinqle lock/unlock,
these calls reduce overall lock contention.

Fixes: f1bce4ad2f1ce ("r8169: add support for RTL8125")
Fixes: 0439297be9511 ("r8169: add support for RTL8125B")
Cc: Heiner Kallweit <hkallweit1@gmail.com>
Cc: Marco Elver <elver@google.com>
Cc: nic_swsd@realtek.com
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Link: https://lore.kernel.org/lkml/20231028005153.2180411-1-mirsad.todorovac@alu.unizg.hr/
Link: https://lore.kernel.org/lkml/20231028110459.2644926-1-mirsad.todorovac@alu.unizg.hr/
Signed-off-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 38 ++++++++++++++---------
 1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 0fb34d217205..056fe5b3930b 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -3539,6 +3539,27 @@ DECLARE_RTL_COND(rtl_mac_ocp_e00e_cond)
 
 static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 {
+
+	static const struct e_info_regmaskset e_info_8125_common_1[] = {
+		{ 0xd3e2, 0x0fff, 0x03a9 },
+		{ 0xd3e4, 0x00ff, 0x0000 },
+		{ 0xe860, 0x0000, 0x0080 },
+	};
+
+	static const struct e_info_regmaskset e_info_8125_common_2[] = {
+		{ 0xc0b4, 0x0000, 0x000c },
+		{ 0xeb6a, 0x00ff, 0x0033 },
+		{ 0xeb50, 0x03e0, 0x0040 },
+		{ 0xe056, 0x00f0, 0x0030 },
+		{ 0xe040, 0x1000, 0x0000 },
+		{ 0xea1c, 0x0003, 0x0001 },
+		{ 0xe0c0, 0x4f0f, 0x4403 },
+		{ 0xe052, 0x0080, 0x0068 },
+		{ 0xd430, 0x0fff, 0x047f },
+		{ 0xea1c, 0x0004, 0x0000 },
+		{ 0xeb54, 0x0000, 0x0001 },
+	};
+
 	rtl_pcie_state_l2l3_disable(tp);
 
 	RTL_W16(tp, 0x382, 0x221b);
@@ -3553,9 +3574,7 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	r8168_mac_ocp_write(tp, 0xc140, 0xffff);
 	r8168_mac_ocp_write(tp, 0xc142, 0xffff);
 
-	r8168_mac_ocp_modify(tp, 0xd3e2, 0x0fff, 0x03a9);
-	r8168_mac_ocp_modify(tp, 0xd3e4, 0x00ff, 0x0000);
-	r8168_mac_ocp_modify(tp, 0xe860, 0x0000, 0x0080);
+	r8168_mac_ocp_modify_seq(tp, e_info_8125_common_1);
 
 	/* disable new tx descriptor format */
 	r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
@@ -3570,18 +3589,7 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	else
 		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0020);
 
-	r8168_mac_ocp_modify(tp, 0xc0b4, 0x0000, 0x000c);
-	r8168_mac_ocp_modify(tp, 0xeb6a, 0x00ff, 0x0033);
-	r8168_mac_ocp_modify(tp, 0xeb50, 0x03e0, 0x0040);
-	r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
-	r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
-	r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
-	r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
-	r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
-	r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
-
-	r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
-	r8168_mac_ocp_modify(tp, 0xeb54, 0x0000, 0x0001);
+	r8168_mac_ocp_modify_seq(tp, e_info_8125_common_2);
 	udelay(1);
 	r8168_mac_ocp_modify(tp, 0xeb54, 0x0001, 0x0000);
 	RTL_W16(tp, 0x1880, RTL_R16(tp, 0x1880) & ~0x0030);
-- 
2.34.1


^ permalink raw reply related	[relevance 4%]

* Re: [PATCH v4 4/5] r8169: Coalesce mac ocp commands for 8125 and 8125B start to reduce spinlock contention
  2023-10-29 11:04  4% ` [PATCH v4 4/5] r8169: Coalesce mac ocp commands for 8125 and 8125B start to reduce spinlock contention Mirsad Goran Todorovac
@ 2023-10-30 21:53  0%   ` Jacob Keller
  0 siblings, 0 replies; 107+ results
From: Jacob Keller @ 2023-10-30 21:53 UTC (permalink / raw)
  To: Mirsad Goran Todorovac, Jason Gunthorpe, Joerg Roedel, Lu Baolu,
	iommu, linux-kernel, netdev
  Cc: Joerg Roedel, Will Deacon, Robin Murphy, Heiner Kallweit,
	nic_swsd, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Marco Elver



On 10/29/2023 4:04 AM, Mirsad Goran Todorovac wrote:
> Repeated calls to r8168_mac_ocp_write() and r8168_mac_ocp_modify() in
> the startup of 8125 and 8125B involve implicit spin_lock_irqsave() and
> spin_unlock_irqrestore() on each invocation.
> 
> Coalesced with the corresponding helpers r8168_mac_ocp_write_seq() and
> r8168_mac_ocp_modify_seq() into sequential write or modidy with a sinqle lock/unlock,
> these calls reduce overall lock contention.
> 
> Fixes: f1bce4ad2f1ce ("r8169: add support for RTL8125")
> Fixes: 0439297be9511 ("r8169: add support for RTL8125B")
> Cc: Heiner Kallweit <hkallweit1@gmail.com>
> Cc: Marco Elver <elver@google.com>
> Cc: nic_swsd@realtek.com
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: Paolo Abeni <pabeni@redhat.com>
> Cc: netdev@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Link: https://lore.kernel.org/lkml/20231028005153.2180411-1-mirsad.todorovac@alu.unizg.hr/
> Link: https://lore.kernel.org/lkml/20231028110459.2644926-1-mirsad.todorovac@alu.unizg.hr/
> Signed-off-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
> ---

Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>

^ permalink raw reply	[relevance 0%]

* Re: [PATCH v5 6/7] r8169: Coalesce mac ocp write and modify for 8125 and 8125B start to reduce spinlocks
  2023-10-30 15:02  0%     ` Mirsad Todorovac
@ 2023-10-30 15:53  0%       ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2023-10-30 15:53 UTC (permalink / raw)
  To: Mirsad Todorovac, Jason Gunthorpe, Joerg Roedel, Lu Baolu, iommu,
	linux-kernel, netdev
  Cc: Joerg Roedel, Will Deacon, Robin Murphy, nic_swsd,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Marco Elver

On 30.10.2023 16:02, Mirsad Todorovac wrote:
> 
> 
> On 10/30/23 15:02, Heiner Kallweit wrote:
>> On 29.10.2023 19:36, Mirsad Goran Todorovac wrote:
>>> Repeated calls to r8168_mac_ocp_write() and r8168_mac_ocp_modify() in
>>> the startup of 8125 and 8125B involve implicit spin_lock_irqsave() and
>>> spin_unlock_irqrestore() on each invocation.
>>>
>>> Coalesced with the corresponding helpers r8168_mac_ocp_write_seq() and
>>> r8168_mac_ocp_modify_seq() into sequential write or modidy with a sinqle
>>> pair of spin_lock_irqsave() and spin_unlock_irqrestore(), these calls
>>> reduce overall lock contention.
>>>
>>> Fixes: f1bce4ad2f1ce ("r8169: add support for RTL8125")
>>> Fixes: 0439297be9511 ("r8169: add support for RTL8125B")
>>> Cc: Heiner Kallweit <hkallweit1@gmail.com>
>>> Cc: Marco Elver <elver@google.com>
>>> Cc: nic_swsd@realtek.com
>>> Cc: "David S. Miller" <davem@davemloft.net>
>>> Cc: Eric Dumazet <edumazet@google.com>
>>> Cc: Jakub Kicinski <kuba@kernel.org>
>>> Cc: Paolo Abeni <pabeni@redhat.com>
>>> Cc: netdev@vger.kernel.org
>>> Cc: linux-kernel@vger.kernel.org
>>> Link: https://lore.kernel.org/lkml/20231028005153.2180411-1-mirsad.todorovac@alu.unizg.hr/
>>> Link: https://lore.kernel.org/lkml/20231028110459.2644926-1-mirsad.todorovac@alu.unizg.hr/
>>> Signed-off-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
>>> ---
>>> v5:
>>>   added unlocked primitives to allow mac ocs modify grouping
>>>   applied coalescing of mac ocp writes/modifies for 8168ep and 8117
>>>   some formatting fixes to please checkpatch.pl
>>>
>>> v4:
>>>   fixed complaints as advised by Heiner and checkpatch.pl
>>>   split the patch into five sections to be more easily manipulated and reviewed
>>>   introduced r8168_mac_ocp_write_seq()
>>>   applied coalescing of mac ocp writes/modifies for 8168H, 8125 and 8125B
>>>
>>> v3:
>>>   removed register/mask pair array sentinels, so using ARRAY_SIZE().
>>>   avoided duplication of RTL_W32() call code as advised by Heiner.
>>>
>>>   drivers/net/ethernet/realtek/r8169_main.c | 75 +++++++++++++----------
>>>   1 file changed, 44 insertions(+), 31 deletions(-)
>>>
>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
>>> index 50fbacb05953..0778cd0ba2e0 100644
>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>> @@ -3553,6 +3553,28 @@ DECLARE_RTL_COND(rtl_mac_ocp_e00e_cond)
>>>     static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>   {
>>> +    static const struct e_info_regmaskset e_info_8125_common_1[] = {
>>> +        { 0xd3e2, 0x0fff, 0x03a9 },
>>> +        { 0xd3e4, 0x00ff, 0x0000 },
>>> +        { 0xe860, 0x0000, 0x0080 },
>>> +    };
>>> +
>>> +    static const struct e_info_regmaskset e_info_8125_common_2[] = {
>>> +        { 0xc0b4, 0x0000, 0x000c },
>>> +        { 0xeb6a, 0x00ff, 0x0033 },
>>> +        { 0xeb50, 0x03e0, 0x0040 },
>>> +        { 0xe056, 0x00f0, 0x0030 },
>>> +        { 0xe040, 0x1000, 0x0000 },
>>> +        { 0xea1c, 0x0003, 0x0001 },
>>> +        { 0xe0c0, 0x4f0f, 0x4403 },
>>> +        { 0xe052, 0x0080, 0x0068 },
>>> +        { 0xd430, 0x0fff, 0x047f },
>>> +        { 0xea1c, 0x0004, 0x0000 },
>>> +        { 0xeb54, 0x0000, 0x0001 },
>>> +    };
>>> +
>>> +    unsigned long flags;
>>> +
>>>       rtl_pcie_state_l2l3_disable(tp);
>>>         RTL_W16(tp, 0x382, 0x221b);
>>> @@ -3560,47 +3582,38 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>>       RTL_W16(tp, 0x4800, 0);
>>>         /* disable UPS */
>>> -    r8168_mac_ocp_modify(tp, 0xd40a, 0x0010, 0x0000);
>>> +
>>> +    raw_spin_lock_irqsave(&tp->mac_ocp_lock, flags);
>>> +    __r8168_mac_ocp_modify(tp, 0xd40a, 0x0010, 0x0000);
>>>         RTL_W8(tp, Config1, RTL_R8(tp, Config1) & ~0x10);
>>>   -    r8168_mac_ocp_write(tp, 0xc140, 0xffff);
>>> -    r8168_mac_ocp_write(tp, 0xc142, 0xffff);
>>> +    __r8168_mac_ocp_write(tp, 0xc140, 0xffff);
>>> +    __r8168_mac_ocp_write(tp, 0xc142, 0xffff);
>>>   -    r8168_mac_ocp_modify(tp, 0xd3e2, 0x0fff, 0x03a9);
>>> -    r8168_mac_ocp_modify(tp, 0xd3e4, 0x00ff, 0x0000);
>>> -    r8168_mac_ocp_modify(tp, 0xe860, 0x0000, 0x0080);
>>> +    __r8168_mac_ocp_modify_seq(tp, e_info_8125_common_1);
>>>         /* disable new tx descriptor format */
>>> -    r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
>>> +    __r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
>>>   -    if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>> -        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
>>> -    else
>>> -        r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>>> +    if (tp->mac_version == RTL_GIGA_MAC_VER_63) {
>>> +        __r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
>>> +        __r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
>>> +    } else {
>>> +        __r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>>> +        __r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0020);
>>> +    }
>>> +
>>> +    __r8168_mac_ocp_modify_seq(tp, e_info_8125_common_2);
>>> +    raw_spin_unlock_irqrestore(&tp->mac_ocp_lock, flags);
>>>   -    if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>>> -        r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
>>> -    else
>>> -        r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0020);
>>> -
>>> -    r8168_mac_ocp_modify(tp, 0xc0b4, 0x0000, 0x000c);
>>> -    r8168_mac_ocp_modify(tp, 0xeb6a, 0x00ff, 0x0033);
>>> -    r8168_mac_ocp_modify(tp, 0xeb50, 0x03e0, 0x0040);
>>> -    r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
>>> -    r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
>>> -    r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
>>> -    r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
>>> -    r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
>>> -    r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
>>> -
>>> -    r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
>>> -    r8168_mac_ocp_modify(tp, 0xeb54, 0x0000, 0x0001);
> 
> [1] I think we have a candidate for a squeeze here in this driver.
> 
>>>       udelay(1);
>>> -    r8168_mac_ocp_modify(tp, 0xeb54, 0x0001, 0x0000);
>>> -    RTL_W16(tp, 0x1880, RTL_R16(tp, 0x1880) & ~0x0030);
>>>   -    r8168_mac_ocp_write(tp, 0xe098, 0xc302);
>>> +    raw_spin_lock_irqsave(&tp->mac_ocp_lock, flags);
>>> +    __r8168_mac_ocp_modify(tp, 0xeb54, 0x0001, 0x0000);
>>> +    RTL_W16(tp, 0x1880, RTL_R16(tp, 0x1880) & ~0x0030);
>>> +    __r8168_mac_ocp_write(tp, 0xe098, 0xc302);
>>> +    raw_spin_unlock_irqrestore(&tp->mac_ocp_lock, flags);
>>>         rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
>>>   
>>
>> All this manual locking and unlocking makes the code harder
>> to read and more error-prone. Maybe, as a rule of thumb:
>> If you can replace a block with more than 10 mac ocp ops,
>> then fine with me
> As I worked with another German developer, Mr. Frank Heckenbach from the GNU Pascal project,
> I know that Germans are pedantic and reliable :-)
> 
> If this rtl_hw_start_8125_common() is called only once, then maybe every memory bus cycle
> isn't worth saving, and then maybe the additional complexity isn't worth adding (but it
> was fun doing, and it works with my NIC).
> 
> AFAIK, a spin_lock_irqsave()/spin_unlock_irqrestore() isn't a free lunch as you know, and I read
> from the manuals that on modern CPUs a locked ADD $0, -128(%esp) or something takes about 50
> clock cycles, in which all cores have to wait.
> 
> Doing that in storm of 10 lock/unlock pairs amounts to 500 cycles or 125 ns in the best case
> on a 4 GHz CPU.
> 
> But I trust that you as the maintainer have the big picture and greater insight in the actual hw.
> 
Big picture: maybe, as I've been working on r8169 for about 5 yrs
Greater insight in the actual hw: not really, because Realtek doesn't publish datasheets and
errata information. I just know the history of a lot of needed quirks in r8169, and I can recall
what we tried to improve and had to roll back because users had problems.
Most famous example is ASPM L1 + sub-state support. ASPM with r8169-driven NIC versions has a
long history of users facing slow network connectivity / tx timeouts / complete NIC stalls.
And it's still not solved with the newest NIC versions. But maybe not only Realtek is to blame.
Basically every consumer mainboard comes with a Realtek NIC, chipset issues and BIOS bugs
contribute to the mess.

> Elon Musk said that the greatest error in engineering is optimising stuff that never should
> have been written.
> 
> As I like my RTL 8125b NIC to be fast (TM), I am not giving up on it.
> 
Does this mean that you're not achieving the 2500Mbps line rate with r8169 as-is?

> Just recalled that you mentioned that it supports RSS. Is it feasible to add it to the r8169
> driver?
> 
Feasible: definitely, as you "just" have to take the RSS-related code from r8125 and adjust it
to meet mainline code quality criteria
Question is which actual benefit it brings, and whether it's worth the additional complexity.
As a starting point you could compare performance KPI's when using r8169 vs. r8125.

> It is OK for me that we have a formal and less formal mode of communication and switch between
> them.
> 
> Thank you for all your quick reviews, much obliged, thank you for partially accepting the patches,
> but I think I need to sleep over it before submitting a new version.
> 
> Regards,
> Mirsad Todorovac


^ permalink raw reply	[relevance 0%]

* Re: [PATCH v5 6/7] r8169: Coalesce mac ocp write and modify for 8125 and 8125B start to reduce spinlocks
  2023-10-30 14:02  0%   ` Heiner Kallweit
@ 2023-10-30 15:02  0%     ` Mirsad Todorovac
  2023-10-30 15:53  0%       ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Mirsad Todorovac @ 2023-10-30 15:02 UTC (permalink / raw)
  To: Heiner Kallweit, Jason Gunthorpe, Joerg Roedel, Lu Baolu, iommu,
	linux-kernel, netdev
  Cc: Joerg Roedel, Will Deacon, Robin Murphy, nic_swsd,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Marco Elver



On 10/30/23 15:02, Heiner Kallweit wrote:
> On 29.10.2023 19:36, Mirsad Goran Todorovac wrote:
>> Repeated calls to r8168_mac_ocp_write() and r8168_mac_ocp_modify() in
>> the startup of 8125 and 8125B involve implicit spin_lock_irqsave() and
>> spin_unlock_irqrestore() on each invocation.
>>
>> Coalesced with the corresponding helpers r8168_mac_ocp_write_seq() and
>> r8168_mac_ocp_modify_seq() into sequential write or modidy with a sinqle
>> pair of spin_lock_irqsave() and spin_unlock_irqrestore(), these calls
>> reduce overall lock contention.
>>
>> Fixes: f1bce4ad2f1ce ("r8169: add support for RTL8125")
>> Fixes: 0439297be9511 ("r8169: add support for RTL8125B")
>> Cc: Heiner Kallweit <hkallweit1@gmail.com>
>> Cc: Marco Elver <elver@google.com>
>> Cc: nic_swsd@realtek.com
>> Cc: "David S. Miller" <davem@davemloft.net>
>> Cc: Eric Dumazet <edumazet@google.com>
>> Cc: Jakub Kicinski <kuba@kernel.org>
>> Cc: Paolo Abeni <pabeni@redhat.com>
>> Cc: netdev@vger.kernel.org
>> Cc: linux-kernel@vger.kernel.org
>> Link: https://lore.kernel.org/lkml/20231028005153.2180411-1-mirsad.todorovac@alu.unizg.hr/
>> Link: https://lore.kernel.org/lkml/20231028110459.2644926-1-mirsad.todorovac@alu.unizg.hr/
>> Signed-off-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
>> ---
>> v5:
>>   added unlocked primitives to allow mac ocs modify grouping
>>   applied coalescing of mac ocp writes/modifies for 8168ep and 8117
>>   some formatting fixes to please checkpatch.pl
>>
>> v4:
>>   fixed complaints as advised by Heiner and checkpatch.pl
>>   split the patch into five sections to be more easily manipulated and reviewed
>>   introduced r8168_mac_ocp_write_seq()
>>   applied coalescing of mac ocp writes/modifies for 8168H, 8125 and 8125B
>>
>> v3:
>>   removed register/mask pair array sentinels, so using ARRAY_SIZE().
>>   avoided duplication of RTL_W32() call code as advised by Heiner.
>>
>>   drivers/net/ethernet/realtek/r8169_main.c | 75 +++++++++++++----------
>>   1 file changed, 44 insertions(+), 31 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
>> index 50fbacb05953..0778cd0ba2e0 100644
>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>> @@ -3553,6 +3553,28 @@ DECLARE_RTL_COND(rtl_mac_ocp_e00e_cond)
>>   
>>   static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>   {
>> +	static const struct e_info_regmaskset e_info_8125_common_1[] = {
>> +		{ 0xd3e2, 0x0fff, 0x03a9 },
>> +		{ 0xd3e4, 0x00ff, 0x0000 },
>> +		{ 0xe860, 0x0000, 0x0080 },
>> +	};
>> +
>> +	static const struct e_info_regmaskset e_info_8125_common_2[] = {
>> +		{ 0xc0b4, 0x0000, 0x000c },
>> +		{ 0xeb6a, 0x00ff, 0x0033 },
>> +		{ 0xeb50, 0x03e0, 0x0040 },
>> +		{ 0xe056, 0x00f0, 0x0030 },
>> +		{ 0xe040, 0x1000, 0x0000 },
>> +		{ 0xea1c, 0x0003, 0x0001 },
>> +		{ 0xe0c0, 0x4f0f, 0x4403 },
>> +		{ 0xe052, 0x0080, 0x0068 },
>> +		{ 0xd430, 0x0fff, 0x047f },
>> +		{ 0xea1c, 0x0004, 0x0000 },
>> +		{ 0xeb54, 0x0000, 0x0001 },
>> +	};
>> +
>> +	unsigned long flags;
>> +
>>   	rtl_pcie_state_l2l3_disable(tp);
>>   
>>   	RTL_W16(tp, 0x382, 0x221b);
>> @@ -3560,47 +3582,38 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>>   	RTL_W16(tp, 0x4800, 0);
>>   
>>   	/* disable UPS */
>> -	r8168_mac_ocp_modify(tp, 0xd40a, 0x0010, 0x0000);
>> +
>> +	raw_spin_lock_irqsave(&tp->mac_ocp_lock, flags);
>> +	__r8168_mac_ocp_modify(tp, 0xd40a, 0x0010, 0x0000);
>>   
>>   	RTL_W8(tp, Config1, RTL_R8(tp, Config1) & ~0x10);
>>   
>> -	r8168_mac_ocp_write(tp, 0xc140, 0xffff);
>> -	r8168_mac_ocp_write(tp, 0xc142, 0xffff);
>> +	__r8168_mac_ocp_write(tp, 0xc140, 0xffff);
>> +	__r8168_mac_ocp_write(tp, 0xc142, 0xffff);
>>   
>> -	r8168_mac_ocp_modify(tp, 0xd3e2, 0x0fff, 0x03a9);
>> -	r8168_mac_ocp_modify(tp, 0xd3e4, 0x00ff, 0x0000);
>> -	r8168_mac_ocp_modify(tp, 0xe860, 0x0000, 0x0080);
>> +	__r8168_mac_ocp_modify_seq(tp, e_info_8125_common_1);
>>   
>>   	/* disable new tx descriptor format */
>> -	r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
>> +	__r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
>>   
>> -	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>> -		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
>> -	else
>> -		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>> +	if (tp->mac_version == RTL_GIGA_MAC_VER_63) {
>> +		__r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
>> +		__r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
>> +	} else {
>> +		__r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
>> +		__r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0020);
>> +	}
>> +
>> +	__r8168_mac_ocp_modify_seq(tp, e_info_8125_common_2);
>> +	raw_spin_unlock_irqrestore(&tp->mac_ocp_lock, flags);
>>   
>> -	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
>> -		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
>> -	else
>> -		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0020);
>> -
>> -	r8168_mac_ocp_modify(tp, 0xc0b4, 0x0000, 0x000c);
>> -	r8168_mac_ocp_modify(tp, 0xeb6a, 0x00ff, 0x0033);
>> -	r8168_mac_ocp_modify(tp, 0xeb50, 0x03e0, 0x0040);
>> -	r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
>> -	r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
>> -	r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
>> -	r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
>> -	r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
>> -	r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
>> -
>> -	r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
>> -	r8168_mac_ocp_modify(tp, 0xeb54, 0x0000, 0x0001);

[1] I think we have a candidate for a squeeze here in this driver.

>>   	udelay(1);
>> -	r8168_mac_ocp_modify(tp, 0xeb54, 0x0001, 0x0000);
>> -	RTL_W16(tp, 0x1880, RTL_R16(tp, 0x1880) & ~0x0030);
>>   
>> -	r8168_mac_ocp_write(tp, 0xe098, 0xc302);
>> +	raw_spin_lock_irqsave(&tp->mac_ocp_lock, flags);
>> +	__r8168_mac_ocp_modify(tp, 0xeb54, 0x0001, 0x0000);
>> +	RTL_W16(tp, 0x1880, RTL_R16(tp, 0x1880) & ~0x0030);
>> +	__r8168_mac_ocp_write(tp, 0xe098, 0xc302);
>> +	raw_spin_unlock_irqrestore(&tp->mac_ocp_lock, flags);
>>   
>>   	rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
>>   
> 
> All this manual locking and unlocking makes the code harder
> to read and more error-prone. Maybe, as a rule of thumb:
> If you can replace a block with more than 10 mac ocp ops,
> then fine with me
As I worked with another German developer, Mr. Frank Heckenbach from the GNU Pascal project,
I know that Germans are pedantic and reliable :-)

If this rtl_hw_start_8125_common() is called only once, then maybe every memory bus cycle
isn't worth saving, and then maybe the additional complexity isn't worth adding (but it
was fun doing, and it works with my NIC).

AFAIK, a spin_lock_irqsave()/spin_unlock_irqrestore() isn't a free lunch as you know, and I read
from the manuals that on modern CPUs a locked ADD $0, -128(%esp) or something takes about 50
clock cycles, in which all cores have to wait.

Doing that in storm of 10 lock/unlock pairs amounts to 500 cycles or 125 ns in the best case
on a 4 GHz CPU.

But I trust that you as the maintainer have the big picture and greater insight in the actual hw.

Elon Musk said that the greatest error in engineering is optimising stuff that never should
have been written.

As I like my RTL 8125b NIC to be fast (TM), I am not giving up on it.

Just recalled that you mentioned that it supports RSS. Is it feasible to add it to the r8169
driver?

It is OK for me that we have a formal and less formal mode of communication and switch between
them.

Thank you for all your quick reviews, much obliged, thank you for partially accepting the patches,
but I think I need to sleep over it before submitting a new version.

Regards,
Mirsad Todorovac

^ permalink raw reply	[relevance 0%]

* Re: [PATCH v5 6/7] r8169: Coalesce mac ocp write and modify for 8125 and 8125B start to reduce spinlocks
  2023-10-29 18:36  3% ` [PATCH v5 6/7] r8169: Coalesce mac ocp write and modify for 8125 and 8125B start to reduce spinlocks Mirsad Goran Todorovac
@ 2023-10-30 14:02  0%   ` Heiner Kallweit
  2023-10-30 15:02  0%     ` Mirsad Todorovac
  0 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2023-10-30 14:02 UTC (permalink / raw)
  To: Mirsad Goran Todorovac, Jason Gunthorpe, Joerg Roedel, Lu Baolu,
	iommu, linux-kernel, netdev
  Cc: Joerg Roedel, Will Deacon, Robin Murphy, nic_swsd,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Marco Elver

On 29.10.2023 19:36, Mirsad Goran Todorovac wrote:
> Repeated calls to r8168_mac_ocp_write() and r8168_mac_ocp_modify() in
> the startup of 8125 and 8125B involve implicit spin_lock_irqsave() and
> spin_unlock_irqrestore() on each invocation.
> 
> Coalesced with the corresponding helpers r8168_mac_ocp_write_seq() and
> r8168_mac_ocp_modify_seq() into sequential write or modidy with a sinqle
> pair of spin_lock_irqsave() and spin_unlock_irqrestore(), these calls
> reduce overall lock contention.
> 
> Fixes: f1bce4ad2f1ce ("r8169: add support for RTL8125")
> Fixes: 0439297be9511 ("r8169: add support for RTL8125B")
> Cc: Heiner Kallweit <hkallweit1@gmail.com>
> Cc: Marco Elver <elver@google.com>
> Cc: nic_swsd@realtek.com
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: Paolo Abeni <pabeni@redhat.com>
> Cc: netdev@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Link: https://lore.kernel.org/lkml/20231028005153.2180411-1-mirsad.todorovac@alu.unizg.hr/
> Link: https://lore.kernel.org/lkml/20231028110459.2644926-1-mirsad.todorovac@alu.unizg.hr/
> Signed-off-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
> ---
> v5:
>  added unlocked primitives to allow mac ocs modify grouping
>  applied coalescing of mac ocp writes/modifies for 8168ep and 8117
>  some formatting fixes to please checkpatch.pl
> 
> v4:
>  fixed complaints as advised by Heiner and checkpatch.pl
>  split the patch into five sections to be more easily manipulated and reviewed
>  introduced r8168_mac_ocp_write_seq()
>  applied coalescing of mac ocp writes/modifies for 8168H, 8125 and 8125B
> 
> v3:
>  removed register/mask pair array sentinels, so using ARRAY_SIZE().
>  avoided duplication of RTL_W32() call code as advised by Heiner.
> 
>  drivers/net/ethernet/realtek/r8169_main.c | 75 +++++++++++++----------
>  1 file changed, 44 insertions(+), 31 deletions(-)
> 
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index 50fbacb05953..0778cd0ba2e0 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -3553,6 +3553,28 @@ DECLARE_RTL_COND(rtl_mac_ocp_e00e_cond)
>  
>  static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>  {
> +	static const struct e_info_regmaskset e_info_8125_common_1[] = {
> +		{ 0xd3e2, 0x0fff, 0x03a9 },
> +		{ 0xd3e4, 0x00ff, 0x0000 },
> +		{ 0xe860, 0x0000, 0x0080 },
> +	};
> +
> +	static const struct e_info_regmaskset e_info_8125_common_2[] = {
> +		{ 0xc0b4, 0x0000, 0x000c },
> +		{ 0xeb6a, 0x00ff, 0x0033 },
> +		{ 0xeb50, 0x03e0, 0x0040 },
> +		{ 0xe056, 0x00f0, 0x0030 },
> +		{ 0xe040, 0x1000, 0x0000 },
> +		{ 0xea1c, 0x0003, 0x0001 },
> +		{ 0xe0c0, 0x4f0f, 0x4403 },
> +		{ 0xe052, 0x0080, 0x0068 },
> +		{ 0xd430, 0x0fff, 0x047f },
> +		{ 0xea1c, 0x0004, 0x0000 },
> +		{ 0xeb54, 0x0000, 0x0001 },
> +	};
> +
> +	unsigned long flags;
> +
>  	rtl_pcie_state_l2l3_disable(tp);
>  
>  	RTL_W16(tp, 0x382, 0x221b);
> @@ -3560,47 +3582,38 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
>  	RTL_W16(tp, 0x4800, 0);
>  
>  	/* disable UPS */
> -	r8168_mac_ocp_modify(tp, 0xd40a, 0x0010, 0x0000);
> +
> +	raw_spin_lock_irqsave(&tp->mac_ocp_lock, flags);
> +	__r8168_mac_ocp_modify(tp, 0xd40a, 0x0010, 0x0000);
>  
>  	RTL_W8(tp, Config1, RTL_R8(tp, Config1) & ~0x10);
>  
> -	r8168_mac_ocp_write(tp, 0xc140, 0xffff);
> -	r8168_mac_ocp_write(tp, 0xc142, 0xffff);
> +	__r8168_mac_ocp_write(tp, 0xc140, 0xffff);
> +	__r8168_mac_ocp_write(tp, 0xc142, 0xffff);
>  
> -	r8168_mac_ocp_modify(tp, 0xd3e2, 0x0fff, 0x03a9);
> -	r8168_mac_ocp_modify(tp, 0xd3e4, 0x00ff, 0x0000);
> -	r8168_mac_ocp_modify(tp, 0xe860, 0x0000, 0x0080);
> +	__r8168_mac_ocp_modify_seq(tp, e_info_8125_common_1);
>  
>  	/* disable new tx descriptor format */
> -	r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
> +	__r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
>  
> -	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
> -		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
> -	else
> -		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
> +	if (tp->mac_version == RTL_GIGA_MAC_VER_63) {
> +		__r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
> +		__r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
> +	} else {
> +		__r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
> +		__r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0020);
> +	}
> +
> +	__r8168_mac_ocp_modify_seq(tp, e_info_8125_common_2);
> +	raw_spin_unlock_irqrestore(&tp->mac_ocp_lock, flags);
>  
> -	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
> -		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
> -	else
> -		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0020);
> -
> -	r8168_mac_ocp_modify(tp, 0xc0b4, 0x0000, 0x000c);
> -	r8168_mac_ocp_modify(tp, 0xeb6a, 0x00ff, 0x0033);
> -	r8168_mac_ocp_modify(tp, 0xeb50, 0x03e0, 0x0040);
> -	r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
> -	r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
> -	r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
> -	r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
> -	r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
> -	r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
> -
> -	r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
> -	r8168_mac_ocp_modify(tp, 0xeb54, 0x0000, 0x0001);
>  	udelay(1);
> -	r8168_mac_ocp_modify(tp, 0xeb54, 0x0001, 0x0000);
> -	RTL_W16(tp, 0x1880, RTL_R16(tp, 0x1880) & ~0x0030);
>  
> -	r8168_mac_ocp_write(tp, 0xe098, 0xc302);
> +	raw_spin_lock_irqsave(&tp->mac_ocp_lock, flags);
> +	__r8168_mac_ocp_modify(tp, 0xeb54, 0x0001, 0x0000);
> +	RTL_W16(tp, 0x1880, RTL_R16(tp, 0x1880) & ~0x0030);
> +	__r8168_mac_ocp_write(tp, 0xe098, 0xc302);
> +	raw_spin_unlock_irqrestore(&tp->mac_ocp_lock, flags);
>  
>  	rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
>  

All this manual locking and unlocking makes the code harder
to read and more error-prone. Maybe, as a rule of thumb:
If you can replace a block with more than 10 mac ocp ops,
then fine with me.



^ permalink raw reply	[relevance 0%]

* [PATCH v5 6/7] r8169: Coalesce mac ocp write and modify for 8125 and 8125B start to reduce spinlocks
  @ 2023-10-29 18:36  3% ` Mirsad Goran Todorovac
  2023-10-30 14:02  0%   ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Mirsad Goran Todorovac @ 2023-10-29 18:36 UTC (permalink / raw)
  To: Jason Gunthorpe, Joerg Roedel, Lu Baolu, iommu, linux-kernel, netdev
  Cc: Joerg Roedel, Will Deacon, Robin Murphy, Heiner Kallweit,
	nic_swsd, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Mirsad Goran Todorovac, Marco Elver

Repeated calls to r8168_mac_ocp_write() and r8168_mac_ocp_modify() in
the startup of 8125 and 8125B involve implicit spin_lock_irqsave() and
spin_unlock_irqrestore() on each invocation.

Coalesced with the corresponding helpers r8168_mac_ocp_write_seq() and
r8168_mac_ocp_modify_seq() into sequential write or modidy with a sinqle
pair of spin_lock_irqsave() and spin_unlock_irqrestore(), these calls
reduce overall lock contention.

Fixes: f1bce4ad2f1ce ("r8169: add support for RTL8125")
Fixes: 0439297be9511 ("r8169: add support for RTL8125B")
Cc: Heiner Kallweit <hkallweit1@gmail.com>
Cc: Marco Elver <elver@google.com>
Cc: nic_swsd@realtek.com
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Link: https://lore.kernel.org/lkml/20231028005153.2180411-1-mirsad.todorovac@alu.unizg.hr/
Link: https://lore.kernel.org/lkml/20231028110459.2644926-1-mirsad.todorovac@alu.unizg.hr/
Signed-off-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
---
v5:
 added unlocked primitives to allow mac ocs modify grouping
 applied coalescing of mac ocp writes/modifies for 8168ep and 8117
 some formatting fixes to please checkpatch.pl

v4:
 fixed complaints as advised by Heiner and checkpatch.pl
 split the patch into five sections to be more easily manipulated and reviewed
 introduced r8168_mac_ocp_write_seq()
 applied coalescing of mac ocp writes/modifies for 8168H, 8125 and 8125B

v3:
 removed register/mask pair array sentinels, so using ARRAY_SIZE().
 avoided duplication of RTL_W32() call code as advised by Heiner.

 drivers/net/ethernet/realtek/r8169_main.c | 75 +++++++++++++----------
 1 file changed, 44 insertions(+), 31 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 50fbacb05953..0778cd0ba2e0 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -3553,6 +3553,28 @@ DECLARE_RTL_COND(rtl_mac_ocp_e00e_cond)
 
 static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 {
+	static const struct e_info_regmaskset e_info_8125_common_1[] = {
+		{ 0xd3e2, 0x0fff, 0x03a9 },
+		{ 0xd3e4, 0x00ff, 0x0000 },
+		{ 0xe860, 0x0000, 0x0080 },
+	};
+
+	static const struct e_info_regmaskset e_info_8125_common_2[] = {
+		{ 0xc0b4, 0x0000, 0x000c },
+		{ 0xeb6a, 0x00ff, 0x0033 },
+		{ 0xeb50, 0x03e0, 0x0040 },
+		{ 0xe056, 0x00f0, 0x0030 },
+		{ 0xe040, 0x1000, 0x0000 },
+		{ 0xea1c, 0x0003, 0x0001 },
+		{ 0xe0c0, 0x4f0f, 0x4403 },
+		{ 0xe052, 0x0080, 0x0068 },
+		{ 0xd430, 0x0fff, 0x047f },
+		{ 0xea1c, 0x0004, 0x0000 },
+		{ 0xeb54, 0x0000, 0x0001 },
+	};
+
+	unsigned long flags;
+
 	rtl_pcie_state_l2l3_disable(tp);
 
 	RTL_W16(tp, 0x382, 0x221b);
@@ -3560,47 +3582,38 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	RTL_W16(tp, 0x4800, 0);
 
 	/* disable UPS */
-	r8168_mac_ocp_modify(tp, 0xd40a, 0x0010, 0x0000);
+
+	raw_spin_lock_irqsave(&tp->mac_ocp_lock, flags);
+	__r8168_mac_ocp_modify(tp, 0xd40a, 0x0010, 0x0000);
 
 	RTL_W8(tp, Config1, RTL_R8(tp, Config1) & ~0x10);
 
-	r8168_mac_ocp_write(tp, 0xc140, 0xffff);
-	r8168_mac_ocp_write(tp, 0xc142, 0xffff);
+	__r8168_mac_ocp_write(tp, 0xc140, 0xffff);
+	__r8168_mac_ocp_write(tp, 0xc142, 0xffff);
 
-	r8168_mac_ocp_modify(tp, 0xd3e2, 0x0fff, 0x03a9);
-	r8168_mac_ocp_modify(tp, 0xd3e4, 0x00ff, 0x0000);
-	r8168_mac_ocp_modify(tp, 0xe860, 0x0000, 0x0080);
+	__r8168_mac_ocp_modify_seq(tp, e_info_8125_common_1);
 
 	/* disable new tx descriptor format */
-	r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
+	__r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
 
-	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
-		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
-	else
-		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
+	if (tp->mac_version == RTL_GIGA_MAC_VER_63) {
+		__r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
+		__r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
+	} else {
+		__r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
+		__r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0020);
+	}
+
+	__r8168_mac_ocp_modify_seq(tp, e_info_8125_common_2);
+	raw_spin_unlock_irqrestore(&tp->mac_ocp_lock, flags);
 
-	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
-		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
-	else
-		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0020);
-
-	r8168_mac_ocp_modify(tp, 0xc0b4, 0x0000, 0x000c);
-	r8168_mac_ocp_modify(tp, 0xeb6a, 0x00ff, 0x0033);
-	r8168_mac_ocp_modify(tp, 0xeb50, 0x03e0, 0x0040);
-	r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
-	r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
-	r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
-	r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
-	r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
-	r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
-
-	r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
-	r8168_mac_ocp_modify(tp, 0xeb54, 0x0000, 0x0001);
 	udelay(1);
-	r8168_mac_ocp_modify(tp, 0xeb54, 0x0001, 0x0000);
-	RTL_W16(tp, 0x1880, RTL_R16(tp, 0x1880) & ~0x0030);
 
-	r8168_mac_ocp_write(tp, 0xe098, 0xc302);
+	raw_spin_lock_irqsave(&tp->mac_ocp_lock, flags);
+	__r8168_mac_ocp_modify(tp, 0xeb54, 0x0001, 0x0000);
+	RTL_W16(tp, 0x1880, RTL_R16(tp, 0x1880) & ~0x0030);
+	__r8168_mac_ocp_write(tp, 0xe098, 0xc302);
+	raw_spin_unlock_irqrestore(&tp->mac_ocp_lock, flags);
 
 	rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
 
-- 
2.34.1


^ permalink raw reply related	[relevance 3%]

* [PATCH v4 4/5] r8169: Coalesce mac ocp commands for 8125 and 8125B start to reduce spinlock contention
  @ 2023-10-29 11:04  4% ` Mirsad Goran Todorovac
  2023-10-30 21:53  0%   ` Jacob Keller
  0 siblings, 1 reply; 107+ results
From: Mirsad Goran Todorovac @ 2023-10-29 11:04 UTC (permalink / raw)
  To: Jason Gunthorpe, Joerg Roedel, Lu Baolu, iommu, linux-kernel, netdev
  Cc: Joerg Roedel, Will Deacon, Robin Murphy, Heiner Kallweit,
	nic_swsd, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Mirsad Goran Todorovac, Marco Elver

Repeated calls to r8168_mac_ocp_write() and r8168_mac_ocp_modify() in
the startup of 8125 and 8125B involve implicit spin_lock_irqsave() and
spin_unlock_irqrestore() on each invocation.

Coalesced with the corresponding helpers r8168_mac_ocp_write_seq() and
r8168_mac_ocp_modify_seq() into sequential write or modidy with a sinqle lock/unlock,
these calls reduce overall lock contention.

Fixes: f1bce4ad2f1ce ("r8169: add support for RTL8125")
Fixes: 0439297be9511 ("r8169: add support for RTL8125B")
Cc: Heiner Kallweit <hkallweit1@gmail.com>
Cc: Marco Elver <elver@google.com>
Cc: nic_swsd@realtek.com
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Link: https://lore.kernel.org/lkml/20231028005153.2180411-1-mirsad.todorovac@alu.unizg.hr/
Link: https://lore.kernel.org/lkml/20231028110459.2644926-1-mirsad.todorovac@alu.unizg.hr/
Signed-off-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
---
v4:
 fixed complaints as advised by Heiner and checkpatch.pl.
 split the patch into five sections to be more easily manipulated and reviewed
 introduced r8168_mac_ocp_write_seq()
 applied coalescing of mac ocp writes/modifies for 8168H, 8125 and 8125B

v3:
 removed register/mask pair array sentinels, so using ARRAY_SIZE().
 avoided duplication of RTL_W32() call code as advised by Heiner.

 drivers/net/ethernet/realtek/r8169_main.c | 38 ++++++++++++++---------
 1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index cbaac4675bd2..dd65e0384ab3 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -3539,6 +3539,27 @@ DECLARE_RTL_COND(rtl_mac_ocp_e00e_cond)
 
 static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 {
+
+	static const struct e_info_regmaskset e_info_8125_common_1[] = {
+		{ 0xd3e2, 0x0fff, 0x03a9 },
+		{ 0xd3e4, 0x00ff, 0x0000 },
+		{ 0xe860, 0x0000, 0x0080 },
+	};
+
+	static const struct e_info_regmaskset e_info_8125_common_2[] = {
+		{ 0xc0b4, 0x0000, 0x000c },
+		{ 0xeb6a, 0x00ff, 0x0033 },
+		{ 0xeb50, 0x03e0, 0x0040 },
+		{ 0xe056, 0x00f0, 0x0030 },
+		{ 0xe040, 0x1000, 0x0000 },
+		{ 0xea1c, 0x0003, 0x0001 },
+		{ 0xe0c0, 0x4f0f, 0x4403 },
+		{ 0xe052, 0x0080, 0x0068 },
+		{ 0xd430, 0x0fff, 0x047f },
+		{ 0xea1c, 0x0004, 0x0000 },
+		{ 0xeb54, 0x0000, 0x0001 },
+	};
+
 	rtl_pcie_state_l2l3_disable(tp);
 
 	RTL_W16(tp, 0x382, 0x221b);
@@ -3553,9 +3574,7 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	r8168_mac_ocp_write(tp, 0xc140, 0xffff);
 	r8168_mac_ocp_write(tp, 0xc142, 0xffff);
 
-	r8168_mac_ocp_modify(tp, 0xd3e2, 0x0fff, 0x03a9);
-	r8168_mac_ocp_modify(tp, 0xd3e4, 0x00ff, 0x0000);
-	r8168_mac_ocp_modify(tp, 0xe860, 0x0000, 0x0080);
+	r8168_mac_ocp_modify_seq(tp, e_info_8125_common_1);
 
 	/* disable new tx descriptor format */
 	r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
@@ -3570,18 +3589,7 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	else
 		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0020);
 
-	r8168_mac_ocp_modify(tp, 0xc0b4, 0x0000, 0x000c);
-	r8168_mac_ocp_modify(tp, 0xeb6a, 0x00ff, 0x0033);
-	r8168_mac_ocp_modify(tp, 0xeb50, 0x03e0, 0x0040);
-	r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
-	r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
-	r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
-	r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
-	r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
-	r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
-
-	r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
-	r8168_mac_ocp_modify(tp, 0xeb54, 0x0000, 0x0001);
+	r8168_mac_ocp_modify_seq(tp, e_info_8125_common_2);
 	udelay(1);
 	r8168_mac_ocp_modify(tp, 0xeb54, 0x0001, 0x0000);
 	RTL_W16(tp, 0x1880, RTL_R16(tp, 0x1880) & ~0x0030);
-- 
2.34.1


^ permalink raw reply related	[relevance 4%]

* BUG: KCSAN: data-race in rtl8169_poll
@ 2023-09-18  6:14  1% Mirsad Todorovac
  0 siblings, 0 replies; 107+ results
From: Mirsad Todorovac @ 2023-09-18  6:14 UTC (permalink / raw)
  To: nic_swsd
  Cc: Heiner Kallweit, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, netdev, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 3397 bytes --]

Hi all,

In the vanilla torvalds tree kernel on Ubuntu 22.04, commit 6.6.0-rc1-kcsan-00269-ge789286468a9,
KCSAN discovered a data-race in rtl8169_poll():

[ 9591.740976] ==================================================================
[ 9591.740990] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[ 9591.741060] race at unknown origin, with read to 0xffff888109773130 of 4 bytes by interrupt on cpu 21:
[ 9591.741073] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[ 9591.741135] __napi_poll (net/core/dev.c:6527)
[ 9591.741149] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727)
[ 9591.741161] __do_softirq (kernel/softirq.c:553)
[ 9591.741175] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632)
[ 9591.741185] irq_exit_rcu (kernel/softirq.c:647)
[ 9591.741194] common_interrupt (arch/x86/kernel/irq.c:247 (discriminator 14))
[ 9591.741206] asm_common_interrupt (./arch/x86/include/asm/idtentry.h:636)
[ 9591.741217] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291)
[ 9591.741227] cpuidle_enter (drivers/cpuidle/cpuidle.c:390)
[ 9591.741237] call_cpuidle (kernel/sched/idle.c:135)
[ 9591.741249] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282)
[ 9591.741259] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1))
[ 9591.741268] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294)
[ 9591.741281] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433)

[ 9591.741300] value changed: 0x80003fff -> 0x34044510

[ 9591.741314] Reported by Kernel Concurrency Sanitizer on:
[ 9591.741322] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[ 9591.741334] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[ 9591.741343] ==================================================================

(The taint is not from the proprietary module, but triggered from the previous reported and unfixed bug.)

Apparently, it is this code:

static int rtl8169_poll(struct napi_struct *napi, int budget)
{
	struct rtl8169_private *tp = container_of(napi, struct rtl8169_private, napi);
	struct net_device *dev = tp->dev;
	int work_done;

	rtl_tx(dev, tp, budget);

→	work_done = rtl_rx(dev, tp, budget);

	if (work_done < budget && napi_complete_done(napi, work_done))
		rtl_irq_enable(tp);

	return work_done;
}

and

static int rtl_rx(struct net_device *dev, struct rtl8169_private *tp, int budget)
{
	struct device *d = tp_to_dev(tp);
	int count;

	for (count = 0; count < budget; count++, tp->cur_rx++) {
		unsigned int pkt_size, entry = tp->cur_rx % NUM_RX_DESC;
		struct RxDesc *desc = tp->RxDescArray + entry;
		struct sk_buff *skb;
		const void *rx_buf;
		dma_addr_t addr;
		u32 status;

→		status = le32_to_cpu(desc->opts1);
		if (status & DescOwn)
			break;

		/* This barrier is needed to keep us from reading
		 * any other fields out of the Rx descriptor until
		 * we know the status of DescOwn
		 */
		dma_rmb();

		if (unlikely(status & RxRES)) {
.
.
.

The reason isn't obvious, so it might be interesting if this is a valid report and whether it caused spurious corruption
of the network data on Realtek 8169 compatible cards ...

Hope this helps.

Best regards,
Mirsad Todorovac

[-- Attachment #2: rtl8169_poll_decoded_05.log --]
[-- Type: text/x-log, Size: 31903 bytes --]

[ 9591.740976] ==================================================================
[ 9591.740990] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[ 9591.741060] race at unknown origin, with read to 0xffff888109773130 of 4 bytes by interrupt on cpu 21:
[ 9591.741073] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[ 9591.741135] __napi_poll (net/core/dev.c:6527) 
[ 9591.741149] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[ 9591.741161] __do_softirq (kernel/softirq.c:553) 
[ 9591.741175] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[ 9591.741185] irq_exit_rcu (kernel/softirq.c:647) 
[ 9591.741194] common_interrupt (arch/x86/kernel/irq.c:247 (discriminator 14)) 
[ 9591.741206] asm_common_interrupt (./arch/x86/include/asm/idtentry.h:636) 
[ 9591.741217] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[ 9591.741227] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[ 9591.741237] call_cpuidle (kernel/sched/idle.c:135) 
[ 9591.741249] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[ 9591.741259] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[ 9591.741268] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[ 9591.741281] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[ 9591.741300] value changed: 0x80003fff -> 0x34044510

[ 9591.741314] Reported by Kernel Concurrency Sanitizer on:
[ 9591.741322] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[ 9591.741334] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[ 9591.741343] ==================================================================
--
[ 9682.076426] ==================================================================
[ 9682.076439] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[ 9682.076510] race at unknown origin, with read to 0xffff888109773030 of 4 bytes by interrupt on cpu 21:
[ 9682.076523] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[ 9682.076584] __napi_poll (net/core/dev.c:6527) 
[ 9682.076598] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[ 9682.076611] __do_softirq (kernel/softirq.c:553) 
[ 9682.076625] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[ 9682.076635] irq_exit_rcu (kernel/softirq.c:647) 
[ 9682.076644] common_interrupt (arch/x86/kernel/irq.c:247 (discriminator 14)) 
[ 9682.076655] asm_common_interrupt (./arch/x86/include/asm/idtentry.h:636) 
[ 9682.076666] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[ 9682.076677] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[ 9682.076686] call_cpuidle (kernel/sched/idle.c:135) 
[ 9682.076699] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[ 9682.076708] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[ 9682.076717] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[ 9682.076730] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[ 9682.076750] value changed: 0x80003fff -> 0x34044510

[ 9682.076764] Reported by Kernel Concurrency Sanitizer on:
[ 9682.076772] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[ 9682.076784] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[ 9682.076791] ==================================================================
--
[ 9936.042653] ==================================================================
[ 9936.042671] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[ 9936.042779] race at unknown origin, with read to 0xffff888109773740 of 4 bytes by interrupt on cpu 21:
[ 9936.042797] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[ 9936.042891] __napi_poll (net/core/dev.c:6527) 
[ 9936.042911] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[ 9936.042931] __do_softirq (kernel/softirq.c:553) 
[ 9936.042951] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[ 9936.042966] irq_exit_rcu (kernel/softirq.c:647) 
[ 9936.042979] common_interrupt (arch/x86/kernel/irq.c:247 (discriminator 14)) 
[ 9936.042996] asm_common_interrupt (./arch/x86/include/asm/idtentry.h:636) 
[ 9936.043012] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[ 9936.043028] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[ 9936.043042] call_cpuidle (kernel/sched/idle.c:135) 
[ 9936.043061] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[ 9936.043074] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[ 9936.043088] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[ 9936.043107] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[ 9936.043135] value changed: 0x80003fff -> 0x34044510

[ 9936.043157] Reported by Kernel Concurrency Sanitizer on:
[ 9936.043169] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[ 9936.043188] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[ 9936.043198] ==================================================================
--
[10731.746300] ==================================================================
[10731.746311] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[10731.746383] race at unknown origin, with read to 0xffff888109773f50 of 4 bytes by interrupt on cpu 21:
[10731.746395] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[10731.746457] __napi_poll (net/core/dev.c:6527) 
[10731.746471] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[10731.746484] __do_softirq (kernel/softirq.c:553) 
[10731.746497] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[10731.746507] irq_exit_rcu (kernel/softirq.c:647) 
[10731.746516] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1074 (discriminator 14)) 
[10731.746530] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:645) 
[10731.746542] kcsan_setup_watchpoint (kernel/kcsan/core.c:705 (discriminator 1)) 
[10731.746556] __tsan_read2 (kernel/kcsan/core.c:1023) 
[10731.746564] udp_send_skb (net/ipv4/udp.c:908) 
[10731.746578] udp_sendmsg (net/ipv4/udp.c:1246) 
[10731.746587] inet_sendmsg (net/ipv4/af_inet.c:840 (discriminator 4)) 
[10731.746598] sock_sendmsg (net/socket.c:730 net/socket.c:753) 
[10731.746612] __sys_sendto (net/socket.c:2177) 
[10731.746622] __x64_sys_sendto (net/socket.c:2185) 
[10731.746633] do_syscall_64 (arch/x86/entry/common.c:50 arch/x86/entry/common.c:80) 
[10731.746646] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:120) 

[10731.746663] value changed: 0x80003fff -> 0x34044510

[10731.746677] Reported by Kernel Concurrency Sanitizer on:
--
[10762.555236] ==================================================================
[10762.555250] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4368 drivers/net/ethernet/realtek/r8169_main.c:4581) r8169

[10762.555324] race at unknown origin, with read to 0xffff888109774460 of 4 bytes by interrupt on cpu 21:
[10762.555341] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4368 drivers/net/ethernet/realtek/r8169_main.c:4581) r8169
[10762.555416] __napi_poll (net/core/dev.c:6527) 
[10762.555434] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[10762.555446] __do_softirq (kernel/softirq.c:553) 
[10762.555460] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[10762.555470] irq_exit_rcu (kernel/softirq.c:647) 
[10762.555478] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1074 (discriminator 14)) 
[10762.555493] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:645) 
[10762.555504] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[10762.555515] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[10762.555525] call_cpuidle (kernel/sched/idle.c:135) 
[10762.555537] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[10762.555546] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[10762.555556] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[10762.555568] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[10762.555588] value changed: 0xb000004b -> 0x00000000

[10762.555603] Reported by Kernel Concurrency Sanitizer on:
[10762.555611] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[10762.555624] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[10762.555631] ==================================================================
--
[13081.219581] ==================================================================
[13081.219599] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4368 drivers/net/ethernet/realtek/r8169_main.c:4581) r8169

[13081.219696] race at unknown origin, with read to 0xffff888109774080 of 4 bytes by interrupt on cpu 21:
[13081.219713] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4368 drivers/net/ethernet/realtek/r8169_main.c:4581) r8169
[13081.219798] __napi_poll (net/core/dev.c:6527) 
[13081.219817] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[13081.219834] __do_softirq (kernel/softirq.c:553) 
[13081.219853] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[13081.219866] irq_exit_rcu (kernel/softirq.c:647) 
[13081.219878] common_interrupt (arch/x86/kernel/irq.c:247 (discriminator 14)) 
[13081.219894] asm_common_interrupt (./arch/x86/include/asm/idtentry.h:636) 
[13081.219908] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[13081.219922] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[13081.219936] call_cpuidle (kernel/sched/idle.c:135) 
[13081.219953] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[13081.219967] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[13081.219976] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[13081.219989] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[13081.220007] value changed: 0xb000050c -> 0x00000000

[13081.220022] Reported by Kernel Concurrency Sanitizer on:
[13081.220030] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[13081.220042] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[13081.220049] ==================================================================
--
[13379.040447] ==================================================================
[13379.040464] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[13379.040561] race at unknown origin, with read to 0xffff888109773880 of 4 bytes by interrupt on cpu 21:
[13379.040578] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[13379.040663] __napi_poll (net/core/dev.c:6527) 
[13379.040681] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[13379.040699] __do_softirq (kernel/softirq.c:553) 
[13379.040717] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[13379.040730] irq_exit_rcu (kernel/softirq.c:647) 
[13379.040742] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1074 (discriminator 14)) 
[13379.040761] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:645) 
[13379.040777] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[13379.040791] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[13379.040805] call_cpuidle (kernel/sched/idle.c:135) 
[13379.040822] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[13379.040834] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[13379.040847] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[13379.040864] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[13379.040890] value changed: 0x80003fff -> 0x34044044

[13379.040910] Reported by Kernel Concurrency Sanitizer on:
[13379.040921] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[13379.040937] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[13379.040947] ==================================================================
--
[16704.174145] ==================================================================
[16704.174156] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[16704.174227] race at unknown origin, with read to 0xffff8881097733f0 of 4 bytes by interrupt on cpu 21:
[16704.174239] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[16704.174301] __napi_poll (net/core/dev.c:6527) 
[16704.174315] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[16704.174328] __do_softirq (kernel/softirq.c:553) 
[16704.174341] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[16704.174350] irq_exit_rcu (kernel/softirq.c:647) 
[16704.174359] common_interrupt (arch/x86/kernel/irq.c:247 (discriminator 14)) 
[16704.174371] asm_common_interrupt (./arch/x86/include/asm/idtentry.h:636) 
[16704.174382] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[16704.174392] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[16704.174401] call_cpuidle (kernel/sched/idle.c:135) 
[16704.174413] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[16704.174422] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[16704.174432] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[16704.174444] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[16704.174462] value changed: 0x80003fff -> 0x340285e6

[16704.174477] Reported by Kernel Concurrency Sanitizer on:
[16704.174484] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[16704.174497] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[16704.174504] ==================================================================
--
[23497.419798] ==================================================================
[23497.419816] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[23497.419923] race at unknown origin, with read to 0xffff888109773bf0 of 4 bytes by interrupt on cpu 21:
[23497.419942] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[23497.420012] __napi_poll (net/core/dev.c:6527) 
[23497.420026] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[23497.420039] __do_softirq (kernel/softirq.c:553) 
[23497.420052] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[23497.420063] irq_exit_rcu (kernel/softirq.c:647) 
[23497.420072] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1074 (discriminator 14)) 
[23497.420086] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:645) 
[23497.420098] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[23497.420108] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[23497.420118] call_cpuidle (kernel/sched/idle.c:135) 
[23497.420131] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[23497.420140] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[23497.420150] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[23497.420163] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[23497.420182] value changed: 0x80003fff -> 0x340285e6

[23497.420196] Reported by Kernel Concurrency Sanitizer on:
[23497.420204] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[23497.420216] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[23497.420223] ==================================================================
--
[29422.263292] ==================================================================
[29422.263306] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[29422.263380] race at unknown origin, with read to 0xffff888109773070 of 4 bytes by interrupt on cpu 21:
[29422.263393] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[29422.263458] __napi_poll (net/core/dev.c:6527) 
[29422.263472] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[29422.263486] __do_softirq (kernel/softirq.c:553) 
[29422.263500] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[29422.263511] irq_exit_rcu (kernel/softirq.c:647) 
[29422.263520] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1074 (discriminator 14)) 
[29422.263535] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:645) 
[29422.263547] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[29422.263558] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[29422.263569] call_cpuidle (kernel/sched/idle.c:135) 
[29422.263582] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[29422.263591] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[29422.263601] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[29422.263615] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[29422.263635] value changed: 0x80003fff -> 0x34028046

[29422.263650] Reported by Kernel Concurrency Sanitizer on:
[29422.263659] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[29422.263672] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[29422.263680] ==================================================================
--
[29491.259559] ==================================================================
[29491.259570] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[29491.259635] race at unknown origin, with read to 0xffff8881097738a0 of 4 bytes by interrupt on cpu 21:
[29491.259648] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[29491.259705] __napi_poll (net/core/dev.c:6527) 
[29491.259719] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[29491.259731] __do_softirq (kernel/softirq.c:553) 
[29491.259744] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[29491.259753] irq_exit_rcu (kernel/softirq.c:647) 
[29491.259762] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1074 (discriminator 14)) 
[29491.259774] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:645) 
[29491.259786] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[29491.259796] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[29491.259805] call_cpuidle (kernel/sched/idle.c:135) 
[29491.259817] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[29491.259825] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[29491.259834] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[29491.259846] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[29491.259864] value changed: 0x80003fff -> 0x340444fe

[29491.259877] Reported by Kernel Concurrency Sanitizer on:
[29491.259885] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[29491.259897] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[29491.259904] ==================================================================
--
[29685.089299] ==================================================================
[29685.089312] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4368 drivers/net/ethernet/realtek/r8169_main.c:4581) r8169

[29685.089383] race at unknown origin, with read to 0xffff8881097742b0 of 4 bytes by interrupt on cpu 21:
[29685.089397] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4368 drivers/net/ethernet/realtek/r8169_main.c:4581) r8169
[29685.089458] __napi_poll (net/core/dev.c:6527) 
[29685.089472] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[29685.089486] __do_softirq (kernel/softirq.c:553) 
[29685.089499] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[29685.089509] irq_exit_rcu (kernel/softirq.c:647) 
[29685.089519] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1074 (discriminator 14)) 
[29685.089533] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:645) 
[29685.089545] amdgpu_ring_insert_nop (drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h:375 drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c:114) amdgpu
[29685.093289] amdgpu_ring_commit (drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c:148) amdgpu
[29685.096957] amdgpu_ib_schedule (drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c:318) amdgpu
[29685.100643] amdgpu_job_run (drivers/gpu/drm/amd/amdgpu/amdgpu_job.c:305) amdgpu
[29685.104352] drm_sched_main (drivers/gpu/drm/scheduler/sched_main.c:1044) gpu_sched
[29685.104410] kthread (kernel/kthread.c:388) 
[29685.104420] ret_from_fork (arch/x86/kernel/process.c:147) 
[29685.104433] ret_from_fork_asm (arch/x86/entry/entry_64.S:312) 

[29685.104449] value changed: 0xb000004d -> 0x00000000

[29685.104464] Reported by Kernel Concurrency Sanitizer on:
[29685.104473] CPU: 21 PID: 1268 Comm: gfx_0.0.0 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[29685.104486] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
--
[29723.376267] ==================================================================
[29723.376281] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[29723.376353] race at unknown origin, with read to 0xffff888109773f60 of 4 bytes by interrupt on cpu 21:
[29723.376366] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[29723.376429] __napi_poll (net/core/dev.c:6527) 
[29723.376443] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[29723.376456] __do_softirq (kernel/softirq.c:553) 
[29723.376471] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[29723.376481] irq_exit_rcu (kernel/softirq.c:647) 
[29723.376491] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1074 (discriminator 14)) 
[29723.376506] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:645) 
[29723.376519] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[29723.376529] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[29723.376540] call_cpuidle (kernel/sched/idle.c:135) 
[29723.376554] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[29723.376569] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[29723.376580] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[29723.376594] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[29723.376614] value changed: 0x80003fff -> 0x34044510

[29723.376629] Reported by Kernel Concurrency Sanitizer on:
[29723.376638] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[29723.376651] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[29723.376658] ==================================================================
--
[30023.490188] ==================================================================
[30023.490208] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4368 drivers/net/ethernet/realtek/r8169_main.c:4581) r8169

[30023.490320] race at unknown origin, with read to 0xffff8881097746a0 of 4 bytes by interrupt on cpu 21:
[30023.490340] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4368 drivers/net/ethernet/realtek/r8169_main.c:4581) r8169
[30023.490438] __napi_poll (net/core/dev.c:6527) 
[30023.490460] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[30023.490480] __do_softirq (kernel/softirq.c:553) 
[30023.490501] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[30023.490517] irq_exit_rcu (kernel/softirq.c:647) 
[30023.490532] common_interrupt (arch/x86/kernel/irq.c:247 (discriminator 14)) 
[30023.490550] asm_common_interrupt (./arch/x86/include/asm/idtentry.h:636) 
[30023.490567] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[30023.490585] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[30023.490600] call_cpuidle (kernel/sched/idle.c:135) 
[30023.490620] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[30023.490635] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[30023.490650] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[30023.490671] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[30023.490702] value changed: 0xb000050c -> 0x00000000

[30023.490726] Reported by Kernel Concurrency Sanitizer on:
[30023.490739] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[30023.490759] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[30023.490771] ==================================================================
--
[30498.364509] ==================================================================
[30498.364524] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[30498.364611] race at unknown origin, with read to 0xffff888109773b60 of 4 bytes by interrupt on cpu 21:
[30498.364624] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[30498.364686] __napi_poll (net/core/dev.c:6527) 
[30498.364699] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[30498.364712] __do_softirq (kernel/softirq.c:553) 
[30498.364726] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[30498.364736] irq_exit_rcu (kernel/softirq.c:647) 
[30498.364745] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1074 (discriminator 14)) 
[30498.364759] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:645) 
[30498.364772] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[30498.364782] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[30498.364791] call_cpuidle (kernel/sched/idle.c:135) 
[30498.364804] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[30498.364813] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[30498.364822] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[30498.364835] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[30498.364854] value changed: 0x80003fff -> 0x34044047

[30498.364869] Reported by Kernel Concurrency Sanitizer on:
[30498.364877] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[30498.364890] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[30498.364898] ==================================================================
--
[34257.524477] ==================================================================
[34257.524490] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[34257.524569] race at unknown origin, with read to 0xffff888109773630 of 4 bytes by interrupt on cpu 21:
[34257.524583] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[34257.524651] __napi_poll (net/core/dev.c:6527) 
[34257.524666] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[34257.524681] __do_softirq (kernel/softirq.c:553) 
[34257.524696] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[34257.524707] irq_exit_rcu (kernel/softirq.c:647) 
[34257.524717] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1074 (discriminator 14)) 
[34257.524732] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:645) 
[34257.524746] cpuidle_enter_state (drivers/cpuidle/cpuidle.c:291) 
[34257.524758] cpuidle_enter (drivers/cpuidle/cpuidle.c:390) 
[34257.524769] call_cpuidle (kernel/sched/idle.c:135) 
[34257.524783] do_idle (kernel/sched/idle.c:219 kernel/sched/idle.c:282) 
[34257.524793] cpu_startup_entry (kernel/sched/idle.c:378 (discriminator 1)) 
[34257.524804] start_secondary (arch/x86/kernel/smpboot.c:210 arch/x86/kernel/smpboot.c:294) 
[34257.524819] secondary_startup_64_no_verify (arch/x86/kernel/head_64.S:433) 

[34257.524840] value changed: 0x80003fff -> 0x34044047

[34257.524857] Reported by Kernel Concurrency Sanitizer on:
[34257.524866] CPU: 21 PID: 0 Comm: swapper/21 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4
[34257.524880] Hardware name: ASRock X670E PG Lightning/X670E PG Lightning, BIOS 1.21 04/26/2023
[34257.524889] ==================================================================
--
[34535.403675] ==================================================================
[34535.403687] BUG: KCSAN: data-race in rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169

[34535.403752] race at unknown origin, with read to 0xffff8881097733c0 of 4 bytes by interrupt on cpu 21:
[34535.403764] rtl8169_poll (drivers/net/ethernet/realtek/r8169_main.c:4430 drivers/net/ethernet/realtek/r8169_main.c:4583) r8169
[34535.403821] __napi_poll (net/core/dev.c:6527) 
[34535.403834] net_rx_action (net/core/dev.c:6596 net/core/dev.c:6727) 
[34535.403846] __do_softirq (kernel/softirq.c:553) 
[34535.403859] __irq_exit_rcu (kernel/softirq.c:427 kernel/softirq.c:632) 
[34535.403869] irq_exit_rcu (kernel/softirq.c:647) 
[34535.403877] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1074 (discriminator 14)) 
[34535.403890] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:645) 
[34535.403902] __tsan_unaligned_write4 (kernel/kcsan/core.c:1024) 
[34535.403911] amdgpu_ring_insert_nop (drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h:377 drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c:114) amdgpu
[34535.407357] amdgpu_ring_commit (drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c:148) amdgpu
[34535.410841] amdgpu_ib_schedule (drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c:318) amdgpu
[34535.414269] amdgpu_job_run (drivers/gpu/drm/amd/amdgpu/amdgpu_job.c:305) amdgpu
[34535.417699] drm_sched_main (drivers/gpu/drm/scheduler/sched_main.c:1044) gpu_sched
[34535.417753] kthread (kernel/kthread.c:388) 
[34535.417761] ret_from_fork (arch/x86/kernel/process.c:147) 
[34535.417773] ret_from_fork_asm (arch/x86/entry/entry_64.S:312) 

[34535.417787] value changed: 0x80003fff -> 0x3404457b

[34535.417801] Reported by Kernel Concurrency Sanitizer on:
[34535.417809] CPU: 21 PID: 1268 Comm: gfx_0.0.0 Tainted: G             L     6.6.0-rc1-kcsan-00269-ge789286468a9-dirty #4

[-- Attachment #3: lshw.txt --]
[-- Type: text/plain, Size: 59241 bytes --]

defiant
    description: Desktop Computer
    product: X670E PG Lightning (Default string)
    vendor: ASRock
    version: Default string
    serial: Default string
    width: 64 bits
    capabilities: smbios-3.4.0 dmi-3.4.0 smp vsyscall32
    configuration: boot=normal chassis=desktop family=Default string sku=Default string uuid=01006b9c-80fb-0000-0000-000000000000
  *-core
       description: Motherboard
       product: X670E PG Lightning
       vendor: ASRock
       physical id: 0
       version: Default string
       serial: M80-FA012800404
       slot: Default string
     *-firmware
          description: BIOS
          vendor: American Megatrends International, LLC.
          physical id: 0
          version: 1.21
          date: 04/26/2023
          size: 64KiB
          capacity: 32MiB
          capabilities: pci upgrade shadowing cdboot bootselect socketedrom edd int13floppynec int13floppytoshiba int13floppy360 int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int14serial int17printer int10video usb biosbootspecification uefi
     *-cache:0
          description: L1 cache
          physical id: 29
          slot: L1 - Cache
          size: 1MiB
          capacity: 1MiB
          clock: 1GHz (1.0ns)
          capabilities: pipeline-burst internal write-back unified
          configuration: level=1
     *-cache:1
          description: L2 cache
          physical id: 2a
          slot: L2 - Cache
          size: 16MiB
          capacity: 16MiB
          clock: 1GHz (1.0ns)
          capabilities: pipeline-burst internal write-back unified
          configuration: level=2
     *-cache:2
          description: L3 cache
          physical id: 2b
          slot: L3 - Cache
          size: 64MiB
          capacity: 64MiB
          clock: 1GHz (1.0ns)
          capabilities: pipeline-burst internal write-back unified
          configuration: level=3
     *-cpu
          description: CPU
          product: AMD Ryzen 9 7950X 16-Core Processor
          vendor: Advanced Micro Devices [AMD]
          physical id: 2c
          bus info: cpu@0
          version: 25.97.2
          serial: Unknown
          slot: AM5
          size: 400MHz
          capacity: 5881MHz
          width: 64 bits
          clock: 100MHz
          capabilities: lm fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp x86-64 constant_tsc rep_good amd_lbr_v2 nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d cpufreq
          configuration: cores=16 enabledcores=16 microcode=174068227 threads=32
     *-memory
          description: System Memory
          physical id: 2e
          slot: System board or motherboard
          size: 64GiB
        *-bank:0
             description: [empty]
             product: Unknown
             vendor: Unknown
             physical id: 0
             serial: Unknown
             slot: DIMM 0
        *-bank:1
             description: DIMM Synchronous Unbuffered (Unregistered) 4800 MHz (0.2 ns)
             product: KF560C40-32
             vendor: Kingston
             physical id: 1
             serial: 6F1AAEED
             slot: DIMM 1
             size: 32GiB
             width: 64 bits
             clock: 505MHz (2.0ns)
        *-bank:2
             description: [empty]
             product: Unknown
             vendor: Unknown
             physical id: 2
             serial: Unknown
             slot: DIMM 0
        *-bank:3
             description: DIMM Synchronous Unbuffered (Unregistered) 4800 MHz (0.2 ns)
             product: KF560C40-32
             vendor: Kingston
             physical id: 3
             serial: 3C1AA6CB
             slot: DIMM 1
             size: 32GiB
             width: 64 bits
             clock: 505MHz (2.0ns)
     *-pci:0
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 100
          bus info: pci@0000:00:00.0
          version: 00
          width: 32 bits
          clock: 33MHz
        *-pci:0
             description: PCI bridge
             product: Advanced Micro Devices, Inc. [AMD]
             vendor: Advanced Micro Devices, Inc. [AMD]
             physical id: 1.1
             bus info: pci@0000:00:01.1
             version: 00
             width: 32 bits
             clock: 33MHz
             capabilities: pci pm pciexpress msi ht normal_decode bus_master cap_list
             configuration: driver=pcieport
             resources: irq:27 ioport:f000(size=4096) memory:fcb00000-fcdfffff ioport:fa00000000(size=8858370048)
           *-pci
                description: PCI bridge
                product: Navi 10 XL Upstream Port of PCI Express Switch
                vendor: Advanced Micro Devices, Inc. [AMD/ATI]
                physical id: 0
                bus info: pci@0000:01:00.0
                version: c7
                width: 32 bits
                clock: 33MHz
                capabilities: pci pm pciexpress msi normal_decode bus_master cap_list
                configuration: driver=pcieport
                resources: irq:32 memory:fcd00000-fcd03fff ioport:f000(size=4096) memory:fcb00000-fccfffff ioport:fa00000000(size=8858370048)
              *-pci
                   description: PCI bridge
                   product: Navi 10 XL Downstream Port of PCI Express Switch
                   vendor: Advanced Micro Devices, Inc. [AMD/ATI]
                   physical id: 0
                   bus info: pci@0000:02:00.0
                   version: 00
                   width: 32 bits
                   clock: 33MHz
                   capabilities: pci pm pciexpress msi normal_decode bus_master cap_list
                   configuration: driver=pcieport
                   resources: irq:33 ioport:f000(size=4096) memory:fcb00000-fccfffff ioport:fa00000000(size=8858370048)
                 *-display
                      description: VGA compatible controller
                      product: Navi 23 [Radeon RX 6600/6600 XT/6600M]
                      vendor: Advanced Micro Devices, Inc. [AMD/ATI]
                      physical id: 0
                      bus info: pci@0000:03:00.0
                      logical name: /dev/fb0
                      version: c7
                      width: 64 bits
                      clock: 33MHz
                      capabilities: pm pciexpress msi vga_controller bus_master cap_list rom fb
                      configuration: depth=32 driver=amdgpu latency=0 mode=3840x2160 resolution=3840,2160 visual=truecolor xres=3840 yres=2160
                      resources: iomemory:fa0-f9f iomemory:fc0-fbf irq:117 memory:fa00000000-fbffffffff memory:fc00000000-fc0fffffff ioport:f000(size=256) memory:fcb00000-fcbfffff memory:fcc00000-fcc1ffff
                 *-multimedia
                      description: Audio device
                      product: Navi 21 HDMI Audio [Radeon RX 6800/6800 XT / 6900 XT]
                      vendor: Advanced Micro Devices, Inc. [AMD/ATI]
                      physical id: 0.1
                      bus info: pci@0000:03:00.1
                      logical name: card0
                      logical name: /dev/snd/controlC0
                      logical name: /dev/snd/hwC0D0
                      logical name: /dev/snd/pcmC0D10p
                      logical name: /dev/snd/pcmC0D3p
                      logical name: /dev/snd/pcmC0D7p
                      logical name: /dev/snd/pcmC0D8p
                      logical name: /dev/snd/pcmC0D9p
                      version: 00
                      width: 32 bits
                      clock: 33MHz
                      capabilities: pm pciexpress msi bus_master cap_list
                      configuration: driver=snd_hda_intel latency=0
                      resources: irq:113 memory:fcc20000-fcc23fff
                    *-input:0
                         product: HDA ATI HDMI HDMI/DP,pcm=7
                         physical id: 0
                         logical name: input10
                         logical name: /dev/input/event10
                    *-input:1
                         product: HDA ATI HDMI HDMI/DP,pcm=8
                         physical id: 1
                         logical name: input11
                         logical name: /dev/input/event11
                    *-input:2
                         product: HDA ATI HDMI HDMI/DP,pcm=9
                         physical id: 2
                         logical name: input12
                         logical name: /dev/input/event13
                    *-input:3
                         product: HDA ATI HDMI HDMI/DP,pcm=10
                         physical id: 3
                         logical name: input13
                         logical name: /dev/input/event15
                    *-input:4
                         product: HDA ATI HDMI HDMI/DP,pcm=3
                         physical id: 4
                         logical name: input9
                         logical name: /dev/input/event9
        *-pci:1
             description: PCI bridge
             product: Advanced Micro Devices, Inc. [AMD]
             vendor: Advanced Micro Devices, Inc. [AMD]
             physical id: 2.1
             bus info: pci@0000:00:02.1
             version: 00
             width: 32 bits
             clock: 33MHz
             capabilities: pci pm pciexpress msi ht normal_decode bus_master cap_list
             configuration: driver=pcieport
             resources: irq:28 ioport:e000(size=4096) memory:80000000-804fffff
           *-pci
                description: PCI bridge
                product: Advanced Micro Devices, Inc. [AMD]
                vendor: Advanced Micro Devices, Inc. [AMD]
                physical id: 0
                bus info: pci@0000:04:00.0
                version: 01
                width: 64 bits
                clock: 33MHz
                capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                configuration: driver=pcieport
                resources: iomemory:e1e10-e1e0f irq:24 ioport:e000(size=4096) memory:80000000-804fffff
              *-pci:0
                   description: PCI bridge
                   product: Advanced Micro Devices, Inc. [AMD]
                   vendor: Advanced Micro Devices, Inc. [AMD]
                   physical id: 0
                   bus info: pci@0000:05:00.0
                   version: 01
                   width: 32 bits
                   clock: 33MHz
                   capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                   configuration: driver=pcieport
                   resources: irq:34
              *-pci:1
                   description: PCI bridge
                   product: Advanced Micro Devices, Inc. [AMD]
                   vendor: Advanced Micro Devices, Inc. [AMD]
                   physical id: 4
                   bus info: pci@0000:05:04.0
                   version: 01
                   width: 32 bits
                   clock: 33MHz
                   capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                   configuration: driver=pcieport
                   resources: irq:35
              *-pci:2
                   description: PCI bridge
                   product: Advanced Micro Devices, Inc. [AMD]
                   vendor: Advanced Micro Devices, Inc. [AMD]
                   physical id: 5
                   bus info: pci@0000:05:05.0
                   version: 01
                   width: 32 bits
                   clock: 33MHz
                   capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                   configuration: driver=pcieport
                   resources: irq:37
              *-pci:3
                   description: PCI bridge
                   product: Advanced Micro Devices, Inc. [AMD]
                   vendor: Advanced Micro Devices, Inc. [AMD]
                   physical id: 6
                   bus info: pci@0000:05:06.0
                   version: 01
                   width: 32 bits
                   clock: 33MHz
                   capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                   configuration: driver=pcieport
                   resources: irq:39
              *-pci:4
                   description: PCI bridge
                   product: Advanced Micro Devices, Inc. [AMD]
                   vendor: Advanced Micro Devices, Inc. [AMD]
                   physical id: 7
                   bus info: pci@0000:05:07.0
                   version: 01
                   width: 32 bits
                   clock: 33MHz
                   capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                   configuration: driver=pcieport
                   resources: irq:41
              *-pci:5
                   description: PCI bridge
                   product: Advanced Micro Devices, Inc. [AMD]
                   vendor: Advanced Micro Devices, Inc. [AMD]
                   physical id: 8
                   bus info: pci@0000:05:08.0
                   version: 01
                   width: 32 bits
                   clock: 33MHz
                   capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                   configuration: driver=pcieport
                   resources: irq:42 ioport:e000(size=4096) memory:80000000-802fffff
                 *-pci
                      description: PCI bridge
                      product: Advanced Micro Devices, Inc. [AMD]
                      vendor: Advanced Micro Devices, Inc. [AMD]
                      physical id: 0
                      bus info: pci@0000:0b:00.0
                      version: 01
                      width: 32 bits
                      clock: 33MHz
                      capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                      configuration: driver=pcieport
                      resources: irq:24 ioport:e000(size=4096) memory:80000000-802fffff
                    *-pci:0
                         description: PCI bridge
                         product: Advanced Micro Devices, Inc. [AMD]
                         vendor: Advanced Micro Devices, Inc. [AMD]
                         physical id: 0
                         bus info: pci@0000:0c:00.0
                         version: 01
                         width: 64 bits
                         clock: 33MHz
                         capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                         configuration: driver=pcieport
                         resources: iomemory:1f10-1f0f irq:43
                    *-pci:1
                         description: PCI bridge
                         product: Advanced Micro Devices, Inc. [AMD]
                         vendor: Advanced Micro Devices, Inc. [AMD]
                         physical id: 1
                         bus info: pci@0000:0c:01.0
                         version: 01
                         width: 64 bits
                         clock: 33MHz
                         capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                         configuration: driver=pcieport
                         resources: iomemory:1f10-1f0f irq:44
                    *-pci:2
                         description: PCI bridge
                         product: Advanced Micro Devices, Inc. [AMD]
                         vendor: Advanced Micro Devices, Inc. [AMD]
                         physical id: 2
                         bus info: pci@0000:0c:02.0
                         version: 01
                         width: 64 bits
                         clock: 33MHz
                         capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                         configuration: driver=pcieport
                         resources: iomemory:1f10-1f0f irq:45
                    *-pci:3
                         description: PCI bridge
                         product: Advanced Micro Devices, Inc. [AMD]
                         vendor: Advanced Micro Devices, Inc. [AMD]
                         physical id: 3
                         bus info: pci@0000:0c:03.0
                         version: 01
                         width: 64 bits
                         clock: 33MHz
                         capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                         configuration: driver=pcieport
                         resources: iomemory:e1e10-e1e0f irq:46 ioport:e000(size=4096) memory:80000000-800fffff
                       *-network
                            description: Ethernet interface
                            product: RTL8125 2.5GbE Controller
                            vendor: Realtek Semiconductor Co., Ltd.
                            physical id: 0
                            bus info: pci@0000:10:00.0
                            logical name: enp16s0
                            version: 05
                            serial: 9c:6b:00:01:fb:80
                            size: 1Gbit/s
                            capacity: 1Gbit/s
                            width: 64 bits
                            clock: 33MHz
                            capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
                            configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=6.6.0-rc1-kcsan-00269-ge7892864 duplex=full firmware=rtl8125b-2_0.0.2 07/13/20 ip=192.168.1.6 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
                            resources: irq:40 ioport:e000(size=256) memory:80000000-8000ffff memory:80010000-80013fff
                    *-pci:4
                         description: PCI bridge
                         product: Advanced Micro Devices, Inc. [AMD]
                         vendor: Advanced Micro Devices, Inc. [AMD]
                         physical id: 4
                         bus info: pci@0000:0c:04.0
                         version: 01
                         width: 64 bits
                         clock: 33MHz
                         capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                         configuration: driver=pcieport
                         resources: iomemory:1f10-1f0f irq:47
                    *-pci:5
                         description: PCI bridge
                         product: Advanced Micro Devices, Inc. [AMD]
                         vendor: Advanced Micro Devices, Inc. [AMD]
                         physical id: 8
                         bus info: pci@0000:0c:08.0
                         version: 01
                         width: 64 bits
                         clock: 33MHz
                         capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                         configuration: driver=pcieport
                         resources: iomemory:1f10-1f0f irq:48
                    *-pci:6
                         description: PCI bridge
                         product: Advanced Micro Devices, Inc. [AMD]
                         vendor: Advanced Micro Devices, Inc. [AMD]
                         physical id: a
                         bus info: pci@0000:0c:0a.0
                         version: 01
                         width: 64 bits
                         clock: 33MHz
                         capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                         configuration: driver=pcieport
                         resources: iomemory:1f10-1f0f irq:49
                    *-pci:7
                         description: PCI bridge
                         product: Advanced Micro Devices, Inc. [AMD]
                         vendor: Advanced Micro Devices, Inc. [AMD]
                         physical id: b
                         bus info: pci@0000:0c:0b.0
                         version: 01
                         width: 64 bits
                         clock: 33MHz
                         capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                         configuration: driver=pcieport
                         resources: iomemory:1f10-1f0f irq:50
                    *-pci:8
                         description: PCI bridge
                         product: Advanced Micro Devices, Inc. [AMD]
                         vendor: Advanced Micro Devices, Inc. [AMD]
                         physical id: c
                         bus info: pci@0000:0c:0c.0
                         version: 01
                         width: 64 bits
                         clock: 33MHz
                         capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                         configuration: driver=pcieport
                         resources: iomemory:f00-eff irq:24 memory:80100000-801fffff
                       *-usb
                            description: USB controller
                            product: Advanced Micro Devices, Inc. [AMD]
                            vendor: Advanced Micro Devices, Inc. [AMD]
                            physical id: 0
                            bus info: pci@0000:15:00.0
                            version: 01
                            width: 64 bits
                            clock: 33MHz
                            capabilities: msi msix pm pciexpress xhci bus_master cap_list
                            configuration: driver=xhci_hcd latency=0
                            resources: irq:24 memory:80100000-80107fff
                          *-usbhost:0
                               product: xHCI Host Controller
                               vendor: Linux 6.6.0-rc1-kcsan-00269-ge789286468a9-dirty xhci-hcd
                               physical id: 0
                               bus info: usb@1
                               logical name: usb1
                               version: 6.06
                               capabilities: usb-2.00
                               configuration: driver=hub slots=12 speed=480Mbit/s
                             *-usb:0
                                  description: Mouse
                                  product: USB Optical Mouse
                                  vendor: Logitech
                                  physical id: a
                                  bus info: usb@1:a
                                  version: 72.00
                                  capabilities: usb-2.00
                                  configuration: driver=usbhid maxpower=100mA speed=2Mbit/s
                             *-usb:1
                                  description: Keyboard
                                  product: USB Keyboard
                                  vendor: CHICONY
                                  physical id: c
                                  bus info: usb@1:c
                                  version: 2.30
                                  capabilities: usb-2.00
                                  configuration: driver=usbhid maxpower=100mA speed=2Mbit/s
                          *-usbhost:1
                               product: xHCI Host Controller
                               vendor: Linux 6.6.0-rc1-kcsan-00269-ge789286468a9-dirty xhci-hcd
                               physical id: 1
                               bus info: usb@2
                               logical name: usb2
                               version: 6.06
                               capabilities: usb-3.10
                               configuration: driver=hub slots=5 speed=10000Mbit/s
                    *-pci:9
                         description: PCI bridge
                         product: Advanced Micro Devices, Inc. [AMD]
                         vendor: Advanced Micro Devices, Inc. [AMD]
                         physical id: d
                         bus info: pci@0000:0c:0d.0
                         version: 01
                         width: 64 bits
                         clock: 33MHz
                         capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                         configuration: driver=pcieport
                         resources: iomemory:f00-eff irq:36 memory:80200000-802fffff
                       *-sata
                            description: SATA controller
                            product: Advanced Micro Devices, Inc. [AMD]
                            vendor: Advanced Micro Devices, Inc. [AMD]
                            physical id: 0
                            bus info: pci@0000:16:00.0
                            version: 01
                            width: 32 bits
                            clock: 33MHz
                            capabilities: sata msi pm pciexpress ahci_1.0 bus_master cap_list rom
                            configuration: driver=ahci latency=0
                            resources: irq:59 memory:80280000-802803ff memory:80200000-8027ffff
              *-pci:6
                   description: PCI bridge
                   product: Advanced Micro Devices, Inc. [AMD]
                   vendor: Advanced Micro Devices, Inc. [AMD]
                   physical id: c
                   bus info: pci@0000:05:0c.0
                   version: 01
                   width: 32 bits
                   clock: 33MHz
                   capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                   configuration: driver=pcieport
                   resources: irq:24 memory:80300000-803fffff
                 *-usb
                      description: USB controller
                      product: Advanced Micro Devices, Inc. [AMD]
                      vendor: Advanced Micro Devices, Inc. [AMD]
                      physical id: 0
                      bus info: pci@0000:17:00.0
                      version: 01
                      width: 64 bits
                      clock: 33MHz
                      capabilities: msi msix pm pciexpress xhci bus_master cap_list
                      configuration: driver=xhci_hcd latency=0
                      resources: irq:24 memory:80300000-80307fff
                    *-usbhost:0
                         product: xHCI Host Controller
                         vendor: Linux 6.6.0-rc1-kcsan-00269-ge789286468a9-dirty xhci-hcd
                         physical id: 0
                         bus info: usb@3
                         logical name: usb3
                         version: 6.06
                         capabilities: usb-2.00
                         configuration: driver=hub slots=12 speed=480Mbit/s
                    *-usbhost:1
                         product: xHCI Host Controller
                         vendor: Linux 6.6.0-rc1-kcsan-00269-ge789286468a9-dirty xhci-hcd
                         physical id: 1
                         bus info: usb@4
                         logical name: usb4
                         version: 6.06
                         capabilities: usb-3.10
                         configuration: driver=hub slots=5 speed=10000Mbit/s
              *-pci:7
                   description: PCI bridge
                   product: Advanced Micro Devices, Inc. [AMD]
                   vendor: Advanced Micro Devices, Inc. [AMD]
                   physical id: d
                   bus info: pci@0000:05:0d.0
                   version: 01
                   width: 32 bits
                   clock: 33MHz
                   capabilities: pci msi pm pciexpress normal_decode bus_master cap_list
                   configuration: driver=pcieport
                   resources: irq:36 memory:80400000-804fffff
                 *-sata
                      description: SATA controller
                      product: Advanced Micro Devices, Inc. [AMD]
                      vendor: Advanced Micro Devices, Inc. [AMD]
                      physical id: 0
                      bus info: pci@0000:18:00.0
                      logical name: scsi6
                      version: 01
                      width: 32 bits
                      clock: 33MHz
                      capabilities: sata msi pm pciexpress ahci_1.0 bus_master cap_list rom emulated
                      configuration: driver=ahci latency=0
                      resources: irq:60 memory:80480000-804803ff memory:80400000-8047ffff
                    *-disk
                         description: ATA Disk
                         product: ST2000DM008-2UB1
                         physical id: 0.0.0
                         bus info: scsi@6:0.0.0
                         logical name: /dev/sda
                         version: 0001
                         serial: ZK30FG74
                         size: 1863GiB (2TB)
                         capabilities: gpt-1.00 partitioned partitioned:gpt
                         configuration: ansiversion=5 guid=29f39dc2-d8c3-d545-8b64-faffe5410d9e logicalsectorsize=512 sectorsize=4096
                       *-volume:0
                            description: swap partition
                            vendor: Linux
                            physical id: 1
                            bus info: scsi@6:0.0.0,1
                            logical name: /dev/sda1
                            serial: 872163a6-51e8-a549-94e2-916ea5259fd5
                            capacity: 95GiB
                            capabilities: nofs
                       *-volume:1
                            description: EFI partition
                            physical id: 2
                            bus info: scsi@6:0.0.0,2
                            logical name: /dev/sda2
                            logical name: /cache
                            serial: 590bafdc-12b8-9443-aa0c-dc876bb12230
                            capacity: 511GiB
                            configuration: mount.fstype=btrfs mount.options=rw,relatime,discard=async,space_cache=v2,subvolid=5,subvol=/ state=mounted
                       *-volume:2
                            description: EFI partition
                            physical id: 3
                            bus info: scsi@6:0.0.0,3
                            logical name: /dev/sda3
                            logical name: /archive
                            serial: c6013753-d6e9-ba41-aa54-afb3ea3069cf
                            capacity: 1255GiB
                            configuration: mount.fstype=btrfs mount.options=rw,relatime,discard=async,space_cache=v2,subvolid=5,subvol=/ state=mounted
        *-pci:2
             description: PCI bridge
             product: Advanced Micro Devices, Inc. [AMD]
             vendor: Advanced Micro Devices, Inc. [AMD]
             physical id: 2.2
             bus info: pci@0000:00:02.2
             version: 00
             width: 32 bits
             clock: 33MHz
             capabilities: pci pm pciexpress msi ht normal_decode bus_master cap_list
             configuration: driver=pcieport
             resources: irq:29 memory:fcf00000-fcffffff
           *-nvme
                description: NVMe device
                product: Samsung SSD 980 1TB
                vendor: Samsung Electronics Co Ltd
                physical id: 0
                bus info: pci@0000:19:00.0
                logical name: /dev/nvme0
                version: 3B4QFXO7
                serial: S649NL0TC79124F
                width: 64 bits
                clock: 33MHz
                capabilities: nvme pm msi pciexpress msix nvm_express bus_master cap_list
                configuration: driver=nvme latency=0 nqn=nqn.1994-11.com.samsung:nvme:980M.2:S649NL0TC79124F state=live
                resources: irq:24 memory:fcf00000-fcf03fff
              *-namespace:0
                   description: NVMe disk
                   physical id: 0
                   logical name: hwmon0
              *-namespace:1
                   description: NVMe disk
                   physical id: 2
                   logical name: /dev/ng0n1
              *-namespace:2
                   description: NVMe disk
                   physical id: 1
                   bus info: nvme@0:1
                   logical name: /dev/nvme0n1
                   size: 931GiB (1TB)
                   capabilities: gpt-1.00 partitioned partitioned:gpt
                   configuration: guid=8ffb1787-5e1a-4fdd-abd3-80ef8eafec9a logicalsectorsize=512 sectorsize=512 wwid=eui.002538dc21a74668
                 *-volume:0
                      description: EXT4 volume
                      vendor: Linux
                      physical id: 1
                      bus info: nvme@0:1,1
                      logical name: /dev/nvme0n1p1
                      logical name: /boot
                      version: 1.0
                      serial: a4814207-8827-4b89-adcd-21899f72071b
                      size: 3905MiB
                      capabilities: journaled extended_attributes large_files huge_files dir_nlink 64bit extents ext4 ext2 initialized
                      configuration: created=2023-05-03 21:23:01 filesystem=ext4 lastmountpoint=/boot modified=2023-09-17 21:48:44 mount.fstype=ext4 mount.options=rw,relatime,stripe=32 mounted=2023-09-17 21:29:48 state=mounted
                 *-volume:1
                      description: Linux swap volume
                      vendor: Linux
                      physical id: 2
                      bus info: nvme@0:1,2
                      logical name: /dev/nvme0n1p2
                      version: 1
                      serial: 47e2238b-aa16-47c7-b96e-275b16dfc265
                      size: 30GiB
                      capacity: 30GiB
                      capabilities: nofs swap initialized
                      configuration: filesystem=swap pagesize=4095
                 *-volume:2
                      description: EFI partition
                      physical id: 3
                      bus info: nvme@0:1,3
                      logical name: /dev/nvme0n1p3
                      logical name: /usr
                      serial: d18d3275-7ca3-4db8-863a-f6a36fb63304
                      capacity: 30GiB
                      configuration: mount.fstype=btrfs mount.options=rw,relatime,ssd,discard=async,space_cache=v2,subvolid=5,subvol=/ state=mounted
                 *-volume:3
                      description: EFI partition
                      physical id: 4
                      bus info: nvme@0:1,4
                      logical name: /dev/nvme0n1p4
                      logical name: /usr/local
                      serial: a7018558-b67d-4807-bb5e-f65af509c34f
                      capacity: 30GiB
                      configuration: mount.fstype=btrfs mount.options=rw,relatime,ssd,discard=async,space_cache=v2,subvolid=5,subvol=/ state=mounted
                 *-volume:4
                      description: EXT4 volume
                      vendor: Linux
                      physical id: 5
                      bus info: nvme@0:1,5
                      logical name: /dev/nvme0n1p5
                      logical name: /var
                      version: 1.0
                      serial: 8f6cf2e5-aa47-49bc-b50f-fa8023306013
                      size: 15GiB
                      capabilities: journaled extended_attributes large_files huge_files dir_nlink recover 64bit extents ext4 ext2 initialized
                      configuration: created=2023-05-03 21:23:01 filesystem=ext4 lastmountpoint=/var modified=2023-09-18 05:21:16 mount.fstype=ext4 mount.options=rw,relatime,stripe=32 mounted=2023-09-17 21:49:53 state=mounted
                 *-volume:5
                      description: EXT4 volume
                      vendor: Linux
                      physical id: 6
                      bus info: nvme@0:1,6
                      logical name: /dev/nvme0n1p6
                      version: 1.0
                      serial: 1beece94-f1c3-4a45-afed-d33c35c04617
                      size: 15GiB
                      capabilities: journaled extended_attributes large_files huge_files dir_nlink 64bit extents ext4 ext2 initialized
                      configuration: created=2023-05-03 21:23:01 filesystem=ext4 lastmountpoint=/tmp modified=2023-05-26 21:46:02 mounted=2023-05-24 20:38:46 state=clean
                 *-volume:6
                      description: EFI partition
                      physical id: 7
                      bus info: nvme@0:1,7
                      logical name: /dev/nvme0n1p7
                      logical name: /home
                      serial: 39002ad8-36a0-4a01-97d4-7d8cbd94b8e4
                      capacity: 122GiB
                      configuration: mount.fstype=btrfs mount.options=rw,relatime,ssd,discard=async,space_cache=v2,subvolid=256,subvol=/@home state=mounted
                 *-volume:7
                      description: EFI partition
                      physical id: 8
                      bus info: nvme@0:1,8
                      logical name: /dev/nvme0n1p8
                      logical name: /
                      serial: d7bccd5b-1070-40a4-824c-7f33e4ff440e
                      capacity: 7812MiB
                      configuration: mount.fstype=btrfs mount.options=rw,relatime,ssd,discard=async,space_cache=v2,subvolid=256,subvol=/@ state=mounted
                 *-volume:8
                      description: EFI partition
                      physical id: 9
                      bus info: nvme@0:1,9
                      logical name: /dev/nvme0n1p9
                      logical name: /srv
                      serial: a87e71fd-11e9-4ef3-a1b7-a4966f65ecc9
                      capacity: 30GiB
                      configuration: mount.fstype=btrfs mount.options=rw,relatime,ssd,discard=async,space_cache=v2,subvolid=5,subvol=/ state=mounted
                 *-volume:9
                      description: EFI partition
                      physical id: a
                      bus info: nvme@0:1,10
                      logical name: /dev/nvme0n1p10
                      logical name: /opt
                      serial: ffcf44ce-12e0-42e7-9c50-01f2aa257914
                      capacity: 30GiB
                      configuration: mount.fstype=btrfs mount.options=rw,relatime,ssd,discard=async,space_cache=v2,subvolid=5,subvol=/ state=mounted
                 *-volume:10
                      description: EXT4 volume
                      vendor: Linux
                      physical id: b
                      bus info: nvme@0:1,11
                      logical name: /dev/nvme0n1p11
                      logical name: /var/log
                      version: 1.0
                      serial: bb53eb49-b161-4879-82c2-ab28079074f0
                      size: 30GiB
                      capabilities: journaled extended_attributes large_files huge_files dir_nlink recover 64bit extents ext4 ext2 initialized
                      configuration: created=2023-05-03 21:23:01 filesystem=ext4 lastmountpoint=/var/log modified=2023-09-18 07:50:15 mount.fstype=ext4 mount.options=rw,relatime,stripe=32 mounted=2023-09-17 21:49:53 state=mounted
                 *-volume:11
                      description: Windows FAT volume
                      vendor: mkfs.fat
                      physical id: c
                      bus info: nvme@0:1,12
                      logical name: /dev/nvme0n1p12
                      logical name: /boot/efi
                      version: FAT32
                      serial: 4951-9e27
                      size: 963MiB
                      capacity: 976MiB
                      capabilities: boot fat initialized
                      configuration: FATs=2 filesystem=fat mount.fstype=vfat mount.options=rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro state=mounted
                 *-volume:12
                      description: EFI partition
                      physical id: d
                      bus info: nvme@0:1,13
                      logical name: /dev/nvme0n1p13
                      logical name: /usr/local/cache
                      serial: ed27c682-c896-4248-b923-c42cb7dc3fd7
                      capacity: 99GiB
                      configuration: mount.fstype=f2fs mount.options=rw,lazytime,relatime,background_gc=on,nogc_merge,discard,discard_unit=block,no_heap,user_xattr,inline_xattr,acl,inline_data,inline_dentry,flush_merge,barrier,extent_cache,mode=adaptive,active_logs=6,alloc_mode=default,checkpoint_merge,fsync_mode=posix,memory=normal,errors=continue state=mounted
        *-pci:3
             description: PCI bridge
             product: Advanced Micro Devices, Inc. [AMD]
             vendor: Advanced Micro Devices, Inc. [AMD]
             physical id: 8.1
             bus info: pci@0000:00:08.1
             version: 00
             width: 32 bits
             clock: 33MHz
             capabilities: pci pm pciexpress msi normal_decode bus_master cap_list
             configuration: driver=pcieport
             resources: irq:30 ioport:d000(size=4096) memory:fc700000-fcafffff ioport:fc20000000(size=270532608)
           *-display
                description: VGA compatible controller
                product: Advanced Micro Devices, Inc. [AMD/ATI]
                vendor: Advanced Micro Devices, Inc. [AMD/ATI]
                physical id: 0
                bus info: pci@0000:1a:00.0
                version: c1
                width: 64 bits
                clock: 33MHz
                capabilities: pm pciexpress msi msix vga_controller bus_master cap_list
                configuration: driver=amdgpu latency=0
                resources: iomemory:fc0-fbf iomemory:fc0-fbf irq:79 memory:fc20000000-fc2fffffff memory:fc30000000-fc301fffff ioport:d000(size=256) memory:fca00000-fca7ffff
           *-multimedia:0
                description: Audio device
                product: Advanced Micro Devices, Inc. [AMD/ATI]
                vendor: Advanced Micro Devices, Inc. [AMD/ATI]
                physical id: 0.1
                bus info: pci@0000:1a:00.1
                logical name: card1
                logical name: /dev/snd/controlC1
                logical name: /dev/snd/hwC1D0
                logical name: /dev/snd/pcmC1D3p
                logical name: /dev/snd/pcmC1D7p
                logical name: /dev/snd/pcmC1D8p
                logical name: /dev/snd/pcmC1D9p
                version: 00
                width: 32 bits
                clock: 33MHz
                capabilities: pm pciexpress msi bus_master cap_list
                configuration: driver=snd_hda_intel latency=0
                resources: irq:115 memory:fca88000-fca8bfff
              *-input:0
                   product: HD-Audio Generic HDMI/DP,pcm=3
                   physical id: 0
                   logical name: input14
                   logical name: /dev/input/event12
              *-input:1
                   product: HD-Audio Generic HDMI/DP,pcm=7
                   physical id: 1
                   logical name: input15
                   logical name: /dev/input/event14
              *-input:2
                   product: HD-Audio Generic HDMI/DP,pcm=8
                   physical id: 2
                   logical name: input16
                   logical name: /dev/input/event16
              *-input:3
                   product: HD-Audio Generic HDMI/DP,pcm=9
                   physical id: 3
                   logical name: input17
                   logical name: /dev/input/event17
           *-generic
                description: Encryption controller
                product: VanGogh PSP/CCP
                vendor: Advanced Micro Devices, Inc. [AMD]
                physical id: 0.2
                bus info: pci@0000:1a:00.2
                version: 00
                width: 32 bits
                clock: 33MHz
                capabilities: pm pciexpress msi msix bus_master cap_list
                configuration: driver=ccp latency=0
                resources: irq:109 memory:fc900000-fc9fffff memory:fca8c000-fca8dfff
           *-usb:0
                description: USB controller
                product: Advanced Micro Devices, Inc. [AMD]
                vendor: Advanced Micro Devices, Inc. [AMD]
                physical id: 0.3
                bus info: pci@0000:1a:00.3
                version: 00
                width: 64 bits
                clock: 33MHz
                capabilities: pm pciexpress msi msix xhci cap_list
                configuration: driver=xhci_hcd latency=0
                resources: irq:70 memory:fc800000-fc8fffff
              *-usbhost:0
                   product: xHCI Host Controller
                   vendor: Linux 6.6.0-rc1-kcsan-00269-ge789286468a9-dirty xhci-hcd
                   physical id: 0
                   bus info: usb@5
                   logical name: usb5
                   version: 6.06
                   capabilities: usb-2.00
                   configuration: driver=hub slots=2 speed=480Mbit/s
              *-usbhost:1
                   product: xHCI Host Controller
                   vendor: Linux 6.6.0-rc1-kcsan-00269-ge789286468a9-dirty xhci-hcd
                   physical id: 1
                   bus info: usb@6
                   logical name: usb6
                   version: 6.06
                   capabilities: usb-3.10
                   configuration: driver=hub slots=2 speed=10000Mbit/s
           *-usb:1
                description: USB controller
                product: Advanced Micro Devices, Inc. [AMD]
                vendor: Advanced Micro Devices, Inc. [AMD]
                physical id: 0.4
                bus info: pci@0000:1a:00.4
                version: 00
                width: 64 bits
                clock: 33MHz
                capabilities: pm pciexpress msi msix xhci cap_list
                configuration: driver=xhci_hcd latency=0
                resources: irq:79 memory:fc700000-fc7fffff
              *-usbhost:0
                   product: xHCI Host Controller
                   vendor: Linux 6.6.0-rc1-kcsan-00269-ge789286468a9-dirty xhci-hcd
                   physical id: 0
                   bus info: usb@7
                   logical name: usb7
                   version: 6.06
                   capabilities: usb-2.00
                   configuration: driver=hub slots=2 speed=480Mbit/s
              *-usbhost:1
                   product: xHCI Host Controller
                   vendor: Linux 6.6.0-rc1-kcsan-00269-ge789286468a9-dirty xhci-hcd
                   physical id: 1
                   bus info: usb@8
                   logical name: usb8
                   version: 6.06
                   capabilities: usb-3.10
                   configuration: driver=hub slots=2 speed=10000Mbit/s
           *-multimedia:1
                description: Audio device
                product: Family 17h (Models 10h-1fh) HD Audio Controller
                vendor: Advanced Micro Devices, Inc. [AMD]
                physical id: 0.6
                bus info: pci@0000:1a:00.6
                logical name: card2
                logical name: /dev/snd/controlC2
                logical name: /dev/snd/hwC2D0
                logical name: /dev/snd/pcmC2D0c
                logical name: /dev/snd/pcmC2D0p
                logical name: /dev/snd/pcmC2D2c
                version: 00
                width: 32 bits
                clock: 33MHz
                capabilities: pm pciexpress msi bus_master cap_list
                configuration: driver=snd_hda_intel latency=0
                resources: irq:116 memory:fca80000-fca87fff
              *-input:0
                   product: HD-Audio Generic Front Mic
                   physical id: 0
                   logical name: input18
                   logical name: /dev/input/event18
              *-input:1
                   product: HD-Audio Generic Rear Mic
                   physical id: 1
                   logical name: input19
                   logical name: /dev/input/event19
              *-input:2
                   product: HD-Audio Generic Line
                   physical id: 2
                   logical name: input20
                   logical name: /dev/input/event20
              *-input:3
                   product: HD-Audio Generic Line Out
                   physical id: 3
                   logical name: input21
                   logical name: /dev/input/event21
              *-input:4
                   product: HD-Audio Generic Front Headphone
                   physical id: 4
                   logical name: input22
                   logical name: /dev/input/event22
        *-pci:4
             description: PCI bridge
             product: Advanced Micro Devices, Inc. [AMD]
             vendor: Advanced Micro Devices, Inc. [AMD]
             physical id: 8.3
             bus info: pci@0000:00:08.3
             version: 00
             width: 32 bits
             clock: 33MHz
             capabilities: pci pm pciexpress msi normal_decode bus_master cap_list
             configuration: driver=pcieport
             resources: irq:31 memory:fce00000-fcefffff
           *-usb
                description: USB controller
                product: Advanced Micro Devices, Inc. [AMD]
                vendor: Advanced Micro Devices, Inc. [AMD]
                physical id: 0
                bus info: pci@0000:1b:00.0
                version: 00
                width: 64 bits
                clock: 33MHz
                capabilities: pm pciexpress msi msix xhci bus_master cap_list
                configuration: driver=xhci_hcd latency=0
                resources: irq:24 memory:fce00000-fcefffff
              *-usbhost:0
                   product: xHCI Host Controller
                   vendor: Linux 6.6.0-rc1-kcsan-00269-ge789286468a9-dirty xhci-hcd
                   physical id: 0
                   bus info: usb@9
                   logical name: usb9
                   version: 6.06
                   capabilities: usb-2.00
                   configuration: driver=hub slots=1 speed=480Mbit/s
                 *-usb
                      description: Human interface device
                      product: ASRock LED Controller
                      vendor: ASRock
                      physical id: 1
                      bus info: usb@9:1
                      logical name: input8
                      logical name: /dev/input/event8
                      logical name: /dev/input/js0
                      version: 0.00
                      serial: A02019100900
                      capabilities: usb-1.10 usb
                      configuration: driver=usbhid maxpower=100mA speed=12Mbit/s
              *-usbhost:1
                   product: xHCI Host Controller
                   vendor: Linux 6.6.0-rc1-kcsan-00269-ge789286468a9-dirty xhci-hcd
                   physical id: 1
                   bus info: usb@10
                   logical name: usb10
                   version: 6.06
                   capabilities: usb-3.00
                   configuration: speed=5000Mbit/s
        *-serial
             description: SMBus
             product: FCH SMBus Controller
             vendor: Advanced Micro Devices, Inc. [AMD]
             physical id: 14
             bus info: pci@0000:00:14.0
             version: 71
             width: 32 bits
             clock: 66MHz
             configuration: driver=piix4_smbus latency=0
             resources: irq:0
        *-isa
             description: ISA bridge
             product: FCH LPC Bridge
             vendor: Advanced Micro Devices, Inc. [AMD]
             physical id: 14.3
             bus info: pci@0000:00:14.3
             version: 51
             width: 32 bits
             clock: 66MHz
             capabilities: isa bus_master
             configuration: latency=0
           *-pnp00:00
                product: PnP device PNP0c01
                physical id: 0
                capabilities: pnp
                configuration: driver=system
           *-pnp00:01
                product: PnP device PNP0c02
                physical id: 1
                capabilities: pnp
                configuration: driver=system
           *-pnp00:02
                product: PnP device PNP0c02
                physical id: 2
                capabilities: pnp
                configuration: driver=system
           *-pnp00:03
                product: PnP device PNP0b00
                physical id: 3
                capabilities: pnp
                configuration: driver=rtc_cmos
           *-pnp00:04
                product: PnP device PNP0c02
                physical id: 4
                capabilities: pnp
                configuration: driver=system
           *-pnp00:05
                product: PnP device PNP0c02
                physical id: 5
                capabilities: pnp
                configuration: driver=system
     *-pci:1
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 101
          bus info: pci@0000:00:01.0
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:2
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 102
          bus info: pci@0000:00:02.0
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:3
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 103
          bus info: pci@0000:00:03.0
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:4
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 104
          bus info: pci@0000:00:04.0
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:5
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 105
          bus info: pci@0000:00:08.0
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:6
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 106
          bus info: pci@0000:00:18.0
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:7
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 107
          bus info: pci@0000:00:18.1
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:8
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 108
          bus info: pci@0000:00:18.2
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:9
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 109
          bus info: pci@0000:00:18.3
          version: 00
          width: 32 bits
          clock: 33MHz
          configuration: driver=k10temp
          resources: irq:0
     *-pci:10
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 10a
          bus info: pci@0000:00:18.4
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:11
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 10b
          bus info: pci@0000:00:18.5
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:12
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 10c
          bus info: pci@0000:00:18.6
          version: 00
          width: 32 bits
          clock: 33MHz
     *-pci:13
          description: Host bridge
          product: Advanced Micro Devices, Inc. [AMD]
          vendor: Advanced Micro Devices, Inc. [AMD]
          physical id: 10d
          bus info: pci@0000:00:18.7
          version: 00
          width: 32 bits
          clock: 33MHz
  *-input:0
       product: Power Button
       physical id: 1
       logical name: input0
       logical name: /dev/input/event0
       capabilities: platform
  *-input:1
       product: Power Button
       physical id: 2
       logical name: input1
       logical name: /dev/input/event1
       capabilities: platform
  *-input:2
       product: Video Bus
       physical id: 3
       logical name: input2
       logical name: /dev/input/event2
       capabilities: platform
  *-input:3
       product: Logitech USB Optical Mouse
       physical id: 4
       logical name: input3
       logical name: /dev/input/event3
       logical name: /dev/input/mouse0
       capabilities: usb
  *-input:4
       product: CHICONY USB Keyboard
       physical id: 5
       logical name: input4
       logical name: /dev/input/event4
       logical name: input4::capslock
       logical name: input4::numlock
       logical name: input4::scrolllock
       capabilities: usb
  *-input:5
       product: CHICONY USB Keyboard System Control
       physical id: 6
       logical name: input5
       logical name: /dev/input/event5
       capabilities: usb
  *-input:6
       product: CHICONY USB Keyboard Consumer Control
       physical id: 7
       logical name: input6
       logical name: /dev/input/event6
       capabilities: usb
  *-input:7
       product: CHICONY USB Keyboard
       physical id: 8
       logical name: input7
       logical name: /dev/input/event7
       capabilities: usb

^ permalink raw reply	[relevance 1%]

* Re: [PATCH net-next 0/8] Improvements for RealTek 2.5G Ethernet PHYs
  @ 2023-05-11 11:44  4%   ` Daniel Golle
  0 siblings, 0 replies; 107+ results
From: Daniel Golle @ 2023-05-11 11:44 UTC (permalink / raw)
  To: Heiner Kallweit
  Cc: netdev, linux-mediatek, linux-arm-kernel, linux-kernel,
	Andrew Lunn, Russell King, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, AngeloGioacchino Del Regno

On Thu, May 11, 2023 at 07:29:21AM +0200, Heiner Kallweit wrote:
> On 11.05.2023 00:53, Daniel Golle wrote:
> > Improve support for RealTek 2.5G Ethernet PHYs (RTL822x series).
> > The PHYs can operate with Clause-22 and Clause-45 MDIO.
> > [...]
> 
> Has this series been tested with RTL8125A/B to ensure that the internal
> PHY use case still works?

The series has been present in OpenWrt for a while now and initially
contained a bug which broke the RTL8221 PCIe RealTek NICs. It has since been
resolved and re-tested, and it seems all fine:

https://github.com/openwrt/openwrt/commit/998b9731577dedc7747dcfa412e4543dabaaa131#r110201620

I assume that quite some OpenWrt users may use RTL8125B PCIe NICs, but I
have asked in the OpenWrt forum for testing results including this series:

https://forum.openwrt.org/t/nanopi-r6s-kernel-6-1-intergration/154677/3?u=daniel

As the r8169 driver is not using phylink and uses C22 to connect to the
PHY the main difference which will affect these devices is that
genphy_soft_reset will be called as a result of
r8169_hw_phy_config->phy_init_hw->(phydrv).soft_reset

Also note the r8169 driver always sets the interface mode to either
PHY_INTERFACE_MODE_GMII or PHY_INTERFACE_MODE_MII in
r8169_phy_connect() before calling phy_connect_direct(). While this is
certainly not technically correct for the 2.5G NICs in the strict sense,
it does have the desired effect that the newly introduced function
rtl8221b_config_init() just returns without making any changes.


^ permalink raw reply	[relevance 4%]

* Re: r8125b ethernet hardware
  @ 2023-05-05  5:30  5%   ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2023-05-05  5:30 UTC (permalink / raw)
  To: Richard Schneiderman, netdev

On 05.05.2023 01:36, Richard Schneiderman wrote:
> Hi LinuxDevs,
> 
> I have a Gigabyte Aorus Elite z690 AX ddr4 board.  I'm sure you're familiar with the r8125B ethernet issues.  So on the 5.19 kernel, if i run the r8169 driver i get a disconnect pretty quicky from my ethernet, around 20 min,  If i compile the recent r8125 module from realtek, i can can just over an hour before disconnect.
> 
This sounds like you suspect a general issue on all systems with RTL8125B.
In this case we would have seen another number of reports. So it seems to
be something specific to your system.
What do you mean with "disconnect", you refer to link loss? In this case
root cause may be somewhere on the physical side, e.g. cabling,
RJ45 sockets, link partner.

> the r8169 module seems a bit longer using kernel 6.1.3, sometimes an hour.  I"m using mainline installer for ubuntu to switch kernels.
> 
Note that Ubuntu uses a modified downstream kernel that's not supported
here. Preferably compile a mainline kernel yourself.

> So hear are my questions.
> 
> 1. Will this ever be resolved?
> 2. Is RealTek working on this.  Even with the win10 drivers, i'm getting disconnects but the connection comes back immediately.  ubuntu requires a reboot.  the 10.056 windows driver seems to be the most stable.
> 
Typically the Windows driver is the one best maintained by Realtek. If you
face the issue even with this driver, then it's less likely that root cause
is an issue with the r8169 driver.

> 3.  Would you be able to set me up, so that i can be of some assistance to resolve?
> 
> Hoping to hear from you guys.
> 
> Thanks,
> Richard Schneiderman
> 


^ permalink raw reply	[relevance 5%]

* Fw: [Bug 217362] New: Low performance on Realtek RTL8125 2.5Gb NIC using r8169 driver
@ 2023-04-24  2:36  5% Stephen Hemminger
  0 siblings, 0 replies; 107+ results
From: Stephen Hemminger @ 2023-04-24  2:36 UTC (permalink / raw)
  To: hkallweit1, nic_swsd; +Cc: netdev



Begin forwarded message:

Date: Sun, 23 Apr 2023 15:36:07 +0000
From: bugzilla-daemon@kernel.org
To: stephen@networkplumber.org
Subject: [Bug 217362] New: Low performance on Realtek RTL8125 2.5Gb NIC using r8169 driver


https://bugzilla.kernel.org/show_bug.cgi?id=217362

            Bug ID: 217362
           Summary: Low performance on Realtek RTL8125 2.5Gb NIC using
                    r8169 driver
           Product: Networking
           Version: 2.5
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P3
         Component: Other
          Assignee: stephen@networkplumber.org
          Reporter: jon780@gmail.com
        Regression: No

Poor performance on receive-side only when using RTL8125 NIC with the in-tree
r8169 driver.  The performance problems occur only in the receive direction. If
I reverse the sender I can get the full 2.5Gb (2.35Gb+overhead) over the link. 
From my client if I run iperf3 to other hosts on the same switch I see 2.5Gb in
both directions.  The Realtek maintained driver (r8125) supposedly fixes the
issue from what I've read but unfortunately I'm unable to compile it on my OS
(Rocky 8.7).  

$ iperf3 -c server
[  5] local 10.200.16.20 port 58358 connected to 10.200.16.40 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   176 MBytes  1.47 Gbits/sec  1113   41.0 KBytes       
[  5]   1.00-2.00   sec   169 MBytes  1.42 Gbits/sec  1070   46.7 KBytes       
[  5]   2.00-3.00   sec   176 MBytes  1.47 Gbits/sec  1287   49.5 KBytes       
[  5]   3.00-4.00   sec   172 MBytes  1.44 Gbits/sec  1121   35.4 KBytes       
[  5]   4.00-5.00   sec   176 MBytes  1.47 Gbits/sec  1105   33.9 KBytes       
[  5]   5.00-6.00   sec   167 MBytes  1.40 Gbits/sec  1100   39.6 KBytes       
[  5]   6.00-7.00   sec   175 MBytes  1.47 Gbits/sec  1134   46.7 KBytes       
[  5]   7.00-8.00   sec   173 MBytes  1.45 Gbits/sec  1147   33.9 KBytes       
[  5]   8.00-9.00   sec   167 MBytes  1.40 Gbits/sec  966   46.7 KBytes       
[  5]   9.00-10.00  sec   177 MBytes  1.48 Gbits/sec  1164   41.0 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.69 GBytes  1.45 Gbits/sec  11207             sender
[  5]   0.00-10.04  sec  1.69 GBytes  1.44 Gbits/sec                  receiver


And now we just reverse the sender:
$ iperf3 -Rc server
[  5] local 10.200.16.20 port 41788 connected to 10.200.16.40 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   277 MBytes  2.32 Gbits/sec                  
[  5]   1.00-2.00   sec   279 MBytes  2.34 Gbits/sec                  
[  5]   2.00-3.00   sec   280 MBytes  2.35 Gbits/sec                  
[  5]   3.00-4.00   sec   280 MBytes  2.35 Gbits/sec                  
[  5]   4.00-5.00   sec   279 MBytes  2.34 Gbits/sec                  
[  5]   5.00-6.00   sec   280 MBytes  2.35 Gbits/sec                  
[  5]   6.00-7.00   sec   279 MBytes  2.34 Gbits/sec                  
[  5]   7.00-8.00   sec   279 MBytes  2.34 Gbits/sec                  
[  5]   8.00-9.00   sec   278 MBytes  2.33 Gbits/sec                  
[  5]   9.00-10.00  sec   280 MBytes  2.35 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.04  sec  2.73 GBytes  2.33 Gbits/sec    4             sender
[  5]   0.00-10.00  sec  2.73 GBytes  2.34 Gbits/sec                  receiver


Kernel version:
Linux ultrix 4.18.0-425.19.2.el8_7.x86_64 #1 SMP Tue Apr 4 22:38:11 UTC 2023
x86_64 x86_64 x86_64 GNU/Linux

modinfo on r8169:
filename:      
/lib/modules/4.18.0-425.19.2.el8_7.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko.xz
firmware:       rtl_nic/rtl8125b-2.fw
firmware:       rtl_nic/rtl8125a-3.fw
firmware:       rtl_nic/rtl8107e-2.fw
firmware:       rtl_nic/rtl8107e-1.fw
firmware:       rtl_nic/rtl8168fp-3.fw
firmware:       rtl_nic/rtl8168h-2.fw
firmware:       rtl_nic/rtl8168h-1.fw
firmware:       rtl_nic/rtl8168g-3.fw
firmware:       rtl_nic/rtl8168g-2.fw
firmware:       rtl_nic/rtl8106e-2.fw
firmware:       rtl_nic/rtl8106e-1.fw
firmware:       rtl_nic/rtl8411-2.fw
firmware:       rtl_nic/rtl8411-1.fw
firmware:       rtl_nic/rtl8402-1.fw
firmware:       rtl_nic/rtl8168f-2.fw
firmware:       rtl_nic/rtl8168f-1.fw
firmware:       rtl_nic/rtl8105e-1.fw
firmware:       rtl_nic/rtl8168e-3.fw
firmware:       rtl_nic/rtl8168e-2.fw
firmware:       rtl_nic/rtl8168e-1.fw
firmware:       rtl_nic/rtl8168d-2.fw
firmware:       rtl_nic/rtl8168d-1.fw
license:        GPL
softdep:        pre: realtek
description:    RealTek RTL-8169 Gigabit Ethernet driver
author:         Realtek and the Linux r8169 crew <netdev@vger.kernel.org>
rhelversion:    8.7
srcversion:     97902AC339128804EACE041
alias:          pci:v000010ECd00003000sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008125sv*sd*bc*sc*i*
alias:          pci:v00000001d00008168sv*sd00002410bc*sc*i*
alias:          pci:v00001737d00001032sv*sd00000024bc*sc*i*
alias:          pci:v000016ECd00000116sv*sd*bc*sc*i*
alias:          pci:v00001259d0000C107sv*sd*bc*sc*i*
alias:          pci:v00001186d00004302sv*sd*bc*sc*i*
alias:          pci:v00001186d00004300sv*sd*bc*sc*i*
alias:          pci:v00001186d00004300sv00001186sd00004B10bc*sc*i*
alias:          pci:v000010ECd00008169sv*sd*bc*sc*i*
alias:          pci:v000010FFd00008168sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008168sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008167sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008162sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008161sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008136sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008129sv*sd*bc*sc*i*
alias:          pci:v000010ECd00002600sv*sd*bc*sc*i*
alias:          pci:v000010ECd00002502sv*sd*bc*sc*i*
depends:        
intree:         Y
name:           r8169
vermagic:       4.18.0-425.19.2.el8_7.x86_64 SMP mod_unload modversions 
sig_id:         PKCS#7
signer:         Rocky kernel signing key
sig_key:        31:6B:5A:38:DC:7F:D6:69:81:FF:0E:A0:F3:A0:40:1F:9E:9D:02:27
sig_hashalgo:   sha256
signature:      97:97:FA:A9:56:9A:59:3A:E4:FB:BC:02:09:7A:AE:6A:0D:82:95:2A:
                31:09:9C:78:AD:62:54:D2:73:82:8E:C0:D6:7A:D8:A5:16:F4:3B:FF:
                A0:DB:61:04:9D:DC:3C:CD:61:E0:92:F9:81:FC:87:EF:C0:BC:BA:A7:
                60:24:59:4A:C5:B5:2F:51:F5:97:C2:18:18:18:42:5A:E1:90:5F:78:
                14:75:C8:67:D0:3D:03:93:E5:98:D8:48:B2:8E:64:B4:73:DA:3C:A5:
                6D:7D:24:79:2C:76:34:21:3F:35:5D:E8:93:5F:6B:FD:13:13:6F:9C:
                C3:F6:F2:0A:25:6C:1D:14:FF:23:84:87:94:01:F9:3F:C9:65:6B:4F:
                F3:44:65:F7:21:03:D9:9C:5F:60:A5:3B:2D:91:E3:BE:88:49:3B:2A:
                97:41:81:6C:87:0A:47:C3:E9:46:FD:15:85:8E:07:A8:6C:5E:69:45:
                E9:A1:4B:68:89:04:73:00:35:61:85:7C:A2:5B:7F:FC:C6:DB:7B:A2:
                8B:E6:36:1C:09:7A:02:8E:C5:72:5D:1C:F4:78:A9:C7:42:84:0B:E1:
                B6:5C:A4:B5:F8:AB:1F:FA:1B:51:E9:A3:78:17:90:BC:5B:03:CA:AC:
                C5:34:BB:4C:EE:CE:75:BE:15:F2:C6:C6:8C:6F:A8:5B:E0:38:7F:6F:
                9F:18:63:5C:F0:2D:50:26:BD:DD:A2:D3:AF:C0:CA:64:82:6D:F7:39:
                AD:5A:C3:87:88:57:8F:F6:28:15:2F:F4:86:85:F7:71:BA:E8:9E:6B:
                DB:9C:10:B1:5D:90:77:47:27:DD:F4:68:C8:68:E3:60:BE:C4:FC:CD:
                B2:C0:B4:B0:44:F4:1B:37:6E:37:55:39:17:EE:00:AE:5A:51:8F:02:
                09:AF:A7:59:DF:E1:E6:09:A0:50:6D:51:41:11:E0:9D:D9:68:4A:43:
                B3:8A:4E:00:80:A7:4C:B4:7C:7B:00:1E:F1:AA:2D:F6:1D:DE:B7:07:
                F6:50:6A:AF

lshw -C network output:
  *-network                 
       description: Ethernet interface
       product: RTL8125 2.5GbE Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:02:00.0
       logical name: enp2s0
       version: 05
       serial: 78:72:64:40:6b:53
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet
physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8169
driverversion=4.18.0-425.19.2.el8_7.x86_64 duplex=full
firmware=rtl8125b-2_0.0.2 07/13/20 ip=10.200.16.43 latency=0 link=yes
multicast=yes port=MII
       resources: irq:18 ioport:3000(size=256) memory:7ff00000-7ff0ffff
memory:7ff10000-7ff13fff
  *-network
       description: Ethernet interface
       product: RTL8125 2.5GbE Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:03:00.0
       logical name: enp3s0
       version: 05
       serial: 78:72:64:40:6b:54
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet
physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8169
driverversion=4.18.0-425.19.2.el8_7.x86_64 firmware=rtl8125b-2_0.0.2 07/13/20
latency=0 link=no multicast=yes port=MII
       resources: irq:19 ioport:2000(size=256) memory:7fe00000-7fe0ffff
memory:7fe10000-7fe13fff


ethtool output:
Settings for enp2s0:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
                                             1000baseT/Half 1000baseT/Full
                                             10000baseT/Full
                                             2500baseT/Full
                                             5000baseT/Full
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 2500Mb/s
        Duplex: Full
        Auto-negotiation: on
        master-slave cfg: preferred slave
        master-slave status: slave
        Port: MII
        PHYAD: 0
        Transceiver: external
        Supports Wake-on: pumbg
        Wake-on: d
        Link detected: yes

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are the assignee for the bug.

^ permalink raw reply	[relevance 5%]

* 4-port ASMedia/RealTek RTL8125 2.5Gbps NIC freezes whole system
@ 2023-02-24 14:37  1% fk1xdcio
  0 siblings, 0 replies; 107+ results
From: fk1xdcio @ 2023-02-24 14:37 UTC (permalink / raw)
  To: netdev

[-- Attachment #1: Type: text/plain, Size: 1941 bytes --]

I hope this is the correct place to ask this(?). I'm not sure if my 
large attachments will come through; this is my first attempt.

I'm having problems getting this 4-port 2.5Gbps NIC to be stable. I have 
tried on multiple different physical systems both with Xeon server and 
i7 workstation chipsets and it behaves the same way on everything. 
Testing with latest Arch Linux and kernels 6.1, 6.2, and 5.15. I'm using 
the kernel default r8169 driver.

The higher the load on the NIC the more likely the whole system freezes 
hard. Everything freezes including my serial console, SysRq doesn't 
work, even the motherboard hardware reset switch doesn't work(!). I have 
to cut power to the system to reset it.

Disabling IOMMU is more stable but doesn't fix the issue. ASPM doesn't 
work correctly on this card either despite the ASMedia 1812 supposedly 
supporting it (lots of corrected PCIe errors). Enabling or disabling 
ASPM makes no difference.

"SSU-TECH" (generic/counterfeit?) 4-port 2.5Gbps PCIe x4 card
   ASMedia ASM1812 PCIe switch (driver: pcieport)
   RTL8125BG x4 (driver: r8169)

I have tested with a normal network configuration consisting of multiple 
machines and also with lookback cables plugging the card ports in to 
itself.

I have attached the scripts I use with the loopback cables 
(crashsys.sh), lspci, and dmesg.

System freezes almost immediately with:
   3,1266,4284361895,-;pcieport 0000:04:02.0: Unable to change power 
state from D3hot to D0, device inaccessible
    SUBSYSTEM=pci
    DEVICE=+pci:0000:04:02.0

If I set permanent D0 mode (power/control=on) then the error is 
different when the system freezes:
   r8169 0000:0d:00.0 enp13s0: rtl_chipcmd_cond == 1 (loop: 100, delay: 
100).

Is there anything I can do to get more debugging information? The system 
locks so hard that I haven't gotten much so far. It's unclear if the 
problem is happening in the pcieport driver, r8169, or somewhere else.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: crashsys.sh --]
[-- Type: text/x-shellscript; name=crashsys.sh, Size: 1164 bytes --]

#!/bin/sh
#
#    Loopback          Loopback
# enp7s0   enp8s0   enp9s0   enp10s0
#  [ ]      [ ]      [ ]      [ ]
#   |        |        |        |
#   +--------+        +--------+
#

sync

ip netns del test1 >/dev/null 2>&1
ip netns del test2 >/dev/null 2>&1

sleep 1

ip netns add test1
ip netns add test2

ip link set enp7s0 netns test1
ip link set enp8s0 netns test2
ip netns exec test1 ip addr add 172.16.0.1/24 dev enp7s0
ip netns exec test2 ip addr add 172.16.0.100/24 dev enp8s0
ip netns exec test1 ip link set dev enp7s0 up
ip netns exec test2 ip link set dev enp8s0 up

ip link set enp9s0 netns test1
ip link set enp10s0 netns test2
ip netns exec test1 ip addr add 172.16.2.1/24 dev enp9s0
ip netns exec test2 ip addr add 172.16.2.100/24 dev enp10s0
ip netns exec test1 ip link set dev enp9s0 up
ip netns exec test2 ip link set dev enp10s0 up

sleep 10

ip netns exec test1 iperf3 -D -s -p 5201 --logfile /dev/null
ip netns exec test1 iperf3 -D -s -p 5202 --logfile /dev/null
ip netns exec test2 iperf3 -c 172.16.0.1 -p 5201 --bidir --logfile /dev/null &
ip netns exec test2 iperf3 -c 172.16.2.1 -p 5202 --bidir --logfile /dev/null &

sync
cat /dev/kmsg

[-- Attachment #3: lspci.txt --]
[-- Type: text/plain, Size: 2594 bytes --]

00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection I217-LM (rev 05)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)
00:1c.4 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #5 (rev d5)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation Q87 Express LPC Controller (rev 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X]
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti HDMI Audio [Radeon HD 7870 XT / 7950/7970]
03:00.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01)
04:00.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01)
04:02.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01)
04:03.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01)
04:08.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01)
04:0a.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01)
04:0b.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01)
07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
08:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
09:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
0a:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)

[-- Attachment #4: lspci-verbose.txt --]
[-- Type: text/plain, Size: 78445 bytes --]

00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06)
	Subsystem: ASUSTeK Computer Inc. Device 8534
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
	Latency: 0
	IOMMU group: 1
	Capabilities: [e0] Vendor Specific Information: Len=0c <?>
	Kernel driver in use: hsw_uncore

00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06) (prog-if 00 [Normal decode])
	Subsystem: ASUSTeK Computer Inc. Device 8534
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 26
	IOMMU group: 2
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: e000-efff [size=4K] [16-bit]
	Memory behind bridge: f7c00000-f7cfffff [size=1M] [32-bit]
	Prefetchable memory behind bridge: e0000000-efffffff [size=256M] [32-bit]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA+ VGA16+ MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [88] Subsystem: ASUSTeK Computer Inc. Device 8534
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee00218  Data: 0000
	Capabilities: [a0] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 256 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #2, Speed 8GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <256ns, L1 <8us
			ClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 8GT/s, Width x16
			TrErr- Train- SlotClk+ DLActive- BWMgmt+ ABWMgmt+
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #1, PowerLimit 75W; Interlock- NoCompl+
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
			Changed: MRL- PresDet- LinkState-
		RootCap: CRSVisible-
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Via WAKE#, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- LN System CLS Not Supported, TPHComp- ExtTPHComp- ARIFwd-
			 AtomicOpsCap: Routing- 32bit+ 64bit+ 128bitCAS+
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Via WAKE#, ARIFwd-
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ EqualizationPhase1+
			 EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [100 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed+ WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
			Status:	NegoPending- InProgress-
	Capabilities: [140 v1] Root Complex Link
		Desc:	PortNumber=02 ComponentID=01 EltType=Config
		Link0:	Desc:	TargetPort=00 TargetComponent=01 AssocRCRB- LinkType=MemMapped LinkValid+
			Addr:	00000000fed19000
	Capabilities: [d94 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Kernel driver in use: pcieport

00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06) (prog-if 00 [VGA controller])
	DeviceName:  Onboard IGD
	Subsystem: ASUSTeK Computer Inc. Device 8534
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 38
	IOMMU group: 0
	Region 0: Memory at f7400000 (64-bit, non-prefetchable) [size=4M]
	Region 2: Memory at d0000000 (64-bit, prefetchable) [size=256M]
	Region 4: I/O ports at f000 [size=64]
	Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
	Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee00018  Data: 0000
	Capabilities: [d0] Power Management version 2
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a4] PCI Advanced Features
		AFCap: TP+ FLR+
		AFCtrl: FLR-
		AFStatus: TP-
	Kernel driver in use: i915
	Kernel modules: i915

00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
	Subsystem: ASUSTeK Computer Inc. Device 8534
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 44
	IOMMU group: 3
	Region 0: Memory at f7d34000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [50] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee004d8  Data: 0000
	Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag- RBE- FLReset+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05) (prog-if 30 [XHCI])
	Subsystem: ASUSTeK Computer Inc. Device 8534
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 36
	IOMMU group: 4
	Region 0: Memory at f7d20000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [70] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
		Address: 00000000fee003d8  Data: 0000
	Kernel driver in use: xhci_hcd
	Kernel modules: xhci_pci

00:19.0 Ethernet controller: Intel Corporation Ethernet Connection I217-LM (rev 05)
	DeviceName:  Onboard LAN
	Subsystem: ASUSTeK Computer Inc. Device 8535
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 39
	IOMMU group: 5
	Region 0: Memory at f7d00000 (32-bit, non-prefetchable) [size=128K]
	Region 1: Memory at f7d3c000 (32-bit, non-prefetchable) [size=4K]
	Region 2: I/O ports at f060 [size=32]
	Capabilities: [c8] Power Management version 2
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
	Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00438  Data: 0000
	Capabilities: [e0] PCI Advanced Features
		AFCap: TP+ FLR+
		AFCtrl: FLR-
		AFStatus: TP-
	Kernel driver in use: e1000e
	Kernel modules: e1000e

00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05) (prog-if 20 [EHCI])
	Subsystem: ASUSTeK Computer Inc. Device 8534
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 16
	IOMMU group: 6
	Region 0: Memory at f7d3b000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: [50] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [58] Debug port: BAR=1 offset=00a0
	Capabilities: [98] PCI Advanced Features
		AFCap: TP+ FLR+
		AFCtrl: FLR-
		AFStatus: TP-
	Kernel driver in use: ehci-pci

00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
	Subsystem: ASUSTeK Computer Inc. Device 8576
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 45
	IOMMU group: 7
	Region 0: Memory at f7d30000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [50] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D3 NoSoftRst- PME-Enable+ DSel=0 DScale=0 PME-
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00518  Data: 0000
	Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag- RBE- FLReset+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
	Capabilities: [100 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=01
			Status:	NegoPending- InProgress-
		VC1:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=2 ArbSelect=Fixed TC/VC=04
			Status:	NegoPending- InProgress-
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5) (prog-if 00 [Normal decode])
	Subsystem: ASUSTeK Computer Inc. ASUS H81I-PLUS
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 27
	IOMMU group: 8
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
	I/O behind bridge: 2000-2fff [size=4K] [16-bit]
	Memory behind bridge: ce200000-ce3fffff [size=2M] [32-bit]
	Prefetchable memory behind bridge: ce400000-ce5fffff [size=2M] [32-bit]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <1us, L1 <4us
			ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp-
		LnkCtl:	ASPM L0s L1 Enabled; RCB 64 bytes, Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x0
			TrErr- Train+ SlotClk+ DLActive- BWMgmt- ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+
			Slot #0, PowerLimit 0W; Interlock- NoCompl+
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
			Changed: MRL- PresDet- LinkState-
		RootCap: CRSVisible-
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range ABC, TimeoutDis+ NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Via WAKE#, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- LN System CLS Not Supported, TPHComp- ExtTPHComp- ARIFwd-
			 AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled, ARIFwd-
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee00238  Data: 0000
	Capabilities: [90] Subsystem: ASUSTeK Computer Inc. ASUS H81I-PLUS
	Capabilities: [a0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Kernel driver in use: pcieport

00:1c.4 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #5 (rev d5) (prog-if 00 [Normal decode])
	Subsystem: ASUSTeK Computer Inc. Device 8534
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 28
	IOMMU group: 9
	Bus: primary=00, secondary=03, subordinate=0a, sec-latency=0
	I/O behind bridge: a000-dfff [size=16K] [16-bit]
	Memory behind bridge: f7800000-f7bfffff [size=4M] [32-bit]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled] [64-bit]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #5, Speed 5GT/s, Width x4, ASPM L0s L1, Exit Latency L0s <512ns, L1 <16us
			ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp-
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x4
			TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #4, PowerLimit 25W; Interlock- NoCompl+
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
			Changed: MRL- PresDet- LinkState-
		RootCap: CRSVisible-
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range ABC, TimeoutDis+ NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- LN System CLS Not Supported, TPHComp- ExtTPHComp- ARIFwd-
			 AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled, ARIFwd-
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee00258  Data: 0000
	Capabilities: [90] Subsystem: ASUSTeK Computer Inc. Device 8534
	Capabilities: [a0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Kernel driver in use: pcieport

00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05) (prog-if 20 [EHCI])
	Subsystem: ASUSTeK Computer Inc. Device 8534
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 23
	IOMMU group: 10
	Region 0: Memory at f7d3a000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: [50] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [58] Debug port: BAR=1 offset=00a0
	Capabilities: [98] PCI Advanced Features
		AFCap: TP+ FLR+
		AFCtrl: FLR-
		AFStatus: TP-
	Kernel driver in use: ehci-pci

00:1f.0 ISA bridge: Intel Corporation Q87 Express LPC Controller (rev 05)
	Subsystem: ASUSTeK Computer Inc. Device 8534
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	IOMMU group: 11
	Capabilities: [e0] Vendor Specific Information: Len=0c <?>
	Kernel driver in use: lpc_ich
	Kernel modules: lpc_ich

00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
	Subsystem: ASUSTeK Computer Inc. Device 8534
	Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin C routed to IRQ 18
	IOMMU group: 11
	Region 0: Memory at f7d39000 (64-bit, non-prefetchable) [size=256]
	Region 4: I/O ports at f040 [size=32]
	Kernel driver in use: i801_smbus
	Kernel modules: i2c_i801

01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (prog-if 00 [VGA controller])
	Subsystem: Hightech Information System Ltd. Device 3001
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 37
	IOMMU group: 2
	Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
	Region 2: Memory at f7c00000 (64-bit, non-prefetchable) [size=256K]
	Region 4: I/O ports at e000 [size=256]
	Expansion ROM at 000c0000 [disabled] [size=128K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 256 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 8GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 8GT/s, Width x16
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR-
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 1
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled,
			 AtomicOpsCtl: ReqEn-
		LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
			 EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee003f8  Data: 0000
	Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
	Capabilities: [150 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [270 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Capabilities: [2b0 v1] Address Translation Service (ATS)
		ATSCap:	Invalidate Queue Depth: 00
		ATSCtl:	Enable-, Smallest Translation Unit: 00
	Capabilities: [2c0 v1] Page Request Interface (PRI)
		PRICtl: Enable- Reset-
		PRISta: RF- UPRGI- Stopped+
		Page Request Capacity: 00000020, Page Request Allocation: 00000000
	Capabilities: [2d0 v1] Process Address Space ID (PASID)
		PASIDCap: Exec+ Priv+, Max PASID Width: 10
		PASIDCtl: Enable- Exec- Priv-
	Kernel driver in use: radeon
	Kernel modules: radeon, amdgpu

01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti HDMI Audio [Radeon HD 7870 XT / 7950/7970]
	Subsystem: Hightech Information System Ltd. Device aaa0
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin B routed to IRQ 46
	IOMMU group: 2
	Region 0: Memory at f7c60000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 256 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 8GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 8GT/s, Width x16
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR-
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 1
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled,
			 AtomicOpsCtl: ReqEn-
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00558  Data: 0000
	Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
	Capabilities: [150 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

03:00.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 29
	IOMMU group: 12
	Bus: primary=03, secondary=04, subordinate=0a, sec-latency=0
	I/O behind bridge: a000-dfff [size=16K] [16-bit]
	Memory behind bridge: f7800000-f7bfffff [size=4M] [32-bit]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled] [64-bit]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00278  Data: 0000
	Capabilities: [80] Express (v2) Upstream Port, MSI 00
		DevCap:	MaxPayload 512 bytes, PhantFunc 0
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ SlotPowerLimit 25W
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 5GT/s, Width x8, ASPM L0s L1, Exit Latency L0s <4us, L1 <64us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; Disabled- CommClk+
			ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x4 (downgraded)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS-
			 AtomicOpsCap: Routing-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled,
			 AtomicOpsCtl: EgressBlck-
		LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis+
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [c0] Subsystem: Device 0000:0000
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 14, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 05000001 0000000f 04080004 00000000
	Capabilities: [140 v1] Power Budgeting <?>
	Capabilities: [160 v1] Latency Tolerance Reporting
		Max snoop latency: 71680ns
		Max no snoop latency: 71680ns
	Capabilities: [180 v1] Multicast
		McastCap: MaxGroups 64, ECRCRegen-
		McastCtl: NumGroups 1, Enable-
		McastBAR: IndexPos 0, BaseAddr 0000000000000000
		McastReceiveVec:      0000000000000000
		McastBlockAllVec:     0000000000000000
		McastBlockUntransVec: 0000000000000000
		McastOverlayBAR: OverlaySize 0 (disabled), BaseAddr 0000000000000000
	Capabilities: [1c0 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2- PCI-PM_L1.1+ ASPM_L1.2- ASPM_L1.1+ L1_PM_Substates+
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
		L1SubCtl2:
	Kernel driver in use: pcieport

04:00.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 30
	IOMMU group: 13
	Bus: primary=04, secondary=05, subordinate=05, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [disabled] [32-bit]
	Memory behind bridge: fff00000-000fffff [disabled] [32-bit]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled] [64-bit]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D3 NoSoftRst- PME-Enable+ DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00298  Data: 0000
	Capabilities: [80] Express (v2) Downstream Port (Slot+), MSI 00
		DevCap:	MaxPayload 512 bytes, PhantFunc 0
			ExtTag+ RBE+
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 5GT/s, Width x2, ASPM L0s L1, Exit Latency L0s <4us, L1 <64us
			ClockPM+ Surprise+ LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM Disabled; Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x1
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #1, PowerLimit 0W; Interlock- NoCompl-
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
			Changed: MRL- PresDet- LinkState-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- ARIFwd+
			 AtomicOpsCap: Routing-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled, ARIFwd-
			 AtomicOpsCtl: EgressBlck-
		LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis+, Selectable De-emphasis: -3.5dB
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [c0] Subsystem: Device 0000:0000
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 14, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 04000001 0000000f 05000005 00000000
	Capabilities: [140 v1] Power Budgeting <?>
	Capabilities: [150 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans+
		ACSCtl:	SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
	Capabilities: [180 v1] Multicast
		McastCap: MaxGroups 64, ECRCRegen-
		McastCtl: NumGroups 1, Enable-
		McastBAR: IndexPos 0, BaseAddr 0000000000000000
		McastReceiveVec:      0000000000000000
		McastBlockAllVec:     0000000000000000
		McastBlockUntransVec: 0000000000000000
		McastOverlayBAR: OverlaySize 0 (disabled), BaseAddr 0000000000000000
	Capabilities: [1c0 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2- PCI-PM_L1.1+ ASPM_L1.2- ASPM_L1.1+ L1_PM_Substates+
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
		L1SubCtl2:
	Kernel driver in use: pcieport

04:02.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 31
	IOMMU group: 14
	Bus: primary=04, secondary=06, subordinate=06, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [disabled] [32-bit]
	Memory behind bridge: fff00000-000fffff [disabled] [32-bit]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled] [64-bit]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D3 NoSoftRst- PME-Enable+ DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee002d8  Data: 0000
	Capabilities: [80] Express (v2) Downstream Port (Slot+), MSI 00
		DevCap:	MaxPayload 512 bytes, PhantFunc 0
			ExtTag+ RBE+
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
		LnkCap:	Port #2, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <4us, L1 <64us
			ClockPM+ Surprise+ LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM Disabled; Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x1
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #3, PowerLimit 0W; Interlock- NoCompl-
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
			Changed: MRL- PresDet- LinkState-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- ARIFwd+
			 AtomicOpsCap: Routing-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled, ARIFwd-
			 AtomicOpsCtl: EgressBlck-
		LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis+, Selectable De-emphasis: -3.5dB
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [c0] Subsystem: Device 0000:0000
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 14, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 04000001 0000000f 06000006 00000000
	Capabilities: [140 v1] Power Budgeting <?>
	Capabilities: [150 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans+
		ACSCtl:	SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
	Capabilities: [180 v1] Multicast
		McastCap: MaxGroups 64, ECRCRegen-
		McastCtl: NumGroups 1, Enable-
		McastBAR: IndexPos 0, BaseAddr 0000000000000000
		McastReceiveVec:      0000000000000000
		McastBlockAllVec:     0000000000000000
		McastBlockUntransVec: 0000000000000000
		McastOverlayBAR: OverlaySize 0 (disabled), BaseAddr 0000000000000000
	Capabilities: [1c0 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2- PCI-PM_L1.1+ ASPM_L1.2- ASPM_L1.1+ L1_PM_Substates+
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
		L1SubCtl2:
	Kernel driver in use: pcieport

04:03.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 32
	IOMMU group: 15
	Bus: primary=04, secondary=07, subordinate=07, sec-latency=0
	I/O behind bridge: d000-dfff [size=4K] [16-bit]
	Memory behind bridge: f7b00000-f7bfffff [size=1M] [32-bit]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled] [64-bit]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00318  Data: 0000
	Capabilities: [80] Express (v2) Downstream Port (Slot+), MSI 00
		DevCap:	MaxPayload 512 bytes, PhantFunc 0
			ExtTag+ RBE+
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #3, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <4us, L1 <64us
			ClockPM+ Surprise+ LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM Disabled; Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x1
			TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #4, PowerLimit 0W; Interlock- NoCompl-
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
			Changed: MRL- PresDet- LinkState-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- ARIFwd+
			 AtomicOpsCap: Routing-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled, ARIFwd-
			 AtomicOpsCtl: EgressBlck-
		LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis+, Selectable De-emphasis: -3.5dB
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [c0] Subsystem: Device 0000:0000
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [140 v1] Power Budgeting <?>
	Capabilities: [150 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans+
		ACSCtl:	SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
	Capabilities: [180 v1] Multicast
		McastCap: MaxGroups 64, ECRCRegen-
		McastCtl: NumGroups 1, Enable-
		McastBAR: IndexPos 0, BaseAddr 0000000000000000
		McastReceiveVec:      0000000000000000
		McastBlockAllVec:     0000000000000000
		McastBlockUntransVec: 0000000000000000
		McastOverlayBAR: OverlaySize 0 (disabled), BaseAddr 0000000000000000
	Capabilities: [1c0 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2- PCI-PM_L1.1+ ASPM_L1.2- ASPM_L1.1+ L1_PM_Substates+
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
		L1SubCtl2:
	Kernel driver in use: pcieport

04:08.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 33
	IOMMU group: 16
	Bus: primary=04, secondary=08, subordinate=08, sec-latency=0
	I/O behind bridge: c000-cfff [size=4K] [16-bit]
	Memory behind bridge: f7a00000-f7afffff [size=1M] [32-bit]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled] [64-bit]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR+ <PERR+
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00338  Data: 0000
	Capabilities: [80] Express (v2) Downstream Port (Slot+), MSI 00
		DevCap:	MaxPayload 512 bytes, PhantFunc 0
			ExtTag+ RBE+
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #8, Speed 5GT/s, Width x2, ASPM L0s L1, Exit Latency L0s <4us, L1 <64us
			ClockPM+ Surprise+ LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM Disabled; Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x1
			TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #9, PowerLimit 0W; Interlock- NoCompl-
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
			Changed: MRL- PresDet- LinkState-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- ARIFwd+
			 AtomicOpsCap: Routing-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled, ARIFwd-
			 AtomicOpsCtl: EgressBlck-
		LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis+, Selectable De-emphasis: -3.5dB
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [c0] Subsystem: Device 0000:0000
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP+ BadDLLP+ Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [140 v1] Power Budgeting <?>
	Capabilities: [150 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans+
		ACSCtl:	SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
	Capabilities: [180 v1] Multicast
		McastCap: MaxGroups 64, ECRCRegen-
		McastCtl: NumGroups 1, Enable-
		McastBAR: IndexPos 0, BaseAddr 0000000000000000
		McastReceiveVec:      0000000000000000
		McastBlockAllVec:     0000000000000000
		McastBlockUntransVec: 0000000000000000
		McastOverlayBAR: OverlaySize 0 (disabled), BaseAddr 0000000000000000
	Capabilities: [1c0 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2- PCI-PM_L1.1+ ASPM_L1.2- ASPM_L1.1+ L1_PM_Substates+
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
		L1SubCtl2:
	Kernel driver in use: pcieport

04:0a.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 34
	IOMMU group: 17
	Bus: primary=04, secondary=09, subordinate=09, sec-latency=0
	I/O behind bridge: b000-bfff [size=4K] [16-bit]
	Memory behind bridge: f7900000-f79fffff [size=1M] [32-bit]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled] [64-bit]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR+ <PERR+
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00358  Data: 0000
	Capabilities: [80] Express (v2) Downstream Port (Slot+), MSI 00
		DevCap:	MaxPayload 512 bytes, PhantFunc 0
			ExtTag+ RBE+
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #10, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <4us, L1 <64us
			ClockPM+ Surprise+ LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM Disabled; Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x1
			TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #11, PowerLimit 0W; Interlock- NoCompl-
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
			Changed: MRL- PresDet- LinkState-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- ARIFwd+
			 AtomicOpsCap: Routing-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled, ARIFwd-
			 AtomicOpsCtl: EgressBlck-
		LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis+, Selectable De-emphasis: -3.5dB
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [c0] Subsystem: Device 0000:0000
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP+ BadDLLP+ Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [140 v1] Power Budgeting <?>
	Capabilities: [150 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans+
		ACSCtl:	SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
	Capabilities: [180 v1] Multicast
		McastCap: MaxGroups 64, ECRCRegen-
		McastCtl: NumGroups 1, Enable-
		McastBAR: IndexPos 0, BaseAddr 0000000000000000
		McastReceiveVec:      0000000000000000
		McastBlockAllVec:     0000000000000000
		McastBlockUntransVec: 0000000000000000
		McastOverlayBAR: OverlaySize 0 (disabled), BaseAddr 0000000000000000
	Capabilities: [1c0 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2- PCI-PM_L1.1+ ASPM_L1.2- ASPM_L1.1+ L1_PM_Substates+
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
		L1SubCtl2:
	Kernel driver in use: pcieport

04:0b.0 PCI bridge: ASMedia Technology Inc. ASM1812 6-Port PCIe x4 Gen2 Packet Switch (rev 01) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 35
	IOMMU group: 18
	Bus: primary=04, secondary=0a, subordinate=0a, sec-latency=0
	I/O behind bridge: a000-afff [size=4K] [16-bit]
	Memory behind bridge: f7800000-f78fffff [size=1M] [32-bit]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled] [64-bit]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR+
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00378  Data: 0000
	Capabilities: [80] Express (v2) Downstream Port (Slot+), MSI 00
		DevCap:	MaxPayload 512 bytes, PhantFunc 0
			ExtTag+ RBE+
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #11, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <4us, L1 <64us
			ClockPM+ Surprise+ LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM Disabled; Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x1
			TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #12, PowerLimit 0W; Interlock- NoCompl-
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
			Changed: MRL- PresDet- LinkState-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- ARIFwd+
			 AtomicOpsCap: Routing-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled, ARIFwd-
			 AtomicOpsCtl: EgressBlck-
		LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis+, Selectable De-emphasis: -3.5dB
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [c0] Subsystem: Device 0000:0000
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP+ BadDLLP+ Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [140 v1] Power Budgeting <?>
	Capabilities: [150 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans+
		ACSCtl:	SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
	Capabilities: [180 v1] Multicast
		McastCap: MaxGroups 64, ECRCRegen-
		McastCtl: NumGroups 1, Enable-
		McastBAR: IndexPos 0, BaseAddr 0000000000000000
		McastReceiveVec:      0000000000000000
		McastBlockAllVec:     0000000000000000
		McastBlockUntransVec: 0000000000000000
		McastOverlayBAR: OverlaySize 0 (disabled), BaseAddr 0000000000000000
	Capabilities: [1c0 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2- PCI-PM_L1.1+ ASPM_L1.2- ASPM_L1.1+ L1_PM_Substates+
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
		L1SubCtl2:
	Kernel driver in use: pcieport

07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
	Subsystem: Realtek Semiconductor Co., Ltd. Device 0123
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 19
	IOMMU group: 19
	Region 0: I/O ports at d000 [size=256]
	Region 2: Memory at f7b00000 (64-bit, non-prefetchable) [size=64K]
	Region 4: Memory at f7b10000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
		Address: 0000000000000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [70] Express (v2) Endpoint, MSI 01
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0W
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 4096 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 <64us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x1
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Via message/WAKE#, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- TPHComp+ ExtTPHComp-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled,
			 AtomicOpsCtl: ReqEn-
		LnkCap2: Supported Link Speeds: 2.5-5GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [b0] MSI-X: Enable+ Count=32 Masked-
		Vector table: BAR=4 offset=00000000
		PBA: BAR=4 offset=00000800
	Capabilities: [d0] Vital Product Data
		Not readable
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [148 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=01
			Status:	NegoPending- InProgress-
	Capabilities: [168 v1] Device Serial Number xx-xx-xx-xx-xx-xx-xx-xx
	Capabilities: [178 v1] Transaction Processing Hints
		No steering table available
	Capabilities: [204 v1] Latency Tolerance Reporting
		Max snoop latency: 71680ns
		Max no snoop latency: 71680ns
	Capabilities: [20c v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=150us PortTPowerOnTime=150us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=10us
	Capabilities: [21c v1] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
	Kernel driver in use: r8169
	Kernel modules: r8169

08:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
	Subsystem: Realtek Semiconductor Co., Ltd. Device 0123
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 16
	IOMMU group: 20
	Region 0: I/O ports at c000 [size=256]
	Region 2: Memory at f7a00000 (64-bit, non-prefetchable) [size=64K]
	Region 4: Memory at f7a10000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
		Address: 0000000000000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [70] Express (v2) Endpoint, MSI 01
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0W
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 4096 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 <64us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x1
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Via message/WAKE#, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- TPHComp+ ExtTPHComp-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled,
			 AtomicOpsCtl: ReqEn-
		LnkCap2: Supported Link Speeds: 2.5-5GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [b0] MSI-X: Enable+ Count=32 Masked-
		Vector table: BAR=4 offset=00000000
		PBA: BAR=4 offset=00000800
	Capabilities: [d0] Vital Product Data
		Not readable
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr+ BadTLP- BadDLLP+ Rollover- Timeout+ AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [148 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=01
			Status:	NegoPending- InProgress-
	Capabilities: [168 v1] Device Serial Number xx-xx-xx-xx-xx-xx-xx-xx
	Capabilities: [178 v1] Transaction Processing Hints
		No steering table available
	Capabilities: [204 v1] Latency Tolerance Reporting
		Max snoop latency: 71680ns
		Max no snoop latency: 71680ns
	Capabilities: [20c v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=150us PortTPowerOnTime=150us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=10us
	Capabilities: [21c v1] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
	Kernel driver in use: r8169
	Kernel modules: r8169

09:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
	Subsystem: Realtek Semiconductor Co., Ltd. Device 0123
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 18
	IOMMU group: 21
	Region 0: I/O ports at b000 [size=256]
	Region 2: Memory at f7900000 (64-bit, non-prefetchable) [size=64K]
	Region 4: Memory at f7910000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
		Address: 0000000000000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [70] Express (v2) Endpoint, MSI 01
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0W
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 4096 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 <64us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x1
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Via message/WAKE#, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- TPHComp+ ExtTPHComp-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled,
			 AtomicOpsCtl: ReqEn-
		LnkCap2: Supported Link Speeds: 2.5-5GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [b0] MSI-X: Enable+ Count=32 Masked-
		Vector table: BAR=4 offset=00000000
		PBA: BAR=4 offset=00000800
	Capabilities: [d0] Vital Product Data
		Not readable
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr+ BadTLP- BadDLLP+ Rollover- Timeout+ AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [148 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=01
			Status:	NegoPending- InProgress-
	Capabilities: [168 v1] Device Serial Number xx-xx-xx-xx-xx-xx-xx-xx
	Capabilities: [178 v1] Transaction Processing Hints
		No steering table available
	Capabilities: [204 v1] Latency Tolerance Reporting
		Max snoop latency: 71680ns
		Max no snoop latency: 71680ns
	Capabilities: [20c v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=150us PortTPowerOnTime=150us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=10us
	Capabilities: [21c v1] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
	Kernel driver in use: r8169
	Kernel modules: r8169

0a:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
	Subsystem: Realtek Semiconductor Co., Ltd. Device 0123
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 19
	IOMMU group: 22
	Region 0: I/O ports at a000 [size=256]
	Region 2: Memory at f7800000 (64-bit, non-prefetchable) [size=64K]
	Region 4: Memory at f7810000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
		Address: 0000000000000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [70] Express (v2) Endpoint, MSI 01
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0W
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 4096 bytes
		DevSta:	CorrErr+ NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 <64us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x1
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Via message/WAKE#, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- TPHComp+ ExtTPHComp-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled,
			 AtomicOpsCtl: ReqEn-
		LnkCap2: Supported Link Speeds: 2.5-5GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [b0] MSI-X: Enable+ Count=32 Masked-
		Vector table: BAR=4 offset=00000000
		PBA: BAR=4 offset=00000800
	Capabilities: [d0] Vital Product Data
		Not readable
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr+ BadTLP- BadDLLP+ Rollover- Timeout+ AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [148 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=01
			Status:	NegoPending- InProgress-
	Capabilities: [168 v1] Device Serial Number xx-xx-xx-xx-xx-xx-xx-xx
	Capabilities: [178 v1] Transaction Processing Hints
		No steering table available
	Capabilities: [204 v1] Latency Tolerance Reporting
		Max snoop latency: 71680ns
		Max no snoop latency: 71680ns
	Capabilities: [20c v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=150us PortTPowerOnTime=150us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=10us
	Capabilities: [21c v1] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
	Kernel driver in use: r8169
	Kernel modules: r8169


[-- Attachment #5: dmesg.txt --]
[-- Type: text/plain, Size: 91283 bytes --]

[    0.000000] microcode: microcode updated early to revision 0x28, date = 2019-11-12
[    0.000000] Linux version 6.1.12-arch1-1 (linux@archlinux) (gcc (GCC) 12.2.1 20230201, GNU ld (GNU Binutils) 2.40) #1 SMP PREEMPT_DYNAMIC Tue, 14 Feb 2023 22:08:08 +0000
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw loglevel=3 sysrq_always_enabled consoleblank=300 max_loop=64 intel_iommu=on iommu=pt
[    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] signal: max sigframe size: 1776
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x0000000000000fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000001000-0x0000000000057fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000000058000-0x0000000000058fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000059000-0x000000000008ffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000000090000-0x0000000000090fff] type 20
[    0.000000] BIOS-e820: [mem 0x0000000000091000-0x000000000009dfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009e000-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x0000000094f58fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000094f59000-0x0000000094f5ffff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000094f60000-0x00000000953b8fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000953b9000-0x000000009583dfff] reserved
[    0.000000] BIOS-e820: [mem 0x000000009583e000-0x00000000a9232fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a9233000-0x00000000aa6bffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000aa6c0000-0x00000000aa700fff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000aa701000-0x00000000aac50fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000aac51000-0x00000000abf51fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000abf52000-0x00000000abffefff] type 20
[    0.000000] BIOS-e820: [mem 0x00000000abfff000-0x00000000abffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000ae000000-0x00000000ce1fffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed00000-0x00000000fed03fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x0000000831dfffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] efi: EFI v2.31 by American Megatrends
[    0.000000] efi: ESRT=0xabf50898 ACPI=0xaa6e8000 ACPI 2.0=0xaa6e8000 SMBIOS=0xabf50518 
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: ASUS All Series/Q87M-E, BIOS 3801 03/22/2019
[    0.000000] tsc: Fast TSC calibration using PIT
[    0.000000] tsc: Detected 3092.837 MHz processor
[    0.000037] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000040] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000049] last_pfn = 0x831e00 max_arch_pfn = 0x400000000
[    0.000155] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT  
[    0.000620] total RAM covered: 32254M
[    0.000741]  gran_size: 64K 	chunk_size: 64K 	num_reg: 10  	lose cover RAM: 30M
[    0.000743]  gran_size: 64K 	chunk_size: 128K 	num_reg: 10  	lose cover RAM: 30M
[    0.000744]  gran_size: 64K 	chunk_size: 256K 	num_reg: 10  	lose cover RAM: 30M
[    0.000745]  gran_size: 64K 	chunk_size: 512K 	num_reg: 10  	lose cover RAM: 30M
[    0.000746]  gran_size: 64K 	chunk_size: 1M 	num_reg: 10  	lose cover RAM: 30M
[    0.000748]  gran_size: 64K 	chunk_size: 2M 	num_reg: 10  	lose cover RAM: 30M
[    0.000749]  gran_size: 64K 	chunk_size: 4M 	num_reg: 10  	lose cover RAM: 30M
[    0.000750]  gran_size: 64K 	chunk_size: 8M 	num_reg: 10  	lose cover RAM: 30M
[    0.000751]  gran_size: 64K 	chunk_size: 16M 	num_reg: 10  	lose cover RAM: 30M
[    0.000752]  gran_size: 64K 	chunk_size: 32M 	num_reg: 10  	lose cover RAM: 30M
[    0.000753] *BAD*gran_size: 64K 	chunk_size: 64M 	num_reg: 10  	lose cover RAM: -34M
[    0.000755] *BAD*gran_size: 64K 	chunk_size: 128M 	num_reg: 10  	lose cover RAM: -98M
[    0.000756] *BAD*gran_size: 64K 	chunk_size: 256M 	num_reg: 10  	lose cover RAM: -192M
[    0.000757] *BAD*gran_size: 64K 	chunk_size: 512M 	num_reg: 10  	lose cover RAM: -192M
[    0.000758] *BAD*gran_size: 64K 	chunk_size: 1G 	num_reg: 10  	lose cover RAM: -192M
[    0.000760] *BAD*gran_size: 64K 	chunk_size: 2G 	num_reg: 10  	lose cover RAM: -1216M
[    0.000761]  gran_size: 128K 	chunk_size: 128K 	num_reg: 10  	lose cover RAM: 30M
[    0.000762]  gran_size: 128K 	chunk_size: 256K 	num_reg: 10  	lose cover RAM: 30M
[    0.000763]  gran_size: 128K 	chunk_size: 512K 	num_reg: 10  	lose cover RAM: 30M
[    0.000764]  gran_size: 128K 	chunk_size: 1M 	num_reg: 10  	lose cover RAM: 30M
[    0.000765]  gran_size: 128K 	chunk_size: 2M 	num_reg: 10  	lose cover RAM: 30M
[    0.000767]  gran_size: 128K 	chunk_size: 4M 	num_reg: 10  	lose cover RAM: 30M
[    0.000768]  gran_size: 128K 	chunk_size: 8M 	num_reg: 10  	lose cover RAM: 30M
[    0.000769]  gran_size: 128K 	chunk_size: 16M 	num_reg: 10  	lose cover RAM: 30M
[    0.000770]  gran_size: 128K 	chunk_size: 32M 	num_reg: 10  	lose cover RAM: 30M
[    0.000771] *BAD*gran_size: 128K 	chunk_size: 64M 	num_reg: 10  	lose cover RAM: -34M
[    0.000772] *BAD*gran_size: 128K 	chunk_size: 128M 	num_reg: 10  	lose cover RAM: -98M
[    0.000773] *BAD*gran_size: 128K 	chunk_size: 256M 	num_reg: 10  	lose cover RAM: -192M
[    0.000775] *BAD*gran_size: 128K 	chunk_size: 512M 	num_reg: 10  	lose cover RAM: -192M
[    0.000776] *BAD*gran_size: 128K 	chunk_size: 1G 	num_reg: 10  	lose cover RAM: -192M
[    0.000777] *BAD*gran_size: 128K 	chunk_size: 2G 	num_reg: 10  	lose cover RAM: -1216M
[    0.000778]  gran_size: 256K 	chunk_size: 256K 	num_reg: 10  	lose cover RAM: 30M
[    0.000779]  gran_size: 256K 	chunk_size: 512K 	num_reg: 10  	lose cover RAM: 30M
[    0.000780]  gran_size: 256K 	chunk_size: 1M 	num_reg: 10  	lose cover RAM: 30M
[    0.000782]  gran_size: 256K 	chunk_size: 2M 	num_reg: 10  	lose cover RAM: 30M
[    0.000783]  gran_size: 256K 	chunk_size: 4M 	num_reg: 10  	lose cover RAM: 30M
[    0.000784]  gran_size: 256K 	chunk_size: 8M 	num_reg: 10  	lose cover RAM: 30M
[    0.000785]  gran_size: 256K 	chunk_size: 16M 	num_reg: 10  	lose cover RAM: 30M
[    0.000786]  gran_size: 256K 	chunk_size: 32M 	num_reg: 10  	lose cover RAM: 30M
[    0.000787] *BAD*gran_size: 256K 	chunk_size: 64M 	num_reg: 10  	lose cover RAM: -34M
[    0.000788] *BAD*gran_size: 256K 	chunk_size: 128M 	num_reg: 10  	lose cover RAM: -98M
[    0.000790] *BAD*gran_size: 256K 	chunk_size: 256M 	num_reg: 10  	lose cover RAM: -192M
[    0.000791] *BAD*gran_size: 256K 	chunk_size: 512M 	num_reg: 10  	lose cover RAM: -192M
[    0.000792] *BAD*gran_size: 256K 	chunk_size: 1G 	num_reg: 10  	lose cover RAM: -192M
[    0.000793] *BAD*gran_size: 256K 	chunk_size: 2G 	num_reg: 10  	lose cover RAM: -1216M
[    0.000794]  gran_size: 512K 	chunk_size: 512K 	num_reg: 10  	lose cover RAM: 30M
[    0.000795]  gran_size: 512K 	chunk_size: 1M 	num_reg: 10  	lose cover RAM: 30M
[    0.000797]  gran_size: 512K 	chunk_size: 2M 	num_reg: 10  	lose cover RAM: 30M
[    0.000798]  gran_size: 512K 	chunk_size: 4M 	num_reg: 10  	lose cover RAM: 30M
[    0.000799]  gran_size: 512K 	chunk_size: 8M 	num_reg: 10  	lose cover RAM: 30M
[    0.000800]  gran_size: 512K 	chunk_size: 16M 	num_reg: 10  	lose cover RAM: 30M
[    0.000801]  gran_size: 512K 	chunk_size: 32M 	num_reg: 10  	lose cover RAM: 30M
[    0.000802] *BAD*gran_size: 512K 	chunk_size: 64M 	num_reg: 10  	lose cover RAM: -34M
[    0.000803] *BAD*gran_size: 512K 	chunk_size: 128M 	num_reg: 10  	lose cover RAM: -98M
[    0.000805] *BAD*gran_size: 512K 	chunk_size: 256M 	num_reg: 10  	lose cover RAM: -192M
[    0.000806] *BAD*gran_size: 512K 	chunk_size: 512M 	num_reg: 10  	lose cover RAM: -192M
[    0.000807] *BAD*gran_size: 512K 	chunk_size: 1G 	num_reg: 10  	lose cover RAM: -192M
[    0.000808] *BAD*gran_size: 512K 	chunk_size: 2G 	num_reg: 10  	lose cover RAM: -1216M
[    0.000809]  gran_size: 1M 	chunk_size: 1M 	num_reg: 10  	lose cover RAM: 30M
[    0.000811]  gran_size: 1M 	chunk_size: 2M 	num_reg: 10  	lose cover RAM: 30M
[    0.000812]  gran_size: 1M 	chunk_size: 4M 	num_reg: 10  	lose cover RAM: 30M
[    0.000813]  gran_size: 1M 	chunk_size: 8M 	num_reg: 10  	lose cover RAM: 30M
[    0.000814]  gran_size: 1M 	chunk_size: 16M 	num_reg: 10  	lose cover RAM: 30M
[    0.000815]  gran_size: 1M 	chunk_size: 32M 	num_reg: 10  	lose cover RAM: 30M
[    0.000816] *BAD*gran_size: 1M 	chunk_size: 64M 	num_reg: 10  	lose cover RAM: -34M
[    0.000817] *BAD*gran_size: 1M 	chunk_size: 128M 	num_reg: 10  	lose cover RAM: -98M
[    0.000818] *BAD*gran_size: 1M 	chunk_size: 256M 	num_reg: 10  	lose cover RAM: -192M
[    0.000820] *BAD*gran_size: 1M 	chunk_size: 512M 	num_reg: 10  	lose cover RAM: -192M
[    0.000821] *BAD*gran_size: 1M 	chunk_size: 1G 	num_reg: 10  	lose cover RAM: -192M
[    0.000822] *BAD*gran_size: 1M 	chunk_size: 2G 	num_reg: 10  	lose cover RAM: -1216M
[    0.000823]  gran_size: 2M 	chunk_size: 2M 	num_reg: 10  	lose cover RAM: 30M
[    0.000824]  gran_size: 2M 	chunk_size: 4M 	num_reg: 10  	lose cover RAM: 30M
[    0.000825]  gran_size: 2M 	chunk_size: 8M 	num_reg: 10  	lose cover RAM: 30M
[    0.000826]  gran_size: 2M 	chunk_size: 16M 	num_reg: 10  	lose cover RAM: 30M
[    0.000828]  gran_size: 2M 	chunk_size: 32M 	num_reg: 10  	lose cover RAM: 30M
[    0.000829] *BAD*gran_size: 2M 	chunk_size: 64M 	num_reg: 10  	lose cover RAM: -34M
[    0.000830] *BAD*gran_size: 2M 	chunk_size: 128M 	num_reg: 10  	lose cover RAM: -98M
[    0.000831] *BAD*gran_size: 2M 	chunk_size: 256M 	num_reg: 10  	lose cover RAM: -192M
[    0.000832] *BAD*gran_size: 2M 	chunk_size: 512M 	num_reg: 10  	lose cover RAM: -192M
[    0.000833] *BAD*gran_size: 2M 	chunk_size: 1G 	num_reg: 10  	lose cover RAM: -192M
[    0.000834] *BAD*gran_size: 2M 	chunk_size: 2G 	num_reg: 10  	lose cover RAM: -1216M
[    0.000836]  gran_size: 4M 	chunk_size: 4M 	num_reg: 10  	lose cover RAM: 30M
[    0.000837]  gran_size: 4M 	chunk_size: 8M 	num_reg: 10  	lose cover RAM: 30M
[    0.000838]  gran_size: 4M 	chunk_size: 16M 	num_reg: 10  	lose cover RAM: 30M
[    0.000839]  gran_size: 4M 	chunk_size: 32M 	num_reg: 10  	lose cover RAM: 30M
[    0.000840] *BAD*gran_size: 4M 	chunk_size: 64M 	num_reg: 10  	lose cover RAM: -34M
[    0.000841] *BAD*gran_size: 4M 	chunk_size: 128M 	num_reg: 10  	lose cover RAM: -98M
[    0.000842] *BAD*gran_size: 4M 	chunk_size: 256M 	num_reg: 10  	lose cover RAM: -190M
[    0.000844] *BAD*gran_size: 4M 	chunk_size: 512M 	num_reg: 10  	lose cover RAM: -190M
[    0.000845] *BAD*gran_size: 4M 	chunk_size: 1G 	num_reg: 10  	lose cover RAM: -190M
[    0.000846] *BAD*gran_size: 4M 	chunk_size: 2G 	num_reg: 10  	lose cover RAM: -1214M
[    0.000847]  gran_size: 8M 	chunk_size: 8M 	num_reg: 10  	lose cover RAM: 30M
[    0.000848]  gran_size: 8M 	chunk_size: 16M 	num_reg: 10  	lose cover RAM: 30M
[    0.000849]  gran_size: 8M 	chunk_size: 32M 	num_reg: 10  	lose cover RAM: 30M
[    0.000850] *BAD*gran_size: 8M 	chunk_size: 64M 	num_reg: 10  	lose cover RAM: -34M
[    0.000851] *BAD*gran_size: 8M 	chunk_size: 128M 	num_reg: 10  	lose cover RAM: -98M
[    0.000853] *BAD*gran_size: 8M 	chunk_size: 256M 	num_reg: 10  	lose cover RAM: -186M
[    0.000854] *BAD*gran_size: 8M 	chunk_size: 512M 	num_reg: 10  	lose cover RAM: -186M
[    0.000855] *BAD*gran_size: 8M 	chunk_size: 1G 	num_reg: 10  	lose cover RAM: -186M
[    0.000856] *BAD*gran_size: 8M 	chunk_size: 2G 	num_reg: 10  	lose cover RAM: -1210M
[    0.000857]  gran_size: 16M 	chunk_size: 16M 	num_reg: 10  	lose cover RAM: 30M
[    0.000858]  gran_size: 16M 	chunk_size: 32M 	num_reg: 10  	lose cover RAM: 30M
[    0.000859] *BAD*gran_size: 16M 	chunk_size: 64M 	num_reg: 10  	lose cover RAM: -34M
[    0.000861] *BAD*gran_size: 16M 	chunk_size: 128M 	num_reg: 10  	lose cover RAM: -98M
[    0.000862] *BAD*gran_size: 16M 	chunk_size: 256M 	num_reg: 10  	lose cover RAM: -178M
[    0.000863] *BAD*gran_size: 16M 	chunk_size: 512M 	num_reg: 10  	lose cover RAM: -178M
[    0.000864] *BAD*gran_size: 16M 	chunk_size: 1G 	num_reg: 10  	lose cover RAM: -178M
[    0.000865] *BAD*gran_size: 16M 	chunk_size: 2G 	num_reg: 10  	lose cover RAM: -1202M
[    0.000866]  gran_size: 32M 	chunk_size: 32M 	num_reg: 10  	lose cover RAM: 30M
[    0.000868]  gran_size: 32M 	chunk_size: 64M 	num_reg: 9  	lose cover RAM: 30M
[    0.000869]  gran_size: 32M 	chunk_size: 128M 	num_reg: 9  	lose cover RAM: 30M
[    0.000870]  gran_size: 32M 	chunk_size: 256M 	num_reg: 9  	lose cover RAM: 30M
[    0.000871]  gran_size: 32M 	chunk_size: 512M 	num_reg: 9  	lose cover RAM: 30M
[    0.000872]  gran_size: 32M 	chunk_size: 1G 	num_reg: 9  	lose cover RAM: 30M
[    0.000873]  gran_size: 32M 	chunk_size: 2G 	num_reg: 10  	lose cover RAM: 30M
[    0.000875]  gran_size: 64M 	chunk_size: 64M 	num_reg: 9  	lose cover RAM: 62M
[    0.000876]  gran_size: 64M 	chunk_size: 128M 	num_reg: 9  	lose cover RAM: 62M
[    0.000877]  gran_size: 64M 	chunk_size: 256M 	num_reg: 9  	lose cover RAM: 62M
[    0.000878]  gran_size: 64M 	chunk_size: 512M 	num_reg: 9  	lose cover RAM: 62M
[    0.000879]  gran_size: 64M 	chunk_size: 1G 	num_reg: 9  	lose cover RAM: 62M
[    0.000880]  gran_size: 64M 	chunk_size: 2G 	num_reg: 10  	lose cover RAM: 62M
[    0.000881]  gran_size: 128M 	chunk_size: 128M 	num_reg: 8  	lose cover RAM: 126M
[    0.000883]  gran_size: 128M 	chunk_size: 256M 	num_reg: 9  	lose cover RAM: 126M
[    0.000884]  gran_size: 128M 	chunk_size: 512M 	num_reg: 9  	lose cover RAM: 126M
[    0.000885]  gran_size: 128M 	chunk_size: 1G 	num_reg: 9  	lose cover RAM: 126M
[    0.000886]  gran_size: 128M 	chunk_size: 2G 	num_reg: 10  	lose cover RAM: 126M
[    0.000887]  gran_size: 256M 	chunk_size: 256M 	num_reg: 7  	lose cover RAM: 254M
[    0.000888]  gran_size: 256M 	chunk_size: 512M 	num_reg: 7  	lose cover RAM: 254M
[    0.000889]  gran_size: 256M 	chunk_size: 1G 	num_reg: 8  	lose cover RAM: 254M
[    0.000891]  gran_size: 256M 	chunk_size: 2G 	num_reg: 9  	lose cover RAM: 254M
[    0.000892]  gran_size: 512M 	chunk_size: 512M 	num_reg: 6  	lose cover RAM: 510M
[    0.000893]  gran_size: 512M 	chunk_size: 1G 	num_reg: 8  	lose cover RAM: 510M
[    0.000894]  gran_size: 512M 	chunk_size: 2G 	num_reg: 9  	lose cover RAM: 510M
[    0.000895]  gran_size: 1G 	chunk_size: 1G 	num_reg: 4  	lose cover RAM: 1534M
[    0.000896]  gran_size: 1G 	chunk_size: 2G 	num_reg: 4  	lose cover RAM: 1534M
[    0.000897]  gran_size: 2G 	chunk_size: 2G 	num_reg: 4  	lose cover RAM: 1534M
[    0.000898] mtrr_cleanup: can not find optimal value
[    0.000899] please specify mtrr_gran_size/mtrr_chunk_size
[    0.000903] e820: update [mem 0xae000000-0xffffffff] usable ==> reserved
[    0.000907] last_pfn = 0xac000 max_arch_pfn = 0x400000000
[    0.008487] esrt: Reserving ESRT space from 0x00000000abf50898 to 0x00000000abf508d0.
[    0.008510] Using GB pages for direct mapping
[    0.008832] Secure boot disabled
[    0.008833] RAMDISK: [mem 0x2ef85000-0x337b9fff]
[    0.008837] ACPI: Early table checksum verification disabled
[    0.008840] ACPI: RSDP 0x00000000AA6E8000 000024 (v02 ALASKA)
[    0.008843] ACPI: XSDT 0x00000000AA6E8090 000094 (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.008849] ACPI: FACP 0x00000000AA6F6328 00010C (v05 ALASKA A M I    01072009 AMI  00010013)
[    0.008854] ACPI: DSDT 0x00000000AA6E81B8 00E16C (v02 ALASKA A M I    00000031 INTL 20091112)
[    0.008856] ACPI: FACS 0x00000000AAC4F080 000040
[    0.008859] ACPI: APIC 0x00000000AA6F6438 000092 (v03 ALASKA A M I    01072009 AMI  00010013)
[    0.008861] ACPI: FPDT 0x00000000AA6F64D0 000044 (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.008864] ACPI: ASF! 0x00000000AA6F6518 0000A5 (v32 INTEL   HCG     00000001 TFSM 000F4240)
[    0.008867] ACPI: LPIT 0x00000000AA6F65C0 00005C (v01 ALASKA A M I    00000000 AMI. 00000005)
[    0.008869] ACPI: SSDT 0x00000000AA6F6620 000539 (v01 PmRef  Cpu0Ist  00003000 INTL 20091112)
[    0.008872] ACPI: SSDT 0x00000000AA6F6B60 000AD8 (v01 PmRef  CpuPm    00003000 INTL 20091112)
[    0.008875] ACPI: MCFG 0x00000000AA6F7638 00003C (v01 ALASKA A M I    01072009 MSFT 00000097)
[    0.008877] ACPI: HPET 0x00000000AA6F7678 000038 (v01 ALASKA A M I    01072009 AMI. 00000005)
[    0.008880] ACPI: SSDT 0x00000000AA6F76B0 00036D (v01 SataRe SataTabl 00001000 INTL 20091112)
[    0.008883] ACPI: SSDT 0x00000000AA6F7A20 0034E1 (v01 SaSsdt SaSsdt   00003000 INTL 20091112)
[    0.008885] ACPI: DMAR 0x00000000AA700C20 0000B8 (v01 INTEL  HSW      00000001 INTL 00000001)
[    0.008888] ACPI: VFCT 0x00000000AA6FAF60 005C84 (v01 ALASKA A M I    00000001 AMD  31504F47)
[    0.008891] ACPI: BGRT 0x00000000AA700BE8 000038 (v00 ALASKA A M I    01072009 AMI  00010013)
[    0.008893] ACPI: Reserving FACP table memory at [mem 0xaa6f6328-0xaa6f6433]
[    0.008894] ACPI: Reserving DSDT table memory at [mem 0xaa6e81b8-0xaa6f6323]
[    0.008895] ACPI: Reserving FACS table memory at [mem 0xaac4f080-0xaac4f0bf]
[    0.008896] ACPI: Reserving APIC table memory at [mem 0xaa6f6438-0xaa6f64c9]
[    0.008897] ACPI: Reserving FPDT table memory at [mem 0xaa6f64d0-0xaa6f6513]
[    0.008898] ACPI: Reserving ASF! table memory at [mem 0xaa6f6518-0xaa6f65bc]
[    0.008899] ACPI: Reserving LPIT table memory at [mem 0xaa6f65c0-0xaa6f661b]
[    0.008900] ACPI: Reserving SSDT table memory at [mem 0xaa6f6620-0xaa6f6b58]
[    0.008901] ACPI: Reserving SSDT table memory at [mem 0xaa6f6b60-0xaa6f7637]
[    0.008902] ACPI: Reserving MCFG table memory at [mem 0xaa6f7638-0xaa6f7673]
[    0.008903] ACPI: Reserving HPET table memory at [mem 0xaa6f7678-0xaa6f76af]
[    0.008904] ACPI: Reserving SSDT table memory at [mem 0xaa6f76b0-0xaa6f7a1c]
[    0.008905] ACPI: Reserving SSDT table memory at [mem 0xaa6f7a20-0xaa6faf00]
[    0.008906] ACPI: Reserving DMAR table memory at [mem 0xaa700c20-0xaa700cd7]
[    0.008907] ACPI: Reserving VFCT table memory at [mem 0xaa6faf60-0xaa700be3]
[    0.008908] ACPI: Reserving BGRT table memory at [mem 0xaa700be8-0xaa700c1f]
[    0.008949] No NUMA configuration found
[    0.008950] Faking a node at [mem 0x0000000000000000-0x0000000831dfffff]
[    0.008954] NODE_DATA(0) allocated [mem 0x831dfb000-0x831dfffff]
[    0.009003] Zone ranges:
[    0.009004]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.009006]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
[    0.009007]   Normal   [mem 0x0000000100000000-0x0000000831dfffff]
[    0.009008]   Device   empty
[    0.009009] Movable zone start for each node
[    0.009009] Early memory node ranges
[    0.009010]   node   0: [mem 0x0000000000001000-0x0000000000057fff]
[    0.009011]   node   0: [mem 0x0000000000059000-0x000000000008ffff]
[    0.009012]   node   0: [mem 0x0000000000091000-0x000000000009dfff]
[    0.009012]   node   0: [mem 0x0000000000100000-0x0000000094f58fff]
[    0.009013]   node   0: [mem 0x0000000094f60000-0x00000000953b8fff]
[    0.009014]   node   0: [mem 0x000000009583e000-0x00000000a9232fff]
[    0.009015]   node   0: [mem 0x00000000abfff000-0x00000000abffffff]
[    0.009016]   node   0: [mem 0x0000000100000000-0x0000000831dfffff]
[    0.009019] Initmem setup node 0 [mem 0x0000000000001000-0x0000000831dfffff]
[    0.009023] On node 0, zone DMA: 1 pages in unavailable ranges
[    0.009024] On node 0, zone DMA: 1 pages in unavailable ranges
[    0.009025] On node 0, zone DMA: 1 pages in unavailable ranges
[    0.009045] On node 0, zone DMA: 98 pages in unavailable ranges
[    0.013168] On node 0, zone DMA32: 7 pages in unavailable ranges
[    0.013753] On node 0, zone DMA32: 1157 pages in unavailable ranges
[    0.013857] On node 0, zone DMA32: 11724 pages in unavailable ranges
[    0.067942] On node 0, zone Normal: 16384 pages in unavailable ranges
[    0.068167] On node 0, zone Normal: 25088 pages in unavailable ranges
[    0.068183] Reserving Intel graphics memory at [mem 0xae200000-0xce1fffff]
[    0.068256] ACPI: PM-Timer IO Port: 0x1808
[    0.068263] ACPI: LAPIC_NMI (acpi_id[0xff] high edge lint[0x1])
[    0.068273] IOAPIC[0]: apic_id 8, version 32, address 0xfec00000, GSI 0-23
[    0.068276] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.068277] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.068281] ACPI: Using ACPI (MADT) for SMP configuration information
[    0.068282] ACPI: HPET id: 0x8086a701 base: 0xfed00000
[    0.068287] efi_bgrt: Ignoring BGRT: invalid image address
[    0.068289] TSC deadline timer available
[    0.068290] smpboot: Allowing 8 CPUs, 0 hotplug CPUs
[    0.068320] PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff]
[    0.068322] PM: hibernation: Registered nosave memory: [mem 0x00058000-0x00058fff]
[    0.068324] PM: hibernation: Registered nosave memory: [mem 0x00090000-0x00090fff]
[    0.068326] PM: hibernation: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[    0.068327] PM: hibernation: Registered nosave memory: [mem 0x000a0000-0x000fffff]
[    0.068329] PM: hibernation: Registered nosave memory: [mem 0x94f59000-0x94f5ffff]
[    0.068331] PM: hibernation: Registered nosave memory: [mem 0x953b9000-0x9583dfff]
[    0.068333] PM: hibernation: Registered nosave memory: [mem 0xa9233000-0xaa6bffff]
[    0.068333] PM: hibernation: Registered nosave memory: [mem 0xaa6c0000-0xaa700fff]
[    0.068334] PM: hibernation: Registered nosave memory: [mem 0xaa701000-0xaac50fff]
[    0.068335] PM: hibernation: Registered nosave memory: [mem 0xaac51000-0xabf51fff]
[    0.068335] PM: hibernation: Registered nosave memory: [mem 0xabf52000-0xabffefff]
[    0.068337] PM: hibernation: Registered nosave memory: [mem 0xac000000-0xadffffff]
[    0.068338] PM: hibernation: Registered nosave memory: [mem 0xae000000-0xce1fffff]
[    0.068338] PM: hibernation: Registered nosave memory: [mem 0xce200000-0xf7ffffff]
[    0.068339] PM: hibernation: Registered nosave memory: [mem 0xf8000000-0xfbffffff]
[    0.068339] PM: hibernation: Registered nosave memory: [mem 0xfc000000-0xfebfffff]
[    0.068340] PM: hibernation: Registered nosave memory: [mem 0xfec00000-0xfec00fff]
[    0.068341] PM: hibernation: Registered nosave memory: [mem 0xfec01000-0xfecfffff]
[    0.068341] PM: hibernation: Registered nosave memory: [mem 0xfed00000-0xfed03fff]
[    0.068342] PM: hibernation: Registered nosave memory: [mem 0xfed04000-0xfed1bfff]
[    0.068342] PM: hibernation: Registered nosave memory: [mem 0xfed1c000-0xfed1ffff]
[    0.068343] PM: hibernation: Registered nosave memory: [mem 0xfed20000-0xfedfffff]
[    0.068344] PM: hibernation: Registered nosave memory: [mem 0xfee00000-0xfee00fff]
[    0.068344] PM: hibernation: Registered nosave memory: [mem 0xfee01000-0xfeffffff]
[    0.068345] PM: hibernation: Registered nosave memory: [mem 0xff000000-0xffffffff]
[    0.068346] [mem 0xce200000-0xf7ffffff] available for PCI devices
[    0.068347] Booting paravirtualized kernel on bare hardware
[    0.068349] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370452778343963 ns
[    0.073064] setup_percpu: NR_CPUS:320 nr_cpumask_bits:8 nr_cpu_ids:8 nr_node_ids:1
[    0.073280] percpu: Embedded 63 pages/cpu s221184 r8192 d28672 u262144
[    0.073292] pcpu-alloc: s221184 r8192 d28672 u262144 alloc=1*2097152
[    0.073294] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 
[    0.073318] Fallback order for Node 0: 0 
[    0.073321] Built 1 zonelists, mobility grouping on.  Total pages: 8107001
[    0.073322] Policy zone: Normal
[    0.073323] Kernel command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=c6ac6634-cca6-4056-afb1-b6d1fd2c44a2 rw loglevel=3 sysrq_always_enabled consoleblank=300 max_loop=64 intel_iommu=on iommu=pt
[    0.073386] sysrq: sysrq always enabled.
[    0.073418] DMAR: IOMMU enabled
[    0.073434] Unknown kernel command line parameters "BOOT_IMAGE=/vmlinuz-linux max_loop=64", will be passed to user space.
[    0.073458] random: crng init done
[    0.075093] Dentry cache hash table entries: 4194304 (order: 13, 33554432 bytes, linear)
[    0.075937] Inode-cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
[    0.076120] mem auto-init: stack:all(zero), heap alloc:on, heap free:off
[    0.076128] software IO TLB: area num 8.
[    0.165974] Memory: 32107016K/32943372K available (16391K kernel code, 2160K rwdata, 11076K rodata, 2144K init, 3332K bss, 836096K reserved, 0K cma-reserved)
[    0.166100] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[    0.166112] Kernel/User page tables isolation: enabled
[    0.166127] ftrace: allocating 46413 entries in 182 pages
[    0.173350] ftrace: allocated 182 pages with 5 groups
[    0.173417] Dynamic Preempt: full
[    0.173447] rcu: Preemptible hierarchical RCU implementation.
[    0.173448] rcu: 	RCU restricting CPUs from NR_CPUS=320 to nr_cpu_ids=8.
[    0.173448] rcu: 	RCU priority boosting: priority 1 delay 500 ms.
[    0.173449] 	Trampoline variant of Tasks RCU enabled.
[    0.173450] 	Rude variant of Tasks RCU enabled.
[    0.173450] 	Tracing variant of Tasks RCU enabled.
[    0.173451] rcu: RCU calculated value of scheduler-enlistment delay is 30 jiffies.
[    0.173451] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=8
[    0.177261] NR_IRQS: 20736, nr_irqs: 488, preallocated irqs: 16
[    0.177429] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.177531] kfence: initialized - using 2097152 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____)
[    0.177553] Console: colour dummy device 80x25
[    0.177581] printk: console [tty0] enabled
[    0.177601] ACPI: Core revision 20220331
[    0.177713] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 133484882848 ns
[    0.177724] APIC: Switch to symmetric I/O mode setup
[    0.177726] DMAR: Host address width 39
[    0.177727] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[    0.177732] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap c0000020660462 ecap f0101a
[    0.177734] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[    0.177737] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008020660462 ecap f010da
[    0.177738] DMAR: RMRR base: 0x000000abe74000 end: 0x000000abe82fff
[    0.177739] DMAR: RMRR base: 0x000000ae000000 end: 0x000000ce1fffff
[    0.177741] DMAR-IR: IOAPIC id 8 under DRHD base  0xfed91000 IOMMU 1
[    0.177743] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[    0.177743] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[    0.178255] DMAR-IR: Enabled IRQ remapping in x2apic mode
[    0.178257] x2apic enabled
[    0.178262] Switched APIC routing to cluster x2apic.
[    0.178658] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.194393] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x2c94d933972, max_idle_ns: 440795249834 ns
[    0.194397] Calibrating delay loop (skipped), value calculated using timer frequency.. 6188.41 BogoMIPS (lpj=10309456)
[    0.194399] pid_max: default: 32768 minimum: 301
[    0.197699] LSM: Security Framework initializing
[    0.197704] landlock: Up and running.
[    0.197706] Yama: becoming mindful.
[    0.197713] LSM support for eBPF active
[    0.197790] Mount-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.197850] Mountpoint-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.198056] CPU0: Thermal monitoring enabled (TM1)
[    0.198083] process: using mwait in idle threads
[    0.198085] Last level iTLB entries: 4KB 1024, 2MB 1024, 4MB 1024
[    0.198087] Last level dTLB entries: 4KB 1024, 2MB 1024, 4MB 1024, 1GB 4
[    0.198090] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
[    0.198092] Spectre V2 : Mitigation: Retpolines
[    0.198093] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
[    0.198094] Spectre V2 : Spectre v2 / SpectreRSB : Filling RSB on VMEXIT
[    0.198094] Spectre V2 : Enabling Restricted Speculation for firmware calls
[    0.198095] Spectre V2 : mitigation: Enabling conditional Indirect Branch Prediction Barrier
[    0.198097] Spectre V2 : User space: Mitigation: STIBP via prctl
[    0.198098] Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl
[    0.198100] MDS: Mitigation: Clear CPU buffers
[    0.198101] MMIO Stale Data: Unknown: No mitigations
[    0.198102] SRBDS: Mitigation: Microcode
[    0.212693] Freeing SMP alternatives memory: 40K
[    0.213280] smpboot: CPU0: Intel(R) Core(TM) i7-4770S CPU @ 3.10GHz (family: 0x6, model: 0x3c, stepping: 0x3)
[    0.213398] cblist_init_generic: Setting adjustable number of callback queues.
[    0.213399] cblist_init_generic: Setting shift to 3 and lim to 1.
[    0.213411] cblist_init_generic: Setting shift to 3 and lim to 1.
[    0.213423] cblist_init_generic: Setting shift to 3 and lim to 1.
[    0.213432] Performance Events: PEBS fmt2+, Haswell events, 16-deep LBR, full-width counters, Intel PMU driver.
[    0.213464] ... version:                3
[    0.213465] ... bit width:              48
[    0.213466] ... generic registers:      4
[    0.213466] ... value mask:             0000ffffffffffff
[    0.213467] ... max period:             00007fffffffffff
[    0.213468] ... fixed-purpose events:   3
[    0.213468] ... event mask:             000000070000000f
[    0.213590] Estimated ratio of average max frequency by base frequency (times 1024): 1156
[    0.213606] rcu: Hierarchical SRCU implementation.
[    0.213607] rcu: 	Max phase no-delay instances is 1000.
[    0.214356] NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.
[    0.214395] smp: Bringing up secondary CPUs ...
[    0.214395] x86: Booting SMP configuration:
[    0.214395] .... node  #0, CPUs:      #1 #2 #3 #4
[    0.218528] MDS CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html for more details.
[    0.218528]  #5 #6 #7
[    0.218528] smp: Brought up 1 node, 8 CPUs
[    0.218528] smpboot: Max logical packages: 1
[    0.218528] smpboot: Total of 8 processors activated (49505.28 BogoMIPS)
[    0.221929] devtmpfs: initialized
[    0.221929] x86/mm: Memory block size: 128MB
[    0.222750] ACPI: PM: Registering ACPI NVS region [mem 0x94f59000-0x94f5ffff] (28672 bytes)
[    0.222750] ACPI: PM: Registering ACPI NVS region [mem 0xaa701000-0xaac50fff] (5570560 bytes)
[    0.222750] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370867519511994 ns
[    0.222750] futex hash table entries: 2048 (order: 5, 131072 bytes, linear)
[    0.222750] pinctrl core: initialized pinctrl subsystem
[    0.222750] PM: RTC time: 04:24:37, date: 2023-02-24
[    0.222750] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.224656] DMA: preallocated 4096 KiB GFP_KERNEL pool for atomic allocations
[    0.224889] DMA: preallocated 4096 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.225123] DMA: preallocated 4096 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.225134] audit: initializing netlink subsys (disabled)
[    0.225140] audit: type=2000 audit(1677212677.046:1): state=initialized audit_enabled=0 res=1
[    0.225140] thermal_sys: Registered thermal governor 'fair_share'
[    0.225140] thermal_sys: Registered thermal governor 'bang_bang'
[    0.225140] thermal_sys: Registered thermal governor 'step_wise'
[    0.225140] thermal_sys: Registered thermal governor 'user_space'
[    0.225140] thermal_sys: Registered thermal governor 'power_allocator'
[    0.225140] cpuidle: using governor ladder
[    0.225140] cpuidle: using governor menu
[    0.225140] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
[    0.225140] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.225140] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xf8000000-0xfbffffff] (base 0xf8000000)
[    0.225140] PCI: MMCONFIG at [mem 0xf8000000-0xfbffffff] reserved in E820
[    0.225140] pmd_set_huge: Cannot satisfy [mem 0xf8000000-0xf8200000] with a huge-page mapping due to MTRR override.
[    0.225140] PCI: Using configuration type 1 for base access
[    0.225140] core: PMU erratum BJ122, BV98, HSD29 worked around, HT is on
[    0.225140] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.225678] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.234425] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
[    0.234425] HugeTLB: 16380 KiB vmemmap can be freed for a 1.00 GiB page
[    0.234425] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[    0.234425] HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
[    0.236440] ACPI: Added _OSI(Module Device)
[    0.236440] ACPI: Added _OSI(Processor Device)
[    0.236440] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.236440] ACPI: Added _OSI(Processor Aggregator Device)
[    0.250718] ACPI: 5 ACPI AML tables successfully acquired and loaded
[    0.252395] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[    0.253706] ACPI: Dynamic OEM Table Load:
[    0.253714] ACPI: SSDT 0xFFFF95F681047400 0003D3 (v01 PmRef  Cpu0Cst  00003001 INTL 20091112)
[    0.254566] ACPI: Dynamic OEM Table Load:
[    0.254572] ACPI: SSDT 0xFFFF95F6816CC800 0005AA (v01 PmRef  ApIst    00003000 INTL 20091112)
[    0.255378] ACPI: Dynamic OEM Table Load:
[    0.255381] ACPI: SSDT 0xFFFF95F681734E00 000119 (v01 PmRef  ApCst    00003000 INTL 20091112)
[    0.257905] ACPI: Interpreter enabled
[    0.257930] ACPI: PM: (supports S0 S3 S4 S5)
[    0.257931] ACPI: Using IOAPIC for interrupt routing
[    0.257956] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.257957] PCI: Using E820 reservations for host bridge windows
[    0.258393] ACPI: Enabled 10 GPEs in block 00 to 3F
[    0.268644] ACPI: PM: Power Resource [FN00]
[    0.268706] ACPI: PM: Power Resource [FN01]
[    0.268764] ACPI: PM: Power Resource [FN02]
[    0.268821] ACPI: PM: Power Resource [FN03]
[    0.268878] ACPI: PM: Power Resource [FN04]
[    0.269590] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-3e])
[    0.269596] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI EDR HPX-Type3]
[    0.269757] acpi PNP0A08:00: _OSC: platform does not support [PCIeHotplug SHPCHotplug PME]
[    0.269916] acpi PNP0A08:00: _OSC: OS now controls [AER PCIeCapability LTR DPC]
[    0.269918] acpi PNP0A08:00: FADT indicates ASPM is unsupported, using BIOS configuration
[    0.270398] PCI host bridge to bus 0000:00
[    0.270400] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
[    0.270402] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
[    0.270404] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000dffff window]
[    0.270405] pci_bus 0000:00: root bus resource [mem 0xce200000-0xfeafffff window]
[    0.270406] pci_bus 0000:00: root bus resource [bus 00-3e]
[    0.270419] pci 0000:00:00.0: [8086:0c00] type 00 class 0x060000
[    0.270477] pci 0000:00:01.0: [8086:0c01] type 01 class 0x060400
[    0.270511] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold
[    0.270826] pci 0000:00:02.0: [8086:0412] type 00 class 0x030000
[    0.270834] pci 0000:00:02.0: reg 0x10: [mem 0xf7400000-0xf77fffff 64bit]
[    0.270839] pci 0000:00:02.0: reg 0x18: [mem 0xd0000000-0xdfffffff 64bit pref]
[    0.270842] pci 0000:00:02.0: reg 0x20: [io  0xf000-0xf03f]
[    0.270853] pci 0000:00:02.0: BAR 2: assigned to efifb
[    0.270856] pci 0000:00:02.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[    0.270928] pci 0000:00:03.0: [8086:0c0c] type 00 class 0x040300
[    0.270934] pci 0000:00:03.0: reg 0x10: [mem 0xf7d34000-0xf7d37fff 64bit]
[    0.271016] pci 0000:00:14.0: [8086:8c31] type 00 class 0x0c0330
[    0.271031] pci 0000:00:14.0: reg 0x10: [mem 0xf7d20000-0xf7d2ffff 64bit]
[    0.271084] pci 0000:00:14.0: PME# supported from D3hot D3cold
[    0.271171] pci 0000:00:19.0: [8086:153a] type 00 class 0x020000
[    0.271183] pci 0000:00:19.0: reg 0x10: [mem 0xf7d00000-0xf7d1ffff]
[    0.271190] pci 0000:00:19.0: reg 0x14: [mem 0xf7d3c000-0xf7d3cfff]
[    0.271197] pci 0000:00:19.0: reg 0x18: [io  0xf060-0xf07f]
[    0.271247] pci 0000:00:19.0: PME# supported from D0 D3hot D3cold
[    0.271309] pci 0000:00:1a.0: [8086:8c2d] type 00 class 0x0c0320
[    0.271323] pci 0000:00:1a.0: reg 0x10: [mem 0xf7d3b000-0xf7d3b3ff]
[    0.271396] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold
[    0.271461] pci 0000:00:1b.0: [8086:8c20] type 00 class 0x040300
[    0.271473] pci 0000:00:1b.0: reg 0x10: [mem 0xf7d30000-0xf7d33fff 64bit]
[    0.271528] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.271594] pci 0000:00:1c.0: [8086:8c10] type 01 class 0x060400
[    0.271662] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.271679] pci 0000:00:1c.0: Enabling MPC IRBNCE
[    0.271681] pci 0000:00:1c.0: Intel PCH root port ACS workaround enabled
[    0.271975] pci 0000:00:1c.4: [8086:8c18] type 01 class 0x060400
[    0.272043] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold
[    0.272060] pci 0000:00:1c.4: Enabling MPC IRBNCE
[    0.272062] pci 0000:00:1c.4: Intel PCH root port ACS workaround enabled
[    0.272357] pci 0000:00:1d.0: [8086:8c26] type 00 class 0x0c0320
[    0.272372] pci 0000:00:1d.0: reg 0x10: [mem 0xf7d3a000-0xf7d3a3ff]
[    0.272446] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[    0.272518] pci 0000:00:1f.0: [8086:8c4e] type 00 class 0x060100
[    0.272673] pci 0000:00:1f.3: [8086:8c22] type 00 class 0x0c0500
[    0.272688] pci 0000:00:1f.3: reg 0x10: [mem 0xf7d39000-0xf7d390ff 64bit]
[    0.272705] pci 0000:00:1f.3: reg 0x20: [io  0xf040-0xf05f]
[    0.272791] pci 0000:01:00.0: [1002:6798] type 00 class 0x030000
[    0.272800] pci 0000:01:00.0: reg 0x10: [mem 0xe0000000-0xefffffff 64bit pref]
[    0.272806] pci 0000:01:00.0: reg 0x18: [mem 0xf7c00000-0xf7c3ffff 64bit]
[    0.272811] pci 0000:01:00.0: reg 0x20: [io  0xe000-0xe0ff]
[    0.272818] pci 0000:01:00.0: reg 0x30: [mem 0xf7c40000-0xf7c5ffff pref]
[    0.272831] pci 0000:01:00.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[    0.272855] pci 0000:01:00.0: supports D1 D2
[    0.272856] pci 0000:01:00.0: PME# supported from D1 D2 D3hot
[    0.272938] pci 0000:01:00.1: [1002:aaa0] type 00 class 0x040300
[    0.272946] pci 0000:01:00.1: reg 0x10: [mem 0xf7c60000-0xf7c63fff 64bit]
[    0.272984] pci 0000:01:00.1: supports D1 D2
[    0.273028] pci 0000:00:01.0: PCI bridge to [bus 01]
[    0.273030] pci 0000:00:01.0:   bridge window [io  0xe000-0xefff]
[    0.273032] pci 0000:00:01.0:   bridge window [mem 0xf7c00000-0xf7cfffff]
[    0.273035] pci 0000:00:01.0:   bridge window [mem 0xe0000000-0xefffffff 64bit pref]
[    0.273085] acpiphp: Slot [1] registered
[    0.273090] pci 0000:00:1c.0: PCI bridge to [bus 02]
[    0.273152] pci 0000:03:00.0: [1b21:1812] type 01 class 0x060400
[    0.273204] pci 0000:03:00.0: enabling Extended Tags
[    0.273280] pci 0000:03:00.0: PME# supported from D0 D3hot D3cold
[    0.273344] pci 0000:03:00.0: 16.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x4 link at 0000:00:1c.4 (capable of 63.008 Gb/s with 8.0 GT/s PCIe x8 link)
[    0.273445] pci 0000:00:1c.4: PCI bridge to [bus 03-0a]
[    0.273448] pci 0000:00:1c.4:   bridge window [io  0xa000-0xdfff]
[    0.273450] pci 0000:00:1c.4:   bridge window [mem 0xf7800000-0xf7bfffff]
[    0.273503] pci 0000:04:00.0: [1b21:1812] type 01 class 0x060400
[    0.273556] pci 0000:04:00.0: enabling Extended Tags
[    0.273638] pci 0000:04:00.0: PME# supported from D0 D3hot D3cold
[    0.273783] pci 0000:04:02.0: [1b21:1812] type 01 class 0x060400
[    0.273836] pci 0000:04:02.0: enabling Extended Tags
[    0.273917] pci 0000:04:02.0: PME# supported from D0 D3hot D3cold
[    0.274051] pci 0000:04:03.0: [1b21:1812] type 01 class 0x060400
[    0.274103] pci 0000:04:03.0: enabling Extended Tags
[    0.274181] pci 0000:04:03.0: PME# supported from D0 D3hot D3cold
[    0.274319] pci 0000:04:08.0: [1b21:1812] type 01 class 0x060400
[    0.274372] pci 0000:04:08.0: enabling Extended Tags
[    0.274451] pci 0000:04:08.0: PME# supported from D0 D3hot D3cold
[    0.274586] pci 0000:04:0a.0: [1b21:1812] type 01 class 0x060400
[    0.274639] pci 0000:04:0a.0: enabling Extended Tags
[    0.274717] pci 0000:04:0a.0: PME# supported from D0 D3hot D3cold
[    0.274850] pci 0000:04:0b.0: [1b21:1812] type 01 class 0x060400
[    0.274903] pci 0000:04:0b.0: enabling Extended Tags
[    0.274981] pci 0000:04:0b.0: PME# supported from D0 D3hot D3cold
[    0.275124] pci 0000:03:00.0: PCI bridge to [bus 04-0a]
[    0.275129] pci 0000:03:00.0:   bridge window [io  0xa000-0xdfff]
[    0.275133] pci 0000:03:00.0:   bridge window [mem 0xf7800000-0xf7bfffff]
[    0.275171] pci 0000:04:00.0: PCI bridge to [bus 05]
[    0.275217] pci 0000:04:02.0: PCI bridge to [bus 06]
[    0.275289] pci 0000:07:00.0: [10ec:8125] type 00 class 0x020000
[    0.275315] pci 0000:07:00.0: reg 0x10: [io  0xd000-0xd0ff]
[    0.275348] pci 0000:07:00.0: reg 0x18: [mem 0xf7b00000-0xf7b0ffff 64bit]
[    0.275369] pci 0000:07:00.0: reg 0x20: [mem 0xf7b10000-0xf7b13fff 64bit]
[    0.275547] pci 0000:07:00.0: supports D1 D2
[    0.275548] pci 0000:07:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.275877] pci 0000:04:03.0: PCI bridge to [bus 07]
[    0.275883] pci 0000:04:03.0:   bridge window [io  0xd000-0xdfff]
[    0.275886] pci 0000:04:03.0:   bridge window [mem 0xf7b00000-0xf7bfffff]
[    0.275954] pci 0000:08:00.0: [10ec:8125] type 00 class 0x020000
[    0.275980] pci 0000:08:00.0: reg 0x10: [io  0xc000-0xc0ff]
[    0.276013] pci 0000:08:00.0: reg 0x18: [mem 0xf7a00000-0xf7a0ffff 64bit]
[    0.276034] pci 0000:08:00.0: reg 0x20: [mem 0xf7a10000-0xf7a13fff 64bit]
[    0.276213] pci 0000:08:00.0: supports D1 D2
[    0.276214] pci 0000:08:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.276543] pci 0000:04:08.0: PCI bridge to [bus 08]
[    0.276548] pci 0000:04:08.0:   bridge window [io  0xc000-0xcfff]
[    0.276551] pci 0000:04:08.0:   bridge window [mem 0xf7a00000-0xf7afffff]
[    0.276618] pci 0000:09:00.0: [10ec:8125] type 00 class 0x020000
[    0.276644] pci 0000:09:00.0: reg 0x10: [io  0xb000-0xb0ff]
[    0.276676] pci 0000:09:00.0: reg 0x18: [mem 0xf7900000-0xf790ffff 64bit]
[    0.276698] pci 0000:09:00.0: reg 0x20: [mem 0xf7910000-0xf7913fff 64bit]
[    0.276879] pci 0000:09:00.0: supports D1 D2
[    0.276880] pci 0000:09:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.277208] pci 0000:04:0a.0: PCI bridge to [bus 09]
[    0.277214] pci 0000:04:0a.0:   bridge window [io  0xb000-0xbfff]
[    0.277217] pci 0000:04:0a.0:   bridge window [mem 0xf7900000-0xf79fffff]
[    0.277286] pci 0000:0a:00.0: [10ec:8125] type 00 class 0x020000
[    0.277312] pci 0000:0a:00.0: reg 0x10: [io  0xa000-0xa0ff]
[    0.277345] pci 0000:0a:00.0: reg 0x18: [mem 0xf7800000-0xf780ffff 64bit]
[    0.277366] pci 0000:0a:00.0: reg 0x20: [mem 0xf7810000-0xf7813fff 64bit]
[    0.277546] pci 0000:0a:00.0: supports D1 D2
[    0.277547] pci 0000:0a:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.277883] pci 0000:04:0b.0: PCI bridge to [bus 0a]
[    0.277888] pci 0000:04:0b.0:   bridge window [io  0xa000-0xafff]
[    0.277892] pci 0000:04:0b.0:   bridge window [mem 0xf7800000-0xf78fffff]
[    0.278824] ACPI: PCI: Interrupt link LNKA configured for IRQ 0
[    0.278826] ACPI: PCI: Interrupt link LNKA disabled
[    0.278876] ACPI: PCI: Interrupt link LNKB configured for IRQ 0
[    0.278877] ACPI: PCI: Interrupt link LNKB disabled
[    0.278925] ACPI: PCI: Interrupt link LNKC configured for IRQ 0
[    0.278926] ACPI: PCI: Interrupt link LNKC disabled
[    0.278973] ACPI: PCI: Interrupt link LNKD configured for IRQ 0
[    0.278974] ACPI: PCI: Interrupt link LNKD disabled
[    0.279021] ACPI: PCI: Interrupt link LNKE configured for IRQ 0
[    0.279022] ACPI: PCI: Interrupt link LNKE disabled
[    0.279069] ACPI: PCI: Interrupt link LNKF configured for IRQ 0
[    0.279070] ACPI: PCI: Interrupt link LNKF disabled
[    0.279117] ACPI: PCI: Interrupt link LNKG configured for IRQ 0
[    0.279118] ACPI: PCI: Interrupt link LNKG disabled
[    0.279165] ACPI: PCI: Interrupt link LNKH configured for IRQ 0
[    0.279166] ACPI: PCI: Interrupt link LNKH disabled
[    0.279556] iommu: Default domain type: Passthrough (set via kernel command line)
[    0.279556] SCSI subsystem initialized
[    0.279556] libata version 3.00 loaded.
[    0.279556] ACPI: bus type USB registered
[    0.279556] usbcore: registered new interface driver usbfs
[    0.279556] usbcore: registered new interface driver hub
[    0.279556] usbcore: registered new device driver usb
[    0.279556] pps_core: LinuxPPS API ver. 1 registered
[    0.279556] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.279556] PTP clock support registered
[    0.279556] EDAC MC: Ver: 3.0.0
[    0.279556] Registered efivars operations
[    0.279556] NetLabel: Initializing
[    0.279556] NetLabel:  domain hash size = 128
[    0.279556] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.279556] NetLabel:  unlabeled traffic allowed by default
[    0.279556] mctp: management component transport protocol core
[    0.279556] NET: Registered PF_MCTP protocol family
[    0.279556] PCI: Using ACPI for IRQ routing
[    0.281178] PCI: pci_cache_line_size set to 64 bytes
[    0.281238] e820: reserve RAM buffer [mem 0x00058000-0x0005ffff]
[    0.281240] e820: reserve RAM buffer [mem 0x0009e000-0x0009ffff]
[    0.281240] e820: reserve RAM buffer [mem 0x94f59000-0x97ffffff]
[    0.281242] e820: reserve RAM buffer [mem 0x953b9000-0x97ffffff]
[    0.281242] e820: reserve RAM buffer [mem 0xa9233000-0xabffffff]
[    0.281244] e820: reserve RAM buffer [mem 0x831e00000-0x833ffffff]
[    0.281254] pci 0000:00:02.0: vgaarb: setting as boot VGA device
[    0.281254] pci 0000:00:02.0: vgaarb: bridge control possible
[    0.281254] pci 0000:00:02.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[    0.281254] pci 0000:01:00.0: vgaarb: bridge control possible
[    0.281254] pci 0000:01:00.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[    0.281254] vgaarb: loaded
[    0.282129] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[    0.282135] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
[    0.284424] clocksource: Switched to clocksource tsc-early
[    0.284552] VFS: Disk quotas dquot_6.6.0
[    0.284567] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.284643] pnp: PnP ACPI init
[    0.284730] system 00:00: [mem 0xfed40000-0xfed44fff] has been reserved
[    0.284942] system 00:01: [io  0x0680-0x069f] has been reserved
[    0.284944] system 00:01: [io  0xffff] has been reserved
[    0.284946] system 00:01: [io  0xffff] has been reserved
[    0.284947] system 00:01: [io  0xffff] has been reserved
[    0.284948] system 00:01: [io  0x1c00-0x1cfe] has been reserved
[    0.284949] system 00:01: [io  0x1d00-0x1dfe] has been reserved
[    0.284951] system 00:01: [io  0x1e00-0x1efe] has been reserved
[    0.284952] system 00:01: [io  0x1f00-0x1ffe] has been reserved
[    0.284953] system 00:01: [io  0x1800-0x18fe] has been reserved
[    0.284954] system 00:01: [io  0x164e-0x164f] has been reserved
[    0.285016] system 00:03: [io  0x1854-0x1857] has been reserved
[    0.285101] system 00:04: [io  0x0290-0x029f] has been reserved
[    0.285365] pnp 00:05: [dma 0 disabled]
[    0.285498] system 00:06: [io  0x04d0-0x04d1] has been reserved
[    0.285693] pnp 00:07: [dma 0 disabled]
[    0.285914] pnp 00:08: [dma 0 disabled]
[    0.286339] system 00:09: [mem 0xfed1c000-0xfed1ffff] has been reserved
[    0.286342] system 00:09: [mem 0xfed10000-0xfed17fff] has been reserved
[    0.286343] system 00:09: [mem 0xfed18000-0xfed18fff] has been reserved
[    0.286345] system 00:09: [mem 0xfed19000-0xfed19fff] has been reserved
[    0.286347] system 00:09: [mem 0xf8000000-0xfbffffff] has been reserved
[    0.286348] system 00:09: [mem 0xfed20000-0xfed3ffff] has been reserved
[    0.286350] system 00:09: [mem 0xfed90000-0xfed93fff] could not be reserved
[    0.286351] system 00:09: [mem 0xfed45000-0xfed8ffff] has been reserved
[    0.286353] system 00:09: [mem 0xff000000-0xffffffff] has been reserved
[    0.286354] system 00:09: [mem 0xfee00000-0xfeefffff] could not be reserved
[    0.286356] system 00:09: [mem 0xf7fdf000-0xf7fdffff] has been reserved
[    0.286358] system 00:09: [mem 0xf7fe0000-0xf7feffff] has been reserved
[    0.286585] pnp: PnP ACPI: found 10 devices
[    0.291908] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[    0.291959] NET: Registered PF_INET protocol family
[    0.292116] IP idents hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.294870] tcp_listen_portaddr_hash hash table entries: 16384 (order: 6, 262144 bytes, linear)
[    0.294914] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.295023] TCP established hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.295312] TCP bind hash table entries: 65536 (order: 9, 2097152 bytes, linear)
[    0.295539] TCP: Hash tables configured (established 262144 bind 65536)
[    0.295637] MPTCP token hash table entries: 32768 (order: 7, 786432 bytes, linear)
[    0.295758] UDP hash table entries: 16384 (order: 7, 524288 bytes, linear)
[    0.295827] UDP-Lite hash table entries: 16384 (order: 7, 524288 bytes, linear)
[    0.295893] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.295900] NET: Registered PF_XDP protocol family
[    0.295907] pci 0000:00:1c.0: bridge window [io  0x1000-0x0fff] to [bus 02] add_size 1000
[    0.295911] pci 0000:00:1c.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 02] add_size 200000 add_align 100000
[    0.295913] pci 0000:00:1c.0: bridge window [mem 0x00100000-0x000fffff] to [bus 02] add_size 200000 add_align 100000
[    0.295925] pci 0000:00:1c.0: BAR 14: assigned [mem 0xce200000-0xce3fffff]
[    0.295929] pci 0000:00:1c.0: BAR 15: assigned [mem 0xce400000-0xce5fffff 64bit pref]
[    0.295931] pci 0000:00:1c.0: BAR 13: assigned [io  0x2000-0x2fff]
[    0.295935] pci 0000:00:01.0: PCI bridge to [bus 01]
[    0.295937] pci 0000:00:01.0:   bridge window [io  0xe000-0xefff]
[    0.295939] pci 0000:00:01.0:   bridge window [mem 0xf7c00000-0xf7cfffff]
[    0.295941] pci 0000:00:01.0:   bridge window [mem 0xe0000000-0xefffffff 64bit pref]
[    0.295944] pci 0000:00:1c.0: PCI bridge to [bus 02]
[    0.295946] pci 0000:00:1c.0:   bridge window [io  0x2000-0x2fff]
[    0.295950] pci 0000:00:1c.0:   bridge window [mem 0xce200000-0xce3fffff]
[    0.295952] pci 0000:00:1c.0:   bridge window [mem 0xce400000-0xce5fffff 64bit pref]
[    0.295957] pci 0000:04:00.0: PCI bridge to [bus 05]
[    0.295968] pci 0000:04:02.0: PCI bridge to [bus 06]
[    0.295980] pci 0000:04:03.0: PCI bridge to [bus 07]
[    0.295982] pci 0000:04:03.0:   bridge window [io  0xd000-0xdfff]
[    0.295986] pci 0000:04:03.0:   bridge window [mem 0xf7b00000-0xf7bfffff]
[    0.295995] pci 0000:04:08.0: PCI bridge to [bus 08]
[    0.295996] pci 0000:04:08.0:   bridge window [io  0xc000-0xcfff]
[    0.296001] pci 0000:04:08.0:   bridge window [mem 0xf7a00000-0xf7afffff]
[    0.296009] pci 0000:04:0a.0: PCI bridge to [bus 09]
[    0.296011] pci 0000:04:0a.0:   bridge window [io  0xb000-0xbfff]
[    0.296015] pci 0000:04:0a.0:   bridge window [mem 0xf7900000-0xf79fffff]
[    0.296024] pci 0000:04:0b.0: PCI bridge to [bus 0a]
[    0.296026] pci 0000:04:0b.0:   bridge window [io  0xa000-0xafff]
[    0.296030] pci 0000:04:0b.0:   bridge window [mem 0xf7800000-0xf78fffff]
[    0.296038] pci 0000:03:00.0: PCI bridge to [bus 04-0a]
[    0.296040] pci 0000:03:00.0:   bridge window [io  0xa000-0xdfff]
[    0.296045] pci 0000:03:00.0:   bridge window [mem 0xf7800000-0xf7bfffff]
[    0.296053] pci 0000:00:1c.4: PCI bridge to [bus 03-0a]
[    0.296054] pci 0000:00:1c.4:   bridge window [io  0xa000-0xdfff]
[    0.296058] pci 0000:00:1c.4:   bridge window [mem 0xf7800000-0xf7bfffff]
[    0.296064] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
[    0.296066] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
[    0.296067] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000dffff window]
[    0.296068] pci_bus 0000:00: resource 7 [mem 0xce200000-0xfeafffff window]
[    0.296070] pci_bus 0000:01: resource 0 [io  0xe000-0xefff]
[    0.296071] pci_bus 0000:01: resource 1 [mem 0xf7c00000-0xf7cfffff]
[    0.296072] pci_bus 0000:01: resource 2 [mem 0xe0000000-0xefffffff 64bit pref]
[    0.296073] pci_bus 0000:02: resource 0 [io  0x2000-0x2fff]
[    0.296074] pci_bus 0000:02: resource 1 [mem 0xce200000-0xce3fffff]
[    0.296076] pci_bus 0000:02: resource 2 [mem 0xce400000-0xce5fffff 64bit pref]
[    0.296077] pci_bus 0000:03: resource 0 [io  0xa000-0xdfff]
[    0.296078] pci_bus 0000:03: resource 1 [mem 0xf7800000-0xf7bfffff]
[    0.296079] pci_bus 0000:04: resource 0 [io  0xa000-0xdfff]
[    0.296080] pci_bus 0000:04: resource 1 [mem 0xf7800000-0xf7bfffff]
[    0.296082] pci_bus 0000:07: resource 0 [io  0xd000-0xdfff]
[    0.296083] pci_bus 0000:07: resource 1 [mem 0xf7b00000-0xf7bfffff]
[    0.296084] pci_bus 0000:08: resource 0 [io  0xc000-0xcfff]
[    0.296085] pci_bus 0000:08: resource 1 [mem 0xf7a00000-0xf7afffff]
[    0.296086] pci_bus 0000:09: resource 0 [io  0xb000-0xbfff]
[    0.296087] pci_bus 0000:09: resource 1 [mem 0xf7900000-0xf79fffff]
[    0.296089] pci_bus 0000:0a: resource 0 [io  0xa000-0xafff]
[    0.296090] pci_bus 0000:0a: resource 1 [mem 0xf7800000-0xf78fffff]
[    0.314493] pci 0000:00:1a.0: quirk_usb_early_handoff+0x0/0x750 took 17699 usecs
[    0.334474] pci 0000:00:1d.0: quirk_usb_early_handoff+0x0/0x750 took 19496 usecs
[    0.334505] pci 0000:01:00.1: D0 power state depends on 0000:01:00.0
[    0.334554] PCI: CLS 64 bytes, default 64
[    0.334567] DMAR: No ATSR found
[    0.334568] DMAR: No SATC found
[    0.334569] DMAR: IOMMU feature pgsel_inv inconsistent
[    0.334570] DMAR: IOMMU feature sc_support inconsistent
[    0.334571] DMAR: IOMMU feature pass_through inconsistent
[    0.334572] DMAR: dmar0: Using Queued invalidation
[    0.334577] DMAR: dmar1: Using Queued invalidation
[    0.334599] Trying to unpack rootfs image as initramfs...
[    0.484009] pci 0000:00:02.0: Adding to iommu group 0
[    0.484043] pci 0000:00:00.0: Adding to iommu group 1
[    0.484054] pci 0000:00:01.0: Adding to iommu group 2
[    0.484061] pci 0000:00:03.0: Adding to iommu group 3
[    0.484068] pci 0000:00:14.0: Adding to iommu group 4
[    0.484075] pci 0000:00:19.0: Adding to iommu group 5
[    0.484082] pci 0000:00:1a.0: Adding to iommu group 6
[    0.484089] pci 0000:00:1b.0: Adding to iommu group 7
[    0.484096] pci 0000:00:1c.0: Adding to iommu group 8
[    0.484103] pci 0000:00:1c.4: Adding to iommu group 9
[    0.484110] pci 0000:00:1d.0: Adding to iommu group 10
[    0.484123] pci 0000:00:1f.0: Adding to iommu group 11
[    0.484130] pci 0000:00:1f.3: Adding to iommu group 11
[    0.484134] pci 0000:01:00.0: Adding to iommu group 2
[    0.484137] pci 0000:01:00.1: Adding to iommu group 2
[    0.484145] pci 0000:03:00.0: Adding to iommu group 12
[    0.484153] pci 0000:04:00.0: Adding to iommu group 13
[    0.484159] pci 0000:04:02.0: Adding to iommu group 14
[    0.484167] pci 0000:04:03.0: Adding to iommu group 15
[    0.484173] pci 0000:04:08.0: Adding to iommu group 16
[    0.484181] pci 0000:04:0a.0: Adding to iommu group 17
[    0.484189] pci 0000:04:0b.0: Adding to iommu group 18
[    0.484199] pci 0000:07:00.0: Adding to iommu group 19
[    0.484209] pci 0000:08:00.0: Adding to iommu group 20
[    0.484218] pci 0000:09:00.0: Adding to iommu group 21
[    0.484227] pci 0000:0a:00.0: Adding to iommu group 22
[    0.484312] DMAR: Intel(R) Virtualization Technology for Directed I/O
[    0.484312] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    0.484313] software IO TLB: mapped [mem 0x000000009ff77000-0x00000000a3f77000] (64MB)
[    0.485064] Initialise system trusted keyrings
[    0.485071] Key type blacklist registered
[    0.485107] workingset: timestamp_bits=41 max_order=23 bucket_order=0
[    0.486133] zbud: loaded
[    0.486281] integrity: Platform Keyring initialized
[    0.486283] integrity: Machine keyring initialized
[    0.495484] Key type asymmetric registered
[    0.495486] Asymmetric key parser 'x509' registered
[    0.632909] Freeing initrd memory: 73940K
[    0.635410] alg: self-tests for CTR-KDF (hmac(sha256)) passed
[    0.635432] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 242)
[    0.635460] io scheduler mq-deadline registered
[    0.635461] io scheduler kyber registered
[    0.635499] io scheduler bfq registered
[    0.637156] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[    0.637597] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
[    0.637615] ACPI: button: Power Button [PWRB]
[    0.637638] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
[    0.637706] ACPI: button: Power Button [PWRF]
[    0.638272] thermal LNXTHERM:00: registered as thermal_zone0
[    0.638274] ACPI: thermal: Thermal Zone [TZ00] (28 C)
[    0.638507] thermal LNXTHERM:01: registered as thermal_zone1
[    0.638508] ACPI: thermal: Thermal Zone [TZ01] (30 C)
[    0.638675] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    0.638831] 00:07: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.639319] 00:08: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
[    0.640656] Non-volatile memory driver v1.3
[    0.640658] Linux agpgart interface v0.103
[    0.640678] AMD-Vi: AMD IOMMUv2 functionality not available on this system - This is not a bug.
[    0.640718] ACPI: bus type drm_connector registered
[    0.641665] ehci-pci 0000:00:1a.0: EHCI Host Controller
[    0.641670] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 1
[    0.641679] ehci-pci 0000:00:1a.0: debug port 2
[    0.645591] ehci-pci 0000:00:1a.0: irq 16, io mem 0xf7d3b000
[    0.657792] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00
[    0.657852] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
[    0.657855] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=x
[    0.657856] usb usb1: Product: EHCI Host Controller
[    0.657857] usb usb1: Manufacturer: Linux 6.1.12-arch1-1 ehci_hcd
[    0.657858] usb usb1: SerialNumber: xxxx:xx:xx.x
[    0.658048] hub 1-0:1.0: USB hub found
[    0.658054] hub 1-0:1.0: 3 ports detected
[    0.658321] ehci-pci 0000:00:1d.0: EHCI Host Controller
[    0.658326] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 2
[    0.658335] ehci-pci 0000:00:1d.0: debug port 2
[    0.662256] ehci-pci 0000:00:1d.0: irq 23, io mem 0xf7d3a000
[    0.674456] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[    0.674505] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
[    0.674508] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=x
[    0.674509] usb usb2: Product: EHCI Host Controller
[    0.674510] usb usb2: Manufacturer: Linux 6.1.12-arch1-1 ehci_hcd
[    0.674512] usb usb2: SerialNumber: xxxx:xx:xx.x
[    0.674703] hub 2-0:1.0: USB hub found
[    0.674708] hub 2-0:1.0: 3 ports detected
[    0.674917] usbcore: registered new interface driver usbserial_generic
[    0.674922] usbserial: USB Serial support registered for generic
[    0.675134] rtc_cmos 00:02: RTC can wake from S4
[    0.675426] rtc_cmos 00:02: registered as rtc0
[    0.675457] rtc_cmos 00:02: setting system clock to 2023-02-24T04:24:38 UTC (1677212678)
[    0.675476] rtc_cmos 00:02: alarms up to one month, y3k, 242 bytes nvram
[    0.675776] intel_pstate: Intel P-state driver initializing
[    0.676259] ledtrig-cpu: registered to indicate activity on CPUs
[    0.676597] efifb: probing for efifb
[    0.676616] efifb: No BGRT, not showing boot graphics
[    0.676617] efifb: framebuffer at 0xd0000000, using 7552k, total 7552k
[    0.676619] efifb: mode is 1600x1200x32, linelength=6400, pages=1
[    0.676621] efifb: scrolling: redraw
[    0.676622] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.676670] fbcon: Deferring console take-over
[    0.676671] fb0: EFI VGA frame buffer device
[    0.676703] hid: raw HID events driver (C) Jiri Kosina
[    0.676827] drop_monitor: Initializing network drop monitor service
[    0.685793] Initializing XFRM netlink socket
[    0.685871] NET: Registered PF_INET6 protocol family
[    0.689073] Segment Routing with IPv6
[    0.689074] RPL Segment Routing with IPv6
[    0.689082] In-situ OAM (IOAM) with IPv6
[    0.689103] NET: Registered PF_PACKET protocol family
[    0.689918] microcode: sig=0x306c3, pf=0x2, revision=0x28
[    0.689994] microcode: Microcode Update Driver: v2.2.
[    0.690000] IPI shorthand broadcast: enabled
[    0.690021] sched_clock: Marking stable (689556571, 271563)->(694217977, -4389843)
[    0.690269] registered taskstats version 1
[    0.690463] Loading compiled-in X.509 certificates
[    0.693065] Loaded X.509 cert 'Build time autogenerated kernel key: 3f85e1b84b8d1aa77c32de9c1f3fe41da6ce9978'
[    0.693392] zswap: loaded using pool lz4/z3fold
[    0.693654] Key type .fscrypt registered
[    0.693655] Key type fscrypt-provisioning registered
[    0.693804] integrity: Loading X.509 certificate: UEFI:db
[    0.694056] integrity: Loaded X.509 cert 'ASUSTeK MotherBoard SW Key Certificate: da83b990422ebc8c441f8d8b039a65a2'
[    0.694057] integrity: Loading X.509 certificate: UEFI:db
[    0.694199] integrity: Loaded X.509 cert 'ASUSTeK Notebook SW Key Certificate: b8e581e4df77a5bb4282d5ccfc00c071'
[    0.694199] integrity: Loading X.509 certificate: UEFI:db
[    0.694213] integrity: Loaded X.509 cert 'Microsoft Corporation UEFI CA 2011: 13adbf4309bd82709c8cd54f316ed522988a1bd4'
[    0.694214] integrity: Loading X.509 certificate: UEFI:db
[    0.694226] integrity: Loaded X.509 cert 'Microsoft Windows Production PCA 2011: a92902398e16c49778cd90f99e4f9ae17c55af53'
[    0.694226] integrity: Loading X.509 certificate: UEFI:db
[    0.694369] integrity: Loaded X.509 cert 'Canonical Ltd. Master Certificate Authority: ad91990bc22ab1f517048c23b6655a268e345a63'
[    0.695402] PM:   Magic number: 11:574:414
[    0.695411] thermal cooling_device10: hash matches
[    0.695563] RAS: Correctable Errors collector initialized.
[    0.696314] Freeing unused decrypted memory: 2036K
[    0.696561] Freeing unused kernel image (initmem) memory: 2144K
[    0.731210] Write protecting the kernel read-only data: 30720k
[    0.731636] Freeing unused kernel image (text/rodata gap) memory: 2040K
[    0.731783] Freeing unused kernel image (rodata/data gap) memory: 1212K
[    0.767352] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[    0.767355] rodata_test: all tests were successful
[    0.767356] x86/mm: Checking user space page tables
[    0.800561] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[    0.800564] Run /init as init process
[    0.800565]   with arguments:
[    0.800566]     /init
[    0.800567]   with environment:
[    0.800567]     HOME=/
[    0.800568]     TERM=linux
[    0.800568]     BOOT_IMAGE=/vmlinuz-linux
[    0.800569]     max_loop=64
[    0.813791] fbcon: Taking over console
[    0.813854] Console: switching to colour frame buffer device 200x75
[    0.914410] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    0.914879] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    0.914886] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 3
[    0.915948] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x0000000000009810
[    0.916133] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    0.916136] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 4
[    0.916139] xhci_hcd 0000:00:14.0: Host supports USB 3.0 SuperSpeed
[    0.916182] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
[    0.916185] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=x
[    0.916187] usb usb3: Product: xHCI Host Controller
[    0.916188] usb usb3: Manufacturer: Linux 6.1.12-arch1-1 xhci-hcd
[    0.916190] usb usb3: SerialNumber: xxxx:xx:xx.x
[    0.916334] hub 3-0:1.0: USB hub found
[    0.916352] hub 3-0:1.0: 15 ports detected
[    0.922107] cryptd: max_cpu_qlen set to 1000
[    0.924411] usb 2-1: new high-speed USB device number 2 using ehci-pci
[    0.936870] AVX2 version of gcm_enc/dec engaged.
[    0.936906] AES CTR mode by8 optimization enabled
[    0.947316] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.01
[    0.947321] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=x
[    0.947323] usb usb4: Product: xHCI Host Controller
[    0.947325] usb usb4: Manufacturer: Linux 6.1.12-arch1-1 xhci-hcd
[    0.947327] usb usb4: SerialNumber: xxxx:xx:xx.x
[    0.954008] hub 4-0:1.0: USB hub found
[    0.954025] hub 4-0:1.0: 6 ports detected
[    1.040143] [drm] radeon kernel modesetting enabled.
[    1.040294] Console: switching to colour dummy device 80x25
[    1.040517] [drm] initializing kernel modesetting (TAHITI 0x1002:0x6798 0x1787:0x3001 0x00).
[    1.040549] ATOM BIOS: TAHITI
[    1.040583] [drm] Changing default dispclk from 500Mhz to 600Mhz
[    1.040591] radeon 0000:01:00.0: VRAM: 3072M 0x0000000000000000 - 0x00000000BFFFFFFF (3072M used)
[    1.040594] radeon 0000:01:00.0: GTT: 2048M 0x00000000C0000000 - 0x000000013FFFFFFF
[    1.040599] [drm] Detected VRAM RAM=3072M, BAR=256M
[    1.040601] [drm] RAM width 384bits DDR
[    1.040620] [drm] radeon: 3072M of VRAM memory ready
[    1.040621] [drm] radeon: 2048M of GTT memory ready.
[    1.040627] [drm] Loading tahiti Microcode
[    1.046604] [drm] Internal thermal controller with fan control
[    1.051300] [drm] radeon: dpm initialized
[    1.061381] usb 1-1: New USB device found, idVendor=8087, idProduct=8008, bcdDevice= 0.05
[    1.061386] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=x
[    1.061673] hub 1-1:1.0: USB hub found
[    1.061753] hub 1-1:1.0: 6 ports detected
[    1.063067] [drm] Found VCE firmware/feedback version 50.0.1 / 17!
[    1.063078] [drm] GART: num cpu pages 524288, num gpu pages 524288
[    1.063866] [drm] PCIE gen 3 link speeds already enabled
[    1.070185] [drm] PCIE GART of 2048M enabled (table at 0x00000000001D6000).
[    1.070274] radeon 0000:01:00.0: WB enabled
[    1.070275] radeon 0000:01:00.0: fence driver on ring 0 use gpu addr 0x00000000c0000c00
[    1.070277] radeon 0000:01:00.0: fence driver on ring 1 use gpu addr 0x00000000c0000c04
[    1.070278] radeon 0000:01:00.0: fence driver on ring 2 use gpu addr 0x00000000c0000c08
[    1.070279] radeon 0000:01:00.0: fence driver on ring 3 use gpu addr 0x00000000c0000c0c
[    1.070280] radeon 0000:01:00.0: fence driver on ring 4 use gpu addr 0x00000000c0000c10
[    1.070472] radeon 0000:01:00.0: fence driver on ring 5 use gpu addr 0x0000000000075a18
[    1.071400] usb 2-1: New USB device found, idVendor=8087, idProduct=8000, bcdDevice= 0.05
[    1.071403] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=x
[    1.071697] hub 2-1:1.0: USB hub found
[    1.071774] hub 2-1:1.0: 8 ports detected
[    1.090578] radeon 0000:01:00.0: fence driver on ring 6 use gpu addr 0x00000000c0000c18
[    1.090580] radeon 0000:01:00.0: fence driver on ring 7 use gpu addr 0x00000000c0000c1c
[    1.090778] radeon 0000:01:00.0: radeon: MSI limited to 32-bit
[    1.090818] radeon 0000:01:00.0: radeon: using MSI.
[    1.090834] [drm] radeon: irq initialized.
[    1.194424] usb 3-4: new low-speed USB device number 2 using xhci_hcd
[    1.232591] [drm] ring test on 0 succeeded in 1 usecs
[    1.232595] [drm] ring test on 1 succeeded in 1 usecs
[    1.232598] [drm] ring test on 2 succeeded in 1 usecs
[    1.232603] [drm] ring test on 3 succeeded in 3 usecs
[    1.232608] [drm] ring test on 4 succeeded in 3 usecs
[    1.270975] i915 0000:00:02.0: [drm] VT-d active for gfx access
[    1.270977] i915 0000:00:02.0: vgaarb: deactivate vga console
[    1.271203] i915 0000:00:02.0: [drm] Using Transparent Hugepages
[    1.271205] i915 0000:00:02.0: [drm] DMAR active, disabling use of stolen memory
[    1.272085] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=io+mem
[    1.272088] radeon 0000:01:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=io+mem
[    1.352922] usb 3-4: New USB device found, idVendor=04f2, idProduct=0402, bcdDevice= 1.65
[    1.352924] usb 3-4: New USB device strings: Mfr=1, Product=2, SerialNumber=x
[    1.352926] usb 3-4: Product: USB Keyboard
[    1.352926] usb 3-4: Manufacturer: Chicony
[    1.367325] input: Chicony USB Keyboard as /devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.0/0003:04F2:0402.0001/input/input2
[    1.409697] [drm] ring test on 5 succeeded in 2 usecs
[    1.409701] [drm] UVD initialized successfully.
[    1.421239] hid-generic 0003:04F2:0402.0001: input,hidraw0: USB HID v1.11 Keyboard [Chicony USB Keyboard] on usb-0000:00:14.0-4/input0
[    1.437659] input: Chicony USB Keyboard System Control as /devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.1/0003:04F2:0402.0002/input/input3
[    1.457997] usb 4-6: new SuperSpeed USB device number 2 using xhci_hcd
[    1.477393] usb 4-6: New USB device found, idVendor=11b0, idProduct=3307, bcdDevice= 0.14
[    1.477396] usb 4-6: New USB device strings: Mfr=3, Product=4, SerialNumber=x
[    1.477397] usb 4-6: Product: UHSII uSD Reader
[    1.477398] usb 4-6: Manufacturer: Kingston
[    1.477399] usb 4-6: SerialNumber: xxxxxxxxxxxxxx
[    1.483609] usb-storage 4-6:1.0: USB Mass Storage device detected
[    1.483805] scsi host0: usb-storage 4-6:1.0
[    1.483884] usbcore: registered new interface driver usb-storage
[    1.486850] usbcore: registered new interface driver uas
[    1.491125] input: Chicony USB Keyboard Consumer Control as /devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.1/0003:04F2:0402.0002/input/input4
[    1.491236] hid-generic 0003:04F2:0402.0002: input,hiddev96,hidraw1: USB HID v1.11 Device [Chicony USB Keyboard] on usb-0000:00:14.0-4/input1
[    1.491265] usbcore: registered new interface driver usbhid
[    1.491266] usbhid: USB HID core driver
[    1.507747] tsc: Refined TSC clocksource calibration: 3092.838 MHz
[    1.507753] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x2c94d9afcf4, max_idle_ns: 440795231738 ns
[    1.507771] clocksource: Switched to clocksource tsc
[    1.519762] [drm] ring test on 6 succeeded in 21 usecs
[    1.519772] [drm] ring test on 7 succeeded in 4 usecs
[    1.519772] [drm] VCE initialized successfully.
[    1.519872] [drm] ib test on ring 0 succeeded in 0 usecs
[    1.519904] [drm] ib test on ring 1 succeeded in 0 usecs
[    1.519945] [drm] ib test on ring 2 succeeded in 0 usecs
[    1.519983] [drm] ib test on ring 3 succeeded in 0 usecs
[    1.520013] [drm] ib test on ring 4 succeeded in 0 usecs
[    2.201221] [drm] ib test on ring 5 succeeded
[    2.497677] scsi 0:0:0:0: Direct-Access     Kingston UHSII uSD Reader 0014 PQ: 0 ANSI: 6
[    2.707830] [drm] ib test on ring 6 succeeded
[    3.009663] sd 0:0:0:0: [sda] 246947840 512-byte logical blocks: (126 GB/118 GiB)
[    3.010765] sd 0:0:0:0: [sda] Write Protect is off
[    3.010769] sd 0:0:0:0: [sda] Mode Sense: 21 00 00 00
[    3.011557] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[    3.018624] GPT:Primary header thinks Alt. header is not at the end of the disk.
[    3.018625] GPT:105062399 != 246947839
[    3.018627] GPT:Alternate GPT header not at the end of the disk.
[    3.018627] GPT:105062399 != 246947839
[    3.018628] GPT: Use GNU Parted to correct GPT errors.
[    3.018633]  sda: sda1 sda2 sda3 sda4
[    3.018815] sd 0:0:0:0: [sda] Attached SCSI removable disk
[    3.214516] [drm] ib test on ring 7 succeeded
[    3.215053] [drm] Radeon Display Connectors
[    3.215056] [drm] Connector 0:
[    3.215057] [drm]   DP-2
[    3.215058] [drm]   HPD5
[    3.215059] [drm]   DDC: 0x6530 0x6530 0x6534 0x6534 0x6538 0x6538 0x653c 0x653c
[    3.215062] [drm]   Encoders:
[    3.215063] [drm]     DFP1: INTERNAL_UNIPHY2
[    3.215064] [drm] Connector 1:
[    3.215065] [drm]   DP-3
[    3.215066] [drm]   HPD4
[    3.215067] [drm]   DDC: 0x6540 0x6540 0x6544 0x6544 0x6548 0x6548 0x654c 0x654c
[    3.215070] [drm]   Encoders:
[    3.215070] [drm]     DFP2: INTERNAL_UNIPHY2
[    3.215071] [drm] Connector 2:
[    3.215072] [drm]   HDMI-A-4
[    3.215074] [drm]   HPD1
[    3.215075] [drm]   DDC: 0x6560 0x6560 0x6564 0x6564 0x6568 0x6568 0x656c 0x656c
[    3.215077] [drm]   Encoders:
[    3.215078] [drm]     DFP3: INTERNAL_UNIPHY1
[    3.215079] [drm] Connector 3:
[    3.215081] [drm]   DVI-I-1
[    3.215081] [drm]   HPD3
[    3.215082] [drm]   DDC: 0x6580 0x6580 0x6584 0x6584 0x6588 0x6588 0x658c 0x658c
[    3.215085] [drm]   Encoders:
[    3.215086] [drm]     DFP4: INTERNAL_UNIPHY
[    3.215087] [drm]     CRT1: INTERNAL_KLDSCP_DAC1
[    3.294824] radeon 0000:01:00.0: [drm] Cannot find any crtc or sizes
[    3.295200] [drm] Initialized radeon 2.50.0 20080528 for 0000:01:00.0 on minor 0
[    3.295652] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 1
[    3.297129] ACPI: video: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    3.297257] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input6
[    3.325130] fbcon: i915drmfb (fb0) is primary device
[    3.349370] Console: switching to colour frame buffer device 200x75
[    3.367498] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
[    4.378068] radeon 0000:01:00.0: [drm] Cannot find any crtc or sizes
[    4.787444] [drm] amdgpu kernel modesetting enabled.
[    4.787564] amdgpu: CRAT table not found
[    4.787566] amdgpu: Virtual CRAT table created for CPU
[    4.787577] amdgpu: Topology: Add CPU node
[    4.919209] EXT4-fs (sda3): mounted filesystem with ordered data mode. Quota mode: none.
[    5.286541] systemd[1]: systemd 253-1-arch running in system mode (+PAM +AUDIT -SELINUX -APPARMOR -IMA +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY +P11KIT -QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP -SYSVINIT default-hierarchy=unified)
[    5.286547] systemd[1]: Detected architecture x86-64.
[    5.289817] systemd[1]: Hostname set to <archsd>.
[    5.295734] systemd[1]: Invalid DMI field header.
[    5.792453] systemd[1]: bpf-lsm: LSM BPF program attached
[    6.058088] systemd[1]: Queued start job for default target Graphical Interface.
[    6.078634] systemd[1]: Created slice Slice /system/getty.
[    6.079005] systemd[1]: Created slice Slice /system/modprobe.
[    6.079291] systemd[1]: Created slice Slice /system/systemd-fsck.
[    6.079488] systemd[1]: Created slice User and Session Slice.
[    6.079581] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[    6.079667] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    6.079833] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[    6.079958] systemd[1]: Reached target Local Encrypted Volumes.
[    6.080033] systemd[1]: Reached target Local Integrity Protected Volumes.
[    6.080097] systemd[1]: Reached target Path Units.
[    6.080149] systemd[1]: Reached target Remote File Systems.
[    6.080201] systemd[1]: Reached target Slice Units.
[    6.080255] systemd[1]: Reached target Swaps.
[    6.080309] systemd[1]: Reached target Local Verity Protected Volumes.
[    6.080401] systemd[1]: Listening on Device-mapper event daemon FIFOs.
[    6.081905] systemd[1]: Listening on Process Core Dump Socket.
[    6.082073] systemd[1]: Listening on Journal Socket (/dev/log).
[    6.082239] systemd[1]: Listening on Journal Socket.
[    6.082393] systemd[1]: Listening on Network Service Netlink Socket.
[    6.082538] systemd[1]: Listening on udev Control Socket.
[    6.082647] systemd[1]: Listening on udev Kernel Socket.
[    6.083289] systemd[1]: Mounting Huge Pages File System...
[    6.083950] systemd[1]: Mounting POSIX Message Queue File System...
[    6.084662] systemd[1]: Mounting Kernel Debug File System...
[    6.085311] systemd[1]: Mounting Kernel Trace File System...
[    6.086501] systemd[1]: Mounting Temporary Directory /tmp...
[    6.087253] systemd[1]: Starting Create List of Static Device Nodes...
[    6.087950] systemd[1]: Starting Load Kernel Module configfs...
[    6.088640] systemd[1]: Starting Load Kernel Module dm_mod...
[    6.089338] systemd[1]: Starting Load Kernel Module drm...
[    6.090012] systemd[1]: Starting Load Kernel Module fuse...
[    6.090680] systemd[1]: Starting Load Kernel Module loop...
[    6.090841] systemd[1]: File System Check on Root Device was skipped because of an unmet condition check (ConditionPathIsReadWrite=!/).
[    6.092005] systemd[1]: Starting Journal Service...
[    6.095996] systemd[1]: Load Kernel Modules was skipped because no trigger condition checks were met.
[    6.096591] systemd[1]: Starting Generate network units from Kernel command line...
[    6.096682] systemd[1]: TPM2 PCR Machine ID Measurement was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f).
[    6.097264] systemd[1]: Starting Remount Root and Kernel File Systems...
[    6.097947] systemd[1]: Starting Apply Kernel Variables...
[    6.098651] systemd[1]: Starting Coldplug All udev Devices...
[    6.099801] systemd[1]: Mounted Huge Pages File System.
[    6.099925] systemd[1]: Mounted POSIX Message Queue File System.
[    6.100040] systemd[1]: Mounted Kernel Debug File System.
[    6.100160] systemd[1]: Mounted Kernel Trace File System.
[    6.100270] systemd[1]: Mounted Temporary Directory /tmp.
[    6.106597] loop: module loaded
[    6.107331] EXT4-fs (sda3): re-mounted. Quota mode: none.
[    6.113871] fuse: init (API version 7.37)
[    6.117954] systemd[1]: Finished Create List of Static Device Nodes.
[    6.118971] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[    6.122691] device-mapper: uevent: version 1.0.3
[    6.122810] device-mapper: ioctl: 4.47.0-ioctl (2022-07-28) initialised: dm-devel@redhat.com
[    6.125135] systemd-journald[300]: Collecting audit messages is disabled.
[    6.157998] systemd[1]: Finished Load Kernel Module configfs.
[    6.158569] systemd[1]: modprobe@dm_mod.service: Deactivated successfully.
[    6.201353] systemd[1]: Finished Load Kernel Module dm_mod.
[    6.201546] systemd[1]: Started Journal Service.
[    6.459900] systemd-journald[300]: Received client request to flush runtime journal.
[    6.466348] systemd-journald[300]: File /var/log/journal/313287e2bf094f2186186e22715564f7/system.journal corrupted or uncleanly shut down, renaming and replacing.
[    6.948420] ACPI Warning: SystemIO range 0x0000000000001828-0x000000000000182F conflicts with OpRegion 0x0000000000001800-0x000000000000187F (\PMIO) (20220331/utaddress-204)
[    6.948430] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[    6.948441] ACPI Warning: SystemIO range 0x0000000000001C40-0x0000000000001C4F conflicts with OpRegion 0x0000000000001C00-0x0000000000001FFF (\GPR) (20220331/utaddress-204)
[    6.948448] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[    6.948584] ACPI Warning: SystemIO range 0x0000000000001C30-0x0000000000001C3F conflicts with OpRegion 0x0000000000001C00-0x0000000000001C3F (\GPRL) (20220331/utaddress-204)
[    6.948591] ACPI Warning: SystemIO range 0x0000000000001C30-0x0000000000001C3F conflicts with OpRegion 0x0000000000001C00-0x0000000000001FFF (\GPR) (20220331/utaddress-204)
[    6.948598] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[    6.948609] ACPI Warning: SystemIO range 0x0000000000001C00-0x0000000000001C2F conflicts with OpRegion 0x0000000000001C00-0x0000000000001C3F (\GPRL) (20220331/utaddress-204)
[    6.948614] ACPI Warning: SystemIO range 0x0000000000001C00-0x0000000000001C2F conflicts with OpRegion 0x0000000000001C00-0x0000000000001FFF (\GPR) (20220331/utaddress-204)
[    6.948621] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[    6.948622] lpc_ich: Resource conflict(s) found affecting gpio_ich
[    6.949435] parport_pc 00:05: reported by Plug and Play ACPI
[    6.949504] parport0: PC-style at 0x378, irq 5 [PCSPP]
[    6.954264] i801_smbus 0000:00:1f.3: SMBus using PCI interrupt
[    6.954807] i2c i2c-17: 4/4 memory slots populated (from DMI)
[    6.955100] i2c i2c-17: Successfully instantiated SPD at 0x50
[    6.955388] i2c i2c-17: Successfully instantiated SPD at 0x51
[    6.955679] i2c i2c-17: Successfully instantiated SPD at 0x52
[    6.955960] i2c i2c-17: Successfully instantiated SPD at 0x53
[    6.956705] input: PC Speaker as /devices/platform/pcspkr/input/input7
[    6.984591] RAPL PMU: API unit is 2^-32 Joules, 4 fixed counters, 655360 ms ovfl timer
[    6.984594] RAPL PMU: hw unit of domain pp0-core 2^-14 Joules
[    6.984595] RAPL PMU: hw unit of domain package 2^-14 Joules
[    6.984596] RAPL PMU: hw unit of domain dram 2^-14 Joules
[    6.984596] RAPL PMU: hw unit of domain pp1-gpu 2^-14 Joules
[    6.985028] e1000e: Intel(R) PRO/1000 Network Driver
[    6.985030] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    6.985217] e1000e 0000:00:19.0: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[    6.992398] iTCO_vendor_support: vendor-support=0
[    7.005522] at24 17-0050: supply vcc not found, using dummy regulator
[    7.006084] at24 17-0050: 256 byte spd EEPROM, read-only
[    7.006123] at24 17-0051: supply vcc not found, using dummy regulator
[    7.006816] at24 17-0051: 256 byte spd EEPROM, read-only
[    7.006845] at24 17-0052: supply vcc not found, using dummy regulator
[    7.007376] at24 17-0052: 256 byte spd EEPROM, read-only
[    7.007400] at24 17-0053: supply vcc not found, using dummy regulator
[    7.007939] at24 17-0053: 256 byte spd EEPROM, read-only
[    7.009381] iTCO_wdt iTCO_wdt.1.auto: Found a Lynx Point TCO device (Version=2, TCOBASE=0x1860)
[    7.009472] iTCO_wdt iTCO_wdt.1.auto: initialized. heartbeat=30 sec (nowayout=0)
[    7.052402] ppdev: user-space parallel port driver
[    7.052734] r8169 0000:07:00.0: enabling device (0000 -> 0003)
[    7.052944] r8169 0000:07:00.0: can't disable ASPM; OS doesn't have ASPM control
[    7.053981] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[    7.054230] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    7.060755] e1000e 0000:00:19.0 0000:00:19.0 (uninitialized): registered PHC clock
[    7.073227] r8169 0000:07:00.0 eth0: RTL8125B, xx:xx:xx:xx:xx:xx, XID 641, IRQ 40
[    7.073233] r8169 0000:07:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
[    7.073270] r8169 0000:08:00.0: enabling device (0000 -> 0003)
[    7.073383] r8169 0000:08:00.0: can't disable ASPM; OS doesn't have ASPM control
[    7.083268] asus_wmi: ASUS WMI generic driver loaded
[    7.086232] r8169 0000:08:00.0 eth1: RTL8125B, xx:xx:xx:xx:xx:xx, XID 641, IRQ 41
[    7.086236] r8169 0000:08:00.0 eth1: jumbo features [frames: 9194 bytes, tx checksumming: ko]
[    7.086264] r8169 0000:09:00.0: enabling device (0000 -> 0003)
[    7.086391] r8169 0000:09:00.0: can't disable ASPM; OS doesn't have ASPM control
[    7.100011] r8169 0000:09:00.0 eth2: RTL8125B, xx:xx:xx:xx:xx:xx, XID 641, IRQ 42
[    7.100018] r8169 0000:09:00.0 eth2: jumbo features [frames: 9194 bytes, tx checksumming: ko]
[    7.100056] r8169 0000:0a:00.0: enabling device (0000 -> 0003)
[    7.100171] r8169 0000:0a:00.0: can't disable ASPM; OS doesn't have ASPM control
[    7.101962] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    7.101967] cfg80211: failed to load regulatory.db
[    7.110753] spi-nor spi0.0: w25q128 (16384 Kbytes)
[    7.113541] Creating 1 MTD partitions on "intel-spi":
[    7.113544] 0x000000000000-0x000001000000 : "BIOS"
[    7.116440] asus_wmi: Initialization: 0x0
[    7.116467] asus_wmi: BIOS WMI version: 0.9
[    7.116508] asus_wmi: SFUN value: 0x0
[    7.116510] eeepc-wmi eeepc-wmi: Detected ASUSWMI, use DCTS
[    7.116901] r8169 0000:0a:00.0 eth3: RTL8125B, xx:xx:xx:xx:xx:xx, XID 641, IRQ 43
[    7.116905] r8169 0000:0a:00.0 eth3: jumbo features [frames: 9194 bytes, tx checksumming: ko]
[    7.118088] input: Eee PC WMI hotkeys as /devices/platform/eeepc-wmi/input/input8
[    7.128011] e1000e 0000:00:19.0 eth4: (PCI Express:2.5GT/s:Width x1) xx:xx:xx:xx:xx:xx
[    7.128044] e1000e 0000:00:19.0 eth4: Intel(R) PRO/1000 Network Connection
[    7.128069] e1000e 0000:00:19.0 eth4: MAC: 11, PHY: 12, PBA No: FFFFFF-0FF
[    7.128181] r8169 0000:07:00.0 enp7s0: renamed from eth0
[    7.160835] r8169 0000:08:00.0 enp8s0: renamed from eth1
[    7.211816] e1000e 0000:00:19.0 eno1: renamed from eth4
[    7.213842] snd_hda_intel 0000:00:03.0: enabling device (0000 -> 0002)
[    7.213966] snd_hda_intel 0000:00:03.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    7.214129] snd_hda_intel 0000:00:1b.0: enabling device (0000 -> 0002)
[    7.214327] snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
[    7.214381] snd_hda_intel 0000:01:00.1: Force to non-snoop mode
[    7.240926] r8169 0000:0a:00.0 enp10s0: renamed from eth3
[    7.247995] input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card0/input15
[    7.248031] input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card0/input16
[    7.248069] input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card0/input17
[    7.248389] input: HDA ATI HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input9
[    7.248442] input: HDA ATI HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input10
[    7.248500] input: HDA ATI HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input11
[    7.248553] input: HDA ATI HDMI HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input12
[    7.248601] input: HDA ATI HDMI HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input13
[    7.248648] input: HDA ATI HDMI HDMI/DP,pcm=11 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input14
[    7.257653] snd_hda_codec_realtek hdaudioC1D0: autoconfig for ALC887-VD: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:line
[    7.257657] snd_hda_codec_realtek hdaudioC1D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    7.257659] snd_hda_codec_realtek hdaudioC1D0:    hp_outs=1 (0x1b/0x0/0x0/0x0/0x0)
[    7.257660] snd_hda_codec_realtek hdaudioC1D0:    mono: mono_out=0x0
[    7.257661] snd_hda_codec_realtek hdaudioC1D0:    inputs:
[    7.257662] snd_hda_codec_realtek hdaudioC1D0:      Front Mic=0x19
[    7.257663] snd_hda_codec_realtek hdaudioC1D0:      Rear Mic=0x18
[    7.257664] snd_hda_codec_realtek hdaudioC1D0:      Line=0x1a
[    7.266578] r8169 0000:09:00.0 enp9s0: renamed from eth2
[    7.272329] input: HDA Intel PCH Front Mic as /devices/pci0000:00/0000:00:1b.0/sound/card1/input18
[    7.272368] input: HDA Intel PCH Rear Mic as /devices/pci0000:00/0000:00:1b.0/sound/card1/input19
[    7.272403] input: HDA Intel PCH Line as /devices/pci0000:00/0000:00:1b.0/sound/card1/input20
[    7.272442] input: HDA Intel PCH Line Out as /devices/pci0000:00/0000:00:1b.0/sound/card1/input21
[    7.272504] input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card1/input22
[    7.308662] intel_rapl_common: Found RAPL domain package
[    7.308665] intel_rapl_common: Found RAPL domain core
[    7.308665] intel_rapl_common: Found RAPL domain uncore
[    7.308666] intel_rapl_common: Found RAPL domain dram
[    7.327105] EXT4-fs (sda2): mounted filesystem with ordered data mode. Quota mode: none.
[    7.341160] RTL8226B_RTL8221B 2.5Gbps PHY r8169-0-700:00: attached PHY driver (mii_bus:phy_addr=r8169-0-700:00, irq=MAC)
[    7.374729] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[    7.497980] r8169 0000:07:00.0 enp7s0: Link is Down
[    7.711102] RTL8226B_RTL8221B 2.5Gbps PHY r8169-0-800:00: attached PHY driver (mii_bus:phy_addr=r8169-0-800:00, irq=MAC)
[    7.901312] r8169 0000:08:00.0 enp8s0: Link is Down
[    7.927825] RTL8226B_RTL8221B 2.5Gbps PHY r8169-0-900:00: attached PHY driver (mii_bus:phy_addr=r8169-0-900:00, irq=MAC)
[    8.121283] r8169 0000:09:00.0 enp9s0: Link is Down
[    8.147783] RTL8226B_RTL8221B 2.5Gbps PHY r8169-0-a00:00: attached PHY driver (mii_bus:phy_addr=r8169-0-a00:00, irq=MAC)
[    8.311315] r8169 0000:0a:00.0 enp10s0: Link is Down
[   10.859987] e1000e 0000:00:19.0 eno1: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
[   10.860023] IPv6: ADDRCONF(NETDEV_CHANGE): eno1: link becomes ready
[   10.915970] r8169 0000:08:00.0 enp8s0: Link is Up - 2.5Gbps/Full - flow control off
[   10.915985] IPv6: ADDRCONF(NETDEV_CHANGE): enp8s0: link becomes ready
[   11.075050] r8169 0000:09:00.0 enp9s0: Link is Up - 2.5Gbps/Full - flow control off
[   11.075065] IPv6: ADDRCONF(NETDEV_CHANGE): enp9s0: link becomes ready
[   11.251930] r8169 0000:0a:00.0 enp10s0: Link is Up - 2.5Gbps/Full - flow control off
[   11.251945] IPv6: ADDRCONF(NETDEV_CHANGE): enp10s0: link becomes ready
[  295.600364] r8169 0000:08:00.0 enp8s0: Link is Down
[  301.258450] r8169 0000:08:00.0 enp8s0: Link is Up - 2.5Gbps/Full - flow control off
[  462.203964] device enp8s0 entered promiscuous mode
[  501.204459] device enp8s0 left promiscuous mode
[ 2554.688230] r8169 0000:07:00.0: invalid VPD tag 0xff (size 0) at offset 0; assume missing optional EEPROM
[ 2554.688696] r8169 0000:08:00.0: invalid VPD tag 0xff (size 0) at offset 0; assume missing optional EEPROM
[ 2554.689142] r8169 0000:09:00.0: invalid VPD tag 0xff (size 0) at offset 0; assume missing optional EEPROM
[ 2554.689578] r8169 0000:0a:00.0: invalid VPD tag 0xff (size 0) at offset 0; assume missing optional EEPROM

^ permalink raw reply	[relevance 1%]

* Re: issue with ethernet gigabit ethernet card both on stable and rc kernels
  2023-01-20 12:58  4% issue with ethernet gigabit ethernet card both on stable and rc kernels vmxevilstar
@ 2023-01-20 21:09  0% ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2023-01-20 21:09 UTC (permalink / raw)
  To: vmxevilstar, nic_swsd, netdev

On 20.01.2023 13:58, vmxevilstar@gmail.com wrote:
> Dear Mantainers,
> 
> I am having an issue with my ethernet card.
> It works when the system boots but after around a couple of hours it
> disconnects.
> I tried different ways to get it working without having to reboot but
> nothing else seemed to work.
> Even rebooting doesn't solve the problem since again, after a couple of
> hours, it stops working again.
> I have googled around and found that some people had this same problem
> on older kernels but no solution seemed to apply to this rc nor latest
> stable kernel versions.
> I am probably missing something here.
> The issue happened also with recent stable 6.1.7 and rc kernel
> versions.
> I am actually testing the latest 6.2-rc4 version.
> 
> Following are some data I think might be useful but if you feel I
> neglected to give enough informations and you need more please just ask
> me.
> 
> Here some informations about my system :
> uname -a
> Linux ghost 6.2.0-rc4 #2 SMP PREEMPT_DYNAMIC Tue Jan 17 13:35:46 CET
> 2023 x86_64 GNU/Linux
> 
> gcc --version
> gcc (Debian 12.2.0-14) 12.2.0
> Copyright (C) 2022 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is
> NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
> PURPOSE.
> 
> 
> /usr/src# lspci|grep -i net
> 02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125
> 2.5GbE Controller (rev 05)
> 
> description: Ethernet interface
> product: RTL8125 2.5GbE Controller
> vendor: Realtek Semiconductor Co., Ltd.
> physical id: 0
> bus info: pci@0000:02:00.0
> logical name: enp2s0
> version: ff
> serial: b0:25:aa:49:a5:3a
> size: 1Gbit/s
> capacity: 1Gbit/s
> width: 32 bits
> clock: 66MHz
> capabilities: bus_master vga_palette cap_list ethernet physical tp mii
> 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
> configuration: autonegotiation=on broadcast=yes driver=r8169
> driverversion=6.2.0-rc4 duplex=full firmware=rtl8125b-2_0.0.2 07/13/20
> latency=255 link=yes maxlatency=255 mingnt=255 multicast=yes
> port=twisted pair speed=1Gbit/s
> 
> 
> 
> lsmod|grep r8169
> r8169                 110592  0
> mdio_devres            16384  1 r8169
> libphy                200704  3 r8169,mdio_devres,realtek
> 
> the firmware version I am using is linux-firmware-20221214.tar.gz
> 
> 
> Here you can find what happens (dmesg -wT)
> [Fri Jan 20 11:04:32 2023] userif-3: sent link up event.
> 
> [Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_chipcmd_cond
> == 1 (loop: 100, delay: 100).
> [Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
> == 1 (loop: 100, delay: 10).
> [Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
> == 1 (loop: 100, delay: 10).
> [Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
> == 1 (loop: 100, delay: 10).
> [Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
> == 1 (loop: 100, delay: 10).
> [Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
> == 1 (loop: 100, delay: 10).
> [Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
> == 1 (loop: 100, delay: 10).
> [Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0:
> rtl_mac_ocp_e00e_cond == 1 (loop: 10, delay: 1000).
> [Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_chipcmd_cond
> == 1 (loop: 100, delay: 100).
> [Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
> == 1 (loop: 100, delay: 10).
> [Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
> == 1 (loop: 100, delay: 10).
> [Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
> == 1 (loop: 100, delay: 10).
> [Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
> == 1 (loop: 100, delay: 10).
> [Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
> == 1 (loop: 100, delay: 10).
> [Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
> == 1 (loop: 100, delay: 10).
> [Fri Jan 20 13:20:18 2023] r8169 0000:02:00.0 enp2s0:
> rtl_mac_ocp_e00e_cond == 1 (loop: 10, delay: 1000).
> 

Thanks for the report. rtl_chipcmd_cond is used only during chip reset,
so I guess there's a tx timeout trace in the log before your snippet.

Typical reason is a system ASPM incompatibility. You can try to disable
ASPM in the BIOS, or use the sysfs attributes under
/sys/class/net/<if>/device/link to disable ASPM states. L1.2 is disabled
per default, therefore next one to try is L1.1.


> I would love to provide a patch of any kind but I am afraid I don't
> have enough programming skills.
> 
> Thanks in advance for your time.


^ permalink raw reply	[relevance 0%]

* issue with ethernet gigabit ethernet card both on stable and rc kernels
@ 2023-01-20 12:58  4% vmxevilstar
  2023-01-20 21:09  0% ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: vmxevilstar @ 2023-01-20 12:58 UTC (permalink / raw)
  To: nic_swsd, netdev; +Cc: hkallweit1

Dear Mantainers,

I am having an issue with my ethernet card.
It works when the system boots but after around a couple of hours it
disconnects.
I tried different ways to get it working without having to reboot but
nothing else seemed to work.
Even rebooting doesn't solve the problem since again, after a couple of
hours, it stops working again.
I have googled around and found that some people had this same problem
on older kernels but no solution seemed to apply to this rc nor latest
stable kernel versions.
I am probably missing something here.
The issue happened also with recent stable 6.1.7 and rc kernel
versions.
I am actually testing the latest 6.2-rc4 version.

Following are some data I think might be useful but if you feel I
neglected to give enough informations and you need more please just ask
me.

Here some informations about my system :
uname -a
Linux ghost 6.2.0-rc4 #2 SMP PREEMPT_DYNAMIC Tue Jan 17 13:35:46 CET
2023 x86_64 GNU/Linux

gcc --version
gcc (Debian 12.2.0-14) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.


/usr/src# lspci|grep -i net
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125
2.5GbE Controller (rev 05)

description: Ethernet interface
product: RTL8125 2.5GbE Controller
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:02:00.0
logical name: enp2s0
version: ff
serial: b0:25:aa:49:a5:3a
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 66MHz
capabilities: bus_master vga_palette cap_list ethernet physical tp mii
10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8169
driverversion=6.2.0-rc4 duplex=full firmware=rtl8125b-2_0.0.2 07/13/20
latency=255 link=yes maxlatency=255 mingnt=255 multicast=yes
port=twisted pair speed=1Gbit/s



lsmod|grep r8169
r8169                 110592  0
mdio_devres            16384  1 r8169
libphy                200704  3 r8169,mdio_devres,realtek

the firmware version I am using is linux-firmware-20221214.tar.gz


Here you can find what happens (dmesg -wT)
[Fri Jan 20 11:04:32 2023] userif-3: sent link up event.

[Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_chipcmd_cond
== 1 (loop: 100, delay: 100).
[Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
== 1 (loop: 100, delay: 10).
[Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
== 1 (loop: 100, delay: 10).
[Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
== 1 (loop: 100, delay: 10).
[Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
== 1 (loop: 100, delay: 10).
[Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
== 1 (loop: 100, delay: 10).
[Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
== 1 (loop: 100, delay: 10).
[Fri Jan 20 13:19:41 2023] r8169 0000:02:00.0 enp2s0:
rtl_mac_ocp_e00e_cond == 1 (loop: 10, delay: 1000).
[Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_chipcmd_cond
== 1 (loop: 100, delay: 100).
[Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
== 1 (loop: 100, delay: 10).
[Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
== 1 (loop: 100, delay: 10).
[Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
== 1 (loop: 100, delay: 10).
[Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
== 1 (loop: 100, delay: 10).
[Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
== 1 (loop: 100, delay: 10).
[Fri Jan 20 13:20:17 2023] r8169 0000:02:00.0 enp2s0: rtl_ephyar_cond
== 1 (loop: 100, delay: 10).
[Fri Jan 20 13:20:18 2023] r8169 0000:02:00.0 enp2s0:
rtl_mac_ocp_e00e_cond == 1 (loop: 10, delay: 1000).

I would love to provide a patch of any kind but I am afraid I don't
have enough programming skills.

Thanks in advance for your time.

^ permalink raw reply	[relevance 4%]

* RE: [PATCH net v2] r8169: fix rtl8125b dmar pte write access not set error
  2022-12-23 10:39 11% ` Heiner Kallweit
@ 2022-12-26 12:13  5%   ` Hau
  0 siblings, 0 replies; 107+ results
From: Hau @ 2022-12-26 12:13 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev, nic_swsd

> 
> On 23.12.2022 08:43, Chunhao Lin wrote:
> > When close device, if wol is enabled, rx will be enabled. When open
> > device it will cause rx to dma to the wrong memory address after
> pci_set_master().
> > System log will show blow messages.
> >
> > DMAR: DRHD: handling fault status reg 3
> > DMAR: [DMA Write] Request device [02:00.0] PASID ffffffff fault addr
> > ffdd4000 [fault reason 05] PTE Write access is not set
> >
> > In this patch, driver disable tx/rx when close device. If wol is
> > enabled, only enable rx filter and disable rxdv_gate to let hardware
> > only receive packet to fifo but not to dma it.
> >
> > Signed-off-by: Chunhao Lin <hau@realtek.com>
> > ---
> > v1 -> v2: update commit message and adjust the code according to current
> kernel code.
> >
> >  drivers/net/ethernet/realtek/r8169_main.c | 58
> > +++++++++++------------
> >  1 file changed, 29 insertions(+), 29 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> > b/drivers/net/ethernet/realtek/r8169_main.c
> > index a9dcc98b6af1..24592d972523 100644
> > --- a/drivers/net/ethernet/realtek/r8169_main.c
> > +++ b/drivers/net/ethernet/realtek/r8169_main.c
> > @@ -2210,28 +2210,6 @@ static int rtl_set_mac_address(struct net_device
> *dev, void *p)
> >  	return 0;
> >  }
> >
> > -static void rtl_wol_enable_rx(struct rtl8169_private *tp) -{
> > -	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
> > -		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
> > -			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
> > -}
> > -
> > -static void rtl_prepare_power_down(struct rtl8169_private *tp) -{
> > -	if (tp->dash_type != RTL_DASH_NONE)
> > -		return;
> > -
> > -	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
> > -	    tp->mac_version == RTL_GIGA_MAC_VER_33)
> > -		rtl_ephy_write(tp, 0x19, 0xff64);
> > -
> > -	if (device_may_wakeup(tp_to_dev(tp))) {
> > -		phy_speed_down(tp->phydev, false);
> > -		rtl_wol_enable_rx(tp);
> > -	}
> > -}
> > -
> >  static void rtl_init_rxcfg(struct rtl8169_private *tp)  {
> >  	switch (tp->mac_version) {
> > @@ -2455,6 +2433,31 @@ static void rtl_enable_rxdvgate(struct
> rtl8169_private *tp)
> >  	rtl_wait_txrx_fifo_empty(tp);
> >  }
> >
> > +static void rtl_wol_enable_rx(struct rtl8169_private *tp) {
> > +	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
> > +		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
> > +			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
> > +
> > +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
> > +		rtl_disable_rxdvgate(tp);
> > +}
> > +
> > +static void rtl_prepare_power_down(struct rtl8169_private *tp) {
> > +	if (tp->dash_type != RTL_DASH_NONE)
> > +		return;
> > +
> > +	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
> > +	    tp->mac_version == RTL_GIGA_MAC_VER_33)
> > +		rtl_ephy_write(tp, 0x19, 0xff64);
> > +
> > +	if (device_may_wakeup(tp_to_dev(tp))) {
> > +		phy_speed_down(tp->phydev, false);
> > +		rtl_wol_enable_rx(tp);
> > +	}
> > +}
> > +
> >  static void rtl_set_tx_config_registers(struct rtl8169_private *tp)
> > {
> >  	u32 val = TX_DMA_BURST << TxDMAShift | @@ -3872,7 +3875,7 @@
> static
> > void rtl8169_tx_clear(struct rtl8169_private *tp)
> >  	netdev_reset_queue(tp->dev);
> >  }
> >
> > -static void rtl8169_cleanup(struct rtl8169_private *tp, bool
> > going_down)
> > +static void rtl8169_cleanup(struct rtl8169_private *tp)
> >  {
> >  	napi_disable(&tp->napi);
> >
> > @@ -3884,9 +3887,6 @@ static void rtl8169_cleanup(struct
> > rtl8169_private *tp, bool going_down)
> >
> >  	rtl_rx_close(tp);
> >
> > -	if (going_down && tp->dev->wol_enabled)
> > -		goto no_reset;
> > -
> >  	switch (tp->mac_version) {
> >  	case RTL_GIGA_MAC_VER_28:
> >  	case RTL_GIGA_MAC_VER_31:
> > @@ -3907,7 +3907,7 @@ static void rtl8169_cleanup(struct rtl8169_private
> *tp, bool going_down)
> >  	}
> >
> >  	rtl_hw_reset(tp);
> > -no_reset:
> > +
> >  	rtl8169_tx_clear(tp);
> >  	rtl8169_init_ring_indexes(tp);
> >  }
> > @@ -3918,7 +3918,7 @@ static void rtl_reset_work(struct
> > rtl8169_private *tp)
> >
> >  	netif_stop_queue(tp->dev);
> >
> > -	rtl8169_cleanup(tp, false);
> > +	rtl8169_cleanup(tp);
> >
> >  	for (i = 0; i < NUM_RX_DESC; i++)
> >  		rtl8169_mark_to_asic(tp->RxDescArray + i); @@ -4605,7
> +4605,7 @@
> > static void rtl8169_down(struct rtl8169_private *tp)
> >  	pci_clear_master(tp->pci_dev);
> >  	rtl_pci_commit(tp);
> >
> > -	rtl8169_cleanup(tp, true);
> > +	rtl8169_cleanup(tp);
> >  	rtl_disable_exit_l1(tp);
> >  	rtl_prepare_power_down(tp);
> >  }
> 
> The change affects also chip versions other than RTL8125B.
> Is the problem you're fixing really specific to RTL8125B?
> Or could it happen also with other chip versions?
>
All chips that supported by r8169 will be affect by this patch.

> Either patch or commit message need to be changed.
> And it would be better to split the patch:
> 1. Moving rtl_wol_enable_rx() and rtl_prepare_power_down() in the code 2.
> Actual change This makes it easier to track the actual change.
>
I will follow your suggestion and submit this patch again.
 
> ------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net v2] r8169: fix rtl8125b dmar pte write access not set error
  2022-12-23  7:43  4% [PATCH net v2] " Chunhao Lin
@ 2022-12-23 10:39 11% ` Heiner Kallweit
  2022-12-26 12:13  5%   ` Hau
  0 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2022-12-23 10:39 UTC (permalink / raw)
  To: Chunhao Lin; +Cc: netdev, nic_swsd

On 23.12.2022 08:43, Chunhao Lin wrote:
> When close device, if wol is enabled, rx will be enabled. When open device
> it will cause rx to dma to the wrong memory address after pci_set_master().
> System log will show blow messages.
> 
> DMAR: DRHD: handling fault status reg 3
> DMAR: [DMA Write] Request device [02:00.0] PASID ffffffff fault addr ffdd4000 [fault reason 05] PTE Write access is not set
> 
> In this patch, driver disable tx/rx when close device. If wol is
> enabled, only enable rx filter and disable rxdv_gate to let hardware only
> receive packet to fifo but not to dma it.
> 
> Signed-off-by: Chunhao Lin <hau@realtek.com>
> ---
> v1 -> v2: update commit message and adjust the code according to current kernel code.
> 
>  drivers/net/ethernet/realtek/r8169_main.c | 58 +++++++++++------------
>  1 file changed, 29 insertions(+), 29 deletions(-)
> 
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index a9dcc98b6af1..24592d972523 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -2210,28 +2210,6 @@ static int rtl_set_mac_address(struct net_device *dev, void *p)
>  	return 0;
>  }
>  
> -static void rtl_wol_enable_rx(struct rtl8169_private *tp)
> -{
> -	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
> -		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
> -			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
> -}
> -
> -static void rtl_prepare_power_down(struct rtl8169_private *tp)
> -{
> -	if (tp->dash_type != RTL_DASH_NONE)
> -		return;
> -
> -	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
> -	    tp->mac_version == RTL_GIGA_MAC_VER_33)
> -		rtl_ephy_write(tp, 0x19, 0xff64);
> -
> -	if (device_may_wakeup(tp_to_dev(tp))) {
> -		phy_speed_down(tp->phydev, false);
> -		rtl_wol_enable_rx(tp);
> -	}
> -}
> -
>  static void rtl_init_rxcfg(struct rtl8169_private *tp)
>  {
>  	switch (tp->mac_version) {
> @@ -2455,6 +2433,31 @@ static void rtl_enable_rxdvgate(struct rtl8169_private *tp)
>  	rtl_wait_txrx_fifo_empty(tp);
>  }
>  
> +static void rtl_wol_enable_rx(struct rtl8169_private *tp)
> +{
> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
> +		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
> +			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
> +
> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
> +		rtl_disable_rxdvgate(tp);
> +}
> +
> +static void rtl_prepare_power_down(struct rtl8169_private *tp)
> +{
> +	if (tp->dash_type != RTL_DASH_NONE)
> +		return;
> +
> +	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
> +	    tp->mac_version == RTL_GIGA_MAC_VER_33)
> +		rtl_ephy_write(tp, 0x19, 0xff64);
> +
> +	if (device_may_wakeup(tp_to_dev(tp))) {
> +		phy_speed_down(tp->phydev, false);
> +		rtl_wol_enable_rx(tp);
> +	}
> +}
> +
>  static void rtl_set_tx_config_registers(struct rtl8169_private *tp)
>  {
>  	u32 val = TX_DMA_BURST << TxDMAShift |
> @@ -3872,7 +3875,7 @@ static void rtl8169_tx_clear(struct rtl8169_private *tp)
>  	netdev_reset_queue(tp->dev);
>  }
>  
> -static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
> +static void rtl8169_cleanup(struct rtl8169_private *tp)
>  {
>  	napi_disable(&tp->napi);
>  
> @@ -3884,9 +3887,6 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
>  
>  	rtl_rx_close(tp);
>  
> -	if (going_down && tp->dev->wol_enabled)
> -		goto no_reset;
> -
>  	switch (tp->mac_version) {
>  	case RTL_GIGA_MAC_VER_28:
>  	case RTL_GIGA_MAC_VER_31:
> @@ -3907,7 +3907,7 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
>  	}
>  
>  	rtl_hw_reset(tp);
> -no_reset:
> +
>  	rtl8169_tx_clear(tp);
>  	rtl8169_init_ring_indexes(tp);
>  }
> @@ -3918,7 +3918,7 @@ static void rtl_reset_work(struct rtl8169_private *tp)
>  
>  	netif_stop_queue(tp->dev);
>  
> -	rtl8169_cleanup(tp, false);
> +	rtl8169_cleanup(tp);
>  
>  	for (i = 0; i < NUM_RX_DESC; i++)
>  		rtl8169_mark_to_asic(tp->RxDescArray + i);
> @@ -4605,7 +4605,7 @@ static void rtl8169_down(struct rtl8169_private *tp)
>  	pci_clear_master(tp->pci_dev);
>  	rtl_pci_commit(tp);
>  
> -	rtl8169_cleanup(tp, true);
> +	rtl8169_cleanup(tp);
>  	rtl_disable_exit_l1(tp);
>  	rtl_prepare_power_down(tp);
>  }

The change affects also chip versions other than RTL8125B.
Is the problem you're fixing really specific to RTL8125B?
Or could it happen also with other chip versions?
Either patch or commit message need to be changed.
And it would be better to split the patch:
1. Moving rtl_wol_enable_rx() and rtl_prepare_power_down() in the code
2. Actual change
This makes it easier to track the actual change.


^ permalink raw reply	[relevance 11%]

* [PATCH net v2] r8169: fix rtl8125b dmar pte write access not set error
@ 2022-12-23  7:43  4% Chunhao Lin
  2022-12-23 10:39 11% ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Chunhao Lin @ 2022-12-23  7:43 UTC (permalink / raw)
  To: hkallweit1; +Cc: netdev, nic_swsd, Chunhao Lin

When close device, if wol is enabled, rx will be enabled. When open device
it will cause rx to dma to the wrong memory address after pci_set_master().
System log will show blow messages.

DMAR: DRHD: handling fault status reg 3
DMAR: [DMA Write] Request device [02:00.0] PASID ffffffff fault addr ffdd4000 [fault reason 05] PTE Write access is not set

In this patch, driver disable tx/rx when close device. If wol is
enabled, only enable rx filter and disable rxdv_gate to let hardware only
receive packet to fifo but not to dma it.

Signed-off-by: Chunhao Lin <hau@realtek.com>
---
v1 -> v2: update commit message and adjust the code according to current kernel code.

 drivers/net/ethernet/realtek/r8169_main.c | 58 +++++++++++------------
 1 file changed, 29 insertions(+), 29 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index a9dcc98b6af1..24592d972523 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -2210,28 +2210,6 @@ static int rtl_set_mac_address(struct net_device *dev, void *p)
 	return 0;
 }
 
-static void rtl_wol_enable_rx(struct rtl8169_private *tp)
-{
-	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
-		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
-			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
-}
-
-static void rtl_prepare_power_down(struct rtl8169_private *tp)
-{
-	if (tp->dash_type != RTL_DASH_NONE)
-		return;
-
-	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
-	    tp->mac_version == RTL_GIGA_MAC_VER_33)
-		rtl_ephy_write(tp, 0x19, 0xff64);
-
-	if (device_may_wakeup(tp_to_dev(tp))) {
-		phy_speed_down(tp->phydev, false);
-		rtl_wol_enable_rx(tp);
-	}
-}
-
 static void rtl_init_rxcfg(struct rtl8169_private *tp)
 {
 	switch (tp->mac_version) {
@@ -2455,6 +2433,31 @@ static void rtl_enable_rxdvgate(struct rtl8169_private *tp)
 	rtl_wait_txrx_fifo_empty(tp);
 }
 
+static void rtl_wol_enable_rx(struct rtl8169_private *tp)
+{
+	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
+		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
+			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
+
+	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
+		rtl_disable_rxdvgate(tp);
+}
+
+static void rtl_prepare_power_down(struct rtl8169_private *tp)
+{
+	if (tp->dash_type != RTL_DASH_NONE)
+		return;
+
+	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
+	    tp->mac_version == RTL_GIGA_MAC_VER_33)
+		rtl_ephy_write(tp, 0x19, 0xff64);
+
+	if (device_may_wakeup(tp_to_dev(tp))) {
+		phy_speed_down(tp->phydev, false);
+		rtl_wol_enable_rx(tp);
+	}
+}
+
 static void rtl_set_tx_config_registers(struct rtl8169_private *tp)
 {
 	u32 val = TX_DMA_BURST << TxDMAShift |
@@ -3872,7 +3875,7 @@ static void rtl8169_tx_clear(struct rtl8169_private *tp)
 	netdev_reset_queue(tp->dev);
 }
 
-static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
+static void rtl8169_cleanup(struct rtl8169_private *tp)
 {
 	napi_disable(&tp->napi);
 
@@ -3884,9 +3887,6 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
 
 	rtl_rx_close(tp);
 
-	if (going_down && tp->dev->wol_enabled)
-		goto no_reset;
-
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_28:
 	case RTL_GIGA_MAC_VER_31:
@@ -3907,7 +3907,7 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
 	}
 
 	rtl_hw_reset(tp);
-no_reset:
+
 	rtl8169_tx_clear(tp);
 	rtl8169_init_ring_indexes(tp);
 }
@@ -3918,7 +3918,7 @@ static void rtl_reset_work(struct rtl8169_private *tp)
 
 	netif_stop_queue(tp->dev);
 
-	rtl8169_cleanup(tp, false);
+	rtl8169_cleanup(tp);
 
 	for (i = 0; i < NUM_RX_DESC; i++)
 		rtl8169_mark_to_asic(tp->RxDescArray + i);
@@ -4605,7 +4605,7 @@ static void rtl8169_down(struct rtl8169_private *tp)
 	pci_clear_master(tp->pci_dev);
 	rtl_pci_commit(tp);
 
-	rtl8169_cleanup(tp, true);
+	rtl8169_cleanup(tp);
 	rtl_disable_exit_l1(tp);
 	rtl_prepare_power_down(tp);
 }
-- 
2.25.1


^ permalink raw reply related	[relevance 4%]

* RE: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-17 19:38  5%             ` Heiner Kallweit
  2022-10-20 18:01  5%               ` Hau
@ 2022-10-24 18:02  5%               ` Hau
  1 sibling, 0 replies; 107+ results
From: Hau @ 2022-10-24 18:02 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev, nic_swsd, kuba, grundler

> 
> On 17.10.2022 19:23, Hau wrote:
> >> On 13.10.2022 08:04, Hau wrote:
> >>>> On 12.10.2022 09:59, Hau wrote:
> >>>>>>
> >>>>>> On 04.10.2022 10:10, Chunhao Lin wrote:
> >>>>>>> When close device, rx will be enabled if wol is enabeld. When
> >>>>>>> open device it will cause rx to dma to wrong address after
> pci_set_master().
> >>>>>>>
> >>>>>>> In this patch, driver will disable tx/rx when close device. If
> >>>>>>> wol is eanbled only enable rx filter and disable rxdv_gate to
> >>>>>>> let hardware can receive packet to fifo but not to dma it.
> >>>>>>>
> >>>>>>> Fixes: 120068481405 ("r8169: fix failing WoL")
> >>>>>>> Signed-off-by: Chunhao Lin <hau@realtek.com>
> >>>>>>> ---
> >>>>>>>  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
> >>>>>>>  1 file changed, 7 insertions(+), 7 deletions(-)
> >>>>>>>
> >>>>>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> >>>>>>> b/drivers/net/ethernet/realtek/r8169_main.c
> >>>>>>> index 1b7fdb4f056b..c09cfbe1d3f0 100644
> >>>>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
> >>>>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> >>>>>>> @@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct
> >>>>>> rtl8169_private *tp)
> >>>>>>>  	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
> >>>>>>>  		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
> >>>>>>>  			AcceptBroadcast | AcceptMulticast |
> AcceptMyPhys);
> >>>>>>> +
> >>>>>>> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
> >>>>>>> +		RTL_W32(tp, MISC, RTL_R32(tp, MISC) &
> >> ~RXDV_GATED_EN);
> >>>>>>
> >>>>>> Is this correct anyway? Supposedly you want to set this bit to
> >>>>>> disable
> >> DMA.
> >>>>>>
> >>>>> If wol is enabled, driver need to disable hardware rxdv_gate for
> >>>>> receiving
> >>>> packets.
> >>>>>
> >>>> OK, I see. But why disable it here? I see no scenario where
> >>>> rxdv_gate would be enabled when we get here.
> >>>>
> >>> rxdv_gate will be enabled in rtl8169_cleanup(). When suspend or
> >>> close and wol is enabled driver will call rtl8169_down() ->
> >>> rtl8169_cleanup()->
> >> rtl_prepare_power_down()-> rtl_wol_enable_rx().
> >>> So disabled rxdv_gate in rtl_wol_enable_rx() for receiving packets.
> >>>
> >> rtl8169_cleanup() skips the call to rtl_enable_rxdvgate() when being
> >> called from
> >> rtl8169_down() and wol is enabled. This means rxdv gate is still disabled.
> >>
> > Yes, it will keep rxdv_gate disable. But it will also keep tx/rx on.
> > If OS have an  unexpected reboot hardware  may dma to invalid memory
> > address. If possible I prefer to keep tx/rx off when exit driver control.
> >
> 
> When you say "keep tx/rx off", do you refer to the rxconfig bits in register
> RxConfig, or to CmdTxEnb and CmdRxEnb in ChipCmd?
> 
> If we talk about the first option, then my guess would be:
> According to rtl_wol_enable_rx() the rx config bits are required for WoL to
> work on certain chip versions. With the introduction of rxdvgate this changed
> and setting these bits isn't needed any longer.
> I tested on RTL8168h and WoL worked w/o the Accept bits set in RxConfig.
> Please confirm or correct my understanding.
> 
> static void rtl_wol_enable_rx(struct rtl8169_private *tp) {
> 	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
> 		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
> 			AcceptBroadcast | AcceptMulticast |
> AcceptMyPhys); }
> 
>
When enter d3cold hardware will pull pcie reset to low. If pcie reset is pulled low
hardware will set rcr acpt_phy/mar/brd . That is why you still get wol worked w/o set rcr.
Although hardware will set rcr bits when pcie reset is pull low. But there is no pcie reset
when hardware enter d3hot. So driver still needs to set rcr bits when hardware go to d3 state.

 ------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 5%]

* RE: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-17 19:38  5%             ` Heiner Kallweit
@ 2022-10-20 18:01  5%               ` Hau
  2022-10-24 18:02  5%               ` Hau
  1 sibling, 0 replies; 107+ results
From: Hau @ 2022-10-20 18:01 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev, nic_swsd, kuba, grundler

> On 17.10.2022 19:23, Hau wrote:
> >> On 13.10.2022 08:04, Hau wrote:
> >>>> On 12.10.2022 09:59, Hau wrote:
> >>>>>>
> >>>>>> On 04.10.2022 10:10, Chunhao Lin wrote:
> >>>>>>> When close device, rx will be enabled if wol is enabeld. When
> >>>>>>> open device it will cause rx to dma to wrong address after
> pci_set_master().
> >>>>>>>
> >>>>>>> In this patch, driver will disable tx/rx when close device. If
> >>>>>>> wol is eanbled only enable rx filter and disable rxdv_gate to
> >>>>>>> let hardware can receive packet to fifo but not to dma it.
> >>>>>>>
> >>>>>>> Fixes: 120068481405 ("r8169: fix failing WoL")
> >>>>>>> Signed-off-by: Chunhao Lin <hau@realtek.com>
> >>>>>>> ---
> >>>>>>>  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
> >>>>>>>  1 file changed, 7 insertions(+), 7 deletions(-)
> >>>>>>>
> >>>>>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> >>>>>>> b/drivers/net/ethernet/realtek/r8169_main.c
> >>>>>>> index 1b7fdb4f056b..c09cfbe1d3f0 100644
> >>>>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
> >>>>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> >>>>>>> @@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct
> >>>>>> rtl8169_private *tp)
> >>>>>>>  	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
> >>>>>>>  		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
> >>>>>>>  			AcceptBroadcast | AcceptMulticast |
> AcceptMyPhys);
> >>>>>>> +
> >>>>>>> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
> >>>>>>> +		RTL_W32(tp, MISC, RTL_R32(tp, MISC) &
> >> ~RXDV_GATED_EN);
> >>>>>>
> >>>>>> Is this correct anyway? Supposedly you want to set this bit to
> >>>>>> disable
> >> DMA.
> >>>>>>
> >>>>> If wol is enabled, driver need to disable hardware rxdv_gate for
> >>>>> receiving
> >>>> packets.
> >>>>>
> >>>> OK, I see. But why disable it here? I see no scenario where
> >>>> rxdv_gate would be enabled when we get here.
> >>>>
> >>> rxdv_gate will be enabled in rtl8169_cleanup(). When suspend or
> >>> close and wol is enabled driver will call rtl8169_down() ->
> >>> rtl8169_cleanup()->
> >> rtl_prepare_power_down()-> rtl_wol_enable_rx().
> >>> So disabled rxdv_gate in rtl_wol_enable_rx() for receiving packets.
> >>>
> >> rtl8169_cleanup() skips the call to rtl_enable_rxdvgate() when being
> >> called from
> >> rtl8169_down() and wol is enabled. This means rxdv gate is still disabled.
> >>
> > Yes, it will keep rxdv_gate disable. But it will also keep tx/rx on.
> > If OS have an  unexpected reboot hardware  may dma to invalid memory
> > address. If possible I prefer to keep tx/rx off when exit driver control.
> >
> 
> When you say "keep tx/rx off", do you refer to the rxconfig bits in register
> RxConfig, or to CmdTxEnb and CmdRxEnb in ChipCmd?
> 
> If we talk about the first option, then my guess would be:
> According to rtl_wol_enable_rx() the rx config bits are required for WoL to
> work on certain chip versions. With the introduction of rxdvgate this changed
> and setting these bits isn't needed any longer.
> I tested on RTL8168h and WoL worked w/o the Accept bits set in RxConfig.
> Please confirm or correct my understanding.
> 
> static void rtl_wol_enable_rx(struct rtl8169_private *tp) {
> 	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
> 		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
> 			AcceptBroadcast | AcceptMulticast |
> AcceptMyPhys); }
> 
> 
We expect wol  packet should be filtered by Accept bits set in RxConfig. 
But for magic packet wakeup it seems it does not perform as expected. 
We need some time to figure this out. Once we have any update we will let you know.

 ------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-17 17:23  5%           ` Hau
@ 2022-10-17 19:38  5%             ` Heiner Kallweit
  2022-10-20 18:01  5%               ` Hau
  2022-10-24 18:02  5%               ` Hau
  0 siblings, 2 replies; 107+ results
From: Heiner Kallweit @ 2022-10-17 19:38 UTC (permalink / raw)
  To: Hau; +Cc: netdev, nic_swsd, kuba, grundler

On 17.10.2022 19:23, Hau wrote:
>> On 13.10.2022 08:04, Hau wrote:
>>>> On 12.10.2022 09:59, Hau wrote:
>>>>>>
>>>>>> On 04.10.2022 10:10, Chunhao Lin wrote:
>>>>>>> When close device, rx will be enabled if wol is enabeld. When open
>>>>>>> device it will cause rx to dma to wrong address after pci_set_master().
>>>>>>>
>>>>>>> In this patch, driver will disable tx/rx when close device. If wol
>>>>>>> is eanbled only enable rx filter and disable rxdv_gate to let
>>>>>>> hardware can receive packet to fifo but not to dma it.
>>>>>>>
>>>>>>> Fixes: 120068481405 ("r8169: fix failing WoL")
>>>>>>> Signed-off-by: Chunhao Lin <hau@realtek.com>
>>>>>>> ---
>>>>>>>  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
>>>>>>>  1 file changed, 7 insertions(+), 7 deletions(-)
>>>>>>>
>>>>>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
>>>>>>> b/drivers/net/ethernet/realtek/r8169_main.c
>>>>>>> index 1b7fdb4f056b..c09cfbe1d3f0 100644
>>>>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>>>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>>>>>> @@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct
>>>>>> rtl8169_private *tp)
>>>>>>>  	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
>>>>>>>  		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
>>>>>>>  			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
>>>>>>> +
>>>>>>> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
>>>>>>> +		RTL_W32(tp, MISC, RTL_R32(tp, MISC) &
>> ~RXDV_GATED_EN);
>>>>>>
>>>>>> Is this correct anyway? Supposedly you want to set this bit to disable
>> DMA.
>>>>>>
>>>>> If wol is enabled, driver need to disable hardware rxdv_gate for
>>>>> receiving
>>>> packets.
>>>>>
>>>> OK, I see. But why disable it here? I see no scenario where rxdv_gate
>>>> would be enabled when we get here.
>>>>
>>> rxdv_gate will be enabled in rtl8169_cleanup(). When suspend or close
>>> and wol is enabled driver will call rtl8169_down() -> rtl8169_cleanup()->
>> rtl_prepare_power_down()-> rtl_wol_enable_rx().
>>> So disabled rxdv_gate in rtl_wol_enable_rx() for receiving packets.
>>>
>> rtl8169_cleanup() skips the call to rtl_enable_rxdvgate() when being called
>> from
>> rtl8169_down() and wol is enabled. This means rxdv gate is still disabled.
>>
> Yes, it will keep rxdv_gate disable. But it will also keep tx/rx on.  If OS have an  unexpected
> reboot hardware  may dma to invalid memory address. If possible I prefer to keep
> tx/rx off when exit driver control.  
> 

When you say "keep tx/rx off", do you refer to the rxconfig bits in register
RxConfig, or to CmdTxEnb and CmdRxEnb in ChipCmd?

If we talk about the first option, then my guess would be:
According to rtl_wol_enable_rx() the rx config bits are required for WoL to work
on certain chip versions. With the introduction of rxdvgate this changed and
setting these bits isn't needed any longer.
I tested on RTL8168h and WoL worked w/o the Accept bits set in RxConfig.
Please confirm or correct my understanding.

static void rtl_wol_enable_rx(struct rtl8169_private *tp)
{
	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
}


^ permalink raw reply	[relevance 5%]

* RE: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-15  8:18  5%         ` Heiner Kallweit
@ 2022-10-17 17:23  5%           ` Hau
  2022-10-17 19:38  5%             ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Hau @ 2022-10-17 17:23 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev, nic_swsd, kuba, grundler

> On 13.10.2022 08:04, Hau wrote:
> >> On 12.10.2022 09:59, Hau wrote:
> >>>>
> >>>> On 04.10.2022 10:10, Chunhao Lin wrote:
> >>>>> When close device, rx will be enabled if wol is enabeld. When open
> >>>>> device it will cause rx to dma to wrong address after pci_set_master().
> >>>>>
> >>>>> In this patch, driver will disable tx/rx when close device. If wol
> >>>>> is eanbled only enable rx filter and disable rxdv_gate to let
> >>>>> hardware can receive packet to fifo but not to dma it.
> >>>>>
> >>>>> Fixes: 120068481405 ("r8169: fix failing WoL")
> >>>>> Signed-off-by: Chunhao Lin <hau@realtek.com>
> >>>>> ---
> >>>>>  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
> >>>>>  1 file changed, 7 insertions(+), 7 deletions(-)
> >>>>>
> >>>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> b/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> index 1b7fdb4f056b..c09cfbe1d3f0 100644
> >>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> @@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct
> >>>> rtl8169_private *tp)
> >>>>>  	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
> >>>>>  		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
> >>>>>  			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
> >>>>> +
> >>>>> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
> >>>>> +		RTL_W32(tp, MISC, RTL_R32(tp, MISC) &
> ~RXDV_GATED_EN);
> >>>>
> >>>> Is this correct anyway? Supposedly you want to set this bit to disable
> DMA.
> >>>>
> >>> If wol is enabled, driver need to disable hardware rxdv_gate for
> >>> receiving
> >> packets.
> >>>
> >> OK, I see. But why disable it here? I see no scenario where rxdv_gate
> >> would be enabled when we get here.
> >>
> > rxdv_gate will be enabled in rtl8169_cleanup(). When suspend or close
> > and wol is enabled driver will call rtl8169_down() -> rtl8169_cleanup()->
> rtl_prepare_power_down()-> rtl_wol_enable_rx().
> > So disabled rxdv_gate in rtl_wol_enable_rx() for receiving packets.
> >
> rtl8169_cleanup() skips the call to rtl_enable_rxdvgate() when being called
> from
> rtl8169_down() and wol is enabled. This means rxdv gate is still disabled.
> 
Yes, it will keep rxdv_gate disable. But it will also keep tx/rx on.  If OS have an  unexpected
reboot hardware  may dma to invalid memory address. If possible I prefer to keep
tx/rx off when exit driver control.  

------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-13  6:04  5%       ` Hau
@ 2022-10-15  8:18  5%         ` Heiner Kallweit
  2022-10-17 17:23  5%           ` Hau
  0 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2022-10-15  8:18 UTC (permalink / raw)
  To: Hau; +Cc: netdev, nic_swsd, kuba, grundler

On 13.10.2022 08:04, Hau wrote:
>> On 12.10.2022 09:59, Hau wrote:
>>>>
>>>> On 04.10.2022 10:10, Chunhao Lin wrote:
>>>>> When close device, rx will be enabled if wol is enabeld. When open
>>>>> device it will cause rx to dma to wrong address after pci_set_master().
>>>>>
>>>>> In this patch, driver will disable tx/rx when close device. If wol
>>>>> is eanbled only enable rx filter and disable rxdv_gate to let
>>>>> hardware can receive packet to fifo but not to dma it.
>>>>>
>>>>> Fixes: 120068481405 ("r8169: fix failing WoL")
>>>>> Signed-off-by: Chunhao Lin <hau@realtek.com>
>>>>> ---
>>>>>  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
>>>>>  1 file changed, 7 insertions(+), 7 deletions(-)
>>>>>
>>>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
>>>>> b/drivers/net/ethernet/realtek/r8169_main.c
>>>>> index 1b7fdb4f056b..c09cfbe1d3f0 100644
>>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>>>> @@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct
>>>> rtl8169_private *tp)
>>>>>  	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
>>>>>  		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
>>>>>  			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
>>>>> +
>>>>> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
>>>>> +		RTL_W32(tp, MISC, RTL_R32(tp, MISC) & ~RXDV_GATED_EN);
>>>>
>>>> Is this correct anyway? Supposedly you want to set this bit to disable DMA.
>>>>
>>> If wol is enabled, driver need to disable hardware rxdv_gate for receiving
>> packets.
>>>
>> OK, I see. But why disable it here? I see no scenario where rxdv_gate would
>> be enabled when we get here.
>>
> rxdv_gate will be enabled in rtl8169_cleanup(). When suspend or close and wol is enabled
> driver will call rtl8169_down() -> rtl8169_cleanup()-> rtl_prepare_power_down()-> rtl_wol_enable_rx().
> So disabled rxdv_gate in rtl_wol_enable_rx() for receiving packets.
> 
rtl8169_cleanup() skips the call to rtl_enable_rxdvgate() when being called from
rtl8169_down() and wol is enabled. This means rxdv gate is still disabled.




^ permalink raw reply	[relevance 5%]

* RE: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-12 19:33  5%     ` Heiner Kallweit
@ 2022-10-13  6:04  5%       ` Hau
  2022-10-15  8:18  5%         ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Hau @ 2022-10-13  6:04 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev, nic_swsd, kuba, grundler

> On 12.10.2022 09:59, Hau wrote:
> >>
> >> On 04.10.2022 10:10, Chunhao Lin wrote:
> >>> When close device, rx will be enabled if wol is enabeld. When open
> >>> device it will cause rx to dma to wrong address after pci_set_master().
> >>>
> >>> In this patch, driver will disable tx/rx when close device. If wol
> >>> is eanbled only enable rx filter and disable rxdv_gate to let
> >>> hardware can receive packet to fifo but not to dma it.
> >>>
> >>> Fixes: 120068481405 ("r8169: fix failing WoL")
> >>> Signed-off-by: Chunhao Lin <hau@realtek.com>
> >>> ---
> >>>  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
> >>>  1 file changed, 7 insertions(+), 7 deletions(-)
> >>>
> >>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> >>> b/drivers/net/ethernet/realtek/r8169_main.c
> >>> index 1b7fdb4f056b..c09cfbe1d3f0 100644
> >>> --- a/drivers/net/ethernet/realtek/r8169_main.c
> >>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> >>> @@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct
> >> rtl8169_private *tp)
> >>>  	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
> >>>  		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
> >>>  			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
> >>> +
> >>> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
> >>> +		RTL_W32(tp, MISC, RTL_R32(tp, MISC) & ~RXDV_GATED_EN);
> >>
> >> Is this correct anyway? Supposedly you want to set this bit to disable DMA.
> >>
> > If wol is enabled, driver need to disable hardware rxdv_gate for receiving
> packets.
> >
> OK, I see. But why disable it here? I see no scenario where rxdv_gate would
> be enabled when we get here.
> 
rxdv_gate will be enabled in rtl8169_cleanup(). When suspend or close and wol is enabled
driver will call rtl8169_down() -> rtl8169_cleanup()-> rtl_prepare_power_down()-> rtl_wol_enable_rx().
So disabled rxdv_gate in rtl_wol_enable_rx() for receiving packets.

------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-12  7:59  5%   ` Hau
@ 2022-10-12 19:33  5%     ` Heiner Kallweit
  2022-10-13  6:04  5%       ` Hau
  0 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2022-10-12 19:33 UTC (permalink / raw)
  To: Hau; +Cc: netdev, nic_swsd, kuba, grundler

On 12.10.2022 09:59, Hau wrote:
>>
>> On 04.10.2022 10:10, Chunhao Lin wrote:
>>> When close device, rx will be enabled if wol is enabeld. When open
>>> device it will cause rx to dma to wrong address after pci_set_master().
>>>
>>> In this patch, driver will disable tx/rx when close device. If wol is
>>> eanbled only enable rx filter and disable rxdv_gate to let hardware
>>> can receive packet to fifo but not to dma it.
>>>
>>> Fixes: 120068481405 ("r8169: fix failing WoL")
>>> Signed-off-by: Chunhao Lin <hau@realtek.com>
>>> ---
>>>  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
>>>  1 file changed, 7 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
>>> b/drivers/net/ethernet/realtek/r8169_main.c
>>> index 1b7fdb4f056b..c09cfbe1d3f0 100644
>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>> @@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct
>> rtl8169_private *tp)
>>>  	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
>>>  		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
>>>  			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
>>> +
>>> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
>>> +		RTL_W32(tp, MISC, RTL_R32(tp, MISC) & ~RXDV_GATED_EN);
>>
>> Is this correct anyway? Supposedly you want to set this bit to disable DMA.
>>
> If wol is enabled, driver need to disable hardware rxdv_gate for receiving packets.
> 
OK, I see. But why disable it here? I see no scenario where rxdv_gate would be enabled
when we get here.

^ permalink raw reply	[relevance 5%]

* RE: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-09  7:45  5% ` Heiner Kallweit
@ 2022-10-12  7:59  5%   ` Hau
  2022-10-12 19:33  5%     ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Hau @ 2022-10-12  7:59 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev, nic_swsd, kuba, grundler

> 
> On 04.10.2022 10:10, Chunhao Lin wrote:
> > When close device, rx will be enabled if wol is enabeld. When open
> > device it will cause rx to dma to wrong address after pci_set_master().
> >
> > In this patch, driver will disable tx/rx when close device. If wol is
> > eanbled only enable rx filter and disable rxdv_gate to let hardware
> > can receive packet to fifo but not to dma it.
> >
> > Fixes: 120068481405 ("r8169: fix failing WoL")
> > Signed-off-by: Chunhao Lin <hau@realtek.com>
> > ---
> >  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
> >  1 file changed, 7 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> > b/drivers/net/ethernet/realtek/r8169_main.c
> > index 1b7fdb4f056b..c09cfbe1d3f0 100644
> > --- a/drivers/net/ethernet/realtek/r8169_main.c
> > +++ b/drivers/net/ethernet/realtek/r8169_main.c
> > @@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct
> rtl8169_private *tp)
> >  	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
> >  		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
> >  			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
> > +
> > +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
> > +		RTL_W32(tp, MISC, RTL_R32(tp, MISC) & ~RXDV_GATED_EN);
> 
> Is this correct anyway? Supposedly you want to set this bit to disable DMA.
> 
If wol is enabled, driver need to disable hardware rxdv_gate for receiving packets.

------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-04  8:10  4% [PATCH net] " Chunhao Lin
                   ` (2 preceding siblings ...)
  2022-10-08 21:53  5% ` Heiner Kallweit
@ 2022-10-09  7:45  5% ` Heiner Kallweit
  2022-10-12  7:59  5%   ` Hau
  3 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2022-10-09  7:45 UTC (permalink / raw)
  To: Chunhao Lin; +Cc: netdev, nic_swsd, kuba, grundler

On 04.10.2022 10:10, Chunhao Lin wrote:
> When close device, rx will be enabled if wol is enabeld. When open device
> it will cause rx to dma to wrong address after pci_set_master().
> 
> In this patch, driver will disable tx/rx when close device. If wol is
> eanbled only enable rx filter and disable rxdv_gate to let hardware
> can receive packet to fifo but not to dma it.
> 
> Fixes: 120068481405 ("r8169: fix failing WoL")
> Signed-off-by: Chunhao Lin <hau@realtek.com>
> ---
>  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index 1b7fdb4f056b..c09cfbe1d3f0 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct rtl8169_private *tp)
>  	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
>  		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
>  			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
> +
> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
> +		RTL_W32(tp, MISC, RTL_R32(tp, MISC) & ~RXDV_GATED_EN);

Is this correct anyway? Supposedly you want to set this bit to disable DMA.

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-04  8:10  4% [PATCH net] " Chunhao Lin
  2022-10-04 20:14 11% ` Heiner Kallweit
  2022-10-05 16:29  5% ` Heiner Kallweit
@ 2022-10-08 21:53  5% ` Heiner Kallweit
  2022-10-09  7:45  5% ` Heiner Kallweit
  3 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2022-10-08 21:53 UTC (permalink / raw)
  To: Chunhao Lin; +Cc: netdev, nic_swsd, kuba, grundler

On 04.10.2022 10:10, Chunhao Lin wrote:
> When close device, rx will be enabled if wol is enabeld. When open device
> it will cause rx to dma to wrong address after pci_set_master().
> 
> In this patch, driver will disable tx/rx when close device. If wol is
> eanbled only enable rx filter and disable rxdv_gate to let hardware
> can receive packet to fifo but not to dma it.
> 
> Fixes: 120068481405 ("r8169: fix failing WoL")
> Signed-off-by: Chunhao Lin <hau@realtek.com>
> ---
>  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index 1b7fdb4f056b..c09cfbe1d3f0 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct rtl8169_private *tp)
>  	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
>  		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
>  			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
> +
> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
> +		RTL_W32(tp, MISC, RTL_R32(tp, MISC) & ~RXDV_GATED_EN);

Wouldn't this be sufficient? Why is the change to rtl8169_cleanup() needed?

>  }
>  
>  static void rtl_prepare_power_down(struct rtl8169_private *tp)
> @@ -3981,7 +3984,7 @@ static void rtl8169_tx_clear(struct rtl8169_private *tp)
>  	netdev_reset_queue(tp->dev);
>  }
>  
> -static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
> +static void rtl8169_private (struct rtl8169_private *tp)
>  {
>  	napi_disable(&tp->napi);
>  
> @@ -3993,9 +3996,6 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
>  
>  	rtl_rx_close(tp);
>  
> -	if (going_down && tp->dev->wol_enabled)
> -		goto no_reset;
> -
>  	switch (tp->mac_version) {
>  	case RTL_GIGA_MAC_VER_28:
>  	case RTL_GIGA_MAC_VER_31:
> @@ -4016,7 +4016,7 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
>  	}
>  
>  	rtl_hw_reset(tp);
> -no_reset:
> +
>  	rtl8169_tx_clear(tp);
>  	rtl8169_init_ring_indexes(tp);
>  }
> @@ -4027,7 +4027,7 @@ static void rtl_reset_work(struct rtl8169_private *tp)
>  
>  	netif_stop_queue(tp->dev);
>  
> -	rtl8169_cleanup(tp, false);
> +	rtl8169_cleanup(tp);
>  
>  	for (i = 0; i < NUM_RX_DESC; i++)
>  		rtl8169_mark_to_asic(tp->RxDescArray + i);
> @@ -4715,7 +4715,7 @@ static void rtl8169_down(struct rtl8169_private *tp)
>  	pci_clear_master(tp->pci_dev);
>  	rtl_pci_commit(tp);
>  
> -	rtl8169_cleanup(tp, true);
> +	rtl8169_cleanup(tp);
>  	rtl_disable_exit_l1(tp);
>  	rtl_prepare_power_down(tp);
>  }


^ permalink raw reply	[relevance 5%]

* RE: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-05 16:29  5% ` Heiner Kallweit
@ 2022-10-06 14:23  5%   ` Hau
  0 siblings, 0 replies; 107+ results
From: Hau @ 2022-10-06 14:23 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev, nic_swsd, kuba, grundler

> 
> I think the following simple change should also fix the issue.
> DMA is enabled only after the chip has been reset in rtl_reset_work().
> This should ensure that there are no stale RX DMA descriptors any longer.
> Could you please test it?
> 
> 
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> b/drivers/net/ethernet/realtek/r8169_main.c
> index 114f88497..1d72691a4 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -4610,13 +4610,13 @@ static void rtl8169_down(struct rtl8169_private
> *tp)
> 
>  static void rtl8169_up(struct rtl8169_private *tp)  {
> -	pci_set_master(tp->pci_dev);
>  	phy_init_hw(tp->phydev);
>  	phy_resume(tp->phydev);
>  	rtl8169_init_phy(tp);
>  	napi_enable(&tp->napi);
>  	set_bit(RTL_FLAG_TASK_ENABLED, tp->wk.flags);
>  	rtl_reset_work(tp);
> +	pci_set_master(tp->pci_dev);
> 
>  	phy_start(tp->phydev);
>  }
> --
> 2.38.0
> 
This can fix the issue. But it will cause another error message " rtl_rxtx_empty_cond == 0 (loop: 42, delay: 100)".
Because if rx is enabled, packet will be move to fifo. When driver check if fifo is empty on device open,
hardware will not dma this packet because bus master is disabled, fifo will always not empty.
 So it might be better to disable txrx when close device.

------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-04  8:10  4% [PATCH net] " Chunhao Lin
  2022-10-04 20:14 11% ` Heiner Kallweit
@ 2022-10-05 16:29  5% ` Heiner Kallweit
  2022-10-06 14:23  5%   ` Hau
  2022-10-08 21:53  5% ` Heiner Kallweit
  2022-10-09  7:45  5% ` Heiner Kallweit
  3 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2022-10-05 16:29 UTC (permalink / raw)
  To: Chunhao Lin; +Cc: netdev, nic_swsd, kuba, grundler

On 04.10.2022 10:10, Chunhao Lin wrote:
> When close device, rx will be enabled if wol is enabeld. When open device
> it will cause rx to dma to wrong address after pci_set_master().
> 
> In this patch, driver will disable tx/rx when close device. If wol is
> eanbled only enable rx filter and disable rxdv_gate to let hardware
> can receive packet to fifo but not to dma it.
> 
> Fixes: 120068481405 ("r8169: fix failing WoL")
> Signed-off-by: Chunhao Lin <hau@realtek.com>
> ---
>  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index 1b7fdb4f056b..c09cfbe1d3f0 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct rtl8169_private *tp)
>  	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
>  		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
>  			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
> +
> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
> +		RTL_W32(tp, MISC, RTL_R32(tp, MISC) & ~RXDV_GATED_EN);
>  }
>  
>  static void rtl_prepare_power_down(struct rtl8169_private *tp)
> @@ -3981,7 +3984,7 @@ static void rtl8169_tx_clear(struct rtl8169_private *tp)
>  	netdev_reset_queue(tp->dev);
>  }
>  
> -static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
> +static void rtl8169_cleanup(struct rtl8169_private *tp)
>  {
>  	napi_disable(&tp->napi);
>  
> @@ -3993,9 +3996,6 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
>  
>  	rtl_rx_close(tp);
>  
> -	if (going_down && tp->dev->wol_enabled)
> -		goto no_reset;
> -
>  	switch (tp->mac_version) {
>  	case RTL_GIGA_MAC_VER_28:
>  	case RTL_GIGA_MAC_VER_31:
> @@ -4016,7 +4016,7 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
>  	}
>  
>  	rtl_hw_reset(tp);
> -no_reset:
> +
>  	rtl8169_tx_clear(tp);
>  	rtl8169_init_ring_indexes(tp);
>  }
> @@ -4027,7 +4027,7 @@ static void rtl_reset_work(struct rtl8169_private *tp)
>  
>  	netif_stop_queue(tp->dev);
>  
> -	rtl8169_cleanup(tp, false);
> +	rtl8169_cleanup(tp);
>  
>  	for (i = 0; i < NUM_RX_DESC; i++)
>  		rtl8169_mark_to_asic(tp->RxDescArray + i);
> @@ -4715,7 +4715,7 @@ static void rtl8169_down(struct rtl8169_private *tp)
>  	pci_clear_master(tp->pci_dev);
>  	rtl_pci_commit(tp);
>  
> -	rtl8169_cleanup(tp, true);
> +	rtl8169_cleanup(tp);
>  	rtl_disable_exit_l1(tp);
>  	rtl_prepare_power_down(tp);
>  }

Hi Hau,

I think the following simple change should also fix the issue.
DMA is enabled only after the chip has been reset in rtl_reset_work().
This should ensure that there are no stale RX DMA descriptors any longer.
Could you please test it?


diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 114f88497..1d72691a4 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -4610,13 +4610,13 @@ static void rtl8169_down(struct rtl8169_private *tp)
 
 static void rtl8169_up(struct rtl8169_private *tp)
 {
-	pci_set_master(tp->pci_dev);
 	phy_init_hw(tp->phydev);
 	phy_resume(tp->phydev);
 	rtl8169_init_phy(tp);
 	napi_enable(&tp->napi);
 	set_bit(RTL_FLAG_TASK_ENABLED, tp->wk.flags);
 	rtl_reset_work(tp);
+	pci_set_master(tp->pci_dev);
 
 	phy_start(tp->phydev);
 }
-- 
2.38.0





^ permalink raw reply related	[relevance 5%]

* RE: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-04 20:14 11% ` Heiner Kallweit
@ 2022-10-05  5:44  5%   ` Hau
  0 siblings, 0 replies; 107+ results
From: Hau @ 2022-10-05  5:44 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev, nic_swsd, kuba, grundler

> On 04.10.2022 10:10, Chunhao Lin wrote:
> > When close device, rx will be enabled if wol is enabeld. When open
> > device it will cause rx to dma to wrong address after pci_set_master().
> >
> Hi Hau,
> 
> I never experienced this problem. Is it an edge case that can occur under
> specific circumstances?
> 

This issue is happen on google chromebook with IOMMU enabled. Because rx is enabled when wol is enabled, 
so I think there is a chance that the packet receive in device close will be dma to invalid memory address when
device is open.

 ------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-04  8:10  4% [PATCH net] " Chunhao Lin
@ 2022-10-04 20:14 11% ` Heiner Kallweit
  2022-10-05  5:44  5%   ` Hau
  2022-10-05 16:29  5% ` Heiner Kallweit
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2022-10-04 20:14 UTC (permalink / raw)
  To: Chunhao Lin; +Cc: netdev, nic_swsd, kuba, grundler

On 04.10.2022 10:10, Chunhao Lin wrote:
> When close device, rx will be enabled if wol is enabeld. When open device
> it will cause rx to dma to wrong address after pci_set_master().
> 
Hi Hau,

I never experienced this problem. Is it an edge case that can occur under
specific circumstances?

> In this patch, driver will disable tx/rx when close device. If wol is
> eanbled only enable rx filter and disable rxdv_gate to let hardware
> can receive packet to fifo but not to dma it.
> 
> Fixes: 120068481405 ("r8169: fix failing WoL")
> Signed-off-by: Chunhao Lin <hau@realtek.com>
> ---
>  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index 1b7fdb4f056b..c09cfbe1d3f0 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct rtl8169_private *tp)
>  	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
>  		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
>  			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
> +
> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
> +		RTL_W32(tp, MISC, RTL_R32(tp, MISC) & ~RXDV_GATED_EN);

In the commit title you reference RTL8125b only, but the actual change
affects all chip versions from RTL8168g. So either title or patch need to be
adjusted. Is the actual issue restricted to RTL8125b (hw issue?) or can it
occur on all chip versions that use RXDV_GATED_EN?

>  }
>  
>  static void rtl_prepare_power_down(struct rtl8169_private *tp)
> @@ -3981,7 +3984,7 @@ static void rtl8169_tx_clear(struct rtl8169_private *tp)
>  	netdev_reset_queue(tp->dev);
>  }
>  
> -static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
> +static void rtl8169_cleanup(struct rtl8169_private *tp)
>  {
>  	napi_disable(&tp->napi);
>  
> @@ -3993,9 +3996,6 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
>  
>  	rtl_rx_close(tp);
>  
> -	if (going_down && tp->dev->wol_enabled)
> -		goto no_reset;
> -

Here you change the behavior for various other chip versions too. This should not be done
in a fix, even if it should be safe.

>  	switch (tp->mac_version) {
>  	case RTL_GIGA_MAC_VER_28:
>  	case RTL_GIGA_MAC_VER_31:
> @@ -4016,7 +4016,7 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
>  	}
>  
>  	rtl_hw_reset(tp);
> -no_reset:
> +
>  	rtl8169_tx_clear(tp);
>  	rtl8169_init_ring_indexes(tp);
>  }
> @@ -4027,7 +4027,7 @@ static void rtl_reset_work(struct rtl8169_private *tp)
>  
>  	netif_stop_queue(tp->dev);
>  
> -	rtl8169_cleanup(tp, false);
> +	rtl8169_cleanup(tp);
>  
>  	for (i = 0; i < NUM_RX_DESC; i++)
>  		rtl8169_mark_to_asic(tp->RxDescArray + i);
> @@ -4715,7 +4715,7 @@ static void rtl8169_down(struct rtl8169_private *tp)
>  	pci_clear_master(tp->pci_dev);
>  	rtl_pci_commit(tp);
>  
> -	rtl8169_cleanup(tp, true);
> +	rtl8169_cleanup(tp);
>  	rtl_disable_exit_l1(tp);
>  	rtl_prepare_power_down(tp);
>  }


^ permalink raw reply	[relevance 11%]

* [PATCH net] r8169: fix rtl8125b dmar pte write access not set error
@ 2022-10-04  8:10  4% Chunhao Lin
  2022-10-04 20:14 11% ` Heiner Kallweit
                   ` (3 more replies)
  0 siblings, 4 replies; 107+ results
From: Chunhao Lin @ 2022-10-04  8:10 UTC (permalink / raw)
  To: hkallweit1; +Cc: netdev, nic_swsd, kuba, grundler, Chunhao Lin

When close device, rx will be enabled if wol is enabeld. When open device
it will cause rx to dma to wrong address after pci_set_master().

In this patch, driver will disable tx/rx when close device. If wol is
eanbled only enable rx filter and disable rxdv_gate to let hardware
can receive packet to fifo but not to dma it.

Fixes: 120068481405 ("r8169: fix failing WoL")
Signed-off-by: Chunhao Lin <hau@realtek.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 1b7fdb4f056b..c09cfbe1d3f0 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -2239,6 +2239,9 @@ static void rtl_wol_enable_rx(struct rtl8169_private *tp)
 	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
 		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
 			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
+
+	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
+		RTL_W32(tp, MISC, RTL_R32(tp, MISC) & ~RXDV_GATED_EN);
 }
 
 static void rtl_prepare_power_down(struct rtl8169_private *tp)
@@ -3981,7 +3984,7 @@ static void rtl8169_tx_clear(struct rtl8169_private *tp)
 	netdev_reset_queue(tp->dev);
 }
 
-static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
+static void rtl8169_cleanup(struct rtl8169_private *tp)
 {
 	napi_disable(&tp->napi);
 
@@ -3993,9 +3996,6 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
 
 	rtl_rx_close(tp);
 
-	if (going_down && tp->dev->wol_enabled)
-		goto no_reset;
-
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_28:
 	case RTL_GIGA_MAC_VER_31:
@@ -4016,7 +4016,7 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
 	}
 
 	rtl_hw_reset(tp);
-no_reset:
+
 	rtl8169_tx_clear(tp);
 	rtl8169_init_ring_indexes(tp);
 }
@@ -4027,7 +4027,7 @@ static void rtl_reset_work(struct rtl8169_private *tp)
 
 	netif_stop_queue(tp->dev);
 
-	rtl8169_cleanup(tp, false);
+	rtl8169_cleanup(tp);
 
 	for (i = 0; i < NUM_RX_DESC; i++)
 		rtl8169_mark_to_asic(tp->RxDescArray + i);
@@ -4715,7 +4715,7 @@ static void rtl8169_down(struct rtl8169_private *tp)
 	pci_clear_master(tp->pci_dev);
 	rtl_pci_commit(tp);
 
-	rtl8169_cleanup(tp, true);
+	rtl8169_cleanup(tp);
 	rtl_disable_exit_l1(tp);
 	rtl_prepare_power_down(tp);
 }
-- 
2.25.1


^ permalink raw reply related	[relevance 4%]

* RE: [PATCH net-next] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-04  0:05  5% ` Jakub Kicinski
@ 2022-10-04  5:52  5%   ` Hau
  0 siblings, 0 replies; 107+ results
From: Hau @ 2022-10-04  5:52 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: hkallweit1, netdev, nic_swsd, grundler

> On Mon, 3 Oct 2022 14:46:20 +0800 Chunhao Lin wrote:
> > When close device, rx will be enabled if wol is enabeld. When open
> > device it will cause rx to dma to wrong address after pci_set_master().
> >
> > In this patch, driver will disable tx/rx when close device. If wol is
> > eanbled only enable rx filter and disable rxdv_gate to let hardware
> > can receive packet to fifo but not to dma it.
> 
> Sounds like a fix, could you resend with a Fixes tag and [PATCH net]
> designation? net-next is for new features and refactoring, net for fixes.

I will resend this patch to [PATCH net]. Thanks.

>  ------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net-next v2] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-03  7:03  4% [PATCH net-next v2] " Chunhao Lin
@ 2022-10-04  0:06  5% ` Jakub Kicinski
  0 siblings, 0 replies; 107+ results
From: Jakub Kicinski @ 2022-10-04  0:06 UTC (permalink / raw)
  To: Chunhao Lin; +Cc: hkallweit1, netdev, nic_swsd, grundler

On Mon, 3 Oct 2022 15:03:33 +0800 Chunhao Lin wrote:
> When close device, rx will be enabled if wol is enabeld. When open device
> it will cause rx to dma to wrong address after pci_set_master().
> 
> In this patch, driver will disable tx/rx when close device. If wol is
> eanbled only enable rx filter and disable rxdv_gate to let hardware can
> receive packet to fifo but not to dma it.
> 
> Signed-off-by: Chunhao Lin <hau@realtek.com>
> ---
> v1 -> v2: limit the call to rtl_disable_rxdvgate()

Ah, I didn't notice there was a v2, same comments as for v1:
looks like a fix..

^ permalink raw reply	[relevance 5%]

* Re: [PATCH net-next] r8169: fix rtl8125b dmar pte write access not set error
  2022-10-03  6:46  4% [PATCH net-next] r8169: fix rtl8125b dmar pte write access not set error Chunhao Lin
@ 2022-10-04  0:05  5% ` Jakub Kicinski
  2022-10-04  5:52  5%   ` Hau
  0 siblings, 1 reply; 107+ results
From: Jakub Kicinski @ 2022-10-04  0:05 UTC (permalink / raw)
  To: Chunhao Lin; +Cc: hkallweit1, netdev, nic_swsd, grundler

On Mon, 3 Oct 2022 14:46:20 +0800 Chunhao Lin wrote:
> When close device, rx will be enabled if wol is enabeld. When open device
> it will cause rx to dma to wrong address after pci_set_master().
> 
> In this patch, driver will disable tx/rx when close device. If wol is
> eanbled only enable rx filter and disable rxdv_gate to let hardware can
> receive packet to fifo but not to dma it.

Sounds like a fix, could you resend with a Fixes tag and [PATCH net]
designation? net-next is for new features and refactoring, net for
fixes.

^ permalink raw reply	[relevance 5%]

* [PATCH net-next v2] r8169: fix rtl8125b dmar pte write access not set error
@ 2022-10-03  7:03  4% Chunhao Lin
  2022-10-04  0:06  5% ` Jakub Kicinski
  0 siblings, 1 reply; 107+ results
From: Chunhao Lin @ 2022-10-03  7:03 UTC (permalink / raw)
  To: hkallweit1; +Cc: netdev, nic_swsd, kuba, grundler, Chunhao Lin

When close device, rx will be enabled if wol is enabeld. When open device
it will cause rx to dma to wrong address after pci_set_master().

In this patch, driver will disable tx/rx when close device. If wol is
eanbled only enable rx filter and disable rxdv_gate to let hardware can
receive packet to fifo but not to dma it.

Signed-off-by: Chunhao Lin <hau@realtek.com>
---
v1 -> v2: limit the call to rtl_disable_rxdvgate()

 drivers/net/ethernet/realtek/r8169_main.c | 58 +++++++++++------------
 1 file changed, 29 insertions(+), 29 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index a73d061d9fcb..731c5366abc6 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -2210,28 +2210,6 @@ static int rtl_set_mac_address(struct net_device *dev, void *p)
 	return 0;
 }
 
-static void rtl_wol_enable_rx(struct rtl8169_private *tp)
-{
-	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
-		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
-			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
-}
-
-static void rtl_prepare_power_down(struct rtl8169_private *tp)
-{
-	if (tp->dash_type != RTL_DASH_NONE)
-		return;
-
-	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
-	    tp->mac_version == RTL_GIGA_MAC_VER_33)
-		rtl_ephy_write(tp, 0x19, 0xff64);
-
-	if (device_may_wakeup(tp_to_dev(tp))) {
-		phy_speed_down(tp->phydev, false);
-		rtl_wol_enable_rx(tp);
-	}
-}
-
 static void rtl_init_rxcfg(struct rtl8169_private *tp)
 {
 	switch (tp->mac_version) {
@@ -2455,6 +2433,31 @@ static void rtl_enable_rxdvgate(struct rtl8169_private *tp)
 	rtl_wait_txrx_fifo_empty(tp);
 }
 
+static void rtl_wol_enable_rx(struct rtl8169_private *tp)
+{
+	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
+		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
+			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
+
+	if (tp->mac_version >= RTL_GIGA_MAC_VER_40)
+		rtl_disable_rxdvgate(tp);
+}
+
+static void rtl_prepare_power_down(struct rtl8169_private *tp)
+{
+	if (tp->dash_type != RTL_DASH_NONE)
+		return;
+
+	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
+	    tp->mac_version == RTL_GIGA_MAC_VER_33)
+		rtl_ephy_write(tp, 0x19, 0xff64);
+
+	if (device_may_wakeup(tp_to_dev(tp))) {
+		phy_speed_down(tp->phydev, false);
+		rtl_wol_enable_rx(tp);
+	}
+}
+
 static void rtl_set_tx_config_registers(struct rtl8169_private *tp)
 {
 	u32 val = TX_DMA_BURST << TxDMAShift |
@@ -3872,7 +3875,7 @@ static void rtl8169_tx_clear(struct rtl8169_private *tp)
 	netdev_reset_queue(tp->dev);
 }
 
-static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
+static void rtl8169_cleanup(struct rtl8169_private *tp)
 {
 	napi_disable(&tp->napi);
 
@@ -3884,9 +3887,6 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
 
 	rtl_rx_close(tp);
 
-	if (going_down && tp->dev->wol_enabled)
-		goto no_reset;
-
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_28:
 	case RTL_GIGA_MAC_VER_31:
@@ -3907,7 +3907,7 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
 	}
 
 	rtl_hw_reset(tp);
-no_reset:
+
 	rtl8169_tx_clear(tp);
 	rtl8169_init_ring_indexes(tp);
 }
@@ -3918,7 +3918,7 @@ static void rtl_reset_work(struct rtl8169_private *tp)
 
 	netif_stop_queue(tp->dev);
 
-	rtl8169_cleanup(tp, false);
+	rtl8169_cleanup(tp);
 
 	for (i = 0; i < NUM_RX_DESC; i++)
 		rtl8169_mark_to_asic(tp->RxDescArray + i);
@@ -4604,7 +4604,7 @@ static void rtl8169_down(struct rtl8169_private *tp)
 	pci_clear_master(tp->pci_dev);
 	rtl_pci_commit(tp);
 
-	rtl8169_cleanup(tp, true);
+	rtl8169_cleanup(tp);
 	rtl_disable_exit_l1(tp);
 	rtl_prepare_power_down(tp);
 }
-- 
2.25.1


^ permalink raw reply related	[relevance 4%]

* [PATCH net-next] r8169: fix rtl8125b dmar pte write access not set error
@ 2022-10-03  6:46  4% Chunhao Lin
  2022-10-04  0:05  5% ` Jakub Kicinski
  0 siblings, 1 reply; 107+ results
From: Chunhao Lin @ 2022-10-03  6:46 UTC (permalink / raw)
  To: hkallweit1; +Cc: netdev, nic_swsd, kuba, grundler, Chunhao Lin

When close device, rx will be enabled if wol is enabeld. When open device
it will cause rx to dma to wrong address after pci_set_master().

In this patch, driver will disable tx/rx when close device. If wol is
eanbled only enable rx filter and disable rxdv_gate to let hardware can
receive packet to fifo but not to dma it.

Signed-off-by: Chunhao Lin <hau@realtek.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 57 +++++++++++------------
 1 file changed, 28 insertions(+), 29 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index a73d061d9fcb..25d02b0467b9 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -2210,28 +2210,6 @@ static int rtl_set_mac_address(struct net_device *dev, void *p)
 	return 0;
 }
 
-static void rtl_wol_enable_rx(struct rtl8169_private *tp)
-{
-	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
-		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
-			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
-}
-
-static void rtl_prepare_power_down(struct rtl8169_private *tp)
-{
-	if (tp->dash_type != RTL_DASH_NONE)
-		return;
-
-	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
-	    tp->mac_version == RTL_GIGA_MAC_VER_33)
-		rtl_ephy_write(tp, 0x19, 0xff64);
-
-	if (device_may_wakeup(tp_to_dev(tp))) {
-		phy_speed_down(tp->phydev, false);
-		rtl_wol_enable_rx(tp);
-	}
-}
-
 static void rtl_init_rxcfg(struct rtl8169_private *tp)
 {
 	switch (tp->mac_version) {
@@ -2455,6 +2433,30 @@ static void rtl_enable_rxdvgate(struct rtl8169_private *tp)
 	rtl_wait_txrx_fifo_empty(tp);
 }
 
+static void rtl_wol_enable_rx(struct rtl8169_private *tp)
+{
+	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
+		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
+			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
+
+	rtl_disable_rxdvgate(tp);
+}
+
+static void rtl_prepare_power_down(struct rtl8169_private *tp)
+{
+	if (tp->dash_type != RTL_DASH_NONE)
+		return;
+
+	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
+	    tp->mac_version == RTL_GIGA_MAC_VER_33)
+		rtl_ephy_write(tp, 0x19, 0xff64);
+
+	if (device_may_wakeup(tp_to_dev(tp))) {
+		phy_speed_down(tp->phydev, false);
+		rtl_wol_enable_rx(tp);
+	}
+}
+
 static void rtl_set_tx_config_registers(struct rtl8169_private *tp)
 {
 	u32 val = TX_DMA_BURST << TxDMAShift |
@@ -3872,7 +3874,7 @@ static void rtl8169_tx_clear(struct rtl8169_private *tp)
 	netdev_reset_queue(tp->dev);
 }
 
-static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
+static void rtl8169_cleanup(struct rtl8169_private *tp)
 {
 	napi_disable(&tp->napi);
 
@@ -3884,9 +3886,6 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
 
 	rtl_rx_close(tp);
 
-	if (going_down && tp->dev->wol_enabled)
-		goto no_reset;
-
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_28:
 	case RTL_GIGA_MAC_VER_31:
@@ -3907,7 +3906,7 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
 	}
 
 	rtl_hw_reset(tp);
-no_reset:
+
 	rtl8169_tx_clear(tp);
 	rtl8169_init_ring_indexes(tp);
 }
@@ -3918,7 +3917,7 @@ static void rtl_reset_work(struct rtl8169_private *tp)
 
 	netif_stop_queue(tp->dev);
 
-	rtl8169_cleanup(tp, false);
+	rtl8169_cleanup(tp);
 
 	for (i = 0; i < NUM_RX_DESC; i++)
 		rtl8169_mark_to_asic(tp->RxDescArray + i);
@@ -4604,7 +4603,7 @@ static void rtl8169_down(struct rtl8169_private *tp)
 	pci_clear_master(tp->pci_dev);
 	rtl_pci_commit(tp);
 
-	rtl8169_cleanup(tp, true);
+	rtl8169_cleanup(tp);
 	rtl_disable_exit_l1(tp);
 	rtl_prepare_power_down(tp);
 }
-- 
2.25.1


^ permalink raw reply related	[relevance 4%]

* [PATCH net-next v3 5/5] r8169: remove support for chip version 60
    2022-08-23 18:35  4% ` [PATCH net-next v3 2/5] r8169: remove support for chip versions 45 and 47 Heiner Kallweit
@ 2022-08-23 18:38  4% ` Heiner Kallweit
  1 sibling, 0 replies; 107+ results
From: Heiner Kallweit @ 2022-08-23 18:38 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers,
	Paolo Abeni, Eric Dumazet
  Cc: netdev

Detection of this chip version has been disabled for few kernel versions now.
Nobody complained, so remove support for this chip version.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169.h          |  2 +-
 drivers/net/ethernet/realtek/r8169_main.c     | 57 +++----------------
 .../net/ethernet/realtek/r8169_phy_config.c   | 39 -------------
 3 files changed, 8 insertions(+), 90 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
index 68cd71289..36d382676 100644
--- a/drivers/net/ethernet/realtek/r8169.h
+++ b/drivers/net/ethernet/realtek/r8169.h
@@ -64,7 +64,7 @@ enum mac_version {
 	RTL_GIGA_MAC_VER_51,
 	RTL_GIGA_MAC_VER_52,
 	RTL_GIGA_MAC_VER_53,
-	RTL_GIGA_MAC_VER_60,
+	/* support for RTL_GIGA_MAC_VER_60 has been removed */
 	RTL_GIGA_MAC_VER_61,
 	RTL_GIGA_MAC_VER_63,
 	RTL_GIGA_MAC_NONE
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index db653776e..243477825 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -137,7 +137,6 @@ static const struct {
 	[RTL_GIGA_MAC_VER_51] = {"RTL8168ep/8111ep"			},
 	[RTL_GIGA_MAC_VER_52] = {"RTL8168fp/RTL8117",  FIRMWARE_8168FP_3},
 	[RTL_GIGA_MAC_VER_53] = {"RTL8168fp/RTL8117",			},
-	[RTL_GIGA_MAC_VER_60] = {"RTL8125A"				},
 	[RTL_GIGA_MAC_VER_61] = {"RTL8125A",		FIRMWARE_8125A_3},
 	/* reserve 62 for CFG_METHOD_4 in the vendor driver */
 	[RTL_GIGA_MAC_VER_63] = {"RTL8125B",		FIRMWARE_8125B_2},
@@ -680,7 +679,7 @@ static void rtl_pci_commit(struct rtl8169_private *tp)
 
 static bool rtl_is_8125(struct rtl8169_private *tp)
 {
-	return tp->mac_version >= RTL_GIGA_MAC_VER_60;
+	return tp->mac_version >= RTL_GIGA_MAC_VER_61;
 }
 
 static bool rtl_is_8168evl_up(struct rtl8169_private *tp)
@@ -2258,7 +2257,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
 		RTL_W32(tp, RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST | RX_EARLY_OFF);
 		break;
-	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
 		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
 		break;
 	default:
@@ -2442,7 +2441,7 @@ static void rtl_wait_txrx_fifo_empty(struct rtl8169_private *tp)
 		rtl_loop_wait_high(tp, &rtl_txcfg_empty_cond, 100, 42);
 		rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42);
 		break;
-	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_61:
 		rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42);
 		break;
 	case RTL_GIGA_MAC_VER_63:
@@ -2688,7 +2687,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 
 		switch (tp->mac_version) {
 		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
-		case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
 			/* reset ephy tx/rx disable timer */
 			r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
 			/* chip can trigger L1.2 */
@@ -2700,7 +2699,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 	} else {
 		switch (tp->mac_version) {
 		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
-		case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
 			r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
 			break;
 		default:
@@ -3573,46 +3572,6 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	udelay(10);
 }
 
-static void rtl_hw_start_8125a_1(struct rtl8169_private *tp)
-{
-	static const struct ephy_info e_info_8125a_1[] = {
-		{ 0x01, 0xffff, 0xa812 },
-		{ 0x09, 0xffff, 0x520c },
-		{ 0x04, 0xffff, 0xd000 },
-		{ 0x0d, 0xffff, 0xf702 },
-		{ 0x0a, 0xffff, 0x8653 },
-		{ 0x06, 0xffff, 0x001e },
-		{ 0x08, 0xffff, 0x3595 },
-		{ 0x20, 0xffff, 0x9455 },
-		{ 0x21, 0xffff, 0x99ff },
-		{ 0x02, 0xffff, 0x6046 },
-		{ 0x29, 0xffff, 0xfe00 },
-		{ 0x23, 0xffff, 0xab62 },
-
-		{ 0x41, 0xffff, 0xa80c },
-		{ 0x49, 0xffff, 0x520c },
-		{ 0x44, 0xffff, 0xd000 },
-		{ 0x4d, 0xffff, 0xf702 },
-		{ 0x4a, 0xffff, 0x8653 },
-		{ 0x46, 0xffff, 0x001e },
-		{ 0x48, 0xffff, 0x3595 },
-		{ 0x60, 0xffff, 0x9455 },
-		{ 0x61, 0xffff, 0x99ff },
-		{ 0x42, 0xffff, 0x6046 },
-		{ 0x69, 0xffff, 0xfe00 },
-		{ 0x63, 0xffff, 0xab62 },
-	};
-
-	rtl_set_def_aspm_entry_latency(tp);
-
-	/* disable aspm and clock request before access ephy */
-	rtl_hw_aspm_clkreq_enable(tp, false);
-	rtl_ephy_init(tp, e_info_8125a_1);
-
-	rtl_hw_start_8125_common(tp);
-	rtl_hw_aspm_clkreq_enable(tp, true);
-}
-
 static void rtl_hw_start_8125a_2(struct rtl8169_private *tp)
 {
 	static const struct ephy_info e_info_8125a_2[] = {
@@ -3704,7 +3663,6 @@ static void rtl_hw_config(struct rtl8169_private *tp)
 		[RTL_GIGA_MAC_VER_51] = rtl_hw_start_8168ep_3,
 		[RTL_GIGA_MAC_VER_52] = rtl_hw_start_8117,
 		[RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
-		[RTL_GIGA_MAC_VER_60] = rtl_hw_start_8125a_1,
 		[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
 		[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
 	};
@@ -4099,7 +4057,6 @@ static unsigned int rtl_quirk_packet_padto(struct rtl8169_private *tp,
 
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_34:
-	case RTL_GIGA_MAC_VER_60:
 	case RTL_GIGA_MAC_VER_61:
 	case RTL_GIGA_MAC_VER_63:
 		padto = max_t(unsigned int, padto, ETH_ZLEN);
@@ -5143,7 +5100,7 @@ static void rtl_hw_initialize(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
 		rtl_hw_init_8168g(tp);
 		break;
-	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
 		rtl_hw_init_8125(tp);
 		break;
 	default:
@@ -5234,7 +5191,7 @@ static void rtl_init_mac_address(struct rtl8169_private *tp)
 /* register is set if system vendor successfully tested ASPM 1.2 */
 static bool rtl_aspm_is_safe(struct rtl8169_private *tp)
 {
-	if (tp->mac_version >= RTL_GIGA_MAC_VER_60 &&
+	if (tp->mac_version >= RTL_GIGA_MAC_VER_61 &&
 	    r8168_mac_ocp_read(tp, 0xc0b2) & 0xf)
 		return true;
 
diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
index 99e4f06f8..8c04cc56b 100644
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
@@ -995,44 +995,6 @@ static void rtl8125_legacy_force_mode(struct phy_device *phydev)
 	phy_modify_paged(phydev, 0xa5b, 0x12, BIT(15), 0);
 }
 
-static void rtl8125a_1_hw_phy_config(struct rtl8169_private *tp,
-				     struct phy_device *phydev)
-{
-	phy_modify_paged(phydev, 0xad4, 0x10, 0x03ff, 0x0084);
-	phy_modify_paged(phydev, 0xad4, 0x17, 0x0000, 0x0010);
-	phy_modify_paged(phydev, 0xad1, 0x13, 0x03ff, 0x0006);
-	phy_modify_paged(phydev, 0xad3, 0x11, 0x003f, 0x0006);
-	phy_modify_paged(phydev, 0xac0, 0x14, 0x0000, 0x1100);
-	phy_modify_paged(phydev, 0xac8, 0x15, 0xf000, 0x7000);
-	phy_modify_paged(phydev, 0xad1, 0x14, 0x0000, 0x0400);
-	phy_modify_paged(phydev, 0xad1, 0x15, 0x0000, 0x03ff);
-	phy_modify_paged(phydev, 0xad1, 0x16, 0x0000, 0x03ff);
-
-	r8168g_phy_param(phydev, 0x80ea, 0xff00, 0xc400);
-	r8168g_phy_param(phydev, 0x80eb, 0x0700, 0x0300);
-	r8168g_phy_param(phydev, 0x80f8, 0xff00, 0x1c00);
-	r8168g_phy_param(phydev, 0x80f1, 0xff00, 0x3000);
-	r8168g_phy_param(phydev, 0x80fe, 0xff00, 0xa500);
-	r8168g_phy_param(phydev, 0x8102, 0xff00, 0x5000);
-	r8168g_phy_param(phydev, 0x8105, 0xff00, 0x3300);
-	r8168g_phy_param(phydev, 0x8100, 0xff00, 0x7000);
-	r8168g_phy_param(phydev, 0x8104, 0xff00, 0xf000);
-	r8168g_phy_param(phydev, 0x8106, 0xff00, 0x6500);
-	r8168g_phy_param(phydev, 0x80dc, 0xff00, 0xed00);
-	r8168g_phy_param(phydev, 0x80df, 0x0000, 0x0100);
-	r8168g_phy_param(phydev, 0x80e1, 0x0100, 0x0000);
-
-	phy_modify_paged(phydev, 0xbf0, 0x13, 0x003f, 0x0038);
-	r8168g_phy_param(phydev, 0x819f, 0xffff, 0xd0b6);
-
-	phy_write_paged(phydev, 0xbc3, 0x12, 0x5555);
-	phy_modify_paged(phydev, 0xbf0, 0x15, 0x0e00, 0x0a00);
-	phy_modify_paged(phydev, 0xa5c, 0x10, 0x0400, 0x0000);
-	rtl8168g_enable_gphy_10m(phydev);
-
-	rtl8125a_config_eee_phy(phydev);
-}
-
 static void rtl8125a_2_hw_phy_config(struct rtl8169_private *tp,
 				     struct phy_device *phydev)
 {
@@ -1188,7 +1150,6 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
 		[RTL_GIGA_MAC_VER_51] = rtl8168ep_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_52] = rtl8117_hw_phy_config,
 		[RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
-		[RTL_GIGA_MAC_VER_60] = rtl8125a_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
 	};
-- 
2.37.2



^ permalink raw reply related	[relevance 4%]

* [PATCH net-next v3 2/5] r8169: remove support for chip versions 45 and 47
  @ 2022-08-23 18:35  4% ` Heiner Kallweit
  2022-08-23 18:38  4% ` [PATCH net-next v3 5/5] r8169: remove support for chip version 60 Heiner Kallweit
  1 sibling, 0 replies; 107+ results
From: Heiner Kallweit @ 2022-08-23 18:35 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers,
	Paolo Abeni, Eric Dumazet
  Cc: netdev

Detection of these chip versions has been disabled for few kernel versions now.
Nobody complained, so remove support for this chip version.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169.h          |  4 +-
 drivers/net/ethernet/realtek/r8169_main.c     | 16 +----
 .../net/ethernet/realtek/r8169_phy_config.c   | 67 -------------------
 3 files changed, 5 insertions(+), 82 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
index e2ace50e0..a66b10850 100644
--- a/drivers/net/ethernet/realtek/r8169.h
+++ b/drivers/net/ethernet/realtek/r8169.h
@@ -55,9 +55,9 @@ enum mac_version {
 	RTL_GIGA_MAC_VER_42,
 	RTL_GIGA_MAC_VER_43,
 	RTL_GIGA_MAC_VER_44,
-	RTL_GIGA_MAC_VER_45,
+	/* support for RTL_GIGA_MAC_VER_45 has been removed */
 	RTL_GIGA_MAC_VER_46,
-	RTL_GIGA_MAC_VER_47,
+	/* support for RTL_GIGA_MAC_VER_47 has been removed */
 	RTL_GIGA_MAC_VER_48,
 	RTL_GIGA_MAC_VER_49,
 	RTL_GIGA_MAC_VER_50,
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index a2baeb8da..0e7d10cd6 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -49,10 +49,8 @@
 #define FIRMWARE_8106E_2	"rtl_nic/rtl8106e-2.fw"
 #define FIRMWARE_8168G_2	"rtl_nic/rtl8168g-2.fw"
 #define FIRMWARE_8168G_3	"rtl_nic/rtl8168g-3.fw"
-#define FIRMWARE_8168H_1	"rtl_nic/rtl8168h-1.fw"
 #define FIRMWARE_8168H_2	"rtl_nic/rtl8168h-2.fw"
 #define FIRMWARE_8168FP_3	"rtl_nic/rtl8168fp-3.fw"
-#define FIRMWARE_8107E_1	"rtl_nic/rtl8107e-1.fw"
 #define FIRMWARE_8107E_2	"rtl_nic/rtl8107e-2.fw"
 #define FIRMWARE_8125A_3	"rtl_nic/rtl8125a-3.fw"
 #define FIRMWARE_8125B_2	"rtl_nic/rtl8125b-2.fw"
@@ -134,9 +132,7 @@ static const struct {
 	[RTL_GIGA_MAC_VER_42] = {"RTL8168gu/8111gu",	FIRMWARE_8168G_3},
 	[RTL_GIGA_MAC_VER_43] = {"RTL8106eus",		FIRMWARE_8106E_2},
 	[RTL_GIGA_MAC_VER_44] = {"RTL8411b",		FIRMWARE_8411_2 },
-	[RTL_GIGA_MAC_VER_45] = {"RTL8168h/8111h",	FIRMWARE_8168H_1},
 	[RTL_GIGA_MAC_VER_46] = {"RTL8168h/8111h",	FIRMWARE_8168H_2},
-	[RTL_GIGA_MAC_VER_47] = {"RTL8107e",		FIRMWARE_8107E_1},
 	[RTL_GIGA_MAC_VER_48] = {"RTL8107e",		FIRMWARE_8107E_2},
 	[RTL_GIGA_MAC_VER_49] = {"RTL8168ep/8111ep"			},
 	[RTL_GIGA_MAC_VER_50] = {"RTL8168ep/8111ep"			},
@@ -657,10 +653,8 @@ MODULE_FIRMWARE(FIRMWARE_8106E_1);
 MODULE_FIRMWARE(FIRMWARE_8106E_2);
 MODULE_FIRMWARE(FIRMWARE_8168G_2);
 MODULE_FIRMWARE(FIRMWARE_8168G_3);
-MODULE_FIRMWARE(FIRMWARE_8168H_1);
 MODULE_FIRMWARE(FIRMWARE_8168H_2);
 MODULE_FIRMWARE(FIRMWARE_8168FP_3);
-MODULE_FIRMWARE(FIRMWARE_8107E_1);
 MODULE_FIRMWARE(FIRMWARE_8107E_2);
 MODULE_FIRMWARE(FIRMWARE_8125A_3);
 MODULE_FIRMWARE(FIRMWARE_8125B_2);
@@ -2086,8 +2080,6 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
 	if (ver != RTL_GIGA_MAC_NONE && !gmii) {
 		if (ver == RTL_GIGA_MAC_VER_42)
 			ver = RTL_GIGA_MAC_VER_43;
-		else if (ver == RTL_GIGA_MAC_VER_45)
-			ver = RTL_GIGA_MAC_VER_47;
 		else if (ver == RTL_GIGA_MAC_VER_46)
 			ver = RTL_GIGA_MAC_VER_48;
 	}
@@ -2698,7 +2690,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 		RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);
 
 		switch (tp->mac_version) {
-		case RTL_GIGA_MAC_VER_45 ... RTL_GIGA_MAC_VER_48:
+		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
 		case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
 			/* reset ephy tx/rx disable timer */
 			r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
@@ -2710,7 +2702,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 		}
 	} else {
 		switch (tp->mac_version) {
-		case RTL_GIGA_MAC_VER_45 ... RTL_GIGA_MAC_VER_48:
+		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
 		case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
 			r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
 			break;
@@ -3749,9 +3741,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
 		[RTL_GIGA_MAC_VER_42] = rtl_hw_start_8168g_2,
 		[RTL_GIGA_MAC_VER_43] = rtl_hw_start_8168g_2,
 		[RTL_GIGA_MAC_VER_44] = rtl_hw_start_8411_2,
-		[RTL_GIGA_MAC_VER_45] = rtl_hw_start_8168h_1,
 		[RTL_GIGA_MAC_VER_46] = rtl_hw_start_8168h_1,
-		[RTL_GIGA_MAC_VER_47] = rtl_hw_start_8168h_1,
 		[RTL_GIGA_MAC_VER_48] = rtl_hw_start_8168h_1,
 		[RTL_GIGA_MAC_VER_49] = rtl_hw_start_8168ep_1,
 		[RTL_GIGA_MAC_VER_50] = rtl_hw_start_8168ep_2,
@@ -5375,7 +5365,7 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	 */
 	if (rtl_aspm_is_safe(tp))
 		rc = 0;
-	else if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
+	else if (tp->mac_version >= RTL_GIGA_MAC_VER_46)
 		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
 	else
 		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
index 2b4bc2d6f..8653f678a 100644
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
@@ -793,71 +793,6 @@ static void rtl8168g_2_hw_phy_config(struct rtl8169_private *tp,
 	rtl8168g_config_eee_phy(phydev);
 }
 
-static void rtl8168h_1_hw_phy_config(struct rtl8169_private *tp,
-				     struct phy_device *phydev)
-{
-	u16 dout_tapbin;
-	u32 data;
-
-	r8169_apply_firmware(tp);
-
-	/* CHN EST parameters adjust - giga master */
-	r8168g_phy_param(phydev, 0x809b, 0xf800, 0x8000);
-	r8168g_phy_param(phydev, 0x80a2, 0xff00, 0x8000);
-	r8168g_phy_param(phydev, 0x80a4, 0xff00, 0x8500);
-	r8168g_phy_param(phydev, 0x809c, 0xff00, 0xbd00);
-
-	/* CHN EST parameters adjust - giga slave */
-	r8168g_phy_param(phydev, 0x80ad, 0xf800, 0x7000);
-	r8168g_phy_param(phydev, 0x80b4, 0xff00, 0x5000);
-	r8168g_phy_param(phydev, 0x80ac, 0xff00, 0x4000);
-
-	/* CHN EST parameters adjust - fnet */
-	r8168g_phy_param(phydev, 0x808e, 0xff00, 0x1200);
-	r8168g_phy_param(phydev, 0x8090, 0xff00, 0xe500);
-	r8168g_phy_param(phydev, 0x8092, 0xff00, 0x9f00);
-
-	/* enable R-tune & PGA-retune function */
-	dout_tapbin = 0;
-	data = phy_read_paged(phydev, 0x0a46, 0x13);
-	data &= 3;
-	data <<= 2;
-	dout_tapbin |= data;
-	data = phy_read_paged(phydev, 0x0a46, 0x12);
-	data &= 0xc000;
-	data >>= 14;
-	dout_tapbin |= data;
-	dout_tapbin = ~(dout_tapbin ^ 0x08);
-	dout_tapbin <<= 12;
-	dout_tapbin &= 0xf000;
-
-	r8168g_phy_param(phydev, 0x827a, 0xf000, dout_tapbin);
-	r8168g_phy_param(phydev, 0x827b, 0xf000, dout_tapbin);
-	r8168g_phy_param(phydev, 0x827c, 0xf000, dout_tapbin);
-	r8168g_phy_param(phydev, 0x827d, 0xf000, dout_tapbin);
-	r8168g_phy_param(phydev, 0x0811, 0x0000, 0x0800);
-	phy_modify_paged(phydev, 0x0a42, 0x16, 0x0000, 0x0002);
-
-	rtl8168g_enable_gphy_10m(phydev);
-
-	/* SAR ADC performance */
-	phy_modify_paged(phydev, 0x0bca, 0x17, BIT(12) | BIT(13), BIT(14));
-
-	r8168g_phy_param(phydev, 0x803f, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x8047, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x804f, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x8057, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x805f, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x8067, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x806f, 0x3000, 0x0000);
-
-	/* disable phy pfm mode */
-	phy_modify_paged(phydev, 0x0a44, 0x11, BIT(7), 0);
-
-	rtl8168g_disable_aldps(phydev);
-	rtl8168h_config_eee_phy(phydev);
-}
-
 static void rtl8168h_2_hw_phy_config(struct rtl8169_private *tp,
 				     struct phy_device *phydev)
 {
@@ -1269,9 +1204,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
 		[RTL_GIGA_MAC_VER_42] = rtl8168g_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_43] = rtl8168g_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_44] = rtl8168g_2_hw_phy_config,
-		[RTL_GIGA_MAC_VER_45] = rtl8168h_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_46] = rtl8168h_2_hw_phy_config,
-		[RTL_GIGA_MAC_VER_47] = rtl8168h_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_48] = rtl8168h_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_49] = rtl8168ep_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_50] = rtl8168ep_2_hw_phy_config,
-- 
2.37.2



^ permalink raw reply related	[relevance 4%]

* [PATCH net-next v2 5/5] r8169: remove support for chip version 60
    2022-08-23 11:03  4% ` [PATCH net-next v2 2/5] r8169: remove support for chip versions 45 and 47 Heiner Kallweit
@ 2022-08-23 11:07  4% ` Heiner Kallweit
  1 sibling, 0 replies; 107+ results
From: Heiner Kallweit @ 2022-08-23 11:07 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers,
	Paolo Abeni, Eric Dumazet
  Cc: netdev

Detection of this chip version has been disabled for few kernel versions now.
Nobody complained, so remove support for this chip version.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169.h          |  2 +-
 drivers/net/ethernet/realtek/r8169_main.c     | 57 +++----------------
 .../net/ethernet/realtek/r8169_phy_config.c   | 39 -------------
 3 files changed, 8 insertions(+), 90 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
index 68cd71289..36d382676 100644
--- a/drivers/net/ethernet/realtek/r8169.h
+++ b/drivers/net/ethernet/realtek/r8169.h
@@ -64,7 +64,7 @@ enum mac_version {
 	RTL_GIGA_MAC_VER_51,
 	RTL_GIGA_MAC_VER_52,
 	RTL_GIGA_MAC_VER_53,
-	RTL_GIGA_MAC_VER_60,
+	/* support for RTL_GIGA_MAC_VER_60 has been removed */
 	RTL_GIGA_MAC_VER_61,
 	RTL_GIGA_MAC_VER_63,
 	RTL_GIGA_MAC_NONE
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index db653776e..243477825 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -137,7 +137,6 @@ static const struct {
 	[RTL_GIGA_MAC_VER_51] = {"RTL8168ep/8111ep"			},
 	[RTL_GIGA_MAC_VER_52] = {"RTL8168fp/RTL8117",  FIRMWARE_8168FP_3},
 	[RTL_GIGA_MAC_VER_53] = {"RTL8168fp/RTL8117",			},
-	[RTL_GIGA_MAC_VER_60] = {"RTL8125A"				},
 	[RTL_GIGA_MAC_VER_61] = {"RTL8125A",		FIRMWARE_8125A_3},
 	/* reserve 62 for CFG_METHOD_4 in the vendor driver */
 	[RTL_GIGA_MAC_VER_63] = {"RTL8125B",		FIRMWARE_8125B_2},
@@ -680,7 +679,7 @@ static void rtl_pci_commit(struct rtl8169_private *tp)
 
 static bool rtl_is_8125(struct rtl8169_private *tp)
 {
-	return tp->mac_version >= RTL_GIGA_MAC_VER_60;
+	return tp->mac_version >= RTL_GIGA_MAC_VER_61;
 }
 
 static bool rtl_is_8168evl_up(struct rtl8169_private *tp)
@@ -2258,7 +2257,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
 		RTL_W32(tp, RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST | RX_EARLY_OFF);
 		break;
-	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
 		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
 		break;
 	default:
@@ -2442,7 +2441,7 @@ static void rtl_wait_txrx_fifo_empty(struct rtl8169_private *tp)
 		rtl_loop_wait_high(tp, &rtl_txcfg_empty_cond, 100, 42);
 		rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42);
 		break;
-	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_61:
 		rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42);
 		break;
 	case RTL_GIGA_MAC_VER_63:
@@ -2688,7 +2687,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 
 		switch (tp->mac_version) {
 		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
-		case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
 			/* reset ephy tx/rx disable timer */
 			r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
 			/* chip can trigger L1.2 */
@@ -2700,7 +2699,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 	} else {
 		switch (tp->mac_version) {
 		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
-		case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
 			r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
 			break;
 		default:
@@ -3573,46 +3572,6 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	udelay(10);
 }
 
-static void rtl_hw_start_8125a_1(struct rtl8169_private *tp)
-{
-	static const struct ephy_info e_info_8125a_1[] = {
-		{ 0x01, 0xffff, 0xa812 },
-		{ 0x09, 0xffff, 0x520c },
-		{ 0x04, 0xffff, 0xd000 },
-		{ 0x0d, 0xffff, 0xf702 },
-		{ 0x0a, 0xffff, 0x8653 },
-		{ 0x06, 0xffff, 0x001e },
-		{ 0x08, 0xffff, 0x3595 },
-		{ 0x20, 0xffff, 0x9455 },
-		{ 0x21, 0xffff, 0x99ff },
-		{ 0x02, 0xffff, 0x6046 },
-		{ 0x29, 0xffff, 0xfe00 },
-		{ 0x23, 0xffff, 0xab62 },
-
-		{ 0x41, 0xffff, 0xa80c },
-		{ 0x49, 0xffff, 0x520c },
-		{ 0x44, 0xffff, 0xd000 },
-		{ 0x4d, 0xffff, 0xf702 },
-		{ 0x4a, 0xffff, 0x8653 },
-		{ 0x46, 0xffff, 0x001e },
-		{ 0x48, 0xffff, 0x3595 },
-		{ 0x60, 0xffff, 0x9455 },
-		{ 0x61, 0xffff, 0x99ff },
-		{ 0x42, 0xffff, 0x6046 },
-		{ 0x69, 0xffff, 0xfe00 },
-		{ 0x63, 0xffff, 0xab62 },
-	};
-
-	rtl_set_def_aspm_entry_latency(tp);
-
-	/* disable aspm and clock request before access ephy */
-	rtl_hw_aspm_clkreq_enable(tp, false);
-	rtl_ephy_init(tp, e_info_8125a_1);
-
-	rtl_hw_start_8125_common(tp);
-	rtl_hw_aspm_clkreq_enable(tp, true);
-}
-
 static void rtl_hw_start_8125a_2(struct rtl8169_private *tp)
 {
 	static const struct ephy_info e_info_8125a_2[] = {
@@ -3704,7 +3663,6 @@ static void rtl_hw_config(struct rtl8169_private *tp)
 		[RTL_GIGA_MAC_VER_51] = rtl_hw_start_8168ep_3,
 		[RTL_GIGA_MAC_VER_52] = rtl_hw_start_8117,
 		[RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
-		[RTL_GIGA_MAC_VER_60] = rtl_hw_start_8125a_1,
 		[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
 		[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
 	};
@@ -4099,7 +4057,6 @@ static unsigned int rtl_quirk_packet_padto(struct rtl8169_private *tp,
 
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_34:
-	case RTL_GIGA_MAC_VER_60:
 	case RTL_GIGA_MAC_VER_61:
 	case RTL_GIGA_MAC_VER_63:
 		padto = max_t(unsigned int, padto, ETH_ZLEN);
@@ -5143,7 +5100,7 @@ static void rtl_hw_initialize(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
 		rtl_hw_init_8168g(tp);
 		break;
-	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
 		rtl_hw_init_8125(tp);
 		break;
 	default:
@@ -5234,7 +5191,7 @@ static void rtl_init_mac_address(struct rtl8169_private *tp)
 /* register is set if system vendor successfully tested ASPM 1.2 */
 static bool rtl_aspm_is_safe(struct rtl8169_private *tp)
 {
-	if (tp->mac_version >= RTL_GIGA_MAC_VER_60 &&
+	if (tp->mac_version >= RTL_GIGA_MAC_VER_61 &&
 	    r8168_mac_ocp_read(tp, 0xc0b2) & 0xf)
 		return true;
 
diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
index 99e4f06f8..8c04cc56b 100644
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
@@ -995,44 +995,6 @@ static void rtl8125_legacy_force_mode(struct phy_device *phydev)
 	phy_modify_paged(phydev, 0xa5b, 0x12, BIT(15), 0);
 }
 
-static void rtl8125a_1_hw_phy_config(struct rtl8169_private *tp,
-				     struct phy_device *phydev)
-{
-	phy_modify_paged(phydev, 0xad4, 0x10, 0x03ff, 0x0084);
-	phy_modify_paged(phydev, 0xad4, 0x17, 0x0000, 0x0010);
-	phy_modify_paged(phydev, 0xad1, 0x13, 0x03ff, 0x0006);
-	phy_modify_paged(phydev, 0xad3, 0x11, 0x003f, 0x0006);
-	phy_modify_paged(phydev, 0xac0, 0x14, 0x0000, 0x1100);
-	phy_modify_paged(phydev, 0xac8, 0x15, 0xf000, 0x7000);
-	phy_modify_paged(phydev, 0xad1, 0x14, 0x0000, 0x0400);
-	phy_modify_paged(phydev, 0xad1, 0x15, 0x0000, 0x03ff);
-	phy_modify_paged(phydev, 0xad1, 0x16, 0x0000, 0x03ff);
-
-	r8168g_phy_param(phydev, 0x80ea, 0xff00, 0xc400);
-	r8168g_phy_param(phydev, 0x80eb, 0x0700, 0x0300);
-	r8168g_phy_param(phydev, 0x80f8, 0xff00, 0x1c00);
-	r8168g_phy_param(phydev, 0x80f1, 0xff00, 0x3000);
-	r8168g_phy_param(phydev, 0x80fe, 0xff00, 0xa500);
-	r8168g_phy_param(phydev, 0x8102, 0xff00, 0x5000);
-	r8168g_phy_param(phydev, 0x8105, 0xff00, 0x3300);
-	r8168g_phy_param(phydev, 0x8100, 0xff00, 0x7000);
-	r8168g_phy_param(phydev, 0x8104, 0xff00, 0xf000);
-	r8168g_phy_param(phydev, 0x8106, 0xff00, 0x6500);
-	r8168g_phy_param(phydev, 0x80dc, 0xff00, 0xed00);
-	r8168g_phy_param(phydev, 0x80df, 0x0000, 0x0100);
-	r8168g_phy_param(phydev, 0x80e1, 0x0100, 0x0000);
-
-	phy_modify_paged(phydev, 0xbf0, 0x13, 0x003f, 0x0038);
-	r8168g_phy_param(phydev, 0x819f, 0xffff, 0xd0b6);
-
-	phy_write_paged(phydev, 0xbc3, 0x12, 0x5555);
-	phy_modify_paged(phydev, 0xbf0, 0x15, 0x0e00, 0x0a00);
-	phy_modify_paged(phydev, 0xa5c, 0x10, 0x0400, 0x0000);
-	rtl8168g_enable_gphy_10m(phydev);
-
-	rtl8125a_config_eee_phy(phydev);
-}
-
 static void rtl8125a_2_hw_phy_config(struct rtl8169_private *tp,
 				     struct phy_device *phydev)
 {
@@ -1188,7 +1150,6 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
 		[RTL_GIGA_MAC_VER_51] = rtl8168ep_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_52] = rtl8117_hw_phy_config,
 		[RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
-		[RTL_GIGA_MAC_VER_60] = rtl8125a_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
 	};
-- 
2.37.2


^ permalink raw reply related	[relevance 4%]

* [PATCH net-next v2 2/5] r8169: remove support for chip versions 45 and 47
  @ 2022-08-23 11:03  4% ` Heiner Kallweit
  2022-08-23 11:07  4% ` [PATCH net-next v2 5/5] r8169: remove support for chip version 60 Heiner Kallweit
  1 sibling, 0 replies; 107+ results
From: Heiner Kallweit @ 2022-08-23 11:03 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers,
	Paolo Abeni, Eric Dumazet
  Cc: netdev

Detection of these chip versions has been disabled for few kernel versions now.
Nobody complained, so remove support for this chip version.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169.h          |  4 +-
 drivers/net/ethernet/realtek/r8169_main.c     | 16 +----
 .../net/ethernet/realtek/r8169_phy_config.c   | 67 -------------------
 3 files changed, 5 insertions(+), 82 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
index e2ace50e0..a66b10850 100644
--- a/drivers/net/ethernet/realtek/r8169.h
+++ b/drivers/net/ethernet/realtek/r8169.h
@@ -55,9 +55,9 @@ enum mac_version {
 	RTL_GIGA_MAC_VER_42,
 	RTL_GIGA_MAC_VER_43,
 	RTL_GIGA_MAC_VER_44,
-	RTL_GIGA_MAC_VER_45,
+	/* support for RTL_GIGA_MAC_VER_45 has been removed */
 	RTL_GIGA_MAC_VER_46,
-	RTL_GIGA_MAC_VER_47,
+	/* support for RTL_GIGA_MAC_VER_47 has been removed */
 	RTL_GIGA_MAC_VER_48,
 	RTL_GIGA_MAC_VER_49,
 	RTL_GIGA_MAC_VER_50,
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index a2baeb8da..0e7d10cd6 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -49,10 +49,8 @@
 #define FIRMWARE_8106E_2	"rtl_nic/rtl8106e-2.fw"
 #define FIRMWARE_8168G_2	"rtl_nic/rtl8168g-2.fw"
 #define FIRMWARE_8168G_3	"rtl_nic/rtl8168g-3.fw"
-#define FIRMWARE_8168H_1	"rtl_nic/rtl8168h-1.fw"
 #define FIRMWARE_8168H_2	"rtl_nic/rtl8168h-2.fw"
 #define FIRMWARE_8168FP_3	"rtl_nic/rtl8168fp-3.fw"
-#define FIRMWARE_8107E_1	"rtl_nic/rtl8107e-1.fw"
 #define FIRMWARE_8107E_2	"rtl_nic/rtl8107e-2.fw"
 #define FIRMWARE_8125A_3	"rtl_nic/rtl8125a-3.fw"
 #define FIRMWARE_8125B_2	"rtl_nic/rtl8125b-2.fw"
@@ -134,9 +132,7 @@ static const struct {
 	[RTL_GIGA_MAC_VER_42] = {"RTL8168gu/8111gu",	FIRMWARE_8168G_3},
 	[RTL_GIGA_MAC_VER_43] = {"RTL8106eus",		FIRMWARE_8106E_2},
 	[RTL_GIGA_MAC_VER_44] = {"RTL8411b",		FIRMWARE_8411_2 },
-	[RTL_GIGA_MAC_VER_45] = {"RTL8168h/8111h",	FIRMWARE_8168H_1},
 	[RTL_GIGA_MAC_VER_46] = {"RTL8168h/8111h",	FIRMWARE_8168H_2},
-	[RTL_GIGA_MAC_VER_47] = {"RTL8107e",		FIRMWARE_8107E_1},
 	[RTL_GIGA_MAC_VER_48] = {"RTL8107e",		FIRMWARE_8107E_2},
 	[RTL_GIGA_MAC_VER_49] = {"RTL8168ep/8111ep"			},
 	[RTL_GIGA_MAC_VER_50] = {"RTL8168ep/8111ep"			},
@@ -657,10 +653,8 @@ MODULE_FIRMWARE(FIRMWARE_8106E_1);
 MODULE_FIRMWARE(FIRMWARE_8106E_2);
 MODULE_FIRMWARE(FIRMWARE_8168G_2);
 MODULE_FIRMWARE(FIRMWARE_8168G_3);
-MODULE_FIRMWARE(FIRMWARE_8168H_1);
 MODULE_FIRMWARE(FIRMWARE_8168H_2);
 MODULE_FIRMWARE(FIRMWARE_8168FP_3);
-MODULE_FIRMWARE(FIRMWARE_8107E_1);
 MODULE_FIRMWARE(FIRMWARE_8107E_2);
 MODULE_FIRMWARE(FIRMWARE_8125A_3);
 MODULE_FIRMWARE(FIRMWARE_8125B_2);
@@ -2086,8 +2080,6 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
 	if (ver != RTL_GIGA_MAC_NONE && !gmii) {
 		if (ver == RTL_GIGA_MAC_VER_42)
 			ver = RTL_GIGA_MAC_VER_43;
-		else if (ver == RTL_GIGA_MAC_VER_45)
-			ver = RTL_GIGA_MAC_VER_47;
 		else if (ver == RTL_GIGA_MAC_VER_46)
 			ver = RTL_GIGA_MAC_VER_48;
 	}
@@ -2698,7 +2690,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 		RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);
 
 		switch (tp->mac_version) {
-		case RTL_GIGA_MAC_VER_45 ... RTL_GIGA_MAC_VER_48:
+		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
 		case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
 			/* reset ephy tx/rx disable timer */
 			r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
@@ -2710,7 +2702,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 		}
 	} else {
 		switch (tp->mac_version) {
-		case RTL_GIGA_MAC_VER_45 ... RTL_GIGA_MAC_VER_48:
+		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
 		case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
 			r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
 			break;
@@ -3749,9 +3741,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
 		[RTL_GIGA_MAC_VER_42] = rtl_hw_start_8168g_2,
 		[RTL_GIGA_MAC_VER_43] = rtl_hw_start_8168g_2,
 		[RTL_GIGA_MAC_VER_44] = rtl_hw_start_8411_2,
-		[RTL_GIGA_MAC_VER_45] = rtl_hw_start_8168h_1,
 		[RTL_GIGA_MAC_VER_46] = rtl_hw_start_8168h_1,
-		[RTL_GIGA_MAC_VER_47] = rtl_hw_start_8168h_1,
 		[RTL_GIGA_MAC_VER_48] = rtl_hw_start_8168h_1,
 		[RTL_GIGA_MAC_VER_49] = rtl_hw_start_8168ep_1,
 		[RTL_GIGA_MAC_VER_50] = rtl_hw_start_8168ep_2,
@@ -5375,7 +5365,7 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	 */
 	if (rtl_aspm_is_safe(tp))
 		rc = 0;
-	else if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
+	else if (tp->mac_version >= RTL_GIGA_MAC_VER_46)
 		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
 	else
 		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
index 2b4bc2d6f..8653f678a 100644
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
@@ -793,71 +793,6 @@ static void rtl8168g_2_hw_phy_config(struct rtl8169_private *tp,
 	rtl8168g_config_eee_phy(phydev);
 }
 
-static void rtl8168h_1_hw_phy_config(struct rtl8169_private *tp,
-				     struct phy_device *phydev)
-{
-	u16 dout_tapbin;
-	u32 data;
-
-	r8169_apply_firmware(tp);
-
-	/* CHN EST parameters adjust - giga master */
-	r8168g_phy_param(phydev, 0x809b, 0xf800, 0x8000);
-	r8168g_phy_param(phydev, 0x80a2, 0xff00, 0x8000);
-	r8168g_phy_param(phydev, 0x80a4, 0xff00, 0x8500);
-	r8168g_phy_param(phydev, 0x809c, 0xff00, 0xbd00);
-
-	/* CHN EST parameters adjust - giga slave */
-	r8168g_phy_param(phydev, 0x80ad, 0xf800, 0x7000);
-	r8168g_phy_param(phydev, 0x80b4, 0xff00, 0x5000);
-	r8168g_phy_param(phydev, 0x80ac, 0xff00, 0x4000);
-
-	/* CHN EST parameters adjust - fnet */
-	r8168g_phy_param(phydev, 0x808e, 0xff00, 0x1200);
-	r8168g_phy_param(phydev, 0x8090, 0xff00, 0xe500);
-	r8168g_phy_param(phydev, 0x8092, 0xff00, 0x9f00);
-
-	/* enable R-tune & PGA-retune function */
-	dout_tapbin = 0;
-	data = phy_read_paged(phydev, 0x0a46, 0x13);
-	data &= 3;
-	data <<= 2;
-	dout_tapbin |= data;
-	data = phy_read_paged(phydev, 0x0a46, 0x12);
-	data &= 0xc000;
-	data >>= 14;
-	dout_tapbin |= data;
-	dout_tapbin = ~(dout_tapbin ^ 0x08);
-	dout_tapbin <<= 12;
-	dout_tapbin &= 0xf000;
-
-	r8168g_phy_param(phydev, 0x827a, 0xf000, dout_tapbin);
-	r8168g_phy_param(phydev, 0x827b, 0xf000, dout_tapbin);
-	r8168g_phy_param(phydev, 0x827c, 0xf000, dout_tapbin);
-	r8168g_phy_param(phydev, 0x827d, 0xf000, dout_tapbin);
-	r8168g_phy_param(phydev, 0x0811, 0x0000, 0x0800);
-	phy_modify_paged(phydev, 0x0a42, 0x16, 0x0000, 0x0002);
-
-	rtl8168g_enable_gphy_10m(phydev);
-
-	/* SAR ADC performance */
-	phy_modify_paged(phydev, 0x0bca, 0x17, BIT(12) | BIT(13), BIT(14));
-
-	r8168g_phy_param(phydev, 0x803f, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x8047, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x804f, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x8057, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x805f, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x8067, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x806f, 0x3000, 0x0000);
-
-	/* disable phy pfm mode */
-	phy_modify_paged(phydev, 0x0a44, 0x11, BIT(7), 0);
-
-	rtl8168g_disable_aldps(phydev);
-	rtl8168h_config_eee_phy(phydev);
-}
-
 static void rtl8168h_2_hw_phy_config(struct rtl8169_private *tp,
 				     struct phy_device *phydev)
 {
@@ -1269,9 +1204,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
 		[RTL_GIGA_MAC_VER_42] = rtl8168g_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_43] = rtl8168g_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_44] = rtl8168g_2_hw_phy_config,
-		[RTL_GIGA_MAC_VER_45] = rtl8168h_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_46] = rtl8168h_2_hw_phy_config,
-		[RTL_GIGA_MAC_VER_47] = rtl8168h_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_48] = rtl8168h_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_49] = rtl8168ep_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_50] = rtl8168ep_2_hw_phy_config,
-- 
2.37.2


^ permalink raw reply related	[relevance 4%]

* [PATCH net-next 5/5] r8169: remove support for chip version 60
    2022-08-20 13:52  4% ` [PATCH net-next 2/5] r8169: remove support for chip versions 45 and 47 Heiner Kallweit
@ 2022-08-20 13:54  4% ` Heiner Kallweit
  1 sibling, 0 replies; 107+ results
From: Heiner Kallweit @ 2022-08-20 13:54 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev

Detection of this chip version has been disabled for few kernel versions now.
Nobody complained, so remove support for this chip version.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169.h          |  2 +-
 drivers/net/ethernet/realtek/r8169_main.c     | 57 +++----------------
 .../net/ethernet/realtek/r8169_phy_config.c   | 39 -------------
 3 files changed, 8 insertions(+), 90 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
index 68cd71289..36d382676 100644
--- a/drivers/net/ethernet/realtek/r8169.h
+++ b/drivers/net/ethernet/realtek/r8169.h
@@ -64,7 +64,7 @@ enum mac_version {
 	RTL_GIGA_MAC_VER_51,
 	RTL_GIGA_MAC_VER_52,
 	RTL_GIGA_MAC_VER_53,
-	RTL_GIGA_MAC_VER_60,
+	/* support for RTL_GIGA_MAC_VER_60 has been removed */
 	RTL_GIGA_MAC_VER_61,
 	RTL_GIGA_MAC_VER_63,
 	RTL_GIGA_MAC_NONE
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index db653776e..243477825 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -137,7 +137,6 @@ static const struct {
 	[RTL_GIGA_MAC_VER_51] = {"RTL8168ep/8111ep"			},
 	[RTL_GIGA_MAC_VER_52] = {"RTL8168fp/RTL8117",  FIRMWARE_8168FP_3},
 	[RTL_GIGA_MAC_VER_53] = {"RTL8168fp/RTL8117",			},
-	[RTL_GIGA_MAC_VER_60] = {"RTL8125A"				},
 	[RTL_GIGA_MAC_VER_61] = {"RTL8125A",		FIRMWARE_8125A_3},
 	/* reserve 62 for CFG_METHOD_4 in the vendor driver */
 	[RTL_GIGA_MAC_VER_63] = {"RTL8125B",		FIRMWARE_8125B_2},
@@ -680,7 +679,7 @@ static void rtl_pci_commit(struct rtl8169_private *tp)
 
 static bool rtl_is_8125(struct rtl8169_private *tp)
 {
-	return tp->mac_version >= RTL_GIGA_MAC_VER_60;
+	return tp->mac_version >= RTL_GIGA_MAC_VER_61;
 }
 
 static bool rtl_is_8168evl_up(struct rtl8169_private *tp)
@@ -2258,7 +2257,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
 		RTL_W32(tp, RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST | RX_EARLY_OFF);
 		break;
-	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
 		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
 		break;
 	default:
@@ -2442,7 +2441,7 @@ static void rtl_wait_txrx_fifo_empty(struct rtl8169_private *tp)
 		rtl_loop_wait_high(tp, &rtl_txcfg_empty_cond, 100, 42);
 		rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42);
 		break;
-	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_61:
 		rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42);
 		break;
 	case RTL_GIGA_MAC_VER_63:
@@ -2688,7 +2687,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 
 		switch (tp->mac_version) {
 		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
-		case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
 			/* reset ephy tx/rx disable timer */
 			r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
 			/* chip can trigger L1.2 */
@@ -2700,7 +2699,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 	} else {
 		switch (tp->mac_version) {
 		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
-		case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+		case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
 			r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
 			break;
 		default:
@@ -3573,46 +3572,6 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	udelay(10);
 }
 
-static void rtl_hw_start_8125a_1(struct rtl8169_private *tp)
-{
-	static const struct ephy_info e_info_8125a_1[] = {
-		{ 0x01, 0xffff, 0xa812 },
-		{ 0x09, 0xffff, 0x520c },
-		{ 0x04, 0xffff, 0xd000 },
-		{ 0x0d, 0xffff, 0xf702 },
-		{ 0x0a, 0xffff, 0x8653 },
-		{ 0x06, 0xffff, 0x001e },
-		{ 0x08, 0xffff, 0x3595 },
-		{ 0x20, 0xffff, 0x9455 },
-		{ 0x21, 0xffff, 0x99ff },
-		{ 0x02, 0xffff, 0x6046 },
-		{ 0x29, 0xffff, 0xfe00 },
-		{ 0x23, 0xffff, 0xab62 },
-
-		{ 0x41, 0xffff, 0xa80c },
-		{ 0x49, 0xffff, 0x520c },
-		{ 0x44, 0xffff, 0xd000 },
-		{ 0x4d, 0xffff, 0xf702 },
-		{ 0x4a, 0xffff, 0x8653 },
-		{ 0x46, 0xffff, 0x001e },
-		{ 0x48, 0xffff, 0x3595 },
-		{ 0x60, 0xffff, 0x9455 },
-		{ 0x61, 0xffff, 0x99ff },
-		{ 0x42, 0xffff, 0x6046 },
-		{ 0x69, 0xffff, 0xfe00 },
-		{ 0x63, 0xffff, 0xab62 },
-	};
-
-	rtl_set_def_aspm_entry_latency(tp);
-
-	/* disable aspm and clock request before access ephy */
-	rtl_hw_aspm_clkreq_enable(tp, false);
-	rtl_ephy_init(tp, e_info_8125a_1);
-
-	rtl_hw_start_8125_common(tp);
-	rtl_hw_aspm_clkreq_enable(tp, true);
-}
-
 static void rtl_hw_start_8125a_2(struct rtl8169_private *tp)
 {
 	static const struct ephy_info e_info_8125a_2[] = {
@@ -3704,7 +3663,6 @@ static void rtl_hw_config(struct rtl8169_private *tp)
 		[RTL_GIGA_MAC_VER_51] = rtl_hw_start_8168ep_3,
 		[RTL_GIGA_MAC_VER_52] = rtl_hw_start_8117,
 		[RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
-		[RTL_GIGA_MAC_VER_60] = rtl_hw_start_8125a_1,
 		[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
 		[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
 	};
@@ -4099,7 +4057,6 @@ static unsigned int rtl_quirk_packet_padto(struct rtl8169_private *tp,
 
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_34:
-	case RTL_GIGA_MAC_VER_60:
 	case RTL_GIGA_MAC_VER_61:
 	case RTL_GIGA_MAC_VER_63:
 		padto = max_t(unsigned int, padto, ETH_ZLEN);
@@ -5143,7 +5100,7 @@ static void rtl_hw_initialize(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
 		rtl_hw_init_8168g(tp);
 		break;
-	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
 		rtl_hw_init_8125(tp);
 		break;
 	default:
@@ -5234,7 +5191,7 @@ static void rtl_init_mac_address(struct rtl8169_private *tp)
 /* register is set if system vendor successfully tested ASPM 1.2 */
 static bool rtl_aspm_is_safe(struct rtl8169_private *tp)
 {
-	if (tp->mac_version >= RTL_GIGA_MAC_VER_60 &&
+	if (tp->mac_version >= RTL_GIGA_MAC_VER_61 &&
 	    r8168_mac_ocp_read(tp, 0xc0b2) & 0xf)
 		return true;
 
diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
index 99e4f06f8..8c04cc56b 100644
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
@@ -995,44 +995,6 @@ static void rtl8125_legacy_force_mode(struct phy_device *phydev)
 	phy_modify_paged(phydev, 0xa5b, 0x12, BIT(15), 0);
 }
 
-static void rtl8125a_1_hw_phy_config(struct rtl8169_private *tp,
-				     struct phy_device *phydev)
-{
-	phy_modify_paged(phydev, 0xad4, 0x10, 0x03ff, 0x0084);
-	phy_modify_paged(phydev, 0xad4, 0x17, 0x0000, 0x0010);
-	phy_modify_paged(phydev, 0xad1, 0x13, 0x03ff, 0x0006);
-	phy_modify_paged(phydev, 0xad3, 0x11, 0x003f, 0x0006);
-	phy_modify_paged(phydev, 0xac0, 0x14, 0x0000, 0x1100);
-	phy_modify_paged(phydev, 0xac8, 0x15, 0xf000, 0x7000);
-	phy_modify_paged(phydev, 0xad1, 0x14, 0x0000, 0x0400);
-	phy_modify_paged(phydev, 0xad1, 0x15, 0x0000, 0x03ff);
-	phy_modify_paged(phydev, 0xad1, 0x16, 0x0000, 0x03ff);
-
-	r8168g_phy_param(phydev, 0x80ea, 0xff00, 0xc400);
-	r8168g_phy_param(phydev, 0x80eb, 0x0700, 0x0300);
-	r8168g_phy_param(phydev, 0x80f8, 0xff00, 0x1c00);
-	r8168g_phy_param(phydev, 0x80f1, 0xff00, 0x3000);
-	r8168g_phy_param(phydev, 0x80fe, 0xff00, 0xa500);
-	r8168g_phy_param(phydev, 0x8102, 0xff00, 0x5000);
-	r8168g_phy_param(phydev, 0x8105, 0xff00, 0x3300);
-	r8168g_phy_param(phydev, 0x8100, 0xff00, 0x7000);
-	r8168g_phy_param(phydev, 0x8104, 0xff00, 0xf000);
-	r8168g_phy_param(phydev, 0x8106, 0xff00, 0x6500);
-	r8168g_phy_param(phydev, 0x80dc, 0xff00, 0xed00);
-	r8168g_phy_param(phydev, 0x80df, 0x0000, 0x0100);
-	r8168g_phy_param(phydev, 0x80e1, 0x0100, 0x0000);
-
-	phy_modify_paged(phydev, 0xbf0, 0x13, 0x003f, 0x0038);
-	r8168g_phy_param(phydev, 0x819f, 0xffff, 0xd0b6);
-
-	phy_write_paged(phydev, 0xbc3, 0x12, 0x5555);
-	phy_modify_paged(phydev, 0xbf0, 0x15, 0x0e00, 0x0a00);
-	phy_modify_paged(phydev, 0xa5c, 0x10, 0x0400, 0x0000);
-	rtl8168g_enable_gphy_10m(phydev);
-
-	rtl8125a_config_eee_phy(phydev);
-}
-
 static void rtl8125a_2_hw_phy_config(struct rtl8169_private *tp,
 				     struct phy_device *phydev)
 {
@@ -1188,7 +1150,6 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
 		[RTL_GIGA_MAC_VER_51] = rtl8168ep_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_52] = rtl8117_hw_phy_config,
 		[RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
-		[RTL_GIGA_MAC_VER_60] = rtl8125a_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
 	};
-- 
2.37.2



^ permalink raw reply related	[relevance 4%]

* [PATCH net-next 2/5] r8169: remove support for chip versions 45 and 47
  @ 2022-08-20 13:52  4% ` Heiner Kallweit
  2022-08-20 13:54  4% ` [PATCH net-next 5/5] r8169: remove support for chip version 60 Heiner Kallweit
  1 sibling, 0 replies; 107+ results
From: Heiner Kallweit @ 2022-08-20 13:52 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev

Detection of these chip versions has been disabled for few kernel versions now.
Nobody complained, so remove support for this chip version.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169.h          |  4 +-
 drivers/net/ethernet/realtek/r8169_main.c     | 16 +----
 .../net/ethernet/realtek/r8169_phy_config.c   | 67 -------------------
 3 files changed, 5 insertions(+), 82 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
index e2ace50e0..a66b10850 100644
--- a/drivers/net/ethernet/realtek/r8169.h
+++ b/drivers/net/ethernet/realtek/r8169.h
@@ -55,9 +55,9 @@ enum mac_version {
 	RTL_GIGA_MAC_VER_42,
 	RTL_GIGA_MAC_VER_43,
 	RTL_GIGA_MAC_VER_44,
-	RTL_GIGA_MAC_VER_45,
+	/* support for RTL_GIGA_MAC_VER_45 has been removed */
 	RTL_GIGA_MAC_VER_46,
-	RTL_GIGA_MAC_VER_47,
+	/* support for RTL_GIGA_MAC_VER_47 has been removed */
 	RTL_GIGA_MAC_VER_48,
 	RTL_GIGA_MAC_VER_49,
 	RTL_GIGA_MAC_VER_50,
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index a2baeb8da..0e7d10cd6 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -49,10 +49,8 @@
 #define FIRMWARE_8106E_2	"rtl_nic/rtl8106e-2.fw"
 #define FIRMWARE_8168G_2	"rtl_nic/rtl8168g-2.fw"
 #define FIRMWARE_8168G_3	"rtl_nic/rtl8168g-3.fw"
-#define FIRMWARE_8168H_1	"rtl_nic/rtl8168h-1.fw"
 #define FIRMWARE_8168H_2	"rtl_nic/rtl8168h-2.fw"
 #define FIRMWARE_8168FP_3	"rtl_nic/rtl8168fp-3.fw"
-#define FIRMWARE_8107E_1	"rtl_nic/rtl8107e-1.fw"
 #define FIRMWARE_8107E_2	"rtl_nic/rtl8107e-2.fw"
 #define FIRMWARE_8125A_3	"rtl_nic/rtl8125a-3.fw"
 #define FIRMWARE_8125B_2	"rtl_nic/rtl8125b-2.fw"
@@ -134,9 +132,7 @@ static const struct {
 	[RTL_GIGA_MAC_VER_42] = {"RTL8168gu/8111gu",	FIRMWARE_8168G_3},
 	[RTL_GIGA_MAC_VER_43] = {"RTL8106eus",		FIRMWARE_8106E_2},
 	[RTL_GIGA_MAC_VER_44] = {"RTL8411b",		FIRMWARE_8411_2 },
-	[RTL_GIGA_MAC_VER_45] = {"RTL8168h/8111h",	FIRMWARE_8168H_1},
 	[RTL_GIGA_MAC_VER_46] = {"RTL8168h/8111h",	FIRMWARE_8168H_2},
-	[RTL_GIGA_MAC_VER_47] = {"RTL8107e",		FIRMWARE_8107E_1},
 	[RTL_GIGA_MAC_VER_48] = {"RTL8107e",		FIRMWARE_8107E_2},
 	[RTL_GIGA_MAC_VER_49] = {"RTL8168ep/8111ep"			},
 	[RTL_GIGA_MAC_VER_50] = {"RTL8168ep/8111ep"			},
@@ -657,10 +653,8 @@ MODULE_FIRMWARE(FIRMWARE_8106E_1);
 MODULE_FIRMWARE(FIRMWARE_8106E_2);
 MODULE_FIRMWARE(FIRMWARE_8168G_2);
 MODULE_FIRMWARE(FIRMWARE_8168G_3);
-MODULE_FIRMWARE(FIRMWARE_8168H_1);
 MODULE_FIRMWARE(FIRMWARE_8168H_2);
 MODULE_FIRMWARE(FIRMWARE_8168FP_3);
-MODULE_FIRMWARE(FIRMWARE_8107E_1);
 MODULE_FIRMWARE(FIRMWARE_8107E_2);
 MODULE_FIRMWARE(FIRMWARE_8125A_3);
 MODULE_FIRMWARE(FIRMWARE_8125B_2);
@@ -2086,8 +2080,6 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
 	if (ver != RTL_GIGA_MAC_NONE && !gmii) {
 		if (ver == RTL_GIGA_MAC_VER_42)
 			ver = RTL_GIGA_MAC_VER_43;
-		else if (ver == RTL_GIGA_MAC_VER_45)
-			ver = RTL_GIGA_MAC_VER_47;
 		else if (ver == RTL_GIGA_MAC_VER_46)
 			ver = RTL_GIGA_MAC_VER_48;
 	}
@@ -2698,7 +2690,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 		RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);
 
 		switch (tp->mac_version) {
-		case RTL_GIGA_MAC_VER_45 ... RTL_GIGA_MAC_VER_48:
+		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
 		case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
 			/* reset ephy tx/rx disable timer */
 			r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
@@ -2710,7 +2702,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 		}
 	} else {
 		switch (tp->mac_version) {
-		case RTL_GIGA_MAC_VER_45 ... RTL_GIGA_MAC_VER_48:
+		case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
 		case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
 			r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
 			break;
@@ -3749,9 +3741,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
 		[RTL_GIGA_MAC_VER_42] = rtl_hw_start_8168g_2,
 		[RTL_GIGA_MAC_VER_43] = rtl_hw_start_8168g_2,
 		[RTL_GIGA_MAC_VER_44] = rtl_hw_start_8411_2,
-		[RTL_GIGA_MAC_VER_45] = rtl_hw_start_8168h_1,
 		[RTL_GIGA_MAC_VER_46] = rtl_hw_start_8168h_1,
-		[RTL_GIGA_MAC_VER_47] = rtl_hw_start_8168h_1,
 		[RTL_GIGA_MAC_VER_48] = rtl_hw_start_8168h_1,
 		[RTL_GIGA_MAC_VER_49] = rtl_hw_start_8168ep_1,
 		[RTL_GIGA_MAC_VER_50] = rtl_hw_start_8168ep_2,
@@ -5375,7 +5365,7 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	 */
 	if (rtl_aspm_is_safe(tp))
 		rc = 0;
-	else if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
+	else if (tp->mac_version >= RTL_GIGA_MAC_VER_46)
 		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
 	else
 		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
index 2b4bc2d6f..8653f678a 100644
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
@@ -793,71 +793,6 @@ static void rtl8168g_2_hw_phy_config(struct rtl8169_private *tp,
 	rtl8168g_config_eee_phy(phydev);
 }
 
-static void rtl8168h_1_hw_phy_config(struct rtl8169_private *tp,
-				     struct phy_device *phydev)
-{
-	u16 dout_tapbin;
-	u32 data;
-
-	r8169_apply_firmware(tp);
-
-	/* CHN EST parameters adjust - giga master */
-	r8168g_phy_param(phydev, 0x809b, 0xf800, 0x8000);
-	r8168g_phy_param(phydev, 0x80a2, 0xff00, 0x8000);
-	r8168g_phy_param(phydev, 0x80a4, 0xff00, 0x8500);
-	r8168g_phy_param(phydev, 0x809c, 0xff00, 0xbd00);
-
-	/* CHN EST parameters adjust - giga slave */
-	r8168g_phy_param(phydev, 0x80ad, 0xf800, 0x7000);
-	r8168g_phy_param(phydev, 0x80b4, 0xff00, 0x5000);
-	r8168g_phy_param(phydev, 0x80ac, 0xff00, 0x4000);
-
-	/* CHN EST parameters adjust - fnet */
-	r8168g_phy_param(phydev, 0x808e, 0xff00, 0x1200);
-	r8168g_phy_param(phydev, 0x8090, 0xff00, 0xe500);
-	r8168g_phy_param(phydev, 0x8092, 0xff00, 0x9f00);
-
-	/* enable R-tune & PGA-retune function */
-	dout_tapbin = 0;
-	data = phy_read_paged(phydev, 0x0a46, 0x13);
-	data &= 3;
-	data <<= 2;
-	dout_tapbin |= data;
-	data = phy_read_paged(phydev, 0x0a46, 0x12);
-	data &= 0xc000;
-	data >>= 14;
-	dout_tapbin |= data;
-	dout_tapbin = ~(dout_tapbin ^ 0x08);
-	dout_tapbin <<= 12;
-	dout_tapbin &= 0xf000;
-
-	r8168g_phy_param(phydev, 0x827a, 0xf000, dout_tapbin);
-	r8168g_phy_param(phydev, 0x827b, 0xf000, dout_tapbin);
-	r8168g_phy_param(phydev, 0x827c, 0xf000, dout_tapbin);
-	r8168g_phy_param(phydev, 0x827d, 0xf000, dout_tapbin);
-	r8168g_phy_param(phydev, 0x0811, 0x0000, 0x0800);
-	phy_modify_paged(phydev, 0x0a42, 0x16, 0x0000, 0x0002);
-
-	rtl8168g_enable_gphy_10m(phydev);
-
-	/* SAR ADC performance */
-	phy_modify_paged(phydev, 0x0bca, 0x17, BIT(12) | BIT(13), BIT(14));
-
-	r8168g_phy_param(phydev, 0x803f, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x8047, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x804f, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x8057, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x805f, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x8067, 0x3000, 0x0000);
-	r8168g_phy_param(phydev, 0x806f, 0x3000, 0x0000);
-
-	/* disable phy pfm mode */
-	phy_modify_paged(phydev, 0x0a44, 0x11, BIT(7), 0);
-
-	rtl8168g_disable_aldps(phydev);
-	rtl8168h_config_eee_phy(phydev);
-}
-
 static void rtl8168h_2_hw_phy_config(struct rtl8169_private *tp,
 				     struct phy_device *phydev)
 {
@@ -1269,9 +1204,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
 		[RTL_GIGA_MAC_VER_42] = rtl8168g_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_43] = rtl8168g_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_44] = rtl8168g_2_hw_phy_config,
-		[RTL_GIGA_MAC_VER_45] = rtl8168h_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_46] = rtl8168h_2_hw_phy_config,
-		[RTL_GIGA_MAC_VER_47] = rtl8168h_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_48] = rtl8168h_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_49] = rtl8168ep_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_50] = rtl8168ep_2_hw_phy_config,
-- 
2.37.2



^ permalink raw reply related	[relevance 4%]

* RE: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
  2022-01-26 19:58  0%         ` Heiner Kallweit
@ 2022-01-27  9:44  0%           ` Hau
  0 siblings, 0 replies; 107+ results
From: Hau @ 2022-01-27  9:44 UTC (permalink / raw)
  To: Heiner Kallweit, netdev; +Cc: nic_swsd, linux-kernel



> -----Original Message-----
> From: Heiner Kallweit [mailto:hkallweit1@gmail.com]
> Sent: Thursday, January 27, 2022 3:58 AM
> To: Hau <hau@realtek.com>; netdev@vger.kernel.org
> Cc: nic_swsd <nic_swsd@realtek.com>; linux-kernel@vger.kernel.org
> Subject: Re: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
> 
> On 26.01.2022 16:03, Hau wrote:
> >
> >
> >> -----Original Message-----
> >> From: Heiner Kallweit [mailto:hkallweit1@gmail.com]
> >> Sent: Wednesday, January 26, 2022 9:47 PM
> >> To: Hau <hau@realtek.com>; netdev@vger.kernel.org
> >> Cc: nic_swsd <nic_swsd@realtek.com>; linux-kernel@vger.kernel.org
> >> Subject: Re: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
> >>
> >> On 26.01.2022 14:00, Hau wrote:
> >>>> On 24.01.2022 19:19, Chunhao Lin wrote:
> >>>>> This patch will enable RTL8125 ASPM L1.2 on the platforms that
> >>>>> have tested RTL8125 with ASPM L1.2 enabled.
> >>>>> Register mac ocp 0xc0b2 will help to identify if RTL8125 has been
> >>>>> tested on L1.2 enabled platform. If it is, this register will be set to 0xf.
> >>>>> If not, this register will be default value 0.
> >>>>>
> >>>>> Signed-off-by: Chunhao Lin <hau@realtek.com>
> >>>>> ---
> >>>>>  drivers/net/ethernet/realtek/r8169_main.c | 99
> >>>>> ++++++++++++++++++-----
> >>>>>  1 file changed, 79 insertions(+), 20 deletions(-)
> >>>>>
> >>>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> b/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> index 19e2621e0645..b1e013969d4c 100644
> >>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> @@ -2238,21 +2238,6 @@ static void rtl_wol_enable_rx(struct
> >>>> rtl8169_private *tp)
> >>>>>  			AcceptBroadcast | AcceptMulticast |
> >>>> AcceptMyPhys);  }
> >>>>>
> >>>>> -static void rtl_prepare_power_down(struct rtl8169_private *tp) -{
> >>>>> -	if (tp->dash_type != RTL_DASH_NONE)
> >>>>> -		return;
> >>>>> -
> >>>>> -	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
> >>>>> -	    tp->mac_version == RTL_GIGA_MAC_VER_33)
> >>>>> -		rtl_ephy_write(tp, 0x19, 0xff64);
> >>>>> -
> >>>>> -	if (device_may_wakeup(tp_to_dev(tp))) {
> >>>>> -		phy_speed_down(tp->phydev, false);
> >>>>> -		rtl_wol_enable_rx(tp);
> >>>>> -	}
> >>>>> -}
> >>>>> -
> >>>>>  static void rtl_init_rxcfg(struct rtl8169_private *tp)  {
> >>>>>  	switch (tp->mac_version) {
> >>>>> @@ -2650,6 +2635,34 @@ static void
> >>>>> rtl_pcie_state_l2l3_disable(struct
> >>>> rtl8169_private *tp)
> >>>>>  	RTL_W8(tp, Config3, RTL_R8(tp, Config3) & ~Rdy_to_L23);  }
> >>>>>
> >>>>> +static void rtl_disable_exit_l1(struct rtl8169_private *tp) {
> >>>>> +	/* Bits control which events trigger ASPM L1 exit:
> >>>>> +	 * Bit 12: rxdv
> >>>>> +	 * Bit 11: ltr_msg
> >>>>> +	 * Bit 10: txdma_poll
> >>>>> +	 * Bit  9: xadm
> >>>>> +	 * Bit  8: pktavi
> >>>>> +	 * Bit  7: txpla
> >>>>> +	 */
> >>>>> +	switch (tp->mac_version) {
> >>>>> +	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_36:
> >>>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
> >>>>> +		break;
> >>>>> +	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
> >>>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x0c00);
> >>>>> +		break;
> >>>>> +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
> >>>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f80);
> >>>>> +		break;
> >>>>> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
> >>>>> +		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
> >>>>> +		break;
> >>>>> +	default:
> >>>>> +		break;
> >>>>> +	}
> >>>>> +}
> >>>>> +
> >>>>>  static void rtl_enable_exit_l1(struct rtl8169_private *tp)  {
> >>>>>  	/* Bits control which events trigger ASPM L1 exit:
> >>>>> @@ -2692,6 +2705,33 @@ static void
> >>>>> rtl_hw_aspm_clkreq_enable(struct
> >>>> rtl8169_private *tp, bool enable)
> >>>>>  	udelay(10);
> >>>>>  }
> >>>>>
> >>>>> +static void rtl_hw_aspm_l12_enable(struct rtl8169_private *tp,
> >>>>> +bool
> >>>>> +enable) {
> >>>>> +	/* Don't enable L1.2 in the chip if OS can't control ASPM */
> >>>>> +	if (enable && tp->aspm_manageable) {
> >>>>> +		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
> >>>>> +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
> >>>>> +	} else {
> >>>>> +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
> >>>>> +	}
> >>>>> +}
> >>>>> +
> >>>>> +static void rtl_prepare_power_down(struct rtl8169_private *tp) {
> >>>>> +	if (tp->dash_type != RTL_DASH_NONE)
> >>>>> +		return;
> >>>>> +
> >>>>> +	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
> >>>>> +	    tp->mac_version == RTL_GIGA_MAC_VER_33)
> >>>>> +		rtl_ephy_write(tp, 0x19, 0xff64);
> >>>>> +
> >>>>> +	if (device_may_wakeup(tp_to_dev(tp))) {
> >>>>> +		rtl_disable_exit_l1(tp);
> >>>>> +		phy_speed_down(tp->phydev, false);
> >>>>> +		rtl_wol_enable_rx(tp);
> >>>>> +	}
> >>>>> +}
> >>>>> +
> >>>>>  static void rtl_set_fifo_size(struct rtl8169_private *tp, u16 rx_stat,
> >>>>>  			      u16 tx_stat, u16 rx_dyn, u16 tx_dyn)  { @@ -
> >>>> 3675,6 +3715,7
> >>>>> @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
> >>>>>  	rtl_ephy_init(tp, e_info_8125b);
> >>>>>  	rtl_hw_start_8125_common(tp);
> >>>>>
> >>>>> +	rtl_hw_aspm_l12_enable(tp, true);
> >>>>>  	rtl_hw_aspm_clkreq_enable(tp, true);  }
> >>>>>
> >>>>> @@ -5255,6 +5296,20 @@ static void rtl_init_mac_address(struct
> >>>> rtl8169_private *tp)
> >>>>>  	rtl_rar_set(tp, mac_addr);
> >>>>>  }
> >>>>>
> >>>>> +/* mac ocp 0xc0b2 will help to identify if RTL8125 has been
> >>>>> +tested
> >>>>> + * on L1.2 enabled platform. If it is, this register will be set to 0xf.
> >>>>> + * If not, this register will be default value 0.
> >>>>> + */
> >>>>> +static bool rtl_platform_l12_enabled(struct rtl8169_private *tp) {
> >>>>> +	switch (tp->mac_version) {
> >>>>> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
> >>>>> +		return (r8168_mac_ocp_read(tp, 0xc0b2) & 0xf) ?
> true : false;
> >>>>> +	default:
> >>>>> +		return false;
> >>>>> +	}
> >>>>> +}
> >>>>> +
> >>>>>  static int rtl_init_one(struct pci_dev *pdev, const struct
> >>>>> pci_device_id *ent)  {
> >>>>>  	struct rtl8169_private *tp;
> >>>>> @@ -5333,11 +5388,15 @@ static int rtl_init_one(struct pci_dev
> >>>>> *pdev,
> >>>> const struct pci_device_id *ent)
> >>>>>  	 * Chips from RTL8168h partially have issues with L1.2, but seem
> >>>>>  	 * to work fine with L1 and L1.1.
> >>>>>  	 */
> >>>>> -	if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
> >>>>> -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
> >>>>> -	else
> >>>>> -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
> >>>>> -	tp->aspm_manageable = !rc;
> >>>>> +	if (!rtl_platform_l12_enabled(tp)) {
> >>>>> +		if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
> >>>>> +			rc = pci_disable_link_state(pdev,
> >>>> PCIE_LINK_STATE_L1_2);
> >>>>> +		else
> >>>>> +			rc = pci_disable_link_state(pdev,
> >>>> PCIE_LINK_STATE_L1);
> >>>>> +		tp->aspm_manageable = !rc;
> >>>>> +	} else {
> >>>>> +		tp->aspm_manageable = pcie_aspm_enabled(pdev);
> >>>>> +	}
> >>>>>
> >>>>>  	tp->dash_type = rtl_check_dash(tp);
> >>>>>
> >>>>
> >>>> Hi Hau,
> >>>>
> >>>> the following is a stripped-down version of the patch. Could you
> >>>> please check/test?
> >>> This patch is ok.
> >>> L1 substate lock can apply for both rtl8125a.rtl8125b.
> >>> if (enable && tp->aspm_manageable) {
> >>> 	RTL_W8(tp, Config5, RTL_R8(tp, Config5) | ASPM_en);
> >>> 	RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);
> >>>
> >>> 	if (tp->mac_version >= RTL_GIGA_MAC_VER_60) {
> >>> 		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
> >>> 		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
> >>> 	}
> >>> } else {
> >>> 	if (tp->mac_version >= RTL_GIGA_MAC_VER_60)
> >>> 		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
> >>>
> >>> 	RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~ClkReqEn);
> >>> 	RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~ASPM_en); }
> >>>
> >>>> If function rtl_disable_exit_l1() is actually needed, I'd prefer to
> >>>> add it in a separate patch (to facilitate bisecting).
> >>>>
> >>> If exit l1 mask is enabled, hardware will prone to exit l1. That
> >>> will prevent hardware from entering l1 substate. So It needs to
> >>> disable l1 exist mask when device go to d3 state for entering l1 substate..
> >>>
> >> My understanding of PCI power management may be incomplete, but:
> >> If a device goes to D3, then doesn't the bus go to L2/L3?
> >> L1 exit criteria would be irrelevant then.
> > Your understanding is correct.
> > D3 is divided to two substate, D3hot and D3cold. D3cold will enter L2/L3.
> > D3hot may enter L1 or L2/L3 ready.  In D3hot case, enable exit l1 mask
> > will prevent hardware from entering PM L1. That is our hardware issue.
> > So we disable exit l1 mask before hardware enter D3.
> >
> >
> I submitted the patch to enable L1.2 if tested with your Suggested-by.
> One last question before submitting the disable_exit_l1 patch.
> 
> Depending on the chip version only certain L1 exit bits are set.
> 
> +	switch (tp->mac_version) {
> +	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_36:
> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
> +		break;
> +	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
> +		rtl_eri_clear_bits(tp, 0xd4, 0x0c00);
> +		break;
> +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f80);
> +		break;
> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
> +		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
> +		break;
> 
> Would it be safe to shorten this to the following? Or is some bit in this range
> used for another purpose on certain chip versions?

Bit7 has different purpose for chip ver 34 to chip ver 38.
But for chip after rtl8168g, eri 0xd4 is mapped to mac ocp 0xc0ac.
The code can be shorten as following.
switch (tp->mac_version) {
case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38:
			 rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
			 break;
case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
			 r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
			 break;

> +	switch (tp->mac_version) {
> +	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38:
> +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f80);
> +		break;
> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
> +		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
> +		break;
> ------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 0%]

* Re: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
  2022-01-26 15:03  0%       ` Hau
  2022-01-26 16:54  0%         ` Heiner Kallweit
@ 2022-01-26 19:58  0%         ` Heiner Kallweit
  2022-01-27  9:44  0%           ` Hau
  1 sibling, 1 reply; 107+ results
From: Heiner Kallweit @ 2022-01-26 19:58 UTC (permalink / raw)
  To: Hau, netdev; +Cc: nic_swsd, linux-kernel

On 26.01.2022 16:03, Hau wrote:
> 
> 
>> -----Original Message-----
>> From: Heiner Kallweit [mailto:hkallweit1@gmail.com]
>> Sent: Wednesday, January 26, 2022 9:47 PM
>> To: Hau <hau@realtek.com>; netdev@vger.kernel.org
>> Cc: nic_swsd <nic_swsd@realtek.com>; linux-kernel@vger.kernel.org
>> Subject: Re: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
>>
>> On 26.01.2022 14:00, Hau wrote:
>>>> On 24.01.2022 19:19, Chunhao Lin wrote:
>>>>> This patch will enable RTL8125 ASPM L1.2 on the platforms that have
>>>>> tested RTL8125 with ASPM L1.2 enabled.
>>>>> Register mac ocp 0xc0b2 will help to identify if RTL8125 has been
>>>>> tested on L1.2 enabled platform. If it is, this register will be set to 0xf.
>>>>> If not, this register will be default value 0.
>>>>>
>>>>> Signed-off-by: Chunhao Lin <hau@realtek.com>
>>>>> ---
>>>>>  drivers/net/ethernet/realtek/r8169_main.c | 99
>>>>> ++++++++++++++++++-----
>>>>>  1 file changed, 79 insertions(+), 20 deletions(-)
>>>>>
>>>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
>>>>> b/drivers/net/ethernet/realtek/r8169_main.c
>>>>> index 19e2621e0645..b1e013969d4c 100644
>>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>>>> @@ -2238,21 +2238,6 @@ static void rtl_wol_enable_rx(struct
>>>> rtl8169_private *tp)
>>>>>  			AcceptBroadcast | AcceptMulticast |
>>>> AcceptMyPhys);  }
>>>>>
>>>>> -static void rtl_prepare_power_down(struct rtl8169_private *tp) -{
>>>>> -	if (tp->dash_type != RTL_DASH_NONE)
>>>>> -		return;
>>>>> -
>>>>> -	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
>>>>> -	    tp->mac_version == RTL_GIGA_MAC_VER_33)
>>>>> -		rtl_ephy_write(tp, 0x19, 0xff64);
>>>>> -
>>>>> -	if (device_may_wakeup(tp_to_dev(tp))) {
>>>>> -		phy_speed_down(tp->phydev, false);
>>>>> -		rtl_wol_enable_rx(tp);
>>>>> -	}
>>>>> -}
>>>>> -
>>>>>  static void rtl_init_rxcfg(struct rtl8169_private *tp)  {
>>>>>  	switch (tp->mac_version) {
>>>>> @@ -2650,6 +2635,34 @@ static void
>>>>> rtl_pcie_state_l2l3_disable(struct
>>>> rtl8169_private *tp)
>>>>>  	RTL_W8(tp, Config3, RTL_R8(tp, Config3) & ~Rdy_to_L23);  }
>>>>>
>>>>> +static void rtl_disable_exit_l1(struct rtl8169_private *tp) {
>>>>> +	/* Bits control which events trigger ASPM L1 exit:
>>>>> +	 * Bit 12: rxdv
>>>>> +	 * Bit 11: ltr_msg
>>>>> +	 * Bit 10: txdma_poll
>>>>> +	 * Bit  9: xadm
>>>>> +	 * Bit  8: pktavi
>>>>> +	 * Bit  7: txpla
>>>>> +	 */
>>>>> +	switch (tp->mac_version) {
>>>>> +	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_36:
>>>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
>>>>> +		break;
>>>>> +	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
>>>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x0c00);
>>>>> +		break;
>>>>> +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
>>>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f80);
>>>>> +		break;
>>>>> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
>>>>> +		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
>>>>> +		break;
>>>>> +	default:
>>>>> +		break;
>>>>> +	}
>>>>> +}
>>>>> +
>>>>>  static void rtl_enable_exit_l1(struct rtl8169_private *tp)  {
>>>>>  	/* Bits control which events trigger ASPM L1 exit:
>>>>> @@ -2692,6 +2705,33 @@ static void rtl_hw_aspm_clkreq_enable(struct
>>>> rtl8169_private *tp, bool enable)
>>>>>  	udelay(10);
>>>>>  }
>>>>>
>>>>> +static void rtl_hw_aspm_l12_enable(struct rtl8169_private *tp, bool
>>>>> +enable) {
>>>>> +	/* Don't enable L1.2 in the chip if OS can't control ASPM */
>>>>> +	if (enable && tp->aspm_manageable) {
>>>>> +		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
>>>>> +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
>>>>> +	} else {
>>>>> +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
>>>>> +	}
>>>>> +}
>>>>> +
>>>>> +static void rtl_prepare_power_down(struct rtl8169_private *tp) {
>>>>> +	if (tp->dash_type != RTL_DASH_NONE)
>>>>> +		return;
>>>>> +
>>>>> +	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
>>>>> +	    tp->mac_version == RTL_GIGA_MAC_VER_33)
>>>>> +		rtl_ephy_write(tp, 0x19, 0xff64);
>>>>> +
>>>>> +	if (device_may_wakeup(tp_to_dev(tp))) {
>>>>> +		rtl_disable_exit_l1(tp);
>>>>> +		phy_speed_down(tp->phydev, false);
>>>>> +		rtl_wol_enable_rx(tp);
>>>>> +	}
>>>>> +}
>>>>> +
>>>>>  static void rtl_set_fifo_size(struct rtl8169_private *tp, u16 rx_stat,
>>>>>  			      u16 tx_stat, u16 rx_dyn, u16 tx_dyn)  { @@ -
>>>> 3675,6 +3715,7
>>>>> @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>>>>>  	rtl_ephy_init(tp, e_info_8125b);
>>>>>  	rtl_hw_start_8125_common(tp);
>>>>>
>>>>> +	rtl_hw_aspm_l12_enable(tp, true);
>>>>>  	rtl_hw_aspm_clkreq_enable(tp, true);  }
>>>>>
>>>>> @@ -5255,6 +5296,20 @@ static void rtl_init_mac_address(struct
>>>> rtl8169_private *tp)
>>>>>  	rtl_rar_set(tp, mac_addr);
>>>>>  }
>>>>>
>>>>> +/* mac ocp 0xc0b2 will help to identify if RTL8125 has been tested
>>>>> + * on L1.2 enabled platform. If it is, this register will be set to 0xf.
>>>>> + * If not, this register will be default value 0.
>>>>> + */
>>>>> +static bool rtl_platform_l12_enabled(struct rtl8169_private *tp) {
>>>>> +	switch (tp->mac_version) {
>>>>> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
>>>>> +		return (r8168_mac_ocp_read(tp, 0xc0b2) & 0xf) ? true : false;
>>>>> +	default:
>>>>> +		return false;
>>>>> +	}
>>>>> +}
>>>>> +
>>>>>  static int rtl_init_one(struct pci_dev *pdev, const struct
>>>>> pci_device_id *ent)  {
>>>>>  	struct rtl8169_private *tp;
>>>>> @@ -5333,11 +5388,15 @@ static int rtl_init_one(struct pci_dev
>>>>> *pdev,
>>>> const struct pci_device_id *ent)
>>>>>  	 * Chips from RTL8168h partially have issues with L1.2, but seem
>>>>>  	 * to work fine with L1 and L1.1.
>>>>>  	 */
>>>>> -	if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
>>>>> -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
>>>>> -	else
>>>>> -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
>>>>> -	tp->aspm_manageable = !rc;
>>>>> +	if (!rtl_platform_l12_enabled(tp)) {
>>>>> +		if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
>>>>> +			rc = pci_disable_link_state(pdev,
>>>> PCIE_LINK_STATE_L1_2);
>>>>> +		else
>>>>> +			rc = pci_disable_link_state(pdev,
>>>> PCIE_LINK_STATE_L1);
>>>>> +		tp->aspm_manageable = !rc;
>>>>> +	} else {
>>>>> +		tp->aspm_manageable = pcie_aspm_enabled(pdev);
>>>>> +	}
>>>>>
>>>>>  	tp->dash_type = rtl_check_dash(tp);
>>>>>
>>>>
>>>> Hi Hau,
>>>>
>>>> the following is a stripped-down version of the patch. Could you
>>>> please check/test?
>>> This patch is ok.
>>> L1 substate lock can apply for both rtl8125a.rtl8125b.
>>> if (enable && tp->aspm_manageable) {
>>> 	RTL_W8(tp, Config5, RTL_R8(tp, Config5) | ASPM_en);
>>> 	RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);
>>>
>>> 	if (tp->mac_version >= RTL_GIGA_MAC_VER_60) {
>>> 		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
>>> 		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
>>> 	}
>>> } else {
>>> 	if (tp->mac_version >= RTL_GIGA_MAC_VER_60)
>>> 		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
>>>
>>> 	RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~ClkReqEn);
>>> 	RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~ASPM_en); }
>>>
>>>> If function rtl_disable_exit_l1() is actually needed, I'd prefer to
>>>> add it in a separate patch (to facilitate bisecting).
>>>>
>>> If exit l1 mask is enabled, hardware will prone to exit l1. That will
>>> prevent hardware from entering l1 substate. So It needs to disable l1
>>> exist mask when device go to d3 state for entering l1 substate..
>>>
>> My understanding of PCI power management may be incomplete, but:
>> If a device goes to D3, then doesn't the bus go to L2/L3?
>> L1 exit criteria would be irrelevant then.
> Your understanding is correct.
> D3 is divided to two substate, D3hot and D3cold. D3cold will enter L2/L3.
> D3hot may enter L1 or L2/L3 ready.  In D3hot case, enable exit l1 mask will
> prevent hardware from entering PM L1. That is our hardware issue.
> So we disable exit l1 mask before hardware enter D3.
> 
> 
I submitted the patch to enable L1.2 if tested with your Suggested-by.
One last question before submitting the disable_exit_l1 patch.

Depending on the chip version only certain L1 exit bits are set.

+	switch (tp->mac_version) {
+	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_36:
+		rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
+		break;
+	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
+		rtl_eri_clear_bits(tp, 0xd4, 0x0c00);
+		break;
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
+		rtl_eri_clear_bits(tp, 0xd4, 0x1f80);
+		break;
+	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
+		break;

Would it be safe to shorten this to the following? Or is some bit
in this range used for another purpose on certain chip versions?

+	switch (tp->mac_version) {
+	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
+		rtl_eri_clear_bits(tp, 0xd4, 0x1f80);
+		break;
+	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
+		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
+		break;

^ permalink raw reply	[relevance 0%]

* RE: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
  2022-01-26 16:54  0%         ` Heiner Kallweit
@ 2022-01-26 18:30  0%           ` Hau
  0 siblings, 0 replies; 107+ results
From: Hau @ 2022-01-26 18:30 UTC (permalink / raw)
  To: Heiner Kallweit, netdev; +Cc: nic_swsd, linux-kernel

> 
> On 26.01.2022 16:03, Hau wrote:
> >
> >
> >> -----Original Message-----
> >> From: Heiner Kallweit [mailto:hkallweit1@gmail.com]
> >> Sent: Wednesday, January 26, 2022 9:47 PM
> >> To: Hau <hau@realtek.com>; netdev@vger.kernel.org
> >> Cc: nic_swsd <nic_swsd@realtek.com>; linux-kernel@vger.kernel.org
> >> Subject: Re: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
> >>
> >> On 26.01.2022 14:00, Hau wrote:
> >>>> On 24.01.2022 19:19, Chunhao Lin wrote:
> >>>>> This patch will enable RTL8125 ASPM L1.2 on the platforms that
> >>>>> have tested RTL8125 with ASPM L1.2 enabled.
> >>>>> Register mac ocp 0xc0b2 will help to identify if RTL8125 has been
> >>>>> tested on L1.2 enabled platform. If it is, this register will be set to 0xf.
> >>>>> If not, this register will be default value 0.
> >>>>>
> >>>>> Signed-off-by: Chunhao Lin <hau@realtek.com>
> >>>>> ---
> >>>>>  drivers/net/ethernet/realtek/r8169_main.c | 99
> >>>>> ++++++++++++++++++-----
> >>>>>  1 file changed, 79 insertions(+), 20 deletions(-)
> >>>>>
> >>>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> b/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> index 19e2621e0645..b1e013969d4c 100644
> >>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> @@ -2238,21 +2238,6 @@ static void rtl_wol_enable_rx(struct
> >>>> rtl8169_private *tp)
> >>>>>  			AcceptBroadcast | AcceptMulticast |
> >>>> AcceptMyPhys);  }
> >>>>>
> >>>>> -static void rtl_prepare_power_down(struct rtl8169_private *tp) -{
> >>>>> -	if (tp->dash_type != RTL_DASH_NONE)
> >>>>> -		return;
> >>>>> -
> >>>>> -	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
> >>>>> -	    tp->mac_version == RTL_GIGA_MAC_VER_33)
> >>>>> -		rtl_ephy_write(tp, 0x19, 0xff64);
> >>>>> -
> >>>>> -	if (device_may_wakeup(tp_to_dev(tp))) {
> >>>>> -		phy_speed_down(tp->phydev, false);
> >>>>> -		rtl_wol_enable_rx(tp);
> >>>>> -	}
> >>>>> -}
> >>>>> -
> >>>>>  static void rtl_init_rxcfg(struct rtl8169_private *tp)  {
> >>>>>  	switch (tp->mac_version) {
> >>>>> @@ -2650,6 +2635,34 @@ static void
> >>>>> rtl_pcie_state_l2l3_disable(struct
> >>>> rtl8169_private *tp)
> >>>>>  	RTL_W8(tp, Config3, RTL_R8(tp, Config3) & ~Rdy_to_L23);  }
> >>>>>
> >>>>> +static void rtl_disable_exit_l1(struct rtl8169_private *tp) {
> >>>>> +	/* Bits control which events trigger ASPM L1 exit:
> >>>>> +	 * Bit 12: rxdv
> >>>>> +	 * Bit 11: ltr_msg
> >>>>> +	 * Bit 10: txdma_poll
> >>>>> +	 * Bit  9: xadm
> >>>>> +	 * Bit  8: pktavi
> >>>>> +	 * Bit  7: txpla
> >>>>> +	 */
> >>>>> +	switch (tp->mac_version) {
> >>>>> +	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_36:
> >>>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
> >>>>> +		break;
> >>>>> +	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
> >>>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x0c00);
> >>>>> +		break;
> >>>>> +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
> >>>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f80);
> >>>>> +		break;
> >>>>> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
> >>>>> +		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
> >>>>> +		break;
> >>>>> +	default:
> >>>>> +		break;
> >>>>> +	}
> >>>>> +}
> >>>>> +
> >>>>>  static void rtl_enable_exit_l1(struct rtl8169_private *tp)  {
> >>>>>  	/* Bits control which events trigger ASPM L1 exit:
> >>>>> @@ -2692,6 +2705,33 @@ static void
> >>>>> rtl_hw_aspm_clkreq_enable(struct
> >>>> rtl8169_private *tp, bool enable)
> >>>>>  	udelay(10);
> >>>>>  }
> >>>>>
> >>>>> +static void rtl_hw_aspm_l12_enable(struct rtl8169_private *tp,
> >>>>> +bool
> >>>>> +enable) {
> >>>>> +	/* Don't enable L1.2 in the chip if OS can't control ASPM */
> >>>>> +	if (enable && tp->aspm_manageable) {
> >>>>> +		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
> >>>>> +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
> >>>>> +	} else {
> >>>>> +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
> >>>>> +	}
> >>>>> +}
> >>>>> +
> >>>>> +static void rtl_prepare_power_down(struct rtl8169_private *tp) {
> >>>>> +	if (tp->dash_type != RTL_DASH_NONE)
> >>>>> +		return;
> >>>>> +
> >>>>> +	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
> >>>>> +	    tp->mac_version == RTL_GIGA_MAC_VER_33)
> >>>>> +		rtl_ephy_write(tp, 0x19, 0xff64);
> >>>>> +
> >>>>> +	if (device_may_wakeup(tp_to_dev(tp))) {
> >>>>> +		rtl_disable_exit_l1(tp);
> >>>>> +		phy_speed_down(tp->phydev, false);
> >>>>> +		rtl_wol_enable_rx(tp);
> >>>>> +	}
> >>>>> +}
> >>>>> +
> >>>>>  static void rtl_set_fifo_size(struct rtl8169_private *tp, u16 rx_stat,
> >>>>>  			      u16 tx_stat, u16 rx_dyn, u16 tx_dyn)  { @@ -
> >>>> 3675,6 +3715,7
> >>>>> @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
> >>>>>  	rtl_ephy_init(tp, e_info_8125b);
> >>>>>  	rtl_hw_start_8125_common(tp);
> >>>>>
> >>>>> +	rtl_hw_aspm_l12_enable(tp, true);
> >>>>>  	rtl_hw_aspm_clkreq_enable(tp, true);  }
> >>>>>
> >>>>> @@ -5255,6 +5296,20 @@ static void rtl_init_mac_address(struct
> >>>> rtl8169_private *tp)
> >>>>>  	rtl_rar_set(tp, mac_addr);
> >>>>>  }
> >>>>>
> >>>>> +/* mac ocp 0xc0b2 will help to identify if RTL8125 has been
> >>>>> +tested
> >>>>> + * on L1.2 enabled platform. If it is, this register will be set to 0xf.
> >>>>> + * If not, this register will be default value 0.
> >>>>> + */
> >>>>> +static bool rtl_platform_l12_enabled(struct rtl8169_private *tp) {
> >>>>> +	switch (tp->mac_version) {
> >>>>> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
> >>>>> +		return (r8168_mac_ocp_read(tp, 0xc0b2) & 0xf) ?
> true : false;
> >>>>> +	default:
> >>>>> +		return false;
> >>>>> +	}
> >>>>> +}
> >>>>> +
> >>>>>  static int rtl_init_one(struct pci_dev *pdev, const struct
> >>>>> pci_device_id *ent)  {
> >>>>>  	struct rtl8169_private *tp;
> >>>>> @@ -5333,11 +5388,15 @@ static int rtl_init_one(struct pci_dev
> >>>>> *pdev,
> >>>> const struct pci_device_id *ent)
> >>>>>  	 * Chips from RTL8168h partially have issues with L1.2, but seem
> >>>>>  	 * to work fine with L1 and L1.1.
> >>>>>  	 */
> >>>>> -	if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
> >>>>> -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
> >>>>> -	else
> >>>>> -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
> >>>>> -	tp->aspm_manageable = !rc;
> >>>>> +	if (!rtl_platform_l12_enabled(tp)) {
> >>>>> +		if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
> >>>>> +			rc = pci_disable_link_state(pdev,
> >>>> PCIE_LINK_STATE_L1_2);
> >>>>> +		else
> >>>>> +			rc = pci_disable_link_state(pdev,
> >>>> PCIE_LINK_STATE_L1);
> >>>>> +		tp->aspm_manageable = !rc;
> >>>>> +	} else {
> >>>>> +		tp->aspm_manageable = pcie_aspm_enabled(pdev);
> >>>>> +	}
> >>>>>
> >>>>>  	tp->dash_type = rtl_check_dash(tp);
> >>>>>
> >>>>
> >>>> Hi Hau,
> >>>>
> >>>> the following is a stripped-down version of the patch. Could you
> >>>> please check/test?
> >>> This patch is ok.
> >>> L1 substate lock can apply for both rtl8125a.rtl8125b.
> >>> if (enable && tp->aspm_manageable) {
> >>> 	RTL_W8(tp, Config5, RTL_R8(tp, Config5) | ASPM_en);
> >>> 	RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);
> >>>
> >>> 	if (tp->mac_version >= RTL_GIGA_MAC_VER_60) {
> >>> 		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
> >>> 		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
> >>> 	}
> >>> } else {
> >>> 	if (tp->mac_version >= RTL_GIGA_MAC_VER_60)
> >>> 		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
> >>>
> >>> 	RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~ClkReqEn);
> >>> 	RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~ASPM_en); }
> >>>
> >>>> If function rtl_disable_exit_l1() is actually needed, I'd prefer to
> >>>> add it in a separate patch (to facilitate bisecting).
> >>>>
> >>> If exit l1 mask is enabled, hardware will prone to exit l1. That
> >>> will prevent hardware from entering l1 substate. So It needs to
> >>> disable l1 exist mask when device go to d3 state for entering l1 substate..
> >>>
> >> My understanding of PCI power management may be incomplete, but:
> >> If a device goes to D3, then doesn't the bus go to L2/L3?
> >> L1 exit criteria would be irrelevant then.
> > Your understanding is correct.
> > D3 is divided to two substate, D3hot and D3cold. D3cold will enter L2/L3.
> > D3hot may enter L1 or L2/L3 ready.  In D3hot case, enable exit l1 mask
> > will prevent hardware from entering PM L1. That is our hardware issue.
> > So we disable exit l1 mask before hardware enter D3.
> >
> 
> Thanks! One, hopefully last, question:
> Are you aware of any boards/systems setting this "L1.2 was tested and is
> safe" flag?
> Then this could be mentioned in the commit description.
Google chromebox will be the first one to use this flag.

> ------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 0%]

* Re: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
  2022-01-26 15:03  0%       ` Hau
@ 2022-01-26 16:54  0%         ` Heiner Kallweit
  2022-01-26 18:30  0%           ` Hau
  2022-01-26 19:58  0%         ` Heiner Kallweit
  1 sibling, 1 reply; 107+ results
From: Heiner Kallweit @ 2022-01-26 16:54 UTC (permalink / raw)
  To: Hau, netdev; +Cc: nic_swsd, linux-kernel

On 26.01.2022 16:03, Hau wrote:
> 
> 
>> -----Original Message-----
>> From: Heiner Kallweit [mailto:hkallweit1@gmail.com]
>> Sent: Wednesday, January 26, 2022 9:47 PM
>> To: Hau <hau@realtek.com>; netdev@vger.kernel.org
>> Cc: nic_swsd <nic_swsd@realtek.com>; linux-kernel@vger.kernel.org
>> Subject: Re: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
>>
>> On 26.01.2022 14:00, Hau wrote:
>>>> On 24.01.2022 19:19, Chunhao Lin wrote:
>>>>> This patch will enable RTL8125 ASPM L1.2 on the platforms that have
>>>>> tested RTL8125 with ASPM L1.2 enabled.
>>>>> Register mac ocp 0xc0b2 will help to identify if RTL8125 has been
>>>>> tested on L1.2 enabled platform. If it is, this register will be set to 0xf.
>>>>> If not, this register will be default value 0.
>>>>>
>>>>> Signed-off-by: Chunhao Lin <hau@realtek.com>
>>>>> ---
>>>>>  drivers/net/ethernet/realtek/r8169_main.c | 99
>>>>> ++++++++++++++++++-----
>>>>>  1 file changed, 79 insertions(+), 20 deletions(-)
>>>>>
>>>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
>>>>> b/drivers/net/ethernet/realtek/r8169_main.c
>>>>> index 19e2621e0645..b1e013969d4c 100644
>>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>>>> @@ -2238,21 +2238,6 @@ static void rtl_wol_enable_rx(struct
>>>> rtl8169_private *tp)
>>>>>  			AcceptBroadcast | AcceptMulticast |
>>>> AcceptMyPhys);  }
>>>>>
>>>>> -static void rtl_prepare_power_down(struct rtl8169_private *tp) -{
>>>>> -	if (tp->dash_type != RTL_DASH_NONE)
>>>>> -		return;
>>>>> -
>>>>> -	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
>>>>> -	    tp->mac_version == RTL_GIGA_MAC_VER_33)
>>>>> -		rtl_ephy_write(tp, 0x19, 0xff64);
>>>>> -
>>>>> -	if (device_may_wakeup(tp_to_dev(tp))) {
>>>>> -		phy_speed_down(tp->phydev, false);
>>>>> -		rtl_wol_enable_rx(tp);
>>>>> -	}
>>>>> -}
>>>>> -
>>>>>  static void rtl_init_rxcfg(struct rtl8169_private *tp)  {
>>>>>  	switch (tp->mac_version) {
>>>>> @@ -2650,6 +2635,34 @@ static void
>>>>> rtl_pcie_state_l2l3_disable(struct
>>>> rtl8169_private *tp)
>>>>>  	RTL_W8(tp, Config3, RTL_R8(tp, Config3) & ~Rdy_to_L23);  }
>>>>>
>>>>> +static void rtl_disable_exit_l1(struct rtl8169_private *tp) {
>>>>> +	/* Bits control which events trigger ASPM L1 exit:
>>>>> +	 * Bit 12: rxdv
>>>>> +	 * Bit 11: ltr_msg
>>>>> +	 * Bit 10: txdma_poll
>>>>> +	 * Bit  9: xadm
>>>>> +	 * Bit  8: pktavi
>>>>> +	 * Bit  7: txpla
>>>>> +	 */
>>>>> +	switch (tp->mac_version) {
>>>>> +	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_36:
>>>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
>>>>> +		break;
>>>>> +	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
>>>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x0c00);
>>>>> +		break;
>>>>> +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
>>>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f80);
>>>>> +		break;
>>>>> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
>>>>> +		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
>>>>> +		break;
>>>>> +	default:
>>>>> +		break;
>>>>> +	}
>>>>> +}
>>>>> +
>>>>>  static void rtl_enable_exit_l1(struct rtl8169_private *tp)  {
>>>>>  	/* Bits control which events trigger ASPM L1 exit:
>>>>> @@ -2692,6 +2705,33 @@ static void rtl_hw_aspm_clkreq_enable(struct
>>>> rtl8169_private *tp, bool enable)
>>>>>  	udelay(10);
>>>>>  }
>>>>>
>>>>> +static void rtl_hw_aspm_l12_enable(struct rtl8169_private *tp, bool
>>>>> +enable) {
>>>>> +	/* Don't enable L1.2 in the chip if OS can't control ASPM */
>>>>> +	if (enable && tp->aspm_manageable) {
>>>>> +		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
>>>>> +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
>>>>> +	} else {
>>>>> +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
>>>>> +	}
>>>>> +}
>>>>> +
>>>>> +static void rtl_prepare_power_down(struct rtl8169_private *tp) {
>>>>> +	if (tp->dash_type != RTL_DASH_NONE)
>>>>> +		return;
>>>>> +
>>>>> +	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
>>>>> +	    tp->mac_version == RTL_GIGA_MAC_VER_33)
>>>>> +		rtl_ephy_write(tp, 0x19, 0xff64);
>>>>> +
>>>>> +	if (device_may_wakeup(tp_to_dev(tp))) {
>>>>> +		rtl_disable_exit_l1(tp);
>>>>> +		phy_speed_down(tp->phydev, false);
>>>>> +		rtl_wol_enable_rx(tp);
>>>>> +	}
>>>>> +}
>>>>> +
>>>>>  static void rtl_set_fifo_size(struct rtl8169_private *tp, u16 rx_stat,
>>>>>  			      u16 tx_stat, u16 rx_dyn, u16 tx_dyn)  { @@ -
>>>> 3675,6 +3715,7
>>>>> @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>>>>>  	rtl_ephy_init(tp, e_info_8125b);
>>>>>  	rtl_hw_start_8125_common(tp);
>>>>>
>>>>> +	rtl_hw_aspm_l12_enable(tp, true);
>>>>>  	rtl_hw_aspm_clkreq_enable(tp, true);  }
>>>>>
>>>>> @@ -5255,6 +5296,20 @@ static void rtl_init_mac_address(struct
>>>> rtl8169_private *tp)
>>>>>  	rtl_rar_set(tp, mac_addr);
>>>>>  }
>>>>>
>>>>> +/* mac ocp 0xc0b2 will help to identify if RTL8125 has been tested
>>>>> + * on L1.2 enabled platform. If it is, this register will be set to 0xf.
>>>>> + * If not, this register will be default value 0.
>>>>> + */
>>>>> +static bool rtl_platform_l12_enabled(struct rtl8169_private *tp) {
>>>>> +	switch (tp->mac_version) {
>>>>> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
>>>>> +		return (r8168_mac_ocp_read(tp, 0xc0b2) & 0xf) ? true : false;
>>>>> +	default:
>>>>> +		return false;
>>>>> +	}
>>>>> +}
>>>>> +
>>>>>  static int rtl_init_one(struct pci_dev *pdev, const struct
>>>>> pci_device_id *ent)  {
>>>>>  	struct rtl8169_private *tp;
>>>>> @@ -5333,11 +5388,15 @@ static int rtl_init_one(struct pci_dev
>>>>> *pdev,
>>>> const struct pci_device_id *ent)
>>>>>  	 * Chips from RTL8168h partially have issues with L1.2, but seem
>>>>>  	 * to work fine with L1 and L1.1.
>>>>>  	 */
>>>>> -	if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
>>>>> -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
>>>>> -	else
>>>>> -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
>>>>> -	tp->aspm_manageable = !rc;
>>>>> +	if (!rtl_platform_l12_enabled(tp)) {
>>>>> +		if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
>>>>> +			rc = pci_disable_link_state(pdev,
>>>> PCIE_LINK_STATE_L1_2);
>>>>> +		else
>>>>> +			rc = pci_disable_link_state(pdev,
>>>> PCIE_LINK_STATE_L1);
>>>>> +		tp->aspm_manageable = !rc;
>>>>> +	} else {
>>>>> +		tp->aspm_manageable = pcie_aspm_enabled(pdev);
>>>>> +	}
>>>>>
>>>>>  	tp->dash_type = rtl_check_dash(tp);
>>>>>
>>>>
>>>> Hi Hau,
>>>>
>>>> the following is a stripped-down version of the patch. Could you
>>>> please check/test?
>>> This patch is ok.
>>> L1 substate lock can apply for both rtl8125a.rtl8125b.
>>> if (enable && tp->aspm_manageable) {
>>> 	RTL_W8(tp, Config5, RTL_R8(tp, Config5) | ASPM_en);
>>> 	RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);
>>>
>>> 	if (tp->mac_version >= RTL_GIGA_MAC_VER_60) {
>>> 		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
>>> 		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
>>> 	}
>>> } else {
>>> 	if (tp->mac_version >= RTL_GIGA_MAC_VER_60)
>>> 		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
>>>
>>> 	RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~ClkReqEn);
>>> 	RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~ASPM_en); }
>>>
>>>> If function rtl_disable_exit_l1() is actually needed, I'd prefer to
>>>> add it in a separate patch (to facilitate bisecting).
>>>>
>>> If exit l1 mask is enabled, hardware will prone to exit l1. That will
>>> prevent hardware from entering l1 substate. So It needs to disable l1
>>> exist mask when device go to d3 state for entering l1 substate..
>>>
>> My understanding of PCI power management may be incomplete, but:
>> If a device goes to D3, then doesn't the bus go to L2/L3?
>> L1 exit criteria would be irrelevant then.
> Your understanding is correct.
> D3 is divided to two substate, D3hot and D3cold. D3cold will enter L2/L3.
> D3hot may enter L1 or L2/L3 ready.  In D3hot case, enable exit l1 mask will
> prevent hardware from entering PM L1. That is our hardware issue.
> So we disable exit l1 mask before hardware enter D3.
> 

Thanks! One, hopefully last, question:
Are you aware of any boards/systems setting this "L1.2 was tested and is safe" flag?
Then this could be mentioned in the commit description.

^ permalink raw reply	[relevance 0%]

* RE: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
  2022-01-26 13:46  0%     ` Heiner Kallweit
@ 2022-01-26 15:03  0%       ` Hau
  2022-01-26 16:54  0%         ` Heiner Kallweit
  2022-01-26 19:58  0%         ` Heiner Kallweit
  0 siblings, 2 replies; 107+ results
From: Hau @ 2022-01-26 15:03 UTC (permalink / raw)
  To: Heiner Kallweit, netdev; +Cc: nic_swsd, linux-kernel



> -----Original Message-----
> From: Heiner Kallweit [mailto:hkallweit1@gmail.com]
> Sent: Wednesday, January 26, 2022 9:47 PM
> To: Hau <hau@realtek.com>; netdev@vger.kernel.org
> Cc: nic_swsd <nic_swsd@realtek.com>; linux-kernel@vger.kernel.org
> Subject: Re: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
> 
> On 26.01.2022 14:00, Hau wrote:
> >> On 24.01.2022 19:19, Chunhao Lin wrote:
> >>> This patch will enable RTL8125 ASPM L1.2 on the platforms that have
> >>> tested RTL8125 with ASPM L1.2 enabled.
> >>> Register mac ocp 0xc0b2 will help to identify if RTL8125 has been
> >>> tested on L1.2 enabled platform. If it is, this register will be set to 0xf.
> >>> If not, this register will be default value 0.
> >>>
> >>> Signed-off-by: Chunhao Lin <hau@realtek.com>
> >>> ---
> >>>  drivers/net/ethernet/realtek/r8169_main.c | 99
> >>> ++++++++++++++++++-----
> >>>  1 file changed, 79 insertions(+), 20 deletions(-)
> >>>
> >>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> >>> b/drivers/net/ethernet/realtek/r8169_main.c
> >>> index 19e2621e0645..b1e013969d4c 100644
> >>> --- a/drivers/net/ethernet/realtek/r8169_main.c
> >>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> >>> @@ -2238,21 +2238,6 @@ static void rtl_wol_enable_rx(struct
> >> rtl8169_private *tp)
> >>>  			AcceptBroadcast | AcceptMulticast |
> >> AcceptMyPhys);  }
> >>>
> >>> -static void rtl_prepare_power_down(struct rtl8169_private *tp) -{
> >>> -	if (tp->dash_type != RTL_DASH_NONE)
> >>> -		return;
> >>> -
> >>> -	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
> >>> -	    tp->mac_version == RTL_GIGA_MAC_VER_33)
> >>> -		rtl_ephy_write(tp, 0x19, 0xff64);
> >>> -
> >>> -	if (device_may_wakeup(tp_to_dev(tp))) {
> >>> -		phy_speed_down(tp->phydev, false);
> >>> -		rtl_wol_enable_rx(tp);
> >>> -	}
> >>> -}
> >>> -
> >>>  static void rtl_init_rxcfg(struct rtl8169_private *tp)  {
> >>>  	switch (tp->mac_version) {
> >>> @@ -2650,6 +2635,34 @@ static void
> >>> rtl_pcie_state_l2l3_disable(struct
> >> rtl8169_private *tp)
> >>>  	RTL_W8(tp, Config3, RTL_R8(tp, Config3) & ~Rdy_to_L23);  }
> >>>
> >>> +static void rtl_disable_exit_l1(struct rtl8169_private *tp) {
> >>> +	/* Bits control which events trigger ASPM L1 exit:
> >>> +	 * Bit 12: rxdv
> >>> +	 * Bit 11: ltr_msg
> >>> +	 * Bit 10: txdma_poll
> >>> +	 * Bit  9: xadm
> >>> +	 * Bit  8: pktavi
> >>> +	 * Bit  7: txpla
> >>> +	 */
> >>> +	switch (tp->mac_version) {
> >>> +	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_36:
> >>> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
> >>> +		break;
> >>> +	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
> >>> +		rtl_eri_clear_bits(tp, 0xd4, 0x0c00);
> >>> +		break;
> >>> +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
> >>> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f80);
> >>> +		break;
> >>> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
> >>> +		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
> >>> +		break;
> >>> +	default:
> >>> +		break;
> >>> +	}
> >>> +}
> >>> +
> >>>  static void rtl_enable_exit_l1(struct rtl8169_private *tp)  {
> >>>  	/* Bits control which events trigger ASPM L1 exit:
> >>> @@ -2692,6 +2705,33 @@ static void rtl_hw_aspm_clkreq_enable(struct
> >> rtl8169_private *tp, bool enable)
> >>>  	udelay(10);
> >>>  }
> >>>
> >>> +static void rtl_hw_aspm_l12_enable(struct rtl8169_private *tp, bool
> >>> +enable) {
> >>> +	/* Don't enable L1.2 in the chip if OS can't control ASPM */
> >>> +	if (enable && tp->aspm_manageable) {
> >>> +		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
> >>> +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
> >>> +	} else {
> >>> +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
> >>> +	}
> >>> +}
> >>> +
> >>> +static void rtl_prepare_power_down(struct rtl8169_private *tp) {
> >>> +	if (tp->dash_type != RTL_DASH_NONE)
> >>> +		return;
> >>> +
> >>> +	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
> >>> +	    tp->mac_version == RTL_GIGA_MAC_VER_33)
> >>> +		rtl_ephy_write(tp, 0x19, 0xff64);
> >>> +
> >>> +	if (device_may_wakeup(tp_to_dev(tp))) {
> >>> +		rtl_disable_exit_l1(tp);
> >>> +		phy_speed_down(tp->phydev, false);
> >>> +		rtl_wol_enable_rx(tp);
> >>> +	}
> >>> +}
> >>> +
> >>>  static void rtl_set_fifo_size(struct rtl8169_private *tp, u16 rx_stat,
> >>>  			      u16 tx_stat, u16 rx_dyn, u16 tx_dyn)  { @@ -
> >> 3675,6 +3715,7
> >>> @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
> >>>  	rtl_ephy_init(tp, e_info_8125b);
> >>>  	rtl_hw_start_8125_common(tp);
> >>>
> >>> +	rtl_hw_aspm_l12_enable(tp, true);
> >>>  	rtl_hw_aspm_clkreq_enable(tp, true);  }
> >>>
> >>> @@ -5255,6 +5296,20 @@ static void rtl_init_mac_address(struct
> >> rtl8169_private *tp)
> >>>  	rtl_rar_set(tp, mac_addr);
> >>>  }
> >>>
> >>> +/* mac ocp 0xc0b2 will help to identify if RTL8125 has been tested
> >>> + * on L1.2 enabled platform. If it is, this register will be set to 0xf.
> >>> + * If not, this register will be default value 0.
> >>> + */
> >>> +static bool rtl_platform_l12_enabled(struct rtl8169_private *tp) {
> >>> +	switch (tp->mac_version) {
> >>> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
> >>> +		return (r8168_mac_ocp_read(tp, 0xc0b2) & 0xf) ? true : false;
> >>> +	default:
> >>> +		return false;
> >>> +	}
> >>> +}
> >>> +
> >>>  static int rtl_init_one(struct pci_dev *pdev, const struct
> >>> pci_device_id *ent)  {
> >>>  	struct rtl8169_private *tp;
> >>> @@ -5333,11 +5388,15 @@ static int rtl_init_one(struct pci_dev
> >>> *pdev,
> >> const struct pci_device_id *ent)
> >>>  	 * Chips from RTL8168h partially have issues with L1.2, but seem
> >>>  	 * to work fine with L1 and L1.1.
> >>>  	 */
> >>> -	if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
> >>> -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
> >>> -	else
> >>> -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
> >>> -	tp->aspm_manageable = !rc;
> >>> +	if (!rtl_platform_l12_enabled(tp)) {
> >>> +		if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
> >>> +			rc = pci_disable_link_state(pdev,
> >> PCIE_LINK_STATE_L1_2);
> >>> +		else
> >>> +			rc = pci_disable_link_state(pdev,
> >> PCIE_LINK_STATE_L1);
> >>> +		tp->aspm_manageable = !rc;
> >>> +	} else {
> >>> +		tp->aspm_manageable = pcie_aspm_enabled(pdev);
> >>> +	}
> >>>
> >>>  	tp->dash_type = rtl_check_dash(tp);
> >>>
> >>
> >> Hi Hau,
> >>
> >> the following is a stripped-down version of the patch. Could you
> >> please check/test?
> > This patch is ok.
> > L1 substate lock can apply for both rtl8125a.rtl8125b.
> > if (enable && tp->aspm_manageable) {
> > 	RTL_W8(tp, Config5, RTL_R8(tp, Config5) | ASPM_en);
> > 	RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);
> >
> > 	if (tp->mac_version >= RTL_GIGA_MAC_VER_60) {
> > 		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
> > 		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
> > 	}
> > } else {
> > 	if (tp->mac_version >= RTL_GIGA_MAC_VER_60)
> > 		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
> >
> > 	RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~ClkReqEn);
> > 	RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~ASPM_en); }
> >
> >> If function rtl_disable_exit_l1() is actually needed, I'd prefer to
> >> add it in a separate patch (to facilitate bisecting).
> >>
> > If exit l1 mask is enabled, hardware will prone to exit l1. That will
> > prevent hardware from entering l1 substate. So It needs to disable l1
> > exist mask when device go to d3 state for entering l1 substate..
> >
> My understanding of PCI power management may be incomplete, but:
> If a device goes to D3, then doesn't the bus go to L2/L3?
> L1 exit criteria would be irrelevant then.
Your understanding is correct.
D3 is divided to two substate, D3hot and D3cold. D3cold will enter L2/L3.
D3hot may enter L1 or L2/L3 ready.  In D3hot case, enable exit l1 mask will
prevent hardware from entering PM L1. That is our hardware issue.
So we disable exit l1 mask before hardware enter D3.



> ------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 0%]

* Re: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
  2022-01-26 13:00  5%   ` Hau
@ 2022-01-26 13:46  0%     ` Heiner Kallweit
  2022-01-26 15:03  0%       ` Hau
  0 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2022-01-26 13:46 UTC (permalink / raw)
  To: Hau, netdev; +Cc: nic_swsd, linux-kernel

On 26.01.2022 14:00, Hau wrote:
>> On 24.01.2022 19:19, Chunhao Lin wrote:
>>> This patch will enable RTL8125 ASPM L1.2 on the platforms that have
>>> tested RTL8125 with ASPM L1.2 enabled.
>>> Register mac ocp 0xc0b2 will help to identify if RTL8125 has been
>>> tested on L1.2 enabled platform. If it is, this register will be set to 0xf.
>>> If not, this register will be default value 0.
>>>
>>> Signed-off-by: Chunhao Lin <hau@realtek.com>
>>> ---
>>>  drivers/net/ethernet/realtek/r8169_main.c | 99
>>> ++++++++++++++++++-----
>>>  1 file changed, 79 insertions(+), 20 deletions(-)
>>>
>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
>>> b/drivers/net/ethernet/realtek/r8169_main.c
>>> index 19e2621e0645..b1e013969d4c 100644
>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>> @@ -2238,21 +2238,6 @@ static void rtl_wol_enable_rx(struct
>> rtl8169_private *tp)
>>>  			AcceptBroadcast | AcceptMulticast |
>> AcceptMyPhys);  }
>>>
>>> -static void rtl_prepare_power_down(struct rtl8169_private *tp) -{
>>> -	if (tp->dash_type != RTL_DASH_NONE)
>>> -		return;
>>> -
>>> -	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
>>> -	    tp->mac_version == RTL_GIGA_MAC_VER_33)
>>> -		rtl_ephy_write(tp, 0x19, 0xff64);
>>> -
>>> -	if (device_may_wakeup(tp_to_dev(tp))) {
>>> -		phy_speed_down(tp->phydev, false);
>>> -		rtl_wol_enable_rx(tp);
>>> -	}
>>> -}
>>> -
>>>  static void rtl_init_rxcfg(struct rtl8169_private *tp)  {
>>>  	switch (tp->mac_version) {
>>> @@ -2650,6 +2635,34 @@ static void rtl_pcie_state_l2l3_disable(struct
>> rtl8169_private *tp)
>>>  	RTL_W8(tp, Config3, RTL_R8(tp, Config3) & ~Rdy_to_L23);  }
>>>
>>> +static void rtl_disable_exit_l1(struct rtl8169_private *tp) {
>>> +	/* Bits control which events trigger ASPM L1 exit:
>>> +	 * Bit 12: rxdv
>>> +	 * Bit 11: ltr_msg
>>> +	 * Bit 10: txdma_poll
>>> +	 * Bit  9: xadm
>>> +	 * Bit  8: pktavi
>>> +	 * Bit  7: txpla
>>> +	 */
>>> +	switch (tp->mac_version) {
>>> +	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_36:
>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
>>> +		break;
>>> +	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x0c00);
>>> +		break;
>>> +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
>>> +		rtl_eri_clear_bits(tp, 0xd4, 0x1f80);
>>> +		break;
>>> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
>>> +		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
>>> +		break;
>>> +	default:
>>> +		break;
>>> +	}
>>> +}
>>> +
>>>  static void rtl_enable_exit_l1(struct rtl8169_private *tp)  {
>>>  	/* Bits control which events trigger ASPM L1 exit:
>>> @@ -2692,6 +2705,33 @@ static void rtl_hw_aspm_clkreq_enable(struct
>> rtl8169_private *tp, bool enable)
>>>  	udelay(10);
>>>  }
>>>
>>> +static void rtl_hw_aspm_l12_enable(struct rtl8169_private *tp, bool
>>> +enable) {
>>> +	/* Don't enable L1.2 in the chip if OS can't control ASPM */
>>> +	if (enable && tp->aspm_manageable) {
>>> +		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
>>> +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
>>> +	} else {
>>> +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
>>> +	}
>>> +}
>>> +
>>> +static void rtl_prepare_power_down(struct rtl8169_private *tp) {
>>> +	if (tp->dash_type != RTL_DASH_NONE)
>>> +		return;
>>> +
>>> +	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
>>> +	    tp->mac_version == RTL_GIGA_MAC_VER_33)
>>> +		rtl_ephy_write(tp, 0x19, 0xff64);
>>> +
>>> +	if (device_may_wakeup(tp_to_dev(tp))) {
>>> +		rtl_disable_exit_l1(tp);
>>> +		phy_speed_down(tp->phydev, false);
>>> +		rtl_wol_enable_rx(tp);
>>> +	}
>>> +}
>>> +
>>>  static void rtl_set_fifo_size(struct rtl8169_private *tp, u16 rx_stat,
>>>  			      u16 tx_stat, u16 rx_dyn, u16 tx_dyn)  { @@ -
>> 3675,6 +3715,7
>>> @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>>>  	rtl_ephy_init(tp, e_info_8125b);
>>>  	rtl_hw_start_8125_common(tp);
>>>
>>> +	rtl_hw_aspm_l12_enable(tp, true);
>>>  	rtl_hw_aspm_clkreq_enable(tp, true);  }
>>>
>>> @@ -5255,6 +5296,20 @@ static void rtl_init_mac_address(struct
>> rtl8169_private *tp)
>>>  	rtl_rar_set(tp, mac_addr);
>>>  }
>>>
>>> +/* mac ocp 0xc0b2 will help to identify if RTL8125 has been tested
>>> + * on L1.2 enabled platform. If it is, this register will be set to 0xf.
>>> + * If not, this register will be default value 0.
>>> + */
>>> +static bool rtl_platform_l12_enabled(struct rtl8169_private *tp) {
>>> +	switch (tp->mac_version) {
>>> +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
>>> +		return (r8168_mac_ocp_read(tp, 0xc0b2) & 0xf) ? true : false;
>>> +	default:
>>> +		return false;
>>> +	}
>>> +}
>>> +
>>>  static int rtl_init_one(struct pci_dev *pdev, const struct
>>> pci_device_id *ent)  {
>>>  	struct rtl8169_private *tp;
>>> @@ -5333,11 +5388,15 @@ static int rtl_init_one(struct pci_dev *pdev,
>> const struct pci_device_id *ent)
>>>  	 * Chips from RTL8168h partially have issues with L1.2, but seem
>>>  	 * to work fine with L1 and L1.1.
>>>  	 */
>>> -	if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
>>> -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
>>> -	else
>>> -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
>>> -	tp->aspm_manageable = !rc;
>>> +	if (!rtl_platform_l12_enabled(tp)) {
>>> +		if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
>>> +			rc = pci_disable_link_state(pdev,
>> PCIE_LINK_STATE_L1_2);
>>> +		else
>>> +			rc = pci_disable_link_state(pdev,
>> PCIE_LINK_STATE_L1);
>>> +		tp->aspm_manageable = !rc;
>>> +	} else {
>>> +		tp->aspm_manageable = pcie_aspm_enabled(pdev);
>>> +	}
>>>
>>>  	tp->dash_type = rtl_check_dash(tp);
>>>
>>
>> Hi Hau,
>>
>> the following is a stripped-down version of the patch. Could you please
>> check/test?
> This patch is ok. 
> L1 substate lock can apply for both rtl8125a.rtl8125b.
> if (enable && tp->aspm_manageable) {
> 	RTL_W8(tp, Config5, RTL_R8(tp, Config5) | ASPM_en);
> 	RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);
> 
> 	if (tp->mac_version >= RTL_GIGA_MAC_VER_60) {
> 		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
> 		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
> 	}
> } else {
> 	if (tp->mac_version >= RTL_GIGA_MAC_VER_60)
> 		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
> 
> 	RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~ClkReqEn);
> 	RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~ASPM_en);
> }
> 
>> If function rtl_disable_exit_l1() is actually needed, I'd prefer to add it in a
>> separate patch (to facilitate bisecting).
>>
> If exit l1 mask is enabled, hardware will prone to exit l1. That will prevent hardware from
> entering l1 substate. So It needs to disable l1 exist mask when device go to d3 state
> for entering l1 substate..
> 
My understanding of PCI power management may be incomplete, but:
If a device goes to D3, then doesn't the bus go to L2/L3?
L1 exit criteria would be irrelevant then.

^ permalink raw reply	[relevance 0%]

* RE: [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2
  @ 2022-01-26 13:00  5%   ` Hau
  2022-01-26 13:46  0%     ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Hau @ 2022-01-26 13:00 UTC (permalink / raw)
  To: Heiner Kallweit, netdev; +Cc: nic_swsd, linux-kernel

> On 24.01.2022 19:19, Chunhao Lin wrote:
> > This patch will enable RTL8125 ASPM L1.2 on the platforms that have
> > tested RTL8125 with ASPM L1.2 enabled.
> > Register mac ocp 0xc0b2 will help to identify if RTL8125 has been
> > tested on L1.2 enabled platform. If it is, this register will be set to 0xf.
> > If not, this register will be default value 0.
> >
> > Signed-off-by: Chunhao Lin <hau@realtek.com>
> > ---
> >  drivers/net/ethernet/realtek/r8169_main.c | 99
> > ++++++++++++++++++-----
> >  1 file changed, 79 insertions(+), 20 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> > b/drivers/net/ethernet/realtek/r8169_main.c
> > index 19e2621e0645..b1e013969d4c 100644
> > --- a/drivers/net/ethernet/realtek/r8169_main.c
> > +++ b/drivers/net/ethernet/realtek/r8169_main.c
> > @@ -2238,21 +2238,6 @@ static void rtl_wol_enable_rx(struct
> rtl8169_private *tp)
> >  			AcceptBroadcast | AcceptMulticast |
> AcceptMyPhys);  }
> >
> > -static void rtl_prepare_power_down(struct rtl8169_private *tp) -{
> > -	if (tp->dash_type != RTL_DASH_NONE)
> > -		return;
> > -
> > -	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
> > -	    tp->mac_version == RTL_GIGA_MAC_VER_33)
> > -		rtl_ephy_write(tp, 0x19, 0xff64);
> > -
> > -	if (device_may_wakeup(tp_to_dev(tp))) {
> > -		phy_speed_down(tp->phydev, false);
> > -		rtl_wol_enable_rx(tp);
> > -	}
> > -}
> > -
> >  static void rtl_init_rxcfg(struct rtl8169_private *tp)  {
> >  	switch (tp->mac_version) {
> > @@ -2650,6 +2635,34 @@ static void rtl_pcie_state_l2l3_disable(struct
> rtl8169_private *tp)
> >  	RTL_W8(tp, Config3, RTL_R8(tp, Config3) & ~Rdy_to_L23);  }
> >
> > +static void rtl_disable_exit_l1(struct rtl8169_private *tp) {
> > +	/* Bits control which events trigger ASPM L1 exit:
> > +	 * Bit 12: rxdv
> > +	 * Bit 11: ltr_msg
> > +	 * Bit 10: txdma_poll
> > +	 * Bit  9: xadm
> > +	 * Bit  8: pktavi
> > +	 * Bit  7: txpla
> > +	 */
> > +	switch (tp->mac_version) {
> > +	case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_36:
> > +		rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
> > +		break;
> > +	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
> > +		rtl_eri_clear_bits(tp, 0xd4, 0x0c00);
> > +		break;
> > +	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_53:
> > +		rtl_eri_clear_bits(tp, 0xd4, 0x1f80);
> > +		break;
> > +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
> > +		r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
> > +		break;
> > +	default:
> > +		break;
> > +	}
> > +}
> > +
> >  static void rtl_enable_exit_l1(struct rtl8169_private *tp)  {
> >  	/* Bits control which events trigger ASPM L1 exit:
> > @@ -2692,6 +2705,33 @@ static void rtl_hw_aspm_clkreq_enable(struct
> rtl8169_private *tp, bool enable)
> >  	udelay(10);
> >  }
> >
> > +static void rtl_hw_aspm_l12_enable(struct rtl8169_private *tp, bool
> > +enable) {
> > +	/* Don't enable L1.2 in the chip if OS can't control ASPM */
> > +	if (enable && tp->aspm_manageable) {
> > +		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
> > +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
> > +	} else {
> > +		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
> > +	}
> > +}
> > +
> > +static void rtl_prepare_power_down(struct rtl8169_private *tp) {
> > +	if (tp->dash_type != RTL_DASH_NONE)
> > +		return;
> > +
> > +	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
> > +	    tp->mac_version == RTL_GIGA_MAC_VER_33)
> > +		rtl_ephy_write(tp, 0x19, 0xff64);
> > +
> > +	if (device_may_wakeup(tp_to_dev(tp))) {
> > +		rtl_disable_exit_l1(tp);
> > +		phy_speed_down(tp->phydev, false);
> > +		rtl_wol_enable_rx(tp);
> > +	}
> > +}
> > +
> >  static void rtl_set_fifo_size(struct rtl8169_private *tp, u16 rx_stat,
> >  			      u16 tx_stat, u16 rx_dyn, u16 tx_dyn)  { @@ -
> 3675,6 +3715,7
> > @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
> >  	rtl_ephy_init(tp, e_info_8125b);
> >  	rtl_hw_start_8125_common(tp);
> >
> > +	rtl_hw_aspm_l12_enable(tp, true);
> >  	rtl_hw_aspm_clkreq_enable(tp, true);  }
> >
> > @@ -5255,6 +5296,20 @@ static void rtl_init_mac_address(struct
> rtl8169_private *tp)
> >  	rtl_rar_set(tp, mac_addr);
> >  }
> >
> > +/* mac ocp 0xc0b2 will help to identify if RTL8125 has been tested
> > + * on L1.2 enabled platform. If it is, this register will be set to 0xf.
> > + * If not, this register will be default value 0.
> > + */
> > +static bool rtl_platform_l12_enabled(struct rtl8169_private *tp) {
> > +	switch (tp->mac_version) {
> > +	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
> > +		return (r8168_mac_ocp_read(tp, 0xc0b2) & 0xf) ? true : false;
> > +	default:
> > +		return false;
> > +	}
> > +}
> > +
> >  static int rtl_init_one(struct pci_dev *pdev, const struct
> > pci_device_id *ent)  {
> >  	struct rtl8169_private *tp;
> > @@ -5333,11 +5388,15 @@ static int rtl_init_one(struct pci_dev *pdev,
> const struct pci_device_id *ent)
> >  	 * Chips from RTL8168h partially have issues with L1.2, but seem
> >  	 * to work fine with L1 and L1.1.
> >  	 */
> > -	if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
> > -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
> > -	else
> > -		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
> > -	tp->aspm_manageable = !rc;
> > +	if (!rtl_platform_l12_enabled(tp)) {
> > +		if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
> > +			rc = pci_disable_link_state(pdev,
> PCIE_LINK_STATE_L1_2);
> > +		else
> > +			rc = pci_disable_link_state(pdev,
> PCIE_LINK_STATE_L1);
> > +		tp->aspm_manageable = !rc;
> > +	} else {
> > +		tp->aspm_manageable = pcie_aspm_enabled(pdev);
> > +	}
> >
> >  	tp->dash_type = rtl_check_dash(tp);
> >
> 
> Hi Hau,
> 
>the following is a stripped-down version of the patch. Could you please
> check/test?
This patch is ok. 
L1 substate lock can apply for both rtl8125a.rtl8125b.
if (enable && tp->aspm_manageable) {
	RTL_W8(tp, Config5, RTL_R8(tp, Config5) | ASPM_en);
	RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);

	if (tp->mac_version >= RTL_GIGA_MAC_VER_60) {
		r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
	}
} else {
	if (tp->mac_version >= RTL_GIGA_MAC_VER_60)
		r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);

	RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~ClkReqEn);
	RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~ASPM_en);
}

> If function rtl_disable_exit_l1() is actually needed, I'd prefer to add it in a
> separate patch (to facilitate bisecting).
> 
If exit l1 mask is enabled, hardware will prone to exit l1. That will prevent hardware from
entering l1 substate. So It needs to disable l1 exist mask when device go to d3 state
for entering l1 substate..

>  drivers/net/ethernet/realtek/r8169_main.c | 22 +++++++++++++++++++++-
>  1 file changed, 21 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c
> b/drivers/net/ethernet/realtek/r8169_main.c
> index ca95e9266..890a64245 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -2684,7 +2684,15 @@ static void rtl_hw_aspm_clkreq_enable(struct
> rtl8169_private *tp, bool enable)
>  	if (enable && tp->aspm_manageable) {
>  		RTL_W8(tp, Config5, RTL_R8(tp, Config5) | ASPM_en);
>  		RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);
> +
> +		if (tp->mac_version == RTL_GIGA_MAC_VER_63) {
> +			r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
> +			r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, BIT(2));
> +		}
>  	} else {
> +		if (tp->mac_version == RTL_GIGA_MAC_VER_63)
> +			r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
> +
>  		RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~ClkReqEn);
>  		RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~ASPM_en);
>  	}
> @@ -5251,6 +5259,16 @@ static void rtl_init_mac_address(struct
> rtl8169_private *tp)
>  	rtl_rar_set(tp, mac_addr);
>  }
> 
> +/* register is set if system vendor successfully tested ASPM 1.2 */
> +static bool rtl_aspm_is_safe(struct rtl8169_private *tp) {
> +	if (tp->mac_version >= RTL_GIGA_MAC_VER_60 &&
> +	    r8168_mac_ocp_read(tp, 0xc0b2) & 0xf)
> +		return true;
> +
> +	return false;
> +}
> +
>  static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)  {
>  	struct rtl8169_private *tp;
> @@ -5329,7 +5347,9 @@ static int rtl_init_one(struct pci_dev *pdev, const
> struct pci_device_id *ent)
>  	 * Chips from RTL8168h partially have issues with L1.2, but seem
>  	 * to work fine with L1 and L1.1.
>  	 */
> -	if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
> +	if (rtl_aspm_is_safe(tp))
> +		rc = 0;
> +	else if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
>  		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
>  	else
>  		rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
> --
> 2.35.0
> 
> 
> ------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 5%]

* Re: [PATCH] r8169: Add device 10ec:8162 to driver r8169
  @ 2021-10-26  6:47  5% ` Janghyub Seo
  0 siblings, 0 replies; 107+ results
From: Janghyub Seo @ 2021-10-26  6:47 UTC (permalink / raw)
  To: Heiner Kallweit, nic_swsd; +Cc: netdev



On Tuesday 26 October 2021 05:27:55 AM (+09:00), Heiner Kallweit wrote:

 > On 25.10.2021 16:55, Janghyub Seo wrote:
 > >
 > > This patch makes the driver r8169 pick up device Realtek Semiconductor 
Co.
 > > , Ltd. Device [10ec:8162].
 > >
 >
 > Interesting that still new PCI ID's are assigned. Can you post the 
output
 > of dmesg | grep r8169 ? I'd be interested to know which chip version 
this is.
Yes, this is my output:
[    9.367868] libphy: r8169: probed
[    9.368507] r8169 0000:03:00.0 eth0: RTL8125B, 04:42:1a:85:c8:87, XID 
641, IRQ 71
[    9.368515] r8169 0000:03:00.0 eth0: jumbo features [frames: 9194 bytes, 
tx checksumming: ko]
[    9.802815] r8169 0000:03:00.0 enp3s0: renamed from eth0
[    9.867245] RTL8226B_RTL8221B 2.5Gbps PHY r8169-0-300:00: attached PHY 
driver (mii_bus:phy_addr=r8169-0-300:00, irq=MAC)
[   10.060719] r8169 0000:03:00.0 enp3s0: Link is Down
[   12.747165] r8169 0000:03:00.0 enp3s0: Link is Up - 1Gbps/Full - flow 
control rx

 > What kind of system is this?

It's a laptop computer, specifically `ASUS ROG Zephyrus G15 GA503QE`.


^ permalink raw reply	[relevance 5%]

* Re: [PATCH v2 net] r8169: disable hw csum for short packets on all chip versions
  2020-11-05 17:14  6% [PATCH v2 net] r8169: disable hw csum for short packets on all chip versions Heiner Kallweit
  2020-11-07 20:16  0% ` Jakub Kicinski
@ 2020-11-07 20:20  0% ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 107+ results
From: patchwork-bot+netdevbpf @ 2020-11-07 20:20 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: kuba, davem, nic_swsd, netdev

Hello:

This patch was applied to netdev/net.git (refs/heads/master):

On Thu, 5 Nov 2020 18:14:47 +0100 you wrote:
> RTL8125B has same or similar short packet hw padding bug as RTL8168evl.
> The main workaround has been extended accordingly, however we have to
> disable also hw checksumming for short packets on affected new chip
> versions. Instead of checking for an affected chip version let's
> simply disable hw checksumming for short packets in general.
> 
> v2:
> - remove the version checks and disable short packet hw csum in general
> - reflect this in commit title and message
> 
> [...]

Here is the summary with links:
  - [v2,net] r8169: disable hw csum for short packets on all chip versions
    https://git.kernel.org/netdev/net/c/847f0a2bfd2f

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[relevance 0%]

* Re: [PATCH v2 net] r8169: disable hw csum for short packets on all chip versions
  2020-11-05 17:14  6% [PATCH v2 net] r8169: disable hw csum for short packets on all chip versions Heiner Kallweit
@ 2020-11-07 20:16  0% ` Jakub Kicinski
  2020-11-07 20:20  0% ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 107+ results
From: Jakub Kicinski @ 2020-11-07 20:16 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: David Miller, Realtek linux nic maintainers, netdev

On Thu, 5 Nov 2020 18:14:47 +0100 Heiner Kallweit wrote:
> RTL8125B has same or similar short packet hw padding bug as RTL8168evl.
> The main workaround has been extended accordingly, however we have to
> disable also hw checksumming for short packets on affected new chip
> versions. Instead of checking for an affected chip version let's
> simply disable hw checksumming for short packets in general.
> 
> v2:
> - remove the version checks and disable short packet hw csum in general
> - reflect this in commit title and message
> 
> Fixes: 0439297be951 ("r8169: add support for RTL8125B")
> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

Applied, thanks!

^ permalink raw reply	[relevance 0%]

* [PATCH v2 net] r8169: disable hw csum for short packets on all chip versions
@ 2020-11-05 17:14  6% Heiner Kallweit
  2020-11-07 20:16  0% ` Jakub Kicinski
  2020-11-07 20:20  0% ` patchwork-bot+netdevbpf
  0 siblings, 2 replies; 107+ results
From: Heiner Kallweit @ 2020-11-05 17:14 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev

RTL8125B has same or similar short packet hw padding bug as RTL8168evl.
The main workaround has been extended accordingly, however we have to
disable also hw checksumming for short packets on affected new chip
versions. Instead of checking for an affected chip version let's
simply disable hw checksumming for short packets in general.

v2:
- remove the version checks and disable short packet hw csum in general
- reflect this in commit title and message

Fixes: 0439297be951 ("r8169: add support for RTL8125B")
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index c5d5c1cfc..aa6f8b16d 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -4314,18 +4314,9 @@ static netdev_features_t rtl8169_features_check(struct sk_buff *skb,
 		    rtl_chip_supports_csum_v2(tp))
 			features &= ~NETIF_F_ALL_TSO;
 	} else if (skb->ip_summed == CHECKSUM_PARTIAL) {
-		if (skb->len < ETH_ZLEN) {
-			switch (tp->mac_version) {
-			case RTL_GIGA_MAC_VER_11:
-			case RTL_GIGA_MAC_VER_12:
-			case RTL_GIGA_MAC_VER_17:
-			case RTL_GIGA_MAC_VER_34:
-				features &= ~NETIF_F_CSUM_MASK;
-				break;
-			default:
-				break;
-			}
-		}
+		/* work around hw bug on some chip versions */
+		if (skb->len < ETH_ZLEN)
+			features &= ~NETIF_F_CSUM_MASK;
 
 		if (transport_offset > TCPHO_MAX &&
 		    rtl_chip_supports_csum_v2(tp))
-- 
2.29.2


^ permalink raw reply related	[relevance 6%]

* Re: [PATCH net] r8169: disable hw csum for short packets and chip versions with hw padding bug
  2020-11-05 14:20  0% ` David Laight
@ 2020-11-05 14:35  0%   ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2020-11-05 14:35 UTC (permalink / raw)
  To: David Laight, Jakub Kicinski, David Miller,
	Realtek linux nic maintainers
  Cc: netdev

On 05.11.2020 15:20, David Laight wrote:
> From: Heiner Kallweit
>> Sent: 05 November 2020 13:58
>>
>> RTL8125B has same or similar short packet hw padding bug as RTL8168evl.
>> The main workaround has been extended accordingly, however we have to
>> disable also hw checksumming for short packets on affected new chip
>> versions. Change the code in a way that in case of further affected
>> chip versions we have to add them in one place only.
> 
> Why not just disable hw checksumming for short packets on
> all devices (that use this driver).
> 
Thanks for the hint. Briefly thought about that too but then decided
against it as I don't have performance figures. But if everybody is
fine with it, then I'd be happy to simplify short packet handling
in the described way (in a v2).

> It can't make much difference to the performance.
> The lack of conditionals may even make it faster.
> 
> 	David
> 
> -
> Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
> Registration No: 1397386 (Wales)
> 

Heiner

^ permalink raw reply	[relevance 0%]

* RE: [PATCH net] r8169: disable hw csum for short packets and chip versions with hw padding bug
  2020-11-05 13:58  6% [PATCH net] r8169: disable hw csum for short packets and chip versions with hw padding bug Heiner Kallweit
@ 2020-11-05 14:20  0% ` David Laight
  2020-11-05 14:35  0%   ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: David Laight @ 2020-11-05 14:20 UTC (permalink / raw)
  To: 'Heiner Kallweit',
	Jakub Kicinski, David Miller, Realtek linux nic maintainers
  Cc: netdev

From: Heiner Kallweit
> Sent: 05 November 2020 13:58
> 
> RTL8125B has same or similar short packet hw padding bug as RTL8168evl.
> The main workaround has been extended accordingly, however we have to
> disable also hw checksumming for short packets on affected new chip
> versions. Change the code in a way that in case of further affected
> chip versions we have to add them in one place only.

Why not just disable hw checksumming for short packets on
all devices (that use this driver).

It can't make much difference to the performance.
The lack of conditionals may even make it faster.

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)

^ permalink raw reply	[relevance 0%]

* [PATCH net] r8169: disable hw csum for short packets and chip versions with hw padding bug
@ 2020-11-05 13:58  6% Heiner Kallweit
  2020-11-05 14:20  0% ` David Laight
  0 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2020-11-05 13:58 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev

RTL8125B has same or similar short packet hw padding bug as RTL8168evl.
The main workaround has been extended accordingly, however we have to
disable also hw checksumming for short packets on affected new chip
versions. Change the code in a way that in case of further affected
chip versions we have to add them in one place only.

Fixes: 0439297be951 ("r8169: add support for RTL8125B")
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index c5d5c1cfc..56f84b597 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -4315,11 +4315,13 @@ static netdev_features_t rtl8169_features_check(struct sk_buff *skb,
 			features &= ~NETIF_F_ALL_TSO;
 	} else if (skb->ip_summed == CHECKSUM_PARTIAL) {
 		if (skb->len < ETH_ZLEN) {
+			if (rtl_test_hw_pad_bug(tp))
+				features &= ~NETIF_F_CSUM_MASK;
+
 			switch (tp->mac_version) {
 			case RTL_GIGA_MAC_VER_11:
 			case RTL_GIGA_MAC_VER_12:
 			case RTL_GIGA_MAC_VER_17:
-			case RTL_GIGA_MAC_VER_34:
 				features &= ~NETIF_F_CSUM_MASK;
 				break;
 			default:
-- 
2.29.2


^ permalink raw reply related	[relevance 6%]

* Re: [PATCH net] r8169: work around short packet hw bug on RTL8125
  2020-11-05  1:45  0% ` Jakub Kicinski
@ 2020-11-05 10:31  0%   ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2020-11-05 10:31 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: David Miller, Realtek linux nic maintainers, netdev, Maxim Plotnikov

On 05.11.2020 02:45, Jakub Kicinski wrote:
> On Tue, 3 Nov 2020 18:52:18 +0100 Heiner Kallweit wrote:
>> Network problems with RTL8125B have been reported [0] and with help
>> from Realtek it turned out that this chip version has a hw problem
>> with short packets (similar to RTL8168evl). Having said that activate
>> the same workaround as for RTL8168evl.
>> Realtek suggested to activate the workaround for RTL8125A too, even
>> though they're not 100% sure yet which RTL8125 versions are affected.
>>
>> [0] https://bugzilla.kernel.org/show_bug.cgi?id=209839
>>
>> Fixes: 0439297be951 ("r8169: add support for RTL8125B")
>> Reported-by: Maxim Plotnikov <wgh@torlan.ru>
>> Tested-by: Maxim Plotnikov <wgh@torlan.ru>
>> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
> 
> Applied, thanks!
> 
>> @@ -4125,7 +4133,7 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,
>>  
>>  		opts[1] |= transport_offset << TCPHO_SHIFT;
>>  	} else {
>> -		if (unlikely(rtl_test_hw_pad_bug(tp, skb)))
>> +		if (unlikely(skb->len < ETH_ZLEN && rtl_test_hw_pad_bug(tp)))
>>  			return !eth_skb_pad(skb);
>>  	}
> 
> But looks like we may have another bug here - looks like this function
> treas skb_cow_head() and eth_skb_pad() failures the same, but former
> doesn't free the skb on error, while the latter does.
> 
Thanks for the hint, indeed we have an issue. The caller of
rtl8169_tso_csum_v2() also frees the skb if false is returned, therefore
we have a double free if eth_skb_pad() fails.

When checking eth_skb_pad() I saw that it uses kfree_skb() to free
the skb on error. Kernel documentation say about ndo_start_xmit context:

Process with BHs disabled or BH (timer),
will be called with interrupts disabled by netconsole.

Is it safe to use kfree_skb() if interrupts are disabled?
I'm asking because dev_kfree_skb_any() uses the irq path if
irqs_disabled() is true.

^ permalink raw reply	[relevance 0%]

* Re: [PATCH net] r8169: work around short packet hw bug on RTL8125
  2020-11-03 17:52  6% [PATCH net] r8169: work around short packet hw bug on RTL8125 Heiner Kallweit
@ 2020-11-05  1:45  0% ` Jakub Kicinski
  2020-11-05 10:31  0%   ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Jakub Kicinski @ 2020-11-05  1:45 UTC (permalink / raw)
  To: Heiner Kallweit
  Cc: David Miller, Realtek linux nic maintainers, netdev, Maxim Plotnikov

On Tue, 3 Nov 2020 18:52:18 +0100 Heiner Kallweit wrote:
> Network problems with RTL8125B have been reported [0] and with help
> from Realtek it turned out that this chip version has a hw problem
> with short packets (similar to RTL8168evl). Having said that activate
> the same workaround as for RTL8168evl.
> Realtek suggested to activate the workaround for RTL8125A too, even
> though they're not 100% sure yet which RTL8125 versions are affected.
> 
> [0] https://bugzilla.kernel.org/show_bug.cgi?id=209839
> 
> Fixes: 0439297be951 ("r8169: add support for RTL8125B")
> Reported-by: Maxim Plotnikov <wgh@torlan.ru>
> Tested-by: Maxim Plotnikov <wgh@torlan.ru>
> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

Applied, thanks!

> @@ -4125,7 +4133,7 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,
>  
>  		opts[1] |= transport_offset << TCPHO_SHIFT;
>  	} else {
> -		if (unlikely(rtl_test_hw_pad_bug(tp, skb)))
> +		if (unlikely(skb->len < ETH_ZLEN && rtl_test_hw_pad_bug(tp)))
>  			return !eth_skb_pad(skb);
>  	}

But looks like we may have another bug here - looks like this function
treas skb_cow_head() and eth_skb_pad() failures the same, but former
doesn't free the skb on error, while the latter does.

^ permalink raw reply	[relevance 0%]

* [PATCH net] r8169: work around short packet hw bug on RTL8125
@ 2020-11-03 17:52  6% Heiner Kallweit
  2020-11-05  1:45  0% ` Jakub Kicinski
  0 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2020-11-03 17:52 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers
  Cc: netdev, Maxim Plotnikov

Network problems with RTL8125B have been reported [0] and with help
from Realtek it turned out that this chip version has a hw problem
with short packets (similar to RTL8168evl). Having said that activate
the same workaround as for RTL8168evl.
Realtek suggested to activate the workaround for RTL8125A too, even
though they're not 100% sure yet which RTL8125 versions are affected.

[0] https://bugzilla.kernel.org/show_bug.cgi?id=209839

Fixes: 0439297be951 ("r8169: add support for RTL8125B")
Reported-by: Maxim Plotnikov <wgh@torlan.ru>
Tested-by: Maxim Plotnikov <wgh@torlan.ru>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 7e0947e29..07d197141 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -4051,9 +4051,17 @@ static int rtl8169_xmit_frags(struct rtl8169_private *tp, struct sk_buff *skb,
 	return -EIO;
 }
 
-static bool rtl_test_hw_pad_bug(struct rtl8169_private *tp, struct sk_buff *skb)
+static bool rtl_test_hw_pad_bug(struct rtl8169_private *tp)
 {
-	return skb->len < ETH_ZLEN && tp->mac_version == RTL_GIGA_MAC_VER_34;
+	switch (tp->mac_version) {
+	case RTL_GIGA_MAC_VER_34:
+	case RTL_GIGA_MAC_VER_60:
+	case RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_63:
+		return true;
+	default:
+		return false;
+	}
 }
 
 static void rtl8169_tso_csum_v1(struct sk_buff *skb, u32 *opts)
@@ -4125,7 +4133,7 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,
 
 		opts[1] |= transport_offset << TCPHO_SHIFT;
 	} else {
-		if (unlikely(rtl_test_hw_pad_bug(tp, skb)))
+		if (unlikely(skb->len < ETH_ZLEN && rtl_test_hw_pad_bug(tp)))
 			return !eth_skb_pad(skb);
 	}
 
-- 
2.29.2



^ permalink raw reply related	[relevance 6%]

* Re: Fwd: Problem with r8169 module
  2020-11-02 16:29  4%         ` Gilberto Nunes
@ 2020-11-02 16:50  0%           ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2020-11-02 16:50 UTC (permalink / raw)
  To: Gilberto Nunes; +Cc: netdev

On 02.11.2020 17:29, Gilberto Nunes wrote:
>>From kernel 5.4
> 
> ethtool -d enp1s0f1
> RealTek RTL8411 registers:
> --------------------------------------------------------
> 0x00: MAC Address                      98:29:a6:e6:e5:6a
> 0x08: Multicast Address Filter     0xffffffff 0xffffffff
> 0x10: Dump Tally Counter Command   0xffffe000 0x00000000
> 0x20: Tx Normal Priority Ring Addr 0xff50b000 0x00000000
> 0x28: Tx High Priority Ring Addr   0x00000000 0x00000000
> 0x30: Flash memory read/write                 0x00000000
> 0x34: Early Rx Byte Count                              0
> 0x36: Early Rx Status                               0x00
> 0x37: Command                                       0x0c
>       Rx on, Tx on
> 0x3C: Interrupt Mask                              0x003f
>       LinkChg RxNoBuf TxErr TxOK RxErr RxOK
> 0x3E: Interrupt Status                            0x0000
> 
> 0x40: Tx Configuration                        0x5f800f80
> 0x44: Rx Configuration                        0x0002cf0f
> 0x48: Timer count                             0x00000000
> 0x4C: Missed packet counter                     0x000000
> 0x50: EEPROM Command                                0x10
> 0x51: Config 0                                      0x00
> 0x52: Config 1                                      0xcf
> 0x53: Config 2                                      0x3c
> 0x54: Config 3                                      0x60
> 0x55: Config 4                                      0x11
> 0x56: Config 5                                      0x02
> 0x58: Timer interrupt                         0x00000000
> 0x5C: Multiple Interrupt Select                   0x0000
> 0x60: PHY access                              0x00000000
> 0x64: TBI control and status                  0x12011025
> 0x68: TBI Autonegotiation advertisement (ANAR)    0xf02c
> 0x6A: TBI Link partner ability (LPAR)             0x8000
> 0x6C: PHY status                                    0xeb

Thanks for the additional info. PHY status 0xeb means that
a link is established at 100Mbps, see following from the
driver source. Having said that the downshift happens also
under 5.4, it's just not reported.

	/* rtl8169_PHYstatus */
	TBI_Enable	= 0x80,
	TxFlowCtrl	= 0x40,
	RxFlowCtrl	= 0x20,
	_1000bpsF	= 0x10,
	_100bps		= 0x08,
	_10bps		= 0x04,
	LinkStatus	= 0x02,
	FullDup		= 0x01,

1Gbps needs all four cable pairs, whilst 100Mbps is happy
with two. Therefore one reason could be a physical problem
(e.g. corrosion) with a pin in a RJ45 port.
(in case you tried other cables already and you can rule out
a cable problem)

> 0x84: PM wakeup frame 0            0x00000000 0x00000000
> 0x8C: PM wakeup frame 1            0x00000000 0x00000000
> 0x94: PM wakeup frame 2 (low)      0x00000000 0x00000000
> 0x9C: PM wakeup frame 2 (high)     0x00000000 0x00000000
> 0xA4: PM wakeup frame 3 (low)      0x00000000 0x00000000
> 0xAC: PM wakeup frame 3 (high)     0x00000000 0x00000001
> 0xB4: PM wakeup frame 4 (low)      0x00000000 0xd205cde1
> 0xBC: PM wakeup frame 4 (high)     0x00000000 0x00000000
> 0xC4: Wakeup frame 0 CRC                          0x0000
> 0xC6: Wakeup frame 1 CRC                          0x0000
> 0xC8: Wakeup frame 2 CRC                          0x0000
> 0xCA: Wakeup frame 3 CRC                          0x0000
> 0xCC: Wakeup frame 4 CRC                          0x0000
> 0xDA: RX packet maximum size                      0x4000
> 0xE0: C+ Command                                  0x2060
>       VLAN de-tagging
>       RX checksumming
> 0xE2: Interrupt Mitigation                        0x0000
>       TxTimer:       0
>       TxPackets:     0
>       RxTimer:       0
>       RxPackets:     0
> 0xE4: Rx Ring Addr                 0xff50f000 0x00000000
> 0xEC: Early Tx threshold                            0x27
> 0xF0: Func Event                              0x0000003f
> 0xF4: Func Event Mask                         0x00000000
> 0xF8: Func Preset State                       0x00000003
> 0xFC: Func Force Event                        0x00000000
> 
>>From kernel 5.9.3
> 
> ethtool -d enp1s0f1
> RealTek RTL8411 registers:
> --------------------------------------------------------
> 0x00: MAC Address                      98:29:a6:e6:e5:6a
> 0x08: Multicast Address Filter     0xffffffff 0xffffffff
> 0x10: Dump Tally Counter Command   0xffffe000 0x00000000
> 0x20: Tx Normal Priority Ring Addr 0xff582000 0x00000000
> 0x28: Tx High Priority Ring Addr   0x00000000 0x00000000
> 0x30: Flash memory read/write                 0x00000000
> 0x34: Early Rx Byte Count                              0
> 0x36: Early Rx Status                               0x00
> 0x37: Command                                       0x0c
>       Rx on, Tx on
> 0x3C: Interrupt Mask                              0x003f
>       LinkChg RxNoBuf TxErr TxOK RxErr RxOK
> 0x3E: Interrupt Status                            0x0000
> 
> 0x40: Tx Configuration                        0x5f800f80
> 0x44: Rx Configuration                        0x0002cf0f
> 0x48: Timer count                             0x00000000
> 0x4C: Missed packet counter                     0x000000
> 0x50: EEPROM Command                                0x10
> 0x51: Config 0                                      0x00
> 0x52: Config 1                                      0xcf
> 0x53: Config 2                                      0x3c
> 0x54: Config 3                                      0x60
> 0x55: Config 4                                      0x11
> 0x56: Config 5                                      0x02
> 0x58: Timer interrupt                         0x00000000
> 0x5C: Multiple Interrupt Select                   0x0000
> 0x60: PHY access                              0x00000000
> 0x64: TBI control and status                  0x12011025
> 0x68: TBI Autonegotiation advertisement (ANAR)    0xf02c
> 0x6A: TBI Link partner ability (LPAR)             0x8000
> 0x6C: PHY status                                    0xeb
> 0x84: PM wakeup frame 0            0x00000000 0x00000000
> 0x8C: PM wakeup frame 1            0x00000000 0x00000000
> 0x94: PM wakeup frame 2 (low)      0x00000000 0x00000000
> 0x9C: PM wakeup frame 2 (high)     0x00000000 0x00000000
> 0xA4: PM wakeup frame 3 (low)      0x00000000 0x00000000
> 0xAC: PM wakeup frame 3 (high)     0x00000000 0x00000001
> 0xB4: PM wakeup frame 4 (low)      0x00000000 0xd21a30de
> 0xBC: PM wakeup frame 4 (high)     0x00000000 0x00000000
> 0xC4: Wakeup frame 0 CRC                          0x0000
> 0xC6: Wakeup frame 1 CRC                          0x0000
> 0xC8: Wakeup frame 2 CRC                          0x0000
> 0xCA: Wakeup frame 3 CRC                          0x0000
> 0xCC: Wakeup frame 4 CRC                          0x0000
> 0xDA: RX packet maximum size                      0x4000
> 0xE0: C+ Command                                  0x2060
>       VLAN de-tagging
>       RX checksumming
> 0xE2: Interrupt Mitigation                        0x0000
>       TxTimer:       0
>       TxPackets:     0
>       RxTimer:       0
>       RxPackets:     0
> 0xE4: Rx Ring Addr                 0xff583000 0x00000000
> 0xEC: Early Tx threshold                            0x27
> 0xF0: Func Event                              0x0000003f
> 0xF4: Func Event Mask                         0x00000000
> 0xF8: Func Preset State                       0x00000003
> 0xFC: Func Force Event                        0x00000000
> 
> 
> I also noticed this message when ran update-initramfs -k all -u when
> installed kernel 5.9.3.
> I had made a git clone from linux-firmware and copied this missed
> firmware but no change!
> 
> W: Possible missing firmware /lib/firmware/rtl_nic/rtl8125b-2.fw for
> module r8169
> 
> 
> 
> ---
> Gilberto Nunes Ferreira
> 
> 
> 
> Em seg., 2 de nov. de 2020 às 10:40, Heiner Kallweit
> <hkallweit1@gmail.com> escreveu:
>>
>> On 02.11.2020 14:20, Gilberto Nunes wrote:
>>> Hi
>>>
>>> ethtool using 5.4
>>>
>> ethtool doesn't know about the actual speed, because the downshift
>> occurs PHY-internally. Please test actual the speed.
>> Alternatively provide the output of ethtool -d <if>, the RTL8169
>> chip family has an internal register refkecting the actual link speed.


^ permalink raw reply	[relevance 0%]

* Re: Fwd: Problem with r8169 module
  @ 2020-11-02 16:29  4%         ` Gilberto Nunes
  2020-11-02 16:50  0%           ` Heiner Kallweit
  0 siblings, 1 reply; 107+ results
From: Gilberto Nunes @ 2020-11-02 16:29 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev

From kernel 5.4

ethtool -d enp1s0f1
RealTek RTL8411 registers:
--------------------------------------------------------
0x00: MAC Address                      98:29:a6:e6:e5:6a
0x08: Multicast Address Filter     0xffffffff 0xffffffff
0x10: Dump Tally Counter Command   0xffffe000 0x00000000
0x20: Tx Normal Priority Ring Addr 0xff50b000 0x00000000
0x28: Tx High Priority Ring Addr   0x00000000 0x00000000
0x30: Flash memory read/write                 0x00000000
0x34: Early Rx Byte Count                              0
0x36: Early Rx Status                               0x00
0x37: Command                                       0x0c
      Rx on, Tx on
0x3C: Interrupt Mask                              0x003f
      LinkChg RxNoBuf TxErr TxOK RxErr RxOK
0x3E: Interrupt Status                            0x0000

0x40: Tx Configuration                        0x5f800f80
0x44: Rx Configuration                        0x0002cf0f
0x48: Timer count                             0x00000000
0x4C: Missed packet counter                     0x000000
0x50: EEPROM Command                                0x10
0x51: Config 0                                      0x00
0x52: Config 1                                      0xcf
0x53: Config 2                                      0x3c
0x54: Config 3                                      0x60
0x55: Config 4                                      0x11
0x56: Config 5                                      0x02
0x58: Timer interrupt                         0x00000000
0x5C: Multiple Interrupt Select                   0x0000
0x60: PHY access                              0x00000000
0x64: TBI control and status                  0x12011025
0x68: TBI Autonegotiation advertisement (ANAR)    0xf02c
0x6A: TBI Link partner ability (LPAR)             0x8000
0x6C: PHY status                                    0xeb
0x84: PM wakeup frame 0            0x00000000 0x00000000
0x8C: PM wakeup frame 1            0x00000000 0x00000000
0x94: PM wakeup frame 2 (low)      0x00000000 0x00000000
0x9C: PM wakeup frame 2 (high)     0x00000000 0x00000000
0xA4: PM wakeup frame 3 (low)      0x00000000 0x00000000
0xAC: PM wakeup frame 3 (high)     0x00000000 0x00000001
0xB4: PM wakeup frame 4 (low)      0x00000000 0xd205cde1
0xBC: PM wakeup frame 4 (high)     0x00000000 0x00000000
0xC4: Wakeup frame 0 CRC                          0x0000
0xC6: Wakeup frame 1 CRC                          0x0000
0xC8: Wakeup frame 2 CRC                          0x0000
0xCA: Wakeup frame 3 CRC                          0x0000
0xCC: Wakeup frame 4 CRC                          0x0000
0xDA: RX packet maximum size                      0x4000
0xE0: C+ Command                                  0x2060
      VLAN de-tagging
      RX checksumming
0xE2: Interrupt Mitigation                        0x0000
      TxTimer:       0
      TxPackets:     0
      RxTimer:       0
      RxPackets:     0
0xE4: Rx Ring Addr                 0xff50f000 0x00000000
0xEC: Early Tx threshold                            0x27
0xF0: Func Event                              0x0000003f
0xF4: Func Event Mask                         0x00000000
0xF8: Func Preset State                       0x00000003
0xFC: Func Force Event                        0x00000000

From kernel 5.9.3

ethtool -d enp1s0f1
RealTek RTL8411 registers:
--------------------------------------------------------
0x00: MAC Address                      98:29:a6:e6:e5:6a
0x08: Multicast Address Filter     0xffffffff 0xffffffff
0x10: Dump Tally Counter Command   0xffffe000 0x00000000
0x20: Tx Normal Priority Ring Addr 0xff582000 0x00000000
0x28: Tx High Priority Ring Addr   0x00000000 0x00000000
0x30: Flash memory read/write                 0x00000000
0x34: Early Rx Byte Count                              0
0x36: Early Rx Status                               0x00
0x37: Command                                       0x0c
      Rx on, Tx on
0x3C: Interrupt Mask                              0x003f
      LinkChg RxNoBuf TxErr TxOK RxErr RxOK
0x3E: Interrupt Status                            0x0000

0x40: Tx Configuration                        0x5f800f80
0x44: Rx Configuration                        0x0002cf0f
0x48: Timer count                             0x00000000
0x4C: Missed packet counter                     0x000000
0x50: EEPROM Command                                0x10
0x51: Config 0                                      0x00
0x52: Config 1                                      0xcf
0x53: Config 2                                      0x3c
0x54: Config 3                                      0x60
0x55: Config 4                                      0x11
0x56: Config 5                                      0x02
0x58: Timer interrupt                         0x00000000
0x5C: Multiple Interrupt Select                   0x0000
0x60: PHY access                              0x00000000
0x64: TBI control and status                  0x12011025
0x68: TBI Autonegotiation advertisement (ANAR)    0xf02c
0x6A: TBI Link partner ability (LPAR)             0x8000
0x6C: PHY status                                    0xeb
0x84: PM wakeup frame 0            0x00000000 0x00000000
0x8C: PM wakeup frame 1            0x00000000 0x00000000
0x94: PM wakeup frame 2 (low)      0x00000000 0x00000000
0x9C: PM wakeup frame 2 (high)     0x00000000 0x00000000
0xA4: PM wakeup frame 3 (low)      0x00000000 0x00000000
0xAC: PM wakeup frame 3 (high)     0x00000000 0x00000001
0xB4: PM wakeup frame 4 (low)      0x00000000 0xd21a30de
0xBC: PM wakeup frame 4 (high)     0x00000000 0x00000000
0xC4: Wakeup frame 0 CRC                          0x0000
0xC6: Wakeup frame 1 CRC                          0x0000
0xC8: Wakeup frame 2 CRC                          0x0000
0xCA: Wakeup frame 3 CRC                          0x0000
0xCC: Wakeup frame 4 CRC                          0x0000
0xDA: RX packet maximum size                      0x4000
0xE0: C+ Command                                  0x2060
      VLAN de-tagging
      RX checksumming
0xE2: Interrupt Mitigation                        0x0000
      TxTimer:       0
      TxPackets:     0
      RxTimer:       0
      RxPackets:     0
0xE4: Rx Ring Addr                 0xff583000 0x00000000
0xEC: Early Tx threshold                            0x27
0xF0: Func Event                              0x0000003f
0xF4: Func Event Mask                         0x00000000
0xF8: Func Preset State                       0x00000003
0xFC: Func Force Event                        0x00000000


I also noticed this message when ran update-initramfs -k all -u when
installed kernel 5.9.3.
I had made a git clone from linux-firmware and copied this missed
firmware but no change!

W: Possible missing firmware /lib/firmware/rtl_nic/rtl8125b-2.fw for
module r8169



---
Gilberto Nunes Ferreira



Em seg., 2 de nov. de 2020 às 10:40, Heiner Kallweit
<hkallweit1@gmail.com> escreveu:
>
> On 02.11.2020 14:20, Gilberto Nunes wrote:
> > Hi
> >
> > ethtool using 5.4
> >
> ethtool doesn't know about the actual speed, because the downshift
> occurs PHY-internally. Please test actual the speed.
> Alternatively provide the output of ethtool -d <if>, the RTL8169
> chip family has an internal register refkecting the actual link speed.

^ permalink raw reply	[relevance 4%]

* RE: [PATCH net-next 1/2] net: phy: realtek: Add phy ids for RTL8226-CG/RTL8226B-CG
  2020-10-29 13:48  5%   ` Heiner Kallweit
@ 2020-10-30  2:45  0%     ` Willy Liu
  0 siblings, 0 replies; 107+ results
From: Willy Liu @ 2020-10-30  2:45 UTC (permalink / raw)
  To: Heiner Kallweit, Andrew Lunn; +Cc: linux, davem, kuba, netdev, linux-kernel

On Thu, Oct 29, 2020 21:49, Heiner Hallweit wrote:
> On 29.10.2020 14:37, Andrew Lunn wrote:
> > On Thu, Oct 29, 2020 at 08:07:57PM +0800, Willy Liu wrote:
> >> Realtek single-port 2.5Gbps Ethernet PHY ids as below:
> >> RTL8226-CG: 0x001cc800(ES)/0x001cc838(MP)
> >> RTL8226B-CG/RTL8221B-CG: 0x001cc840(ES)/0x001cc848(MP)
> >> ES: engineer sample
> >> MP: mass production
> >>
> >> Since above PHYs are already in mass production stage, mass
> >> production id should be added.
> >>
> >> Signed-off-by: Willy Liu <willy.liu@realtek.com>
> >> ---
> >>  drivers/net/phy/realtek.c | 18 ++++++++++++++----
> >>  1 file changed, 14 insertions(+), 4 deletions(-)  mode change 100644
> >> => 100755 drivers/net/phy/realtek.c
> >>
> >> diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
> >> old mode 100644 new mode 100755 index fb1db71..988f075
> >> --- a/drivers/net/phy/realtek.c
> >> +++ b/drivers/net/phy/realtek.c
> >> @@ -57,6 +57,9 @@
> >>  #define RTLGEN_SPEED_MASK			0x0630
> >>
> >>  #define RTL_GENERIC_PHYID			0x001cc800
> >> +#define RTL_8226_MP_PHYID			0x001cc838
> >> +#define RTL_8221B_ES_PHYID			0x001cc840
> >> +#define RTL_8221B_MP_PHYID			0x001cc848
> >>
> >>  MODULE_DESCRIPTION("Realtek PHY driver");
> MODULE_AUTHOR("Johnson
> >> Leung"); @@ -533,10 +536,17 @@ static int
> >> rtlgen_match_phy_device(struct phy_device *phydev)
> >>
> >>  static int rtl8226_match_phy_device(struct phy_device *phydev)  {
> >> -	return phydev->phy_id == RTL_GENERIC_PHYID &&
> >> +	return (phydev->phy_id == RTL_GENERIC_PHYID) ||
> >> +	       (phydev->phy_id == RTL_8226_MP_PHYID) &&
> >>  	       rtlgen_supports_2_5gbps(phydev);
> >
> > Hi Willy
> >
> > If i understand the code correctly, this match function is used
> > because the engineering sample did not use a proper ID? The mass
> > production part does, so there is no need to make use of this hack.
> > Please just list it as a normal PHY using PHY_ID_MATCH_EXACT().
> >
> Right. My understanding:
> These PHY's exist as standalone chips and integrated with RTL8125 MAC.
> IIRC for RTL8125A the integrated PHY reports RTL_GENERIC_PHYID, since
> RTL8125B it reports the same PHYID as the standalone model.
Hi Andrew && Heiner,
Thanks for your information, I will create drivers for RTL8226-CG & RTL8221B-CG
as standalone models.
 
> ------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 0%]

* Re: [PATCH net-next 1/2] net: phy: realtek: Add phy ids for RTL8226-CG/RTL8226B-CG
  @ 2020-10-29 13:48  5%   ` Heiner Kallweit
  2020-10-30  2:45  0%     ` Willy Liu
  0 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2020-10-29 13:48 UTC (permalink / raw)
  To: Andrew Lunn, Willy Liu; +Cc: linux, davem, kuba, netdev, linux-kernel

On 29.10.2020 14:37, Andrew Lunn wrote:
> On Thu, Oct 29, 2020 at 08:07:57PM +0800, Willy Liu wrote:
>> Realtek single-port 2.5Gbps Ethernet PHY ids as below:
>> RTL8226-CG: 0x001cc800(ES)/0x001cc838(MP)
>> RTL8226B-CG/RTL8221B-CG: 0x001cc840(ES)/0x001cc848(MP)
>> ES: engineer sample
>> MP: mass production
>>
>> Since above PHYs are already in mass production stage,
>> mass production id should be added.
>>
>> Signed-off-by: Willy Liu <willy.liu@realtek.com>
>> ---
>>  drivers/net/phy/realtek.c | 18 ++++++++++++++----
>>  1 file changed, 14 insertions(+), 4 deletions(-)
>>  mode change 100644 => 100755 drivers/net/phy/realtek.c
>>
>> diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
>> old mode 100644
>> new mode 100755
>> index fb1db71..988f075
>> --- a/drivers/net/phy/realtek.c
>> +++ b/drivers/net/phy/realtek.c
>> @@ -57,6 +57,9 @@
>>  #define RTLGEN_SPEED_MASK			0x0630
>>  
>>  #define RTL_GENERIC_PHYID			0x001cc800
>> +#define RTL_8226_MP_PHYID			0x001cc838
>> +#define RTL_8221B_ES_PHYID			0x001cc840
>> +#define RTL_8221B_MP_PHYID			0x001cc848
>>  
>>  MODULE_DESCRIPTION("Realtek PHY driver");
>>  MODULE_AUTHOR("Johnson Leung");
>> @@ -533,10 +536,17 @@ static int rtlgen_match_phy_device(struct phy_device *phydev)
>>  
>>  static int rtl8226_match_phy_device(struct phy_device *phydev)
>>  {
>> -	return phydev->phy_id == RTL_GENERIC_PHYID &&
>> +	return (phydev->phy_id == RTL_GENERIC_PHYID) ||
>> +	       (phydev->phy_id == RTL_8226_MP_PHYID) &&
>>  	       rtlgen_supports_2_5gbps(phydev);
> 
> Hi Willy
> 
> If i understand the code correctly, this match function is used
> because the engineering sample did not use a proper ID? The mass
> production part does, so there is no need to make use of this
> hack. Please just list it as a normal PHY using PHY_ID_MATCH_EXACT().
> 
Right. My understanding:
These PHY's exist as standalone chips and integrated with RTL8125 MAC.
IIRC for RTL8125A the integrated PHY reports RTL_GENERIC_PHYID, since
RTL8125B it reports the same PHYID as the standalone model.

^ permalink raw reply	[relevance 5%]

* [PATCH net v1] net: phy: realtek: Modify 2.5G PHY name to RTL8226
@ 2020-09-30  6:48  5% Willy Liu
  0 siblings, 0 replies; 107+ results
From: Willy Liu @ 2020-09-30  6:48 UTC (permalink / raw)
  To: andrew
  Cc: hkallweit1, linux, davem, kuba, netdev, linux-kernel, ryankao, Willy Liu

Realtek single-chip Ethernet PHY solutions can be separated as below:
10M/100Mbps: RTL8201X
1Gbps: RTL8211X
2.5Gbps: RTL8226/RTL8221X
RTL8226 is the first version for realtek that compatible 2.5Gbps single PHY.
Since RTL8226 is single port only, realtek changes its name to RTL8221B from
the second version.
PHY ID for RTL8226 is 0x001cc800 and RTL8226B/RTL8221B is 0x001cc840.

RTL8125 is not a single PHY solution, it integrates PHY/MAC/PCIE bus
controller and embedded memory.

Signed-off-by: Willy Liu <willy.liu@realtek.com>
---
 drivers/net/phy/realtek.c | 38 +++++++++++++++++++-------------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
index 0f09609..f207607 100644
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -401,7 +401,7 @@ static int rtlgen_write_mmd(struct phy_device *phydev, int devnum, u16 regnum,
 	return ret;
 }
 
-static int rtl8125_read_mmd(struct phy_device *phydev, int devnum, u16 regnum)
+static int rtl822x_read_mmd(struct phy_device *phydev, int devnum, u16 regnum)
 {
 	int ret = rtlgen_read_mmd(phydev, devnum, regnum);
 
@@ -425,7 +425,7 @@ static int rtl8125_read_mmd(struct phy_device *phydev, int devnum, u16 regnum)
 	return ret;
 }
 
-static int rtl8125_write_mmd(struct phy_device *phydev, int devnum, u16 regnum,
+static int rtl822x_write_mmd(struct phy_device *phydev, int devnum, u16 regnum,
 			     u16 val)
 {
 	int ret = rtlgen_write_mmd(phydev, devnum, regnum, val);
@@ -442,7 +442,7 @@ static int rtl8125_write_mmd(struct phy_device *phydev, int devnum, u16 regnum,
 	return ret;
 }
 
-static int rtl8125_get_features(struct phy_device *phydev)
+static int rtl822x_get_features(struct phy_device *phydev)
 {
 	int val;
 
@@ -460,7 +460,7 @@ static int rtl8125_get_features(struct phy_device *phydev)
 	return genphy_read_abilities(phydev);
 }
 
-static int rtl8125_config_aneg(struct phy_device *phydev)
+static int rtl822x_config_aneg(struct phy_device *phydev)
 {
 	int ret = 0;
 
@@ -480,7 +480,7 @@ static int rtl8125_config_aneg(struct phy_device *phydev)
 	return __genphy_config_aneg(phydev, ret);
 }
 
-static int rtl8125_read_status(struct phy_device *phydev)
+static int rtl822x_read_status(struct phy_device *phydev)
 {
 	int ret;
 
@@ -522,7 +522,7 @@ static int rtlgen_match_phy_device(struct phy_device *phydev)
 	       !rtlgen_supports_2_5gbps(phydev);
 }
 
-static int rtl8125_match_phy_device(struct phy_device *phydev)
+static int rtl8226_match_phy_device(struct phy_device *phydev)
 {
 	return phydev->phy_id == RTL_GENERIC_PHYID &&
 	       rtlgen_supports_2_5gbps(phydev);
@@ -627,29 +627,29 @@ static int rtlgen_resume(struct phy_device *phydev)
 		.read_mmd	= rtlgen_read_mmd,
 		.write_mmd	= rtlgen_write_mmd,
 	}, {
-		.name		= "RTL8125 2.5Gbps internal",
-		.match_phy_device = rtl8125_match_phy_device,
-		.get_features	= rtl8125_get_features,
-		.config_aneg	= rtl8125_config_aneg,
-		.read_status	= rtl8125_read_status,
+		.name		= "RTL8226 2.5Gbps PHY",
+		.match_phy_device = rtl8226_match_phy_device,
+		.get_features	= rtl822x_get_features,
+		.config_aneg	= rtl822x_config_aneg,
+		.read_status	= rtl822x_read_status,
 		.suspend	= genphy_suspend,
 		.resume		= rtlgen_resume,
 		.read_page	= rtl821x_read_page,
 		.write_page	= rtl821x_write_page,
-		.read_mmd	= rtl8125_read_mmd,
-		.write_mmd	= rtl8125_write_mmd,
+		.read_mmd	= rtl822x_read_mmd,
+		.write_mmd	= rtl822x_write_mmd,
 	}, {
 		PHY_ID_MATCH_EXACT(0x001cc840),
-		.name		= "RTL8125B 2.5Gbps internal",
-		.get_features	= rtl8125_get_features,
-		.config_aneg	= rtl8125_config_aneg,
-		.read_status	= rtl8125_read_status,
+		.name		= "RTL8226B_RTL8221B 2.5Gbps PHY",
+		.get_features	= rtl822x_get_features,
+		.config_aneg	= rtl822x_config_aneg,
+		.read_status	= rtl822x_read_status,
 		.suspend	= genphy_suspend,
 		.resume		= rtlgen_resume,
 		.read_page	= rtl821x_read_page,
 		.write_page	= rtl821x_write_page,
-		.read_mmd	= rtl8125_read_mmd,
-		.write_mmd	= rtl8125_write_mmd,
+		.read_mmd	= rtl822x_read_mmd,
+		.write_mmd	= rtl822x_write_mmd,
 	}, {
 		PHY_ID_MATCH_EXACT(0x001cc961),
 		.name		= "RTL8366RB Gigabit Ethernet",
-- 
1.9.1


^ permalink raw reply related	[relevance 5%]

* [PATCH] net: phy: realtek: Replace 2.5Gbps name from RTL8125 to RTL8226
@ 2020-09-17  1:39  5% Willy Liu
  0 siblings, 0 replies; 107+ results
From: Willy Liu @ 2020-09-17  1:39 UTC (permalink / raw)
  To: hkallweit1
  Cc: davem, andrew, linux, kuba, ryankao, netdev, linux-kernel, Willy Liu

According to PHY ID, 0x001cc800 should be named "RTL8226 2.5Gbps PHY"
and 0x001cc840 should be named "RTL8226B_RTL8221B 2.5Gbps PHY".
RTL8125 is not a single PHY solution, it integrates PHY/MAC/PCIE bus
controller and embedded memory.

Signed-off-by: Willy Liu <willy.liu@realtek.com>
---
 drivers/net/phy/realtek.c | 38 +++++++++++++++++++-------------------
 1 file changed, 19 insertions(+), 19 deletions(-)
 mode change 100644 => 100755 drivers/net/phy/realtek.c

diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
old mode 100644
new mode 100755
index 95dbe5e..a98b09d
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -400,7 +400,7 @@ static int rtlgen_write_mmd(struct phy_device *phydev, int devnum, u16 regnum,
 	return ret;
 }
 
-static int rtl8125_read_mmd(struct phy_device *phydev, int devnum, u16 regnum)
+static int rtl822x_read_mmd(struct phy_device *phydev, int devnum, u16 regnum)
 {
 	int ret = rtlgen_read_mmd(phydev, devnum, regnum);
 
@@ -424,7 +424,7 @@ static int rtl8125_read_mmd(struct phy_device *phydev, int devnum, u16 regnum)
 	return ret;
 }
 
-static int rtl8125_write_mmd(struct phy_device *phydev, int devnum, u16 regnum,
+static int rtl822x_write_mmd(struct phy_device *phydev, int devnum, u16 regnum,
 			     u16 val)
 {
 	int ret = rtlgen_write_mmd(phydev, devnum, regnum, val);
@@ -441,7 +441,7 @@ static int rtl8125_write_mmd(struct phy_device *phydev, int devnum, u16 regnum,
 	return ret;
 }
 
-static int rtl8125_get_features(struct phy_device *phydev)
+static int rtl822x_get_features(struct phy_device *phydev)
 {
 	int val;
 
@@ -459,7 +459,7 @@ static int rtl8125_get_features(struct phy_device *phydev)
 	return genphy_read_abilities(phydev);
 }
 
-static int rtl8125_config_aneg(struct phy_device *phydev)
+static int rtl822x_config_aneg(struct phy_device *phydev)
 {
 	int ret = 0;
 
@@ -479,7 +479,7 @@ static int rtl8125_config_aneg(struct phy_device *phydev)
 	return __genphy_config_aneg(phydev, ret);
 }
 
-static int rtl8125_read_status(struct phy_device *phydev)
+static int rtl822x_read_status(struct phy_device *phydev)
 {
 	int ret;
 
@@ -521,7 +521,7 @@ static int rtlgen_match_phy_device(struct phy_device *phydev)
 	       !rtlgen_supports_2_5gbps(phydev);
 }
 
-static int rtl8125_match_phy_device(struct phy_device *phydev)
+static int rtl8226_match_phy_device(struct phy_device *phydev)
 {
 	return phydev->phy_id == RTL_GENERIC_PHYID &&
 	       rtlgen_supports_2_5gbps(phydev);
@@ -626,29 +626,29 @@ static int rtlgen_resume(struct phy_device *phydev)
 		.read_mmd	= rtlgen_read_mmd,
 		.write_mmd	= rtlgen_write_mmd,
 	}, {
-		.name		= "RTL8125 2.5Gbps internal",
-		.match_phy_device = rtl8125_match_phy_device,
-		.get_features	= rtl8125_get_features,
-		.config_aneg	= rtl8125_config_aneg,
-		.read_status	= rtl8125_read_status,
+		.name		= "RTL8226 2.5Gbps PHY",
+		.match_phy_device = rtl8226_match_phy_device,
+		.get_features	= rtl822x_get_features,
+		.config_aneg	= rtl822x_config_aneg,
+		.read_status	= rtl822x_read_status,
 		.suspend	= genphy_suspend,
 		.resume		= rtlgen_resume,
 		.read_page	= rtl821x_read_page,
 		.write_page	= rtl821x_write_page,
-		.read_mmd	= rtl8125_read_mmd,
-		.write_mmd	= rtl8125_write_mmd,
+		.read_mmd	= rtl822x_read_mmd,
+		.write_mmd	= rtl822x_write_mmd,
 	}, {
 		PHY_ID_MATCH_EXACT(0x001cc840),
-		.name		= "RTL8125B 2.5Gbps internal",
-		.get_features	= rtl8125_get_features,
-		.config_aneg	= rtl8125_config_aneg,
-		.read_status	= rtl8125_read_status,
+		.name		= "RTL8226B_RTL8221B 2.5Gbps PHY",
+		.get_features	= rtl822x_get_features,
+		.config_aneg	= rtl822x_config_aneg,
+		.read_status	= rtl822x_read_status,
 		.suspend	= genphy_suspend,
 		.resume		= rtlgen_resume,
 		.read_page	= rtl821x_read_page,
 		.write_page	= rtl821x_write_page,
-		.read_mmd	= rtl8125_read_mmd,
-		.write_mmd	= rtl8125_write_mmd,
+		.read_mmd	= rtl822x_read_mmd,
+		.write_mmd	= rtl822x_write_mmd,
 	}, {
 		PHY_ID_MATCH_EXACT(0x001cc961),
 		.name		= "RTL8366RB Gigabit Ethernet",
-- 
1.9.1


^ permalink raw reply related	[relevance 5%]

* Re: missing support for certain realtek 8125-chip
  @ 2020-08-22 14:52  5% ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2020-08-22 14:52 UTC (permalink / raw)
  To: netdev, netdev

On 22.08.2020 09:27, netdev@dvl.sh-ks.net wrote:
> hi.
> 
> we've got a odroid h2+ from hardkernel with two realtek 8125 chips
> onboard, but the r8169-driver doesn't work with them.
> 
> on module-load we got "unknown chip XID 641" for both.
> 
> the chips themselves are labled as:
> 
> RTL 8125B
>   JCS07H2
>      GK08
> 
> maybe it's only an additional line in mac_info to support these chips,
> but no one here is experienced enough to decide/try this.
> 
> 
> it would be nice, if someone here with more experience can say something
> about or perhaps add support for that chip.
> 
> thanks.
> 
> regards
> 
> sh-ks
> 
Kernel 5.9 comes with support for RTL8125B.
There's a number of related discussions in the Odroid forums, see e.g. here:
https://forum.odroid.com/viewtopic.php?f=168&p=303453

^ permalink raw reply	[relevance 5%]

* [GIT] Networking
@ 2020-08-06  1:55  1% David Miller
  0 siblings, 0 replies; 107+ results
From: David Miller @ 2020-08-06  1:55 UTC (permalink / raw)
  To: torvalds; +Cc: akpm, netdev, linux-kernel


There is a minor conflict in net/ipv6/ip6_flowlabel.c, it's because of
the commit that did the tree-wide removal of uninitialized_var().  The
resolution is simple, kill all of the conflict markers and content
within, and remove the uninitialized_var() marker that got moved
elsewhere in the file in the net-next tree.

Otherwise, we have:

1) Support 6Ghz band in ath11k driver, from Rajkumar Manoharan.

2) Support UDP segmentation in code TSO code, from Eric Dumazet.

3) Allow flashing different flash images in cxgb4 driver, from Vishal
   Kulkarni.

4) Add drop frames counter and flow status to tc flower offloading,
   from Po Liu.

5) Support n-tuple filters in cxgb4, from Vishal Kulkarni.

6) Various new indirect call avoidance, from Eric Dumazet and Brian
   Vazquez.

7) Fix BPF verifier failures on 32-bit pointer arithmetic, from
   Yonghong Song.

8) Support querying and setting hardware address of a port function
   via devlink, use this in mlx5, from Parav Pandit.

9) Support hw ipsec offload on bonding slaves, from Jarod Wilson.

10) Switch qca8k driver over to phylink, from Jonathan McDowell.

11) In bpftool, show list of processes holding BPF FD references to
    maps, programs, links, and btf objects.  From Andrii Nakryiko.

12) Several conversions over to generic power management, from Vaibhav
    Gupta.

13) Add support for SO_KEEPALIVE et al. to bpf_setsockopt(), from
    Dmitry Yakunin.

14) Various https url conversions, from Alexander A. Klimov.

15) Timestamping and PHC support for mscc PHY driver, from Antoine
    Tenart.

16) Support bpf iterating over tcp and udp sockets, from Yonghong
    Song.

17) Support 5GBASE-T i40e NICs, from Aleksandr Loktionov.

18) Add kTLS RX HW offload support to mlx5e, from Tariq Toukan.

19) Fix the ->ndo_start_xmit() return type to be netdev_tx_t in several
    drivers.  From Luc Van Oostenryck.

20) XDP support for xen-netfront, from Denis Kirjanov.

21) Support receive buffer autotuning in MPTCP, from Florian Westphal.

22) Support EF100 chip in sfc driver, from Edward Cree.

23) Add XDP support to mvpp2 driver, from Matteo Croce.

24) Support MPTCP in sock_diag, from Paolo Abeni.

25) Commonize UDP tunnel offloading code by creating udp_tunnel_nic
    infrastructure, from Jakub Kicinski.

26) Several pci_ --> dma_ API conversions, from Christophe JAILLET.

27) Add FLOW_ACTION_POLICE support to mlxsw, from Ido Schimmel.

28) Add SK_LOOKUP bpf program type, from Jakub Sitnicki.

29) Refactor a lot of networking socket option handling code in
    order to avoid set_fs() calls, from Christoph Hellwig.

30) Add rfc4884 support to icmp code, from Willem de Bruijn.

31) Support TBF offload in dpaa2-eth driver, from Ioana Ciornei.

32) Support XDP_REDIRECT in qede driver, from Alexander Lobakin.

33) Support PCI relaxed ordering in mlx5 driver, from Aya Levin.

34) Support TCP syncookies in MPTCP, from Flowian Westphal.

35) Fix several tricky cases of PMTU handling wrt. briding, from
    Stefano Brivio.

Please pull, thanks a lot!

The following changes since commit ac3a0c8472969a03c0496ae774b3a29eb26c8d5a:

  Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net (2020-08-01 16:47:24 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git 

for you to fetch changes up to c1055b76ad00aed0e8b79417080f212d736246b6:

  net: thunderx: initialize VF's mailbox mutex before first usage (2020-08-05 17:50:34 -0700)

----------------------------------------------------------------
Aaron Ma (1):
      rtw88: 8822ce: add support for device ID 0xc82f

Abhishek Pandit-Subedi (15):
      Bluetooth: Allow suspend even when preparation has failed
      Bluetooth: btmrvl_sdio: Set parent dev to hdev
      Bluetooth: btmrvl_sdio: Implement prevent_wake
      Bluetooth: btmrvl_sdio: Refactor irq wakeup
      Bluetooth: Add bdaddr_list_with_flags for classic whitelist
      Bluetooth: Replace wakeable list with flag
      Bluetooth: Replace wakeable in hci_conn_params
      Bluetooth: Add get/set device flags mgmt op
      Bluetooth: Add hci_dev_lock to get/set device flags
      Bluetooth: btusb: Reset port on cmd timeout
      Bluetooth: btusb: BTUSB_WAKEUP_DISABLE prevents wake
      Bluetooth: Don't restart scanning if paused
      Bluetooth: btusb: Comment on unbalanced pm reference
      Bluetooth: Fix suspend notifier race
      Revert "Bluetooth: btusb: Disable runtime suspend on Realtek devices"

Able Liao (1):
      brcmfmac: do not disconnect for disassoc frame from unconnected AP

Ajay Singh (6):
      wilc1000: move wilc driver out of staging
      wilc1000: use strlcpy to avoid 'stringop-truncation' warning
      wilc1000: fix compiler warning for 'wowlan_support' unused variable
      wilc1000: use unified single wilc1000 FW binary
      wilc1000: use API version number info along with firmware filename
      wilc1000: Move wilc1000 SDIO ID's from driver source to common header file

Akeem G Abodunrin (1):
      ice: Add advanced power mgmt for WoL

Alaa Hleihel (1):
      net/mlx5e: Move including net/arp.h from en_rep.c to rep/neigh.c

Alain Michaud (11):
      Bluetooth: Removing noisy dbg message
      Bluetooth: Add support for BT_PKT_STATUS CMSG data for SCO connections
      Bluetooth: Use only 8 bits for the HCI CMSG state flags
      Bluetooth: mgmt: read/set system parameter definitions
      Bluetooth: centralize default value initialization.
      Bluetooth: implement read/set default system parameters mgmt
      Bluetooth: use configured params for ext adv
      Bluetooth: Adding a configurable autoconnect timeout
      Bluetooth: use configured default params for active scans
      Bluetooth: le_simult_central_peripheral experimental feature
      Bluetooth: use the proper scan params when conn is pending

Alan Maguire (2):
      bpf: Use dedicated bpf_trace_printk event instead of trace_printk()
      selftests/bpf: Add selftests verifying bpf_trace_printk() behaviour

Aleksandr Loktionov (2):
      i40e: Add support for 5Gbps cards
      i40e: Remove scheduling while atomic possibility

Alex Elder (18):
      net: ipa: rework ipa_aggr_granularity_val()
      net: ipa: reduce aggregation time limit
      net: ipa: reuse a local variable in ipa_endpoint_init_aggr()
      net: ipa: always report GSI state errors
      net: ipa: standarize more GSI error messages
      net: ipa: kill IPA_MEM_UC_OFFSET
      net: ipa: head-of-line block registers are RX only
      net: ipa: metadata_mask register is RX only
      net: ipa: mode register is TX only
      net: ipa: clarify endpoint register macro constraints
      net: ipa: HOL_BLOCK_EN_FMASK is a 1-bit mask
      net: ipa: move version test inside ipa_endpoint_program_delay()
      net: ipa: always handle suspend workaround
      net: ipa: move version test inside ipa_endpoint_program_suspend()
      net: ipa: simplify ipa_endpoint_program()
      net: ipa: introduce ipa_clock_rate()
      net: ipa: fix HOLB timer calculation
      net: ipa: fix kerneldoc comments

Alex Marginean (1):
      net: enetc: Use DT protocol information to set up the ports

Alex Vesker (2):
      net/mlx5: DR, Reduce print level for matcher print
      net/mlx5: DR, Change push vlan action sequence

Alexander A. Klimov (22):
      Replace HTTP links with HTTPS ones: IPv*
      Replace HTTP links with HTTPS ones: GRETH 10/100/1G Ethernet MAC device driver
      Replace HTTP links with HTTPS ones: X.25 network layer
      Replace HTTP links with HTTPS ones: ATMEL MACB ETHERNET DRIVER
      Replace HTTP links with HTTPS ones: BLUETOOTH SUBSYSTEM
      dccp: Replace HTTP links with HTTPS ones
      AX.25 Kconfig: Replace HTTP links with HTTPS ones
      WAN: Replace HTTP links with HTTPS ones
      atm: Replace HTTP links with HTTPS ones
      isdn/capi: Replace HTTP links with HTTPS ones
      net: ethernet: Replace HTTP links with HTTPS ones
      net: jme: Replace HTTP links with HTTPS ones
      net: wan: cosa: Replace HTTP links with HTTPS ones
      wan: Replace HTTP links with HTTPS ones
      ssb: Replace HTTP links with HTTPS ones
      net: sundance: Replace HTTP links with HTTPS ones
      netfilter: Replace HTTP links with HTTPS ones
      Documentation: intel: Replace HTTP links with HTTPS ones
      prism54: Replace HTTP links with HTTPS ones
      ipw2x00: Replace HTTP links with HTTPS ones
      b43: Replace HTTP links with HTTPS ones
      b43legacy: Replace HTTP links with HTTPS ones

Alexander Lobakin (47):
      net: qed: correct existing SPDX tags
      net: qed: convert to SPDX License Identifiers
      net: qed: update copyright years
      net: qede: correct existing SPDX tags
      net: qede: convert to SPDX License Identifiers
      net: qede: update copyright years
      net: qed: move static iro_arr[] out of header file
      net: qed: cleanup global structs declarations
      net: qed: correct qed_hw_err_notify() prototype
      net: qed: address kernel-doc warnings
      net: qed: improve indentation of some parts of code
      net: qed: use ptr shortcuts to dedup field accessing in some parts
      net: qed: sanitize BE/LE data processing
      net: qede: fix kernel-doc for qede_ptp_adjfreq()
      net: qede: fix BE vs CPU comparison
      linkmode: introduce linkmode_intersects()
      qed, qede, qedf: convert link mode from u32 to ETHTOOL_LINK_MODE
      qede: populate supported link modes maps on module init
      qed: reformat public_port::transceiver_data a bit
      qed: add support for multi-rate transceivers
      qed: use transceiver data to fill link partner's advertising speeds
      qed: reformat several structures a bit
      qed: add support for Forward Error Correction
      qede: format qede{,_vf}_ethtool_ops
      qede: introduce support for FEC control
      qed: reformat several structures a bit
      qed: remove unused qed_hw_info::port_mode and QED_PORT_MODE
      qed: add support for new port modes
      qed: add missing loopback modes
      qed: populate supported link modes maps on module init
      qed: add support for the extended speed and FEC modes
      qed: reformat "qed_chain.h" a bit
      qed: reformat Makefile
      qed: move chain methods to a separate file
      qed: prevent possible double-frees of the chains
      qed: sanitize PBL chains allocation
      qed: move chain initialization inlines next to allocation functions
      qed: simplify initialization of the chains with an external PBL
      qed: simplify chain allocation with init params struct
      qed: add support for different page sizes for chains
      qed: optimize common chain accessors
      qed: introduce qed_chain_get_elem_used{,u32}()
      qede: reformat several structures in "qede.h"
      qede: reformat net_device_ops declarations
      qede: refactor XDP Tx processing
      qede: add .ndo_xdp_xmit() and XDP_REDIRECT support
      qed: fix the allocation of the chains with an external PBL

Alexander Wetzel (1):
      iwlwifi: Extended Key ID support for mvm and dvm

Alexandre Cassen (1):
      rtnetlink: add keepalived rtm_protocol

Alexei Starovoitov (24):
      Merge branch 'bpftool-show-pid'
      Merge up to bpf_probe_read_kernel_str() fix into bpf-next
      selftests/bpf: Workaround for get_stack_rawtp test.
      Merge branch 'bpf_iter_tcp_udp'
      Merge branch 'libbpf_autoload_knob'
      bpf: Remove redundant synchronize_rcu.
      Merge branch 'bpf_get_task_stack'
      Merge branch 'test_progs-improvements'
      Merge branch 'resolve_btfids'
      Merge branch 'af_xdp-stats'
      Merge branch 'trace_printk-banner-remove'
      Merge branch 'strip-mods-from-global-vars'
      selftests/bpf: Fix merge conflict resolution
      Merge branch 'usermode-driver-cleanup' of git://git.kernel.org/.../ebiederm/user-namespace into bpf-next
      bpfilter: Initialize pos variable
      Merge branch 'bpf-socket-lookup'
      Merge branch 'compressed-JITed-insn'
      Merge branch 'bpf_iter-BTF_ID-at-build-time'
      bpf: Add bpf_prog iterator
      Merge branch 'bpf_iter-for-map-elems'
      Merge branch 'fix-bpf_get_stack-with-PEBS'
      Merge branch 'shared-cgroup-storage'
      Merge branch 'bpf_link-XDP'
      Merge branch 'link_detach'

Amar Shankar (1):
      brcmfmac: reserve 2 credits for host tx control path

Amit Cohen (16):
      mlxsw: spectrum_dcb: Rename mlxsw_sp_port_headroom_set()
      mlxsw: Move ethtool_ops to spectrum_ethtool.c
      mlxsw: spectrum_ethtool: Move mlxsw_sp_port_type_speed_ops structs
      Documentation: networking: ethtool-netlink: Add link extended state
      ethtool: Add link extended state
      mlxsw: reg: Port Diagnostics Database Register
      mlxsw: spectrum_ethtool: Add link extended state
      selftests: forwarding: ethtool: Move different_speeds_get() to ethtool_lib
      selftests: forwarding: forwarding.config.sample: Add port with no cable connected
      selftests: forwarding: Add tests for ethtool extended state
      mlxsw: reg: Add Monitoring Mirror Trigger Enable Register
      mlxsw: reg: Add Monitoring Port Analyzer Global Register
      mlxsw: reg: Add session_id and pid to MPAT register
      mlxsw: reg: add mirroring_pid_base to MOGCR register
      mlxsw: reg: Increase trap identifier to 10 bits
      devlink: Add early_drop trap

Amritha Nambiar (1):
      net: Avoid overwriting valid skb->napi_id

Andre Guedes (6):
      igc: Clean up Rx timestamping logic
      igc: Remove duplicate code in Tx timestamp handling
      igc: Check __IGC_PTP_TX_IN_PROGRESS instead of ptp_tx_skb
      igc: Remove UDP filter setup in PTP code
      igc: Refactor igc_ptp_set_timestamp_mode()
      igc: Fix Rx timestamp disabling

Andrea Mayer (5):
      l3mdev: add infrastructure for table to VRF mapping
      vrf: track associations between VRF devices and tables
      vrf: add sysctl parameter for strict mode
      vrf: add l3mdev registration for table to VRF device lookup
      selftests: add selftest for the VRF strict mode

Andrew Lunn (44):
      net: dsa: Add __percpu property to prevent warnings
      net: dsa: tag_ksz: Fix __be16 warnings
      net: dsa: tag_lan9303: Fix __be16 warnings
      net: dsa: tag_mtk: Fix warnings for __be16
      net: dsa: tag_qca.c: Fix warning for __be16 vs u16
      net: dsa: mv88e6xxx: Fix sparse warnings from GENMASK
      net: dsa: mv88e6xxx: vlan_tci is __be16
      net: dsa: mv88e6xxx: Remove set but unused variable
      net: dsa: mv88e6xxx: scratch: Fixup kerneldoc
      net: dsa: b53: Fixup endianness warnings
      net: dsa: bcm_sf2: Initialize __be16 with a __be16 value
      net: dsa: bcm_sf2: Pass GENMASK() signed bits
      net: dsa: rtl8366: Pass GENMASK() signed bits
      net: dsa: lan9303: fix variable 'res' set but not used
      net: dsa: vitesse-vsc73xx: Convert to plain comments to avoid kerneldoc warnings
      net: phy: at803x: Avoid comparison is always false warning
      net: phy: Fixup parameters in kerneldoc
      net: phy: Properly define genphy_c45_driver
      net: phy: Make phy_10gbit_fec_features_array static
      net: phy: dp83640: Fixup cast to restricted __be16 warning
      net: phy: cavium: Improve __iomem mess
      net: phy: mdio-octeon: Cleanup module loading dependencies
      net: dsa: mv88e6xxx: Implement MTU change
      net: fec: Set max MTU size to allow the MTU to be changed
      net: 9p: kerneldoc fixes
      net: can: kerneldoc fixes
      net: core: kerneldoc fixes
      net: dccp: kerneldoc fixes
      net: decnet: kerneldoc fixes
      net: ipv4: kerneldoc fixes
      net: ipv6: kerneldoc fixes
      net: llc: kerneldoc fixes
      net: mac80211: kerneldoc fixes
      net: netfilter: kerneldoc fixes
      net: netlabel: kerneldoc fixes
      net: nfc: kerneldoc fixes
      net: openvswitch: kerneldoc fixes
      net: rxrpc: kerneldoc fixes
      net: sched: kerneldoc fixes
      net: socket: Move kerneldoc next to function it documents
      net: switchdev: kerneldoc fixes
      net: tipc: kerneldoc fixes
      net: wireless: kerneldoc fixes
      net: x25: kerneldoc fixes

Andrew Sy Kim (1):
      ipvs: queue delayed work to expire no destination connections if expire_nodest_conn=1

Andrey Ignatov (5):
      bpf: Switch btf_parse_vmlinux to btf_find_by_name_kind
      bpf: Rename bpf_htab to bpf_shtab in sock_map
      bpf: Support access to bpf map fields
      bpf: Set map_btf_{name, id} for all map types
      selftests/bpf: Test access to bpf map pointer

Andrii Nakryiko (57):
      libbpf: Bump version to 0.1.0
      tools/bpftool: Relicense bpftool's BPF profiler prog as dual-license GPL/BSD
      libbpf: Add a bunch of attribute getters/setters for map definitions
      libbpf: Generalize libbpf externs support
      libbpf: Add support for extracting kernel symbol addresses
      selftests/bpf: Add __ksym extern selftest
      tools/bpftool: Move map/prog parsing logic into common
      tools/bpftool: Minimize bootstrap bpftool
      tools/bpftool: Generalize BPF skeleton support and generate vmlinux.h
      libbpf: Wrap source argument of BPF_CORE_READ macro in parentheses
      tools/bpftool: Show info for processes holding BPF map/prog/link/btf FDs
      tools/bpftool: Add documentation and sample output for process info
      bpf: Switch most helper return values from 32-bit int to 64-bit long
      selftests/bpf: Add variable-length data concatenation pattern test
      libbpf: Prevent loading vmlinux BTF twice
      libbpf: Support disabling auto-loading BPF programs
      selftests/bpf: Test auto-load disabling logic for BPF programs
      tools/bpftool: Allow substituting custom vmlinux.h for the build
      selftests/bpf: Allow substituting custom vmlinux.h for selftests build
      libbpf: Make bpf_endian co-exist with vmlinux.h
      selftests/bpf: Add byte swapping selftest
      tools/bpftool: Turn off -Wnested-externs warning
      libbpf: Make BTF finalization strict
      libbpf: Add btf__set_fd() for more control over loaded BTF FD
      libbpf: Improve BTF sanitization handling
      selftests/bpf: Add test relying only on CO-RE and no recent kernel features
      libbpf: Handle missing BPF_OBJ_GET_INFO_BY_FD gracefully in perf_buffer
      selftests/bpf: Switch perf_buffer test to tracepoint and skeleton
      libbpf: Fix memory leak and optimize BTF sanitization
      tools/bpftool: Remove warning about PID iterator support
      libbpf: Support stripping modifiers for btf_dump
      tools/bpftool: Strip away modifiers from global variables
      tools/bpftool: Strip BPF .o files before skeleton generation
      bpf: Make bpf_link API available indepently of CONFIG_BPF_SYSCALL
      bpf, xdp: Maintain info on attached XDP BPF programs in net_device
      bpf, xdp: Extract common XDP program attachment logic
      bpf, xdp: Add bpf_link-based XDP attachment API
      bpf, xdp: Implement LINK_UPDATE for BPF XDP link
      bpf: Implement BPF XDP link-specific introspection APIs
      libbpf: Add support for BPF XDP link
      selftests/bpf: Add BPF XDP link selftests
      bpf, xdp: Remove XDP_QUERY_PROG and XDP_QUERY_PROG_HW XDP commands
      bpf: Fix bpf_ringbuf_output() signature to return long
      selftests/bpf: Add new bpf_iter context structs to fix build on old kernels
      bpf: Fix build without CONFIG_NET when using BPF XDP link
      selftests/bpf: Don't destroy failed link
      libbpf: Make destructors more robust by handling ERR_PTR(err) cases
      bpf: Add support for forced LINK_DETACH command
      libbpf: Add bpf_link detach APIs
      selftests/bpf: Add link detach tests for cgroup, netns, and xdp bpf_links
      tools/bpftool: Add `link detach` subcommand
      tools/bpftool: Add documentation and bash-completion for `link detach`
      selftests/bpf: Fix spurious test failures in core_retro selftest
      tools, build: Propagate build failures from tools/build/Makefile.build
      libbpf: Add btf__parse_raw() and generic btf__parse() APIs
      tools/bpftool: Use libbpf's btf__parse() API for parsing BTF from file
      tools/resolve_btfids: Use libbpf's btf__parse() API

Andy Shevchenko (4):
      hsr: Use %pM format specifier for MAC addresses
      qed: Use %pM format specifier for MAC addresses
      qede: Use %pM format specifier for MAC addresses
      rtlwifi: btcoex: use %*ph to print small buffer

Antoine Tenart (13):
      net: phy: add support for a common probe between shared PHYs
      net: phy: mscc: fix copyright and author information in MACsec
      net: phy: mscc: take into account the 1588 block in MACsec init
      net: phy: mscc: timestamping and PHC support
      dt-bindings: net: phy: vsc8531: document the load/save GPIO
      net: phy: mscc: macsec: fix sparse warnings
      net: phy: mscc: fix a possible double unlock
      net: phy: mscc: ptp: fix a smatch error
      net: phy: mscc: ptp: fix a typo in a comment
      net: phy: mscc: do not access the MDIO bus lock directly
      net: phy: mscc: restore the base page in vsc8514/8584_config_init
      net: phy: mscc: remove useless page configuration in the config init
      net: phy: mscc: improve vsc8514/8584_config_init consistency

Ariel Levkovich (2):
      net/flow_dissector: add packet hash dissection
      net/sched: cls_flower: Add hash info to flow classification

Arkadiusz Kubalewski (1):
      i40e: Add support for a new feature Total Port Shutdown

Armin Wolf (2):
      8390: Fix coding-style issues
      ne2k-pci: Use netif_msg_init to initialize msg_enable bits

Arnd Bergmann (1):
      iwlwifi: mvm: fix gcc-10 zero-length-bounds warning

Arthur Kiyanovski (8):
      net: ena: avoid unnecessary rearming of interrupt vector when busy-polling
      net: ena: add reserved PCI device ID
      net: ena: cosmetic: satisfy gcc warning
      net: ena: cosmetic: change ena_com_stats_admin stats to u64
      net: ena: add support for traffic mirroring
      net: ena: enable support of rss hash key and function changes
      net: ena: move llq configuration from ena_probe to ena_device_init()
      net: ena: support new LLQ acceleration mode

Avihu Hagag (1):
      net/mlx5: Add function ID to reclaim pages debug log

Aya Levin (12):
      net/mlx5e: Add a flush timeout define
      net/mlx5e: Remove redundant RQ state query
      net/mlx5e: Align RX/TX reporters diagnose output format
      net/mlx5e: Move RQ helpers to txrx.h
      net/mlx5e: Add helper to get RQ WQE's head
      net/mlx5e: Add helper to get the RQ WQE counter
      net/mlx5e: Rename reporter's helpers
      net/mlx5e: Enhance CQ data on diagnose output
      net/mlx5e: Add EQ info to TX/RX reporter's diagnose
      net/mlx5e: Enhance ICOSQ data on RX reporter's diagnose
      net/mlx5e: Enhance TX timeout recovery
      net/mlx5e: Add support for PCI relaxed ordering

Balakrishna Godavarthi (3):
      Bluetooth: hci_qca: Disable SoC debug logging for WCN3991
      Bluetooth: hci_qca: Increase SoC idle timeout to 200ms
      Bluetooth: hci_qca: Request Tx clock vote off only when Tx is pending

Barry Song (5):
      net: hns3: remove unnecessary devm_kfree
      net: hns3: pointer type of buffer should be void
      net: hns3: rename buffer-related functions
      net: hns3: replace disable_irq by IRQ_NOAUTOEN flag
      net: hns3: streaming dma buffer sync between cpu and device

Bartosz Golaszewski (19):
      net: phy: arrange headers in mdio_bus.c alphabetically
      net: phy: arrange headers in mdio_device.c alphabetically
      net: phy: arrange headers in phy_device.c alphabetically
      net: mdio: add a forward declaration for reset_control to mdio.h
      net: phy: reset the PHY even if probe() is not implemented
      net: phy: mdio: reset MDIO devices even if probe() is not implemented
      net: ethernet: ixgbe: check the return value of ixgbe_mii_bus_init()
      net: ethernet: ixgbe: don't call devm_mdiobus_free()
      net: devres: rename the release callback of devm_register_netdev()
      Documentation: devres: add missing mdio helper
      phy: un-inline devm_mdiobus_register()
      phy: mdio: add kerneldoc for __devm_mdiobus_register()
      net: phy: don't abuse devres in devm_mdiobus_register()
      of: mdio: remove the 'extern' keyword from function declarations
      of: mdio: provide devm_of_mdiobus_register()
      net: ethernet: mtk-star-emac: use devm_of_mdiobus_register()
      net: phy: add a Kconfig option for mdio_devres
      net: phy: fix mdio-mscc-miim build
      net: phy: mdio-mvusb: select MDIO_DEVRES in Kconfig

Baruch Siach (1):
      net: phy: marvell10g: support XFI rate matching mode

Ben Greear (1):
      iwlwifi: mvm: Fix avg-power report

Ben Shelton (1):
      ice: disable no longer needed workaround for FW logging

Bjørn Mork (1):
      net: usbnet: export usbnet_set_rx_mode()

Bolarinwa Olayemi Saheed (1):
      iwlegacy: Check the return value of pcie_capability_read_*()

Boris Pismenny (3):
      net/mlx5e: Receive flow steering framework for accelerated TCP flows
      Revert "net/tls: Add force_resync for driver resync"
      net/tls: Add asynchronous resync

Brett Creeley (2):
      ice: Allow all VLANs in safe mode
      ice: Allow 2 queue pairs per VF on SR-IOV initialization

Brian Vazquez (5):
      indirect_call_wrapper: extend indirect wrapper to support up to 4 calls
      ipv6: fib6: avoid indirect calls from fib6_rule_lookup
      fib: use indirect call wrappers in the most common fib_rules_ops
      fib: fix fib_rules_ops indirect calls wrappers
      fib: fix another fib_rules_ops indirect call wrapper problem

Briana Oursler (1):
      tc-testing: Add tdc to kselftests

Bruce Allan (4):
      ice: avoid unnecessary single-member variable-length structs
      ice: replace single-element array used for C struct hack
      ice: support Total Port Shutdown on devices that support it
      ice: reduce scope of variable

Bruno Thomsen (4):
      dt-bindings: net: mdio: add reset-post-delay-us property
      net: mdiobus: use flexible sleeping for reset-delay-us
      net: mdiobus: add reset-post-delay-us handling
      net: mdio device: use flexible sleeping in reset function

Calvin Johnson (1):
      net/fsl: acpize xgmac_mdio

Chethan T N (2):
      Bluetooth: btusb: Add support to read Intel debug feature
      Bluetooth: btusb: Configure Intel debug feature based on available support

Chi Song (1):
      net: hyperv: dump TX indirection table to ethtool regs

Chi-Hsien Lin (1):
      brcmfmac: reset SDIO bus on a firmware crash

Chris Down (1):
      iwlwifi: Don't IWL_WARN on FW reconfiguration

Chris Healy (3):
      net: sfp: Unique GPIO interrupt names
      net: sfp: add error checking with sfp_irq_name
      net: phy: sfp: Cotsworks SFF module EEPROM fixup

Chris Packham (3):
      net: dsa: mv88e6xxx: MV88E6097 does not support jumbo configuration
      net: dsa: mv88e6xxx: Support jumbo configuration on 6190/6190X
      net: dsa: mv88e6xxx: Use chip-wide max frame size for MTU

Christoph Hellwig (106):
      net/atm: remove the atmdev_ops {get, set}sockopt methods
      net: streamline __sys_setsockopt
      net: streamline __sys_getsockopt
      net: simplify cBPF setsockopt compat handling
      net: remove compat_sock_common_{get,set}sockopt
      net: remove compat_sys_{get,set}sockopt
      netfilter/arp_tables: clean up compat {get, set}sockopt handling
      netfilter/ip_tables: clean up compat {get,set}sockopt handling
      netfilter/ip6_tables: clean up compat {get, set}sockopt handling
      netfilter/ebtables: clean up compat {get, set}sockopt handling
      netfilter: remove the compat_{get,set} methods
      netfilter: remove the compat argument to xt_copy_counters_from_user
      netfilter: split nf_sockopt
      net/ipv4: factor out MCAST_MSFILTER getsockopt helpers
      net/ipv4: factor out MCAST_MSFILTER setsockopt helpers
      net/ipv4: factor out mcast join/leave setsockopt helpers
      net/ipv4: remove compat_ip_{get,set}sockopt
      net/ipv6: factor out MCAST_MSFILTER getsockopt helpers
      net/ipv6: factor out MCAST_MSFILTER setsockopt helpers
      net/ipv6: factor out mcast join/leave setsockopt helpers
      net/ipv6: remove compat_ipv6_{get,set}sockopt
      net: make ->{get,set}sockopt in proto_ops optional
      sctp: copy the optval from user space in sctp_setsockopt
      sctp: pass a kernel pointer to sctp_setsockopt_bindx
      sctp: pass a kernel pointer to __sctp_setsockopt_connectx
      sctp: pass a kernel pointer to sctp_setsockopt_disable_fragments
      sctp: pass a kernel pointer to sctp_setsockopt_events
      sctp: pass a kernel pointer to sctp_setsockopt_autoclose
      sctp: pass a kernel pointer to sctp_setsockopt_peer_addr_params
      sctp: pass a kernel pointer to sctp_setsockopt_delayed_ack
      sctp: pass a kernel pointer to sctp_setsockopt_partial_delivery_point
      sctp: pass a kernel pointer to sctp_setsockopt_initmsg
      sctp: pass a kernel pointer to sctp_setsockopt_default_send_param
      sctp: pass a kernel pointer to sctp_setsockopt_default_sndinfo
      sctp: pass a kernel pointer to sctp_setsockopt_primary_addr
      sctp: pass a kernel pointer to sctp_setsockopt_peer_primary_addr
      sctp: pass a kernel pointer to sctp_setsockopt_nodelay
      sctp: pass a kernel pointer to sctp_setsockopt_rtoinfo
      sctp: pass a kernel pointer to sctp_setsockopt_associnfo
      sctp: pass a kernel pointer to sctp_setsockopt_mappedv4
      sctp: pass a kernel pointer to sctp_setsockopt_maxseg
      sctp: pass a kernel pointer to sctp_setsockopt_adaptation_layer
      sctp: pass a kernel pointer to sctp_setsockopt_context
      sctp: pass a kernel pointer to sctp_setsockopt_fragment_interleave
      sctp: pass a kernel pointer to sctp_setsockopt_maxburst
      sctp: pass a kernel pointer to sctp_setsockopt_auth_chunk
      sctp: pass a kernel pointer to sctp_setsockopt_hmac_ident
      sctp: switch sctp_setsockopt_auth_key to use memzero_explicit
      sctp: pass a kernel pointer to sctp_setsockopt_auth_key
      sctp: pass a kernel pointer to sctp_setsockopt_active_key
      sctp: pass a kernel pointer to sctp_setsockopt_del_key
      sctp: pass a kernel pointer to sctp_setsockopt_deactivate_key
      sctp: pass a kernel pointer to sctp_setsockopt_auto_asconf
      sctp: pass a kernel pointer to sctp_setsockopt_paddr_thresholds
      sctp: pass a kernel pointer to sctp_setsockopt_recvrcvinfo
      sctp: pass a kernel pointer to sctp_setsockopt_recvnxtinfo
      sctp: pass a kernel pointer to sctp_setsockopt_pr_supported
      sctp: pass a kernel pointer to sctp_setsockopt_default_prinfo
      sctp: pass a kernel pointer to sctp_setsockopt_reconfig_supported
      sctp: pass a kernel pointer to sctp_setsockopt_enable_strreset
      sctp: pass a kernel pointer to sctp_setsockopt_reset_streams
      sctp: pass a kernel pointer to sctp_setsockopt_reset_assoc
      sctp: pass a kernel pointer to sctp_setsockopt_add_streams
      sctp: pass a kernel pointer to sctp_setsockopt_scheduler
      sctp: pass a kernel pointer to sctp_setsockopt_scheduler_value
      sctp: pass a kernel pointer to sctp_setsockopt_interleaving_supported
      sctp: pass a kernel pointer to sctp_setsockopt_reuse_port
      sctp: pass a kernel pointer to sctp_setsockopt_event
      sctp: pass a kernel pointer to sctp_setsockopt_event
      sctp: pass a kernel pointer to sctp_setsockopt_auth_supported
      sctp: pass a kernel pointer to sctp_setsockopt_ecn_supported
      sctp: pass a kernel pointer to sctp_setsockopt_pf_expose
      sctp: remove the out_nounlock label in sctp_setsockopt
      arch, net: remove the last csum_partial_copy() leftovers
      net: explicitly include <linux/compat.h> in net/core/sock.c
      bpfilter: fix up a sparse annotation
      net/bpfilter: split __bpfilter_process_sockopt
      bpfilter: reject kernel addresses
      net: add a new sockptr_t type
      net: switch copy_bpf_fprog_from_user to sockptr_t
      net: switch sock_setbindtodevice to sockptr_t
      net: switch sock_set_timeout to sockptr_t
      net: switch sock_set_timeout to sockptr_t
      net/xfrm: switch xfrm_user_policy to sockptr_t
      netfilter: remove the unused user argument to do_update_counters
      netfilter: switch xt_copy_counters to sockptr_t
      netfilter: switch nf_setsockopt to sockptr_t
      bpfilter: switch bpfilter_ip_set_sockopt to sockptr_t
      net/ipv4: switch ip_mroute_setsockopt to sockptr_t
      net/ipv4: merge ip_options_get and ip_options_get_from_user
      net/ipv4: switch do_ip_setsockopt to sockptr_t
      net/ipv6: switch ip6_mroute_setsockopt to sockptr_t
      net/ipv6: split up ipv6_flowlabel_opt
      net/ipv6: switch ipv6_flowlabel_opt to sockptr_t
      net/ipv6: factor out a ipv6_set_opt_hdr helper
      net/ipv6: switch do_ipv6_setsockopt to sockptr_t
      net/udp: switch udp_lib_setsockopt to sockptr_t
      net/tcp: switch ->md5_parse to sockptr_t
      net/tcp: switch do_tcp_setsockopt to sockptr_t
      net: pass a sockptr_t into ->setsockopt
      net: optimize the sockptr_t for unified kernel/user address spaces
      sctp: fix slab-out-of-bounds in SCTP_DELAYED_SACK processing
      netfilter: arp_tables: restore a SPDX identifier
      net: make sockptr_is_null strict aliasing safe
      net: remove sockptr_advance
      net: improve the user pointer check in init_user_sockptr

Christophe JAILLET (28):
      net: skge: switch from 'pci_' to 'dma_' API
      net: sky2: switch from 'pci_' to 'dma_' API
      amd8111e: switch from 'pci_' to 'dma_' API
      pcnet32: switch from 'pci_' to 'dma_' API
      lan743x: switch from 'pci_' to 'dma_' API
      net: neterion: s2io: switch from 'pci_' to 'dma_' API
      net: neterion: vxge: switch from 'pci_' to 'dma_' API
      ksz884x: switch from 'pci_' to 'dma_' API
      net: sun: cassini: switch from 'pci_' to 'dma_' API
      net: sungem: switch from 'pci_' to 'dma_' API
      net: alteon: switch from 'pci_' to 'dma_' API
      net: alteon: Avoid some useless memset
      net: packetengines: switch from 'pci_' to 'dma_' API
      r6040: switch from 'pci_' to 'dma_' API
      sis: switch from 'pci_' to 'dma_' API
      mISDN: switch from 'pci_' to 'dma_' API
      net/fealnx: switch from 'pci_' to 'dma_' API
      nl80211: Remove a misleading label in 'nl80211_trigger_scan()'
      nl80211: Simplify error handling path in 'nl80211_trigger_scan()'
      p54: switch from 'pci_' to 'dma_' API
      prism54: switch from 'pci_' to 'dma_' API
      ipw2100: Use GFP_KERNEL instead of GFP_ATOMIC in some memory allocation
      ipw2x00: switch from 'pci_' to 'dma_' API
      net: sgi: ioc3-eth: Fix the size used in some 'dma_free_coherent()' calls
      net: spider_net: Fix the size used in a 'dma_free_coherent()' call
      net: spider_net: Remove a useless memset
      wan: wanxl: switch from 'pci_' to 'dma_' API
      farsync: switch from 'pci_' to 'dma_' API

Chung-Hsien Hsu (2):
      brcmfmac: update tx status flags to sync with firmware
      nl80211: support 4-way handshake offloading for WPA/WPA2-PSK in AP mode

Ciara Loftus (6):
      i40e: add XDP ring statistics to VSI stats
      i40e: add XDP ring statistics to dump VSI debug output
      i40e: introduce new dump desc XDP command
      xsk: Add new statistics
      samples: bpf: Add an option for printing extra statistics in xdpsock
      xsk: Add xdp statistics to xsk_diag

Claudiu Beznea (4):
      net: macb: do not set again bit 0 of queue_mask
      net: macb: use hweight32() to count set bits in queue_mask
      net: macb: do not initialize queue variable
      net: macb: remove is_udp variable

Claudiu Manoil (7):
      enetc: Refine buffer descriptor ring sizes
      enetc: Factor out the traffic start/stop procedures
      enetc: Fix interrupt coalescing register naming
      enetc: Drop redundant ____cacheline_aligned_in_smp
      enetc: Add interrupt coalescing support
      enetc: Add adaptive interrupt coalescing
      enetc: Remove the imdio bus on PF probe bailout

Codrin Ciubotariu (2):
      net: dsa: microchip: split adjust_link() in phylink_mac_link_{up|down}()
      net: dsa: microchip: remove unused private members

Colin Ian King (16):
      iwlwifi: mvm: remove redundant assignment to variable ret
      libbpf: Fix spelling mistake "kallasyms" -> "kallsyms"
      net/tls: fix sign extension issue when left shifting u16 value
      net/mlx5e: fix memory leak of tls
      net/packet: remove redundant initialization of variable err
      xen-netfront: remove redundant assignment to variable 'act'
      bnx2x: fix spelling mistake "occurd" -> "occurred"
      net: systemport: fix double shift of a vlan_tci by VLAN_PRIO_SHIFT
      iwlegacy: remove redundant initialization of variable tid
      lan743x: remove redundant initialization of variable current_head_index
      ionic: fix memory leak of object 'lid'
      sctp: remove redundant initialization of variable status
      qed: fix assignment of n_rq_elems to incorrect params field
      bpf: Fix swapped arguments in calls to check_buffer_access
      mac80211: remove the need for variable rates_idx
      rtlwifi: btcoex: remove redundant initialization of variables ant_num and single_ant_path

Cong Wang (1):
      net_sched: initialize timer earlier in red_init()

Cudzilo, Szymon T (1):
      ice: Add AdminQ commands for FW update

Dan Carpenter (4):
      Bluetooth: hci_qca: Fix an error pointer dereference
      mwifiex: Prevent memory corruption handling keys
      netfilter: nf_tables: Fix a use after free in nft_immediate_destroy()
      mt76: mt7915: potential array overflow in mt7915_mcu_tx_rate_report()

Dan Murphy (5):
      dt-bindings: net: Add tx and rx internal delays
      net: phy: Add a helper to return the index for of the internal delay
      dt-bindings: net: Add RGMII internal delay for DP83869
      net: dp83869: Add RGMII internal delay configuration
      net: phy: DP83822: Add setting the fixed internal delay

Daniel Borkmann (2):
      Merge branch 'bpf-libbpf-old-kernel'
      Merge branch 'bpf-libbpf-btf-parsing'

Daniel Drown (1):
      net/xen-netfront: add kernel TX timestamps

Daniel González Cabanelas (1):
      net: mvneta: speed down the PHY, if WoL used, to save energy

Daniel T. Lee (4):
      samples: bpf: Fix bpf programs with kprobe/sys_connect event
      samples: bpf: Refactor BPF map in map test with libbpf
      samples: bpf: Refactor BPF map performance test with libbpf
      selftests: bpf: Remove unused bpf_map_def_legacy struct

Daniel Winkler (1):
      Bluetooth: Add per-instance adv disable/remove

Danielle Ratson (9):
      devlink: Move set attribute of devlink_port_attrs to devlink_port
      devlink: Move switch_port attribute of devlink_port_attrs to devlink_port
      devlink: Replace devlink_port_attrs_set parameters with a struct
      mlxsw: Set number of port lanes attribute in driver
      devlink: Add a new devlink port lanes attribute and pass to netlink
      mlxsw: Set port split ability attribute in driver
      devlink: Add a new devlink port split ability attribute and pass to netlink
      devlink: Move input checks from driver to devlink
      selftests: net: Add port split test

Danny Lin (1):
      net: sched: Allow changing default qdisc to FQ-PIE

Dave Ertman (3):
      ice: Implement LFC workaround
      ice: Fix link broken after GLOBR reset
      ice: fix link event handling timing

David Ahern (2):
      net: Refactor xdp_convert_buff_to_frame
      vrf: Handle CONFIG_SYSCTL not set

David S. Miller (186):
      Merge branch 'r8169-smaller-improvements-again'
      Merge branch 'hns3-next'
      Merge branch 'net-tso-expand-to-UDP-support'
      Merge branch 'cxgb4-add-support-to-read-write-flash'
      Merge branch 'cxgb4-add-support-for-ethtool-n-tuple-filters'
      Merge branch 'Clause-45-PHY-probing-improvements'
      Merge branch 'Strict-mode-for-VRF'
      Merge branch 'Ocelot-Felix-driver-cleanup'
      Merge branch 'tcp-remove-two-indirect-calls-from-xmit-path'
      Merge branch 'Marvell-mvpp2-improvements'
      Merge branch 'devlink-Support-get-set-mac-address-of-a-port-function'
      Merge branch 'bonding-initial-support-for-hardware-crypto-offload'
      Merge branch 'net-dsa-qca8k-Improve-SGMII-interface-handling'
      Merge branch 'Cosmetic-cleanup-in-SJA1105-DSA-driver'
      Merge branch 'devlink-Add-board-serial_number-field-to-info_get-cb'
      Merge branch 'prepare-dwmac-meson8b-for-G12A-specific-initialization'
      Merge branch 'r8169-mark-device-as-detached-in-PCI-D3-and-improve-locking'
      Merge branch 'Add-Marvell-88E1340S-88E1548P-support'
      Merge branch 'mlxsw-Offload-TC-action-pedit-munge-tcp-udp-sport-dport'
      Merge branch 'Multicast-improvement-in-Ocelot-and-Felix-drivers'
      Merge branch 'net-atlantic-additional-A2-features'
      Merge branch 'mlxsw-Bump-firmware-version-to-XX-2007-1168'
      Merge branch 'net-address-some-sparse-warnings'
      Merge branch 'ethernet-amd-Convert-to-generic-power-management'
      Merge branch 'ethernet-dec-tulip-use-generic-power-management'
      Merge branch 'ACPI-support-for-xgmac_mdio-drivers'
      Merge branch 'cxgb4-fix-more-warnings-reported-by-sparse'
      Merge branch 'net-phy-mscc-PHC-and-timestamping-support'
      Merge branch 'net-bridge-fdb-activity-tracking'
      Merge tag 'mlx5-updates-2020-06-23' of git://git.kernel.org/.../saeed/linux
      Merge branch 'dpaa2-eth-small-updates'
      Merge branch 'RGMII-Internal-delay-common-property'
      Merge branch 'net-phy-mscc-multiple-improvements'
      Merge git://git.kernel.org/.../netdev/net
      Merge branch '40GbE' of git://git.kernel.org/.../jkirsher/next-queue
      Merge branch 'net-phy-relax-PHY-and-MDIO-reset-handling'
      Merge branch 'net-organize-driver-docs-by-device-type'
      Merge branch 'mptcp-refactor-token-container'
      Merge branch 'net-atlantic-various-non-functional-changes'
      Merge branch 'tcp-improve-delivered-counts-in-SCM_TSTAMP_ACK'
      Merge branch 'hinic-add-some-ethtool-ops-support'
      Merge branch 'netdev_tx_t'
      Merge branch 'r8169-make-RTL8401-a-separate-chip-version'
      Merge branch 'net-ethernet-ti-am65-cpsw-update-and-enable-sr2-0-soc'
      Merge branch 'TC-Introduce-qevents'
      Merge tag 'mlx5-tls-2020-06-26' of git://git.kernel.org/.../saeed/linux
      Merge branch 'MPTCP-improve-fallback-to-TCP'
      Merge branch 'sfc-prerequisites-for-EF100-driver-part-1'
      Merge branch 'dpaa2-eth-send-a-scatter-gather-FD-instead-of-realloc-ing'
      Merge branch 'Add-ethtool-extended-link-state'
      Merge branch '1GbE' of git://git.kernel.org/.../jkirsher/next-queue
      Merge tag 'batadv-next-for-davem-20200630' of git://git.open-mesh.org/linux-merge
      Merge branch 'Convert-Broadcom-B53-to-mac_link_up-resolved-state'
      Merge branch 'Convert-Broadcom-SF2-to-mac_link_up-resolved-state'
      Merge branch 'sfc-prerequisites-for-EF100-driver-part-2'
      Merge branch 'net-qed-qede-license-cleanup'
      Merge branch 'net-improve-devres-helpers'
      Merge branch 'cxgb4-add-mirror-action-support-for-TC-MATCHALL'
      Merge branch 'net-ethernet-use-generic-power-management'
      Merge branch 'add-XDP-support-to-xen-netfront'
      Merge branch 'net-ipa-simple-refactorizations'
      Merge branch 'net-ipa-small-improvements'
      Merge branch 'net-ipa-endpoint-configuration-updates'
      Merge branch '100GbE' of git://git.kernel.org/.../jkirsher/next-queue
      Merge branch '40GbE' of git://git.kernel.org/.../jkirsher/next-queue
      Merge branch 'mptcp-add-receive-buffer-auto-tuning'
      Merge branch 'bridge-mrp-Add-support-for-getting-the-status'
      Merge branch 'net-macb-few-code-cleanups'
      Merge branch 'net-ipa-simplify-endpoint-programming'
      Merge branch 'sfc-prerequisites-for-EF100-driver-part-3'
      Merge tag 'mlx5-updates-2020-07-02' of git://git.kernel.org/.../saeed/linux
      Merge branch 'net-ipa-fix-HOLB-timer-register-use'
      Merge branch 'mvpp2-XDP-support'
      Merge git://git.kernel.org/.../bpf/bpf-next
      Merge branch 'bnx2x-Perform-IdleChk-dump'
      Merge branch 'mptcp-add-REUSEADDR-REUSEPORT-V6ONLY-setsockopt-support'
      Merge branch 'qlogic-use-generic-power-management'
      Merge branch 'Phylink-integration-improvements-for-Felix-DSA-driver'
      Merge branch 'net-dsa-warnings'
      Merge branch 'net--dsa-mv88e6xxx-warn'
      Merge branch 'net-dsa-b53-sf2-warn'
      Merge branch 'ethernet-sun-use-generic-power-management'
      Merge branch 'qed-warnings-cleanup'
      Merge branch 'phy-warn'
      Merge branch 'smsc-use-generic-power-management'
      Merge branch 'net-ethtool-Untangle-PHYLIB-dependency'
      Merge branch 'net-phy-Uninline-PHY-ethtool-statistics'
      Merge git://git.kernel.org/.../pablo/nf-next
      Merge branch 'bnxt_en-Driver-update-for-net-next'
      Merge branch 'RTL8366RB-tagging-support'
      Merge branch 'mptcp-introduce-msk-diag-interface'
      Merge branch 'Expose-port-split-attributes'
      Merge branch 'udp_tunnel-add-NIC-RX-port-offload-infrastructure'
      Merge tag 'mlx5-updates-2020-07-09' of git://git.kernel.org/.../saeed/linux
      Merge branch 'devlink-health'
      Merge git://git.kernel.org/.../netdev/net
      Merge branch 'Fix-MTU-warnings-for-fec-mv886xxx-combo'
      Merge branch 'net-simple-kerneldoc-fixes'
      Merge branch 'mlxsw-Add-support-for-buffer-drops-mirroring'
      Merge branch 'New-DSA-driver-for-VSC9953-Seville-switch'
      Merge git://git.kernel.org/.../bpf/bpf-next
      Merge branch 'bridge-mrp-Add-support-for-interconnect-ring'
      Merge branch 'mlxsw-Mirror-to-CPU-preparations'
      Merge branch 's390-qeth-next'
      Merge branch 'r8169-add-support-for-RTL8125B'
      Merge git://git.kernel.org/.../bpf/bpf-next
      Merge branch 'udp_tunnel-NIC-RX-port-offload-infrastructure'
      Merge branch 'usbnet-multicast-filter-support-for-cdc-ncm-devices'
      Merge branch 'tcp-dsack-multi-seg'
      Merge tag 'mlx5-updates-2020-07-16' of git://git.kernel.org/.../saeed/linux
      Merge branch 'net-atlantic-add-support-for-FW-4-x'
      Merge branch 'net-enetc-remove-bootloader-dependency'
      Merge branch 'sockopt-cleanups'
      Merge branch 'do-a-single-memdup_user-in-sctp_setsockopt-v2'
      Merge branch 'rework-mvneta-napi_poll-loop-for-XDP-multi-buffers'
      Merge branch 'Fully-describe-the-waveform-for-PTP-periodic-output'
      Merge branch 'net-dsa-Setup-dsa_netdev_ops'
      Merge branch 'net-macb-Wake-on-Lan-magic-packet-GEM-and-MACB-handling'
      Merge tag 'wireless-drivers-next-2020-07-20' of git://git.kernel.org/.../kvalo/wireless-drivers-next
      Merge branch 'qed-qede-add-support-for-new-operating-modes'
      Merge branch 'Extend-testptp-with-PTP-perout-waveform'
      Merge branch 'net-atlantic-various-features'
      Merge branch 'enetc-Add-adaptive-interrupt-coalescing'
      Merge branch 'Phylink-PCS-updates'
      Merge branch 'ena-driver-new-features'
      Merge branch 'devlink-small-improvements'
      Merge branch 'dpaa2-eth-add-support-for-TBF-offload'
      Merge branch 'ionic-updates'
      Merge git://git.kernel.org/.../bpf/bpf-next
      Merge branch 'Add-DSA-yaml-binding'
      Merge branch 'l2tp-cleanup-checkpatch-pl-warnings'
      Merge branch 'qed-qede-improve-chain-API-and-add-XDP_REDIRECT-support'
      Merge branch 'mptcp-non-backup-subflows-pre-reqs'
      Merge branch 'l2tp-further-checkpatch-pl-cleanups'
      Merge branch 'TC-datapath-hash-api'
      Merge branch 'get-rid-of-the-address_space-override-in-setsockopt-v2'
      mISDN: Don't try to print a sockptr_t from debug logging code.
      Merge branch '100GbE' of git://git.kernel.org/.../jkirsher/next-queue
      Merge branch 'icmp6-support-rfc-4884'
      Merge branch 'l2tp-avoid-multiple-assignment-remove-BUG_ON'
      Merge branch 'net-dsa-mv88e6xxx-port-mtu-support'
      Merge git://git.kernel.org/.../netdev/net
      Merge branch 'net-smc-show-unique-rsn-code-for-exceeded-max-dmb-count'
      Merge branch 'bnxt_en-update'
      Merge branch 'Add-PRP-driver'
      Merge branch 'sfc-driver-for-EF100-family-NICs-part-1'
      Merge branch '1GbE' of git://git.kernel.org/.../jkirsher/next-queue
      Merge tag 'mlx5-updates-2020-07-28' of git://git.kernel.org/.../saeed/linux
      Merge branch 'mlxsw-Add-support-for-QSFP-DD-transceiver-type'
      Merge branch 'sockptr_t-fixes-v2'
      Merge branch 'mptcp-Exchange-MPTCP-DATA_FIN-DATA_ACK-before-TCP-FIN'
      Merge branch 'introduce-PLDM-firmware-update-library'
      Merge branch 'hinic-add-some-error-messages-for-debug'
      Merge branch 'RTL8366-VLAN-callback-fixes'
      Merge branch 'net-stmmac-improve-WOL'
      Merge branch '100GbE' of git://git.kernel.org/.../jkirsher/next-queue
      Merge branch 'master' of git://git.kernel.org/.../klassert/ipsec-next
      Merge branch 'l2tp-tidy-up-l2tp-core-API'
      Merge branch 'net-ethernet-use-generic-power-management'
      Merge branch 'for-upstream' of git://git.kernel.org/.../bluetooth/bluetooth-next
      bluetooth: sco: Fix sockptr reference.
      Merge branch 's390-qeth-next'
      Merge branch 'mptcp-syncookies'
      Merge branch '1GbE' of git://git.kernel.org/.../jkirsher/next-queue
      Merge tag 'mac80211-next-for-davem-2020-07-31' of git://git.kernel.org/.../jberg/mac80211-next
      Merge git://git.kernel.org/.../netdev/net
      Merge branch 'Improve-MDIO-Ethernet-PHY-reset'
      Merge branch 'net-openvswitch-masks-cache-enhancements'
      Merge branch 'ionic-txrx-updates'
      Merge branch '100GbE' of git://git.kernel.org/.../jkirsher/next-queue
      Merge git://git.kernel.org/.../pablo/nf-next
      Merge branch 'DPAA-FMan-driver-fixes'
      Merge tag 'mac80211-next-for-davem-2020-08-03' of git://git.kernel.org/.../jberg/mac80211-next
      Merge branch 'mlxsw-Add-support-for-buffer-drop-traps'
      Merge branch 'net-dsa-loop-Preparatory-changes-for-802-1Q-data-path'
      Merge branch 'sfc-driver-for-EF100-family-NICs-part-2'
      Merge tag 'mlx5-updates-2020-08-03' of git://git.kernel.org/.../saeed/linux
      Merge git://git.kernel.org/.../bpf/bpf-next
      sfc: Fix build with CONFIG_RFS_ACCEL disabled.
      Merge branch 'hinic-mailbox-channel-enhancement'
      Merge tag 'wireless-drivers-next-2020-08-04' of git://git.kernel.org/.../kvalo/wireless-drivers-next
      Merge branch 'Support-PMTU-discovery-with-bridged-UDP-tunnels'
      Merge git://git.kernel.org/.../pablo/nf
      Merge branch 'net-fix-a-mcast-issue-for-tipc-udp-media'
      Merge branch 'selftests-rtnetlink-Fix-for-false-negative-return-values'
      Merge branch 'misc-bug-fixes-for-the-hso-driver'

Davide Caratti (4):
      net: mptcp: improve fallback to TCP
      mptcp: fallback in case of simultaneous connect
      mptcp: fix race in subflow_data_ready()
      mptcp: silence warning in subflow_data_ready()

Dean Nelson (1):
      net: thunderx: initialize VF's mailbox mutex before first usage

Denis Efremov (1):
      net/mlx5: Use kfree(ft->g) in arfs_create_groups()

Denis Kirjanov (3):
      xen: netif.h: add a new extra type for XDP
      xen networking: add basic XDP support for xen-netfront
      xen networking: add XDP offset adjustment to xen-netback

Dmitry Bezrukov (1):
      net: atlantic: missing space in a comment in aq_nic.h

Dmitry Bogdanov (5):
      net: atlantic: A2: report link partner capabilities
      net: atlantic: A2: phy loopback support
      net: atlantic: add support for FW 4.x
      net: atlantic: additional per-queue stats
      net: atlantic: A0 ntuple filters

Dmitry Yakunin (5):
      sock: Move sock_valbool_flag to header
      tcp: Expose tcp_sock_set_keepidle_locked
      bpf: Add SO_KEEPALIVE and related options to bpf_setsockopt
      bpf: Setup socket family and addresses in bpf_prog_test_run_skb
      bpf: Allow to specify ifindex for skb in bpf_prog_test_run_skb

Double Lo (1):
      brcmfmac: fix throughput zero stalls on PM 1 mode due to credit map

Doug Dziggel (1):
      ice: Report AOC PHY Types as Fiber

Edward Cree (72):
      sfc: update MCDI protocol headers
      sfc: determine flag word automatically in efx_has_cap()
      sfc: extend bitfield macros up to POPULATE_DWORD_13
      sfc: don't try to create more channels than we can have VIs
      sfc: refactor EF10 stats handling
      sfc: split up nic.h
      sfc: commonise ethtool link handling functions
      sfc: commonise ethtool NFC and RXFH/RSS functions
      sfc: commonise other ethtool bits
      sfc: commonise FC advertising
      sfc: track which BAR is mapped
      sfc: commonise PCI error handlers
      sfc: commonise drain event handling
      sfc: commonise ARFS handling
      sfc: extend common GRO interface to support CHECKSUM_COMPLETE
      sfc: move NIC-specific mcdi_port declarations out of common header
      sfc: commonise MCDI MAC stats handling
      sfc: add missing licence info to mcdi_filters.c
      sfc: commonise miscellaneous efx functions
      sfc: commonise some MAC configuration code
      sfc: commonise efx_sync_rx_buffer()
      sfc: commonise TSO fallback code
      sfc: remove duplicate declaration of efx_enqueue_skb_tso()
      sfc: factor out efx_tx_tso_header_length() and understand encapsulation
      sfc: move definition of EFX_MC_STATS_GENERATION_INVALID
      sfc: initialise max_[tx_]channels in efx_init_channels()
      sfc: commonise efx->[rt]xq_entries initialisation
      sfc: commonise initialisation of efx->vport_id
      sfc: don't call tx_remove if there isn't one
      sfc: support setting MTU even if not privileged to configure MAC fully
      sfc: remove max_interrupt_mode
      sfc: move modparam 'interrupt_mode' out of common channel code
      sfc: move modparam 'rss_cpus' out of common channel code
      sfc: make tx_queues_per_channel variable at runtime
      sfc: commonise netif_set_real_num[tr]x_queues calls
      sfc: assign TXQs without gaps
      sfc: don't call tx_limit_len if NIC type doesn't have one
      sfc: factor out efx_mcdi_filter_table_down() from _remove()
      sfc: commonise efx_fini_dmaq
      sfc: initialise RSS context ID to 'no RSS context' in efx_init_struct()
      sfc: get drvinfo driver name from outside the common code
      sfc_ef100: add EF100 to NIC-revision enumeration
      sfc_ef100: populate BUFFER_SIZE_BYTES in INIT_RXQ
      sfc_ef100: NVRAM selftest support code
      sfc_ef100: helper function to set default RSS table of given size
      sfc: remove efx_ethtool_nway_reset()
      sfc_ef100: add EF100 register definitions
      sfc_ef100: register accesses on EF100
      sfc: skeleton EF100 PF driver
      sfc_ef100: reset-handling stub
      sfc_ef100: PHY probe stub
      sfc_ef100: don't call efx_reset_down()/up() on EF100
      sfc_ef100: implement MCDI transport
      sfc_ef100: implement ndo_open/close and EVQ probing
      sfc_ef100: process events for MCDI completions
      sfc_ef100: read datapath caps, implement check_caps
      sfc_ef100: extend ef100_check_caps to cover datapath_caps3
      sfc_ef100: actually perform resets
      sfc_ef100: probe the PHY and configure the MAC
      sfc_ef100: read device MAC address at probe time
      sfc_ef100: implement ndo_get_phys_port_{id,name}
      sfc_ef100: check firmware version at start-of-day
      sfc_ef100: fail the probe if NIC uses unsol_ev credits
      sfc_ef100: read Design Parameters at probe time
      sfc_ef100: TX path for EF100 NICs
      sfc_ef100: RX filter table management and related gubbins
      sfc_ef100: RX path for EF100
      sfc_ef100: plumb in fini_dmaq
      sfc_ef100: statistics gathering
      sfc_ef100: functions for selftests
      sfc_ef100: read pf_index at probe time
      sfc_ef100: add nic-type for VFs, and bind to them

Edwin Peer (2):
      bnxt_en: clean up VLAN feature bit handling
      bnxt_en: allow firmware to disable VLAN offloads

Eelco Chaudron (4):
      net: openvswitch: reorder masks array based on usage
      net: openvswitch: fixes potential deadlock in dp cleanup code
      net: openvswitch: add masks cache hit counter
      net: openvswitch: make masks cache size configurable

Eli Britstein (1):
      net/mlx5e: CT: Map 128 bits labels to 32 bit map ID

Emmanuel Grumbach (1):
      cfg80211: allow the low level driver to flush the BSS table

Eran Ben Elisha (2):
      net/mlx5e: Change reporters create functions to return void
      net/mlx5: Hold pages RB tree per VF

Eric Dumazet (16):
      net: napi: remove useless stack trace
      octeontx2-af: change (struct qmem)->entry_sz from u8 to u16
      net: tso: double TSO_HEADER_SIZE value
      net: tso: shrink struct tso_t
      net: tso: constify tso_count_descs() and friends
      net: tso: cache transport header length
      net: tso: add UDP segmentation support
      ipv6: icmp6: avoid indirect call for icmpv6_send()
      tcp: remove indirect calls for icsk->icsk_af_ops->queue_xmit
      tcp: remove indirect calls for icsk->icsk_af_ops->send_check
      tcp: add declarations to avoid warnings
      tcp: move ipv6_specific declaration to remove a warning
      tcp: move ipv4_specific to tcp include file
      net: move tcp gro declarations to net/tcp.h
      udp: move gro declarations to net/udp.h
      tcp: fix build fong CONFIG_MPTCP=n

Evan Green (1):
      ath10k: Acquire tx_lock in tx error paths

Eyal Birger (2):
      xfrm interface: avoid xi lookup in xfrmi_decode_session()
      xfrm interface: store xfrmi contexts in a hash by if_id

Fabio Estevam (2):
      dt-bindings: dp83867: Fix the type of device
      dt-bindings: dp83869: Fix the type of device

Felix Fietkau (12):
      mt76: mt7615: re-enable offloading of sequence number assignment
      mt76: mt7615: schedule tx tasklet and sta poll on mac tx free
      mt76: mt7615: add support for accessing mapped registers via bus ops
      mt76: mt7615: add support for accessing RF registers via MCU
      mt76: mt7615: use full on-chip memory address for WF_PHY registers
      mt76: vif_mask to struct mt76_phy
      mt76: add API for testmode support
      mt76: mt7615: implement testmode support
      mac80211: improve AQL tx airtime estimation
      net/fq_impl: use skb_get_hash instead of skb_get_hash_perturb
      mac80211: calculate skb hash early when using itxq
      mac80211: add a function for running rx without passing skbs to the stack

Flavio Suligoi (7):
      ath: fix wiki website url
      net: wireless: intel: fix wiki website url
      wireless: fix wiki website url in main Kconfig
      atmel: fix wiki website url
      broadcom: fix wiki website url
      orinoco_usb: fix spelling mistake
      intersil: fix wiki website url

Florent Fourcot (2):
      ipv6/addrconf: call addrconf_ifdown with consistent values
      ipv6/addrconf: use a boolean to choose between UNREGISTER/DOWN

Florian Fainelli (18):
      net: dsa: Improve subordinate PHY error message
      net: bcmgenet: Allow changing carrier from user-space
      net: systemport: Add support for VLAN transmit acceleration
      net: ethtool: Introduce ethtool_phy_ops
      net: phy: Register ethtool PHY operations
      net: ethtool: Remove PHYLIB direct dependency
      net: dsa: loop: Print when registration is successful
      net: phy: Define PHY statistics ethtool_phy_ops
      net: phy: Uninline PHY ethtool statistics operations
      net: Wrap ndo_do_ioctl() to prepare for DSA stacked ops
      net: dsa: Add wrappers for overloaded ndo_ops
      net: Call into DSA netdevice_ops wrappers
      net: dsa: Setup dsa_netdev_ops
      net: dsa: loop: PVID should be per-port
      net: dsa: loop: Support 4K VLANs
      net: dsa: loop: Move data structures to header
      net: dsa: loop: Wire-up MTU callbacks
      net: dsa: loop: Set correct number of ports

Florian Westphal (20):
      selftests: mptcp: add option to specify size of file to transfer
      mptcp: add receive buffer auto-tuning
      net: use mptcp setsockopt function for SOL_SOCKET on mptcp sockets
      mptcp: add REUSEADDR/REUSEPORT support
      mptcp: support IPV6_V6ONLY setsockopt
      mptcp: use mptcp worker for path management
      mptcp: move helper to where its used
      netfilter: nft_compat: make sure xtables destructors have run
      tcp: rename request_sock cookie_ts bit to syncookie
      mptcp: token: move retry to caller
      mptcp: subflow: split subflow_init_req
      mptcp: rename and export mptcp_subflow_request_sock_ops
      mptcp: subflow: add mptcp_subflow_init_cookie_req helper
      tcp: syncookies: create mptcp request socket for ACK cookies with MPTCP option
      mptcp: enable JOIN requests even if cookies are in use
      selftests: mptcp: make 2nd net namespace use tcp syn cookies unconditionally
      selftests: mptcp: add test cases for mptcp join tests with syn cookies
      mptcp: fix syncookie build error on UP
      netfilter: nft_meta: fix iifgroup matching
      selftests: netfilter: add meta iif/oif match test

Florinel Iordache (5):
      fsl/fman: use 32-bit unsigned integer
      fsl/fman: fix dereference null return value
      fsl/fman: fix unreachable code
      fsl/fman: check dereferencing null pointer
      fsl/fman: fix eth hash table allocation

Gaurav Singh (8):
      Remove redundant condition in qdisc_graft
      Remove redundant skb null check
      tcindex_change: Remove redundant null check
      xirc2ps_cs: remove dev null check from do_reset().
      dcb_doit: remove redundant skb check
      dn_route_rcv: remove redundant dev null check
      netfilter: ip6tables: Remove redundant null checks
      ethtool: ethnl_set_linkmodes: remove redundant null check

Geliang Tang (3):
      sctp: use list_is_singular in sctp_list_single_entry
      liquidio: use list_empty_careful in lio_list_delete_head
      mptcp: use mptcp_for_each_subflow in mptcp_stream_accept

Grygorii Strashko (6):
      net: ethernet: ti: am65-cpsw-nuss: restore vlan configuration while down/up
      net: ethernet: ti: am65-cpsw: move to pf_p0_rx_ptype_rrobin init in probe
      net: ethernet: ti: am65-cpsw-nuss: fix ports mac sl initialization
      net: ethernet: ti: am65-cpsw-ethtool: skip hw cfg when change p0-rx-ptype-rrobin
      net: ethernet: ti: am65-cpsw-ethtool: configured critical setting only when no running netdevs
      net: ethernet: ti: am65-cpsw-nuss: enable am65x sr2.0 support

Gustavo A. R. Silva (27):
      iwlwifi: Replace zero-length array with flexible-array
      liquidio: Replace vmalloc_node + memset with vzalloc_node and use array_size
      ethtool: ioctl: Use array_size() in copy_to_user()
      net: stmmac: selftests: Use struct_size() helper in kzalloc()
      enetc: Use struct_size() helper in kzalloc()
      mISDN: hfcsusb: Use struct_size() helper
      ethernet: ti: am65-cpsw-qos: Use struct_size() in devm_kzalloc()
      cxgb4: Use struct_size() helper
      net: dsa: sja1105: Use struct_size() in kzalloc()
      tipc: Use struct_size() helper
      taprio: Use struct_size() in kzalloc()
      net/sched: cls_u32: Use struct_size() in kzalloc()
      net: ipv6: Use struct_size() helper and kcalloc()
      net/sched: Use fallthrough pseudo-keyword
      Bluetooth: core: Use fallthrough pseudo-keyword
      Bluetooth: RFCOMM: Use fallthrough pseudo-keyword
      Bluetooth: Use fallthrough pseudo-keyword
      netfilter: Use fallthrough pseudo-keyword
      tg3: Avoid the use of one-element array
      bna: bfi.h: Avoid the use of one-element array
      net: qed_hsi.h: Avoid the use of one-element array
      net/mlx4: Use fallthrough pseudo-keyword
      net/mlx5: Use fallthrough pseudo-keyword
      mlxsw: spectrum_cnt: Use flex_array_size() helper in memcpy()
      net/sched: act_pedit: Use flex_array_size() helper in memcpy()
      mac80211: Use fallthrough pseudo-keyword
      net/sched: cls_u32: Use struct_size() helper

Hangbin Liu (2):
      selftests/bpf: Add xdpdrv mode for test_xdp_redirect
      Revert "vxlan: fix tos value before xmit"

Hao Luo (1):
      selftests/bpf: Switch test_vmlinux to use hrtimer_range_start_ns.

Heiner Kallweit (21):
      r8169: add info for DASH being enabled
      r8169: remove unused constant RsvdMask
      r8169: improve setting WoL on runtime-resume
      r8169: replace synchronize_rcu with synchronize_net
      r8169: move napi_disable call and rename rtl8169_hw_reset
      r8169: move updating counters to rtl8169_down
      r8169: move switching optional clock on/off to pll power functions
      r8169: allow setting irq coalescing if link is down
      net: core: try to runtime-resume detached device in __dev_open
      r8169: mark device as not present when in PCI D3
      r8169: remove no longer needed checks for device being runtime-active
      r8169: add rtl8169_up
      r8169: use RTNL to protect critical sections
      r8169: remove driver-specific mutex
      r8169: improve rtl8169_runtime_resume
      r8169: rename RTL8125 to RTL8125A
      r8169: merge handling of RTL8101e and RTL8100e
      r8169: sync support for RTL8401 with vendor driver
      net: phy: realtek: add support for RTL8125B-internal PHY
      r8169: add support for RTL8125B
      r8169: allow to enable ASPM on RTL8125A

Herbert Xu (1):
      Bluetooth: Remove CRYPTO_ALG_INTERNAL flag

Hilda Wu (1):
      Bluetooth: btusb: USB alternate setting 1 for WBS

Hoang Huu Le (1):
      tipc: update a binding service via broadcast

Horatiu Vultur (15):
      bridge: uapi: mrp: Extend MRP attributes to get the status
      bridge: mrp: Add br_mrp_fill_info
      bridge: Extend br_fill_ifinfo to return MPR status
      switchdev: mrp: Extend switchdev API for MRP Interconnect
      bridge: uapi: mrp: Extend MRP attributes for MRP interconnect
      bridge: mrp: Extend bridge interface
      bridge: mrp: Extend br_mrp for MRP interconnect
      bridge: mrp: Rename br_mrp_port_open to br_mrp_ring_port_open
      bridge: mrp: Add br_mrp_in_port_open function
      bridge: switchdev: mrp: Extend MRP API for switchdev for MRP Interconnect
      bridge: mrp: Implement the MRP Interconnect API
      bridge: mrp: Extend MRP netlink interface for configuring MRP interconnect
      bridge: uapi: mrp: Extend MRP_INFO attributes for interconnect status
      bridge: mrp: Extend br_mrp_fill_info
      net: bridge: Add port attribute IFLA_BRPORT_MRP_IN_OPEN

Hu Haowen (1):
      net/mlx5: FWTrace: Add missing space

Huang Guobin (1):
      tipc: Use is_broadcast_ether_addr() instead of memcmp()

Hulk Robot (1):
      qed: Make symbol 'qed_hw_err_type_descr' static

Huy Nguyen (2):
      net/mlx5: Add IPsec related Flow steering entry's fields
      net/mlx5e: IPsec: Add IPsec steering in local NIC RX

Ian Rogers (1):
      libbpf bpf_helpers: Use __builtin_offsetof for offsetof

Ido Schimmel (32):
      mlxsw: spectrum_span: Move SPAN operations out of global file
      mlxsw: spectrum_span: Prepare for global mirroring triggers
      mlxsw: spectrum_span: Add support for global mirroring triggers
      mlxsw: spectrum_span: Add APIs to enable / disable global mirroring triggers
      devlink: Fix use-after-free when destroying health reporters
      mlxsw: spectrum_span: Add per-ASIC SPAN agent operations
      mlxsw: spectrum_span: Add driver private info to parms_set() callback
      mlxsw: spectrum_span: Do not dereference destination netdev
      mlxsw: spectrum_span: Add support for mirroring towards CPU port
      mlxsw: spectrum_span: Allow passing parameters to SPAN agents
      mlxsw: spectrum_span: Allow setting policer on a SPAN agent
      mlxsw: trap: Add trap identifiers for mirrored packets
      mlxsw: pci: Add mirror reason field to CQEv2
      mlxsw: pci: Retrieve mirror reason from CQE during receive
      mlxsw: core: Use mirror reason during Rx listener lookup
      mlxsw: reg: Add policer bandwidth limits
      mlxsw: resources: Add resource identifier for global policers
      mlxsw: spectrum_policer: Add policer core
      mlxsw: spectrum_policer: Add devlink resource support
      mlxsw: core_acl_flex_actions: Work around hardware limitation
      mlxsw: core_acl_flex_actions: Add police action
      mlxsw: spectrum_acl: Offload FLOW_ACTION_POLICE
      selftests: forwarding: Add tc-police tests
      selftests: mlxsw: tc_restrictions: Test tc-police restrictions
      selftests: mlxsw: Add scale test for tc-police
      selftests: mlxsw: Test policers' occupancy
      ipmr: Copy option to correct variable
      devlink: Pass extack when setting trap's action and group's parameters
      mlxsw: spectrum_trap: Use 'size_t' for array sizes
      mlxsw: spectrum_trap: Allow for per-ASIC trap groups initialization
      mlxsw: spectrum_trap: Allow for per-ASIC traps initialization
      mlxsw: spectrum_trap: Add early_drop trap

Igor Russkikh (4):
      net: atlantic: A2: half duplex support
      net: atlantic: A2: flow control support
      net: atlantic: put ptp code under IS_REACHABLE check
      net: atlantic: enable ipv6 support for TCP LSO and UDP GSO

Ilya Leoshkevich (7):
      selftests: bpf: test_kmod.sh: Fix running out of srctree
      s390/bpf: Fix sign extension in branch_ku
      s390/bpf: Use brcl for jumping to exit_ip if necessary
      s390/bpf: Tolerate not converging code shrinking
      s390/bpf: Use bpf_skip() in bpf_jit_prologue()
      selftests/bpf: Fix test_lwt_seg6local.sh hangs
      samples/bpf, selftests/bpf: Use bpf_probe_read_kernel

Ioana Ciornei (10):
      dpaa2-eth: check the result of skb_to_sgvec()
      dpaa2-eth: fix condition for number of buffer acquire retries
      dpaa2-eth: fix recursive header include
      dpaa2-eth: fix misspelled function parameters in dpni_[set/get]_taildrop
      dpaa2-eth: send a scatter-gather FD instead of realloc-ing
      dpaa2-eth: add software counter for Tx frames converted to S/G
      dpaa2-eth: fix draining of S/G cache
      dpaa2-eth: move the mqprio setup into a separate function
      dpaa2-eth: add API for Tx shaping
      dpaa2-eth: add support for TBF offload

Ioana Radulescu (1):
      dpaa2-eth: trim debugfs FQ stats

Ioana-Ruxandra Stăncioi (1):
      seg6_iptunnel: Refactor seg6_lwt_headroom out of uapi header

Ismael Ferreras Morezuelas (1):
      Bluetooth: btusb: Fix and detect most of the Chinese Bluetooth controllers

Jacek Naczyk (1):
      ice: Add support for unified NVM update flow capability

Jacob Keller (8):
      ice: implement snapshot for device capabilities
      ice: add documentation for device-caps region
      ice: refactor ice_discover_caps to avoid need to retry
      ice: split ice_parse_caps into separate functions
      ice: split ice_discover_caps into two functions
      Add pldmfw library for PLDM firmware update
      ice: add flags indicating pending update of firmware module
      ice: implement device flash update via devlink

Jakub Kicinski (37):
      docs: networking: reorganize driver documentation again
      docs: networking: move z8530 to the hw driver section
      docs: networking: move baycom to the hw driver section
      docs: networking: move ray_cs to the hw driver section
      docs: networking: move remaining Ethernet driver docs to the hw section
      docs: networking: move AppleTalk / LocalTalk drivers to the hw driver section
      docs: networking: move ATM drivers to the hw driver section
      docs: networking: move FDDI drivers to the hw driver section
      debugfs: make sure we can remove u32_array files cleanly
      udp_tunnel: re-number the offload tunnel types
      udp_tunnel: add central NIC RX port offload infrastructure
      ethtool: add tunnel info interface
      netdevsim: add UDP tunnel port offload support
      selftests: net: add a test for UDP tunnel info infra
      ixgbe: don't clear UDP tunnel ports when RXCSUM is disabled
      ixgbe: convert to new udp_tunnel_nic infra
      bnxt: convert to new udp_tunnel_nic infra
      mlx4: convert to new udp_tunnel_nic infra
      nfp: convert to new udp_tunnel_nic infra
      be2net: convert to new udp_tunnel_nic infra
      xgbe: switch to more generic VxLAN detection
      xgbe: convert to new udp_tunnel_nic infra
      bnx2x: convert to new udp_tunnel_nic infra
      cxgb4: convert to new udp_tunnel_nic infra
      enic: convert to new udp_tunnel_nic infra
      liquidio: convert to new udp_tunnel_nic infra
      liquidio_vf: convert to new udp_tunnel_nic infra
      fm10k: convert to new udp_tunnel_nic infra
      qede: convert to new udp_tunnel_nic infra
      qlcnic: convert to new udp_tunnel_nic infra
      Merge branch 'mlxsw-reg-add-policer-bandwidth-limits'
      Merge branch 'net-fec-a-few-improvements'
      Merge branch 'net-sched-do-not-drop-root-lock-in-tcf_qevent_handle'
      net: bnxt: don't complain if TC flower can't be supported
      sfc: convert to new udp_tunnel infrastructure
      udp_tunnel: add the ability to hard-code IANA VXLAN
      net/mlx5: convert to new udp_tunnel infrastructure

Jakub Sitnicki (20):
      bpf, netns: Handle multiple link attachments
      bpf: Introduce SK_LOOKUP program type with a dedicated attach point
      inet: Extract helper for selecting socket from reuseport group
      inet: Run SK_LOOKUP BPF program on socket lookup
      inet6: Extract helper for selecting socket from reuseport group
      inet6: Run SK_LOOKUP BPF program on socket lookup
      udp: Extract helper for selecting socket from reuseport group
      udp: Run SK_LOOKUP BPF program on socket lookup
      udp6: Extract helper for selecting socket from reuseport group
      udp6: Run SK_LOOKUP BPF program on socket lookup
      bpf: Sync linux/bpf.h to tools/
      libbpf: Add support for SK_LOOKUP program type
      tools/bpftool: Add name mappings for SK_LOOKUP prog and attach type
      selftests/bpf: Add verifier tests for bpf_sk_lookup context access
      selftests/bpf: Tests for BPF_SK_LOOKUP attach point
      bpf, netns: Fix build without CONFIG_INET
      udp: Don't discard reuseport selection when group has connections
      selftests/bpf: Test BPF socket lookup and reuseport with connections
      selftests/bpf: Omit nodad flag when adding addresses to loopback
      udp, bpf: Ignore connections in reuseport group after BPF sk lookup

Jarod Wilson (8):
      xfrm: bail early on slave pass over skb
      ixgbe_ipsec: become aware of when running as a bonding slave
      mlx5: become aware of when running as a bonding slave
      bonding: support hardware encryption offload to slaves
      bonding/xfrm: use real_dev instead of slave_dev
      bonding: allow xfrm offload setup post-module-load
      bonding: deal with xfrm state in all modes and add more error-checking
      bonding: don't need RTNL for ipsec helpers

Jason Wang (1):
      tun: add missing rcu annotation in tun_set_ebpf()

Jean-Philippe Brucker (1):
      bpf, arm64: Add BPF exception tables

Jeff Kirsher (3):
      net/intel: remove driver versions from Intel drivers
      ethernet/intel: Convert fallthrough code comments
      ixgbe: Cleanup unneeded delay in ethtool test

Jeremy Linton (2):
      net: phy: Allow mdio buses to auto-probe c45 devices
      net/fsl: enable extended scanning in xgmac_mdio

Jerry Crunchtime (1):
      libbpf: Fix register in PT_REGS MIPS macros

Jesper Dangaard Brouer (6):
      selftests/bpf: Test_progs indicate to shell on non-actions
      selftests/bpf: Test_progs option for getting number of tests
      selftests/bpf: Test_progs option for listing test names
      selftests/bpf: test_progs use another shell exit on non-actions
      selftests/bpf: test_progs avoid minus shell exit codes
      cpumap: Use non-locked version __ptr_ring_consume_batched

Jesse Brandeburg (3):
      i40e: remove unused defines
      ice: remove page_reuse statistic
      ice: add useful statistics

Jia-Ju Bai (2):
      atm: eni: avoid accessing the data mapped to streaming DMA
      atm: idt77252: avoid accessing the data mapped to streaming DMA

Jia-Shyr Chuang (1):
      brcmfmac: increase message buffer size for control packets

Jiafei Pan (2):
      dpaa2-eth: use napi_schedule to be compatible with PREEMPT_RT
      enetc: use napi_schedule to be compatible with PREEMPT_RT

Jian Yang (1):
      selftests: txtimestamp: add flag for timestamp validation tolerance.

Jianfeng Wang (1):
      tcp: apply a floor of 1 for RTT samples from TCP timestamps

Jiri Olsa (11):
      bpf: Add resolve_btfids tool to resolve BTF IDs in ELF object
      bpf: Compile resolve_btfids tool at kernel compilation start
      bpf: Add BTF_ID_LIST/BTF_ID/BTF_ID_UNUSED macros
      bpf: Resolve BTF IDs in vmlinux image
      bpf: Remove btf_id helpers resolving
      bpf: Use BTF_ID to resolve bpf_ctx_convert struct
      bpf: Add info about .BTF_ids section to btf.rst
      tools headers: Adopt verbatim copy of btf_ids.h from kernel sources
      selftests/bpf: Add test for resolve_btfids
      bpf: Fix build for disabled CONFIG_DEBUG_INFO_BTF option
      bpf: Fix cross build for CONFIG_DEBUG_INFO_BTF option

Jiri Pirko (1):
      sched: sch_api: add missing rcu read lock to silence the warning

Jisheng Zhang (8):
      net: mdio-mux-gpio: use devm_gpiod_get_array()
      net: stmmac: Remove WAKE_MAGIC if HW shows no pmt_magic_frame
      net: stmmac: Move device_can_wakeup() check earlier in set_wol
      net: stmmac: only call pmt() during suspend/resume if HW enables PMT
      net: stmmac: Support WOL with phy
      net: stmmac: Speed down the PHY if WoL to save energy
      net: mvneta: fix comment about phylink_speed_down
      net: stmmac: fix failed to suspend if phy based WOL is enabled

Joe Perches (2):
      rtlwifi: Use const in 8188ee/8723be/8821ae swing_table declarations
      via-velocity: Use more typical logging styles

Johannes Berg (3):
      cfg80211: invert HE BSS color 'disabled' to 'enabled'
      mac80211: warn only once in check_sdata_in_driver() at each caller
      mac80211: fix misplaced while instead of if

John Crispin (1):
      mac8211: fix struct initialisation

John Fastabend (4):
      selftests/bpf: Add variable-length data concat pattern less than test
      bpf: Fix bpftool without skeleton code enabled
      bpf, selftests: use :: 1 for localhost in tcp_server.py
      bpf, selftests: Use single cgroup helpers for both test_sockmap/progs

John Ogness (1):
      af_packet: TPACKET_V3: replace busy-wait loop

Jonathan McDowell (6):
      net: dsa: qca8k: Switch to PHYLINK instead of PHYLIB
      net: dsa: qca8k: Improve SGMII interface handling
      net: dsa: qca8k: Minor comment spelling fix
      net: dsa: qca8k: implement the port MTU callbacks
      net: dsa: qca8k: Add define for port VID
      net: dsa: qca8k: Add 802.1q VLAN support

Joseph Chuang (1):
      brcmfmac: initialize the requested dwell time

Joseph Hwang (1):
      Bluetooth: btusb: add Realtek 8822CE to usb_device_id table

Jouni Malinen (1):
      mac80211: Handle special status codes in SAE commit

Julia Lawall (2):
      sfc: drop unnecessary list_empty
      net/mlx5: drop unnecessary list_empty

Julian Anastasov (3):
      ipvs: register hooks only with services
      ipvs: avoid expiring many connections from timer
      ipvs: allow connection reuse for unconfirmed conntrack

Julian Squires (1):
      cfg80211: allow vendor dumpit to terminate by returning 0

Julian Wiedmann (14):
      s390/qeth: reject unsupported link type earlier
      s390/qeth: fine-tune errno when cmds are cancelled
      s390/qeth: only init the isolation mode when necessary
      s390/qeth: don't clear the configured isolation mode
      s390/qeth: clean up error handling for isolation mode cmds
      s390/qeth: use u64_to_user_ptr() in the OAT code
      s390/qeth: clean up a magic number in the OAT callback
      s390/qeth: cleanup OAT code
      s390/qeth: unify RX-mode hashtables
      s390/qeth: constify the MPC initialization data
      s390/qeth: tolerate pre-filled RX buffer
      s390/qeth: integrate RX refill worker with NAPI
      s390/qeth: don't process empty bridge port events
      s390/qeth: use all configured RX buffers

Kalle Valo (5):
      Merge ath-next from git://git.kernel.org/.../kvalo/ath.git
      Merge tag 'iwlwifi-next-for-kalle-2020-06-11' of git://git.kernel.org/.../iwlwifi/iwlwifi-next
      Merge branch 'wilc1000-move-out-of-staging'
      Merge tag 'mt76-for-kvalo-2020-07-21' of https://github.com/nbd168/wireless
      Merge git://git.kernel.org/.../kvalo/wireless-drivers.git

Karsten Graul (2):
      s390/ism: indicate correct error reason in ism_alloc_dmb()
      net/smc: unique reason code for exceeded max dmb count

Karthikeyan Periyasamy (2):
      ath11k: Add direct buffer ring support
      ath11k: add support for spectral scan

Kees Cook (2):
      b43: Remove uninitialized_var() usage
      rtlwifi: rtl8192cu: Remove uninitialized_var() usage

Kevin Darbyshire-Bryant (1):
      sch_cake: add RFC 8622 LE PHB support to CAKE diffserv handling

Kieran Bingham (2):
      wireless: Fix trivial spelling
      drivers: net: wan: Fix trivial spelling

Kiran K (1):
      Bluetooth: btusb: Refactor of firmware download flow for Intel conrollers

Kiran Patil (3):
      ice: return correct error code from ice_aq_sw_rules
      ice: fix the vsi_id mask to be 10 bit for set_rss_lut
      ice: port fix for chk_linearlize

Krzysztof Kazimierczak (1):
      ice: need_wakeup flag might not be set for Tx

Kuniyuki Iwashima (1):
      inet: Remove an unnecessary argument of syn_ack_recalc().

Kurt Kanzenbach (3):
      dt-bindings: net: dsa: Add DSA yaml binding
      dt-bindings: net: dsa: Let dsa.txt refer to dsa.yaml
      net: dsa: of: Allow ethernet-ports as encapsulating node

Larry Finger (2):
      rtlwifi: Fix endian issue in ps.c
      rtlwifi: rtl8188ee: Fix endian issue

Laura Garcia Liebana (1):
      netfilter: introduce support for reject at prerouting stage

Leon Romanovsky (1):
      net/mlx5: Delete extra dump stack that gives nothing

Lev Faerman (1):
      ice: Rename low_power_ctrl

Li Heng (1):
      bnxt_en: Remove superfluous memset()

Lihong Kou (1):
      Bluetooth: add a mutex lock to avoid UAF in do_enale_set

Linus Lüssing (2):
      batman-adv: Introduce a configurable per interface hop penalty
      cfg80211/mac80211: add mesh_param "mesh_nolearn" to skip path discovery

Linus Walleij (6):
      net: dsa: tag_rtl4_a: Implement Realtek 4 byte A tag
      net: dsa: rtl8366rb: Support the CPU DSA tag
      brcm80211: brcmsmac: Move LEDs to GPIO descriptors
      net: dsa: rtl8366: Fix VLAN semantics
      net: dsa: rtl8366: Fix VLAN set-up
      bcma: gpio: Use irqchip template

Loic Poulain (1):
      mac80211: Do not report beacon loss if beacon filtering enabled

Lorenzo Bianconi (57):
      samples/bpf: xdp_redirect_cpu_user: Do not update bpf maps in option loop
      cpumap: Formalize map value as a named struct
      bpf: cpumap: Add the possibility to attach an eBPF program to cpumap
      bpf: cpumap: Implement XDP_REDIRECT for eBPF programs attached to map entries
      libbpf: Add SEC name for xdp programs attached to CPUMAP
      samples/bpf: xdp_redirect_cpu: Load a eBPF program on cpumap
      selftest: Add tests for XDP programs in CPUMAP entries
      xdp: introduce xdp_get_shared_info_from_{buff, frame} utility routines
      net: mvneta: move skb build after descriptors processing
      net: mvneta: move mvneta_run_xdp after descriptors processing
      net: mvneta: drop all fragments in XDP_DROP
      net: mvneta: get rid of skb in mvneta_rx_queue
      net: mvneta: move rxq->left_size on the stack
      bpf: cpumap: Fix possible rcpu kthread hung
      mt76: add missing lock configuring coverage class
      mt76: mt7615: fix lmac queue debugsfs entry
      mt76: mt7615: fix hw queue mapping
      mt76: overwrite qid for non-bufferable mgmt frames
      mt76: usb: rely on mt76_for_each_q_rx
      mt76: rely on register macros
      mt76: add U-APSD support on AP side
      mt76: mt76x2e: rename routines in pci.c
      mt76: mt76x2: fix pci suspend/resume on mt7612e
      mt76: mt76x2u: enable HC-M7662BU1
      mt76: mt7615: avoid polling in fw_own for mt7663
      mt76: move mt76 workqueue in common code
      mt76: mt7615: add mt7615_pm_wake utility routine
      mt76: mt7615: introduce mt7615_mutex_{acquire,release} utilities
      mt76: mt7615: wake device before accessing regmap in debugfs
      mt76: mt7615: wake device before configuring hw keys
      mt76: mt7615: introduce pm_power_save delayed work
      mt76: mt7615: wake device in mt7615_update_channel before access regmap
      mt76: mt7615: acquire driver_own before configuring device for suspend
      mt76: mt7615: wake device before performing freq scan
      mt76: mt7615: add missing lock in mt7615_regd_notifier
      mt76: mt7615: run mt7615_mcu_set_wmm holding mt76 mutex
      mt76: mt7615: run mt7615_mcu_set_roc holding mt76 mutex
      mt76: mt7615: wake device before pulling packets from mac80211 queues
      mt76: mt7615: wake device before pushing frames in mt7615_tx
      mt76: mt7615: run mt7615_pm_wake in mt7615_mac_sta_{add,remove}
      mt76: mt7615: check MT76_STATE_PM flag before accessing the device
      mt76: mt7615: do not request {driver,fw}_own if already granted
      mt76: mt7615: add runtime-pm knob in mt7615 debugfs
      mt76: mt7615: enable beacon hw filter for runtime-pm
      mt76: mt7615: add idle-timeout knob in mt7615 debugfs
      mt76: mt7615: improve mt7615_driver_own reliability
      mt76: mt7663u: sync probe sampling with rate configuration
      mt76: mt7615: avoid scheduling runtime-pm during hw scan
      mt76: mt7615: reschedule ps work according to last activity
      mt76: mt7615: take into account sdio bus configuring txwi
      mt76: mt76u: add mt76_skb_adjust_pad utility routine
      mt76: mt7615: sdio code must access rate/key regs in preocess context
      mt76: mt7615: introduce mt7663-usb-sdio-common module
      mt76: mt76s: move queue accounting in mt76s_tx_queue_skb
      mt76: mt7615: fix possible memory leak in mt7615_mcu_wtbl_sta_add
      net: mvpp2: fix memory leak in mvpp2_rx
      net: gre: recompute gre csum for sctp over gre tunnels

Louis Peens (1):
      bpf: Fix another bpftool segfault without skeleton code enabled

Luc Van Oostenryck (16):
      cail,hsi: fix cfhsi_xmit()'s return type
      caif: fix caif_xmit()'s return type
      caif: fix cfspi_xmit()'s return type
      caif: fix cfv_netdev_tx()'s return type
      net: aquantia: fix aq_ndev_start_xmit()'s return type
      net: arc_emac: fix arc_emac_tx()'s return type
      net: nb8800: fix nb8800_xmit()'s return type
      net: nfp: fix nfp_net_tx()'s return type
      net: pch_gbe: fix pch_gbe_xmit_frame()'s return type
      net: dwc-xlgmac: fix xlgmac_xmit()'s return type
      net: plip: fix plip_tx_packet()'s return type
      usbnet: ipheth: fix ipheth_tx()'s return type
      net/hsr: fix hsr_dev_xmit()'s return type
      l2tp: fix l2tp_eth_dev_xmit()'s return type
      cxgb4vf: fix t4vf_eth_xmit()'s return type
      wilc1000: let wilc_mac_xmit() return NETDEV_TX_OK

Luca Ceresoli (1):
      iwlwifi: fix config variable name in comment

Luiz Augusto von Dentz (1):
      Bluetooth: Disconnect if E0 is used for Level 4

Luke Nelson (3):
      bpf, riscv: Modify JIT ctx to support compressed instructions
      bpf, riscv: Add encodings for compressed instructions
      bpf, riscv: Use compressed instructions in the rv64 JIT

Luo bin (11):
      hinic: add support to set and get pause params
      hinic: add support to set and get irq coalesce
      hinic: add self test support
      hinic: add support to identify physical device
      hinic: add support to get eeprom information
      hinic: remove unused but set variable
      hinic: add firmware update support
      hinic: add support to handle hw abnormal event
      hinic: add log in exception handling processes
      hinic: add generating mailbox random index support
      hinic: add check for mailbox msg from VF

Magnus Karlsson (3):
      i40e: optimize AF_XDP Tx completion path
      i40e: eliminate division in napi_poll data path
      i40e: move check of full Tx ring to outside of send loop

Manish Mandlik (2):
      Bluetooth: Check scan state before disabling during suspend
      Bluetooth: Terminate the link if pairing is cancelled

Maor Gottlieb (2):
      net/mlx5: Export resource dump interface
      net/mlx5: Add support in query QP, CQ and MKEY segments

Marcel Holtmann (6):
      Bluetooth: mgmt: Add commands for runtime configuration
      Bluetooth: mgmt: Use command complete on success for set system config
      Bluetooth: Translate additional address type correctly
      Bluetooth: Configure controller address resolution if available
      Bluetooth: Update resolving list when updating whitelist
      Bluetooth: Increment management interface revision

Marcin Szycik (1):
      ice: cleanup VSI on probe fail

Mark Einon (1):
      net: ethernet: et131x: Remove redundant register read

Mark Starovoytov (13):
      net: atlantic: MACSec offload statistics checkpatch fix
      net: atlantic: Replace ENOTSUPP usage to EOPNOTSUPP
      net: atlantic: make aq_pci_func_init static
      net: atlantic: fix typo in aq_ring_tx_clean
      net: atlantic: add alignment checks in hw_atl2_utils_fw.c
      net: atlantic: align return value of ver_match function with function name
      net: atlantic: move FRAC_PER_NS to aq_hw.h
      net: atlantic: use simple assignment in _get_stats and _get_sw_stats
      net: atlantic: make _get_sw_stats return count as return value
      net: atlantic: split rx and tx per-queue stats
      net: atlantic: use u64_stats_update_* to protect access to 64-bit stats
      net: atlantic: use U32_MAX in aq_hw_utils.c
      net: atlantic: add hwmon getter for MAC temperature

Markus Theil (4):
      mt76: allow more channels, allowed in ETSI domain
      mt76: fix include in pci.h
      cfg80211/mac80211: add connected to auth server to meshconf
      cfg80211/mac80211: add connected to auth server to station info

Martin (1):
      bareudp: Added attribute to enable & disable rx metadata collection

Martin Blumenstingl (4):
      dt-bindings: net: dwmac-meson: Add a compatible string for G12A onwards
      net: stmmac: dwmac-meson8b: add a compatible string for G12A SoCs
      net: stmmac: dwmac-meson8b: use clk_parent_data for clock registration
      dt-bindings: net: bluetooth: realtek: Fix uart-has-rtscts example

Martin KaFai Lau (3):
      bpf: sk_storage: Prefer to get a free cache_idx
      bpf: selftests: A few improvements to network_helpers.c
      bpf: selftests: Restore netns after each test

Martin Varghese (2):
      bareudp: Reverted support to enable & disable rx metadata collection
      net: Removed the device type check to add mpls support for devices

Masahiro Yamada (1):
      bpfilter: Allow to build bpfilter_umh as a module without static library

Masanari Iida (1):
      mlxsw: spectrum_dcb: Fix a spelling typo in spectrum_dcb.c

Mat Martineau (12):
      mptcp: Allow DATA_FIN in headers without TCP FIN
      mptcp: Return EPIPE if sending is shut down during a sendmsg
      mptcp: Remove outdated and incorrect comment
      mptcp: Use MPTCP-level flag for sending DATA_FIN
      mptcp: Track received DATA_FIN sequence number and add related helpers
      mptcp: Add mptcp_close_state() helper
      mptcp: Add helper to process acks of DATA_FIN
      mptcp: Use full MPTCP-level disconnect state machine
      mptcp: Only use subflow EOF signaling on fallback connections
      mptcp: Skip unnecessary skb extension allocation for bare acks
      mptcp: Safely read sequence number when lock isn't held
      mptcp: Safely store sequence number when sending data

Mathy Vanhoef (6):
      mac80211: never drop injected frames even if normally not allowed
      mac80211: add radiotap flag to prevent sequence number overwrite
      mac80211: do not overwrite the sequence number if requested
      mac80211: use same flag everywhere to avoid sequence number overwrite
      mac80211: remove unused flags argument in transmit functions
      mac80211: parse radiotap header when selecting Tx queue

Matteo Croce (5):
      mvpp2: refactor BM pool init percpu code
      mvpp2: use page_pool allocator
      mvpp2: add basic XDP support
      mvpp2: XDP TX support
      mvpp2: fix pointer check

Matthias Brugger (1):
      brcmfmac: Transform compatible string for FW loading

Matthias Kaehlcke (4):
      Bluetooth: hci_qca: Simplify determination of serial clock on/off state from votes
      Bluetooth: hci_qca: Only remove TX clock vote after TX is completed
      Bluetooth: hci_qca: Skip serdev wait when no transfer is pending
      Bluetooth: hci_qca: Refactor error handling in qca_suspend()

Matthieu Baerts (1):
      selftests: mptcp: capture pcap on both sides

Max Chou (1):
      Bluetooth: Return NOTIFY_DONE for hci_suspend_notifier

Maxim Kochetkov (7):
      net: phy: marvell: use a single style for referencing functions
      net: phy: marvell: Add Marvell 88E1340S support
      net: phy: marvell: Add Marvell 88E1548P support
      soc: mscc: ocelot: add MII registers description
      net: mscc: ocelot: convert SYS_PAUSE_CFG register access to regfield
      net: mscc: ocelot: extend watermark encoding function
      net: dsa: felix: introduce support for Seville VSC9953 switch

Maxim Mikityanskiy (1):
      net/mlx5e: Remove unused mlx5e_xsk_first_unused_channel

Meir Lichtinger (2):
      ethtool: Add support for 100Gbps per lane link modes
      net/mlx5: Added support for 100Gbps per lane link modes

Miao-chen Chou (9):
      Bluetooth: Add definitions for advertisement monitor features
      Bluetooth: Add handler of MGMT_OP_READ_ADV_MONITOR_FEATURES
      Bluetooth: Add handler of MGMT_OP_ADD_ADV_PATTERNS_MONITOR
      Bluetooth: Add handler of MGMT_OP_REMOVE_ADV_MONITOR
      Bluetooth: Notify adv monitor added event
      Bluetooth: Notify adv monitor removed event
      Bluetooth: Update background scan and report device based on advertisement monitors
      Bluetooth: Fix kernel oops triggered by hci_adv_monitors_clear()
      Bluetooth: Use whitelist for scan policy when suspending

Miaohe Lin (11):
      cxgb4: use eth_zero_addr() to clear mac address
      net/ncsi: use eth_zero_addr() to clear mac address
      ixgbe: use eth_zero_addr() to clear mac address
      igb: use eth_zero_addr() to clear mac address
      net: Pass NULL to skb_network_protocol() when we don't care about vlan depth
      mac80211: use eth_zero_addr() to clear mac address
      nl80211: use eth_zero_addr() to clear mac address
      net: qede: use eth_zero_addr() to clear mac address
      net: qed: use eth_zero_addr() to clear mac address
      net: Use __skb_pagelen() directly in skb_cow_data()
      net: Pass NULL to skb_network_protocol() when we don't care about vlan depth

Michael Chan (15):
      bnxt_en: Set up the chip specific RSS table size.
      bnxt_en: Fix up bnxt_get_rxfh_indir_size().
      bnxt_en: Add logical RSS indirection table structure.
      bnxt_en: Add helper function to return the number of RSS contexts.
      bnxt_en: Fill HW RSS table from the RSS logical indirection table.
      bnxt_en: Return correct RSS indirection table entries to ethtool -x.
      bnxt_en: Implement ethtool -X to set indirection table.
      bnxt_en: Update firmware interface to 1.10.1.54.
      bnxt_en: Use macros to define port statistics size and offset.
      bnxt_en: Refactor statistics code and structures.
      bnxt_en: Allocate additional memory for all statistics blocks.
      bnxt_en: Retrieve hardware counter masks from firmware if available.
      bnxt_en: Retrieve hardware masks for port counters.
      bnxt_en: Accumulate all counters.
      bnxt_en: Switch over to use the 64-bit software accumulated counters.

Michael Walle (3):
      net: phy: add USXGMII link partner ability constants
      net: dsa: felix: (re)use already existing constants
      net: enetc: Initialize SerDes for SGMII and USXGMII protocols

Miguel Rodríguez Pérez (4):
      net: cdc_ether: use dev->intf to get interface information
      net: cdc_ether: export usbnet_cdc_update_filter
      net: cdc_ncm: add .ndo_set_rx_mode to cdc_ncm_netdev_ops
      net: cdc_ncm: hook into set_rx_mode to admit multicast traffic

Mika Westerberg (1):
      net: thunderbolt: Add comment clarifying prtcstns flags

Min Li (1):
      ptp: ptp_clockmatrix: update to support 4.8.7 firmware

Murali Karicheri (7):
      hsr: enhance netlink socket interface to support PRP
      net: hsr: introduce common code for skb initialization
      net: hsr: introduce protocol specific function pointers
      net: prp: add supervision frame generation utility function
      net: hsr: define and use proto_ops ptrs to handle hsr specific frames
      net: prp: add packet handling support
      net: prp: enhance debugfs to display PRP info

Nathan Chancellor (3):
      bonding: Remove extraneous parentheses in bond_setup
      amd8111e: Mark PM functions as __maybe_unused
      pcnet32: Mark PM functions as __maybe_unused

Navid Emamdoost (2):
      mt76: mt76u: add missing release on skb in __mt76x02u_mcu_send_msg
      mt7601u: add missing release on skb in mt7601u_mcu_msg_send

Nick Nunley (3):
      ice: restore VF MSI-X state during PCI reset
      ice: rename misleading grst_delay variable
      ice: Disable VLAN pruning in promiscuous mode

Nicolas Boichat (2):
      Bluetooth: hci_h5: Set HCI_UART_RESET_ON_INIT to correct flags
      Bluetooth: hci_serdev: Only unregister device if it was registered

Nicolas Ferre (3):
      MAINTAINERS: net: wilc1000: Update entry
      net: macb: WoL support for GEM type of Ethernet controller
      net: macb: Add WoL interrupt support for MACB type of Ethernet controller

Nicolas Saenz Julienne (1):
      brcmfmac: Set timeout value when configuring power save

Nikita Danilov (4):
      net: atlantic: remove baseX usage
      net: atlantic: A2: EEE support
      net: atlantic: fix variable type in aq_ethtool_get_pauseparam
      net: atlantic: use intermediate variable to improve readability a bit

Nikolay Aleksandrov (7):
      net: bridge: fdb_add_entry takes ndm as argument
      net: neighbor: add fdb extended attribute
      net: bridge: add option to allow activity notifications for any fdb entries
      net: bridge: add a flag to avoid refreshing fdb when changing/adding
      net: bridge: notify on vlan tunnel changes done via the old api
      net: bridge: fix undefined br_vlan_can_enter_range in tunnel code
      net: bridge: clear bridge's private skb space on xmit

Nirranjan Kirubaharan (1):
      cxgb4vf: configure ports accessible by the VF

Oleksij Rempel (1):
      net: phy: at803x: add mdix configuration support for AR9331 and AR8035

Oliver Neukum (3):
      hso: fix bailout in error case of probe
      usb: hso: no complaint about kmalloc failure
      usb: hso: remove bogus check for EINPROGRESS

Oz Shlomo (1):
      net/mlx5e: Use netdev_info instead of pr_info

P Praneesh (1):
      cfg80211/mac80211: avoid bss color setting in non-HE modes

Pablo Neira Ayuso (9):
      netfilter: nf_tables: add NFTA_CHAIN_ID attribute
      netfilter: nf_tables: add NFTA_RULE_CHAIN_ID attribute
      netfilter: nf_tables: add NFTA_VERDICT_CHAIN_ID attribute
      netfilter: nf_tables: expose enum nft_chain_flags through UAPI
      netfilter: nf_tables: add nft_chain_add()
      netfilter: nf_tables: add NFT_CHAIN_BINDING
      netfilter: nf_tables: reject unsupported chain flags
      netfilter: nf_tables: extended netlink error reporting for expressions
      netfilter: nf_tables: report EEXIST on overlaps

Pali Rohár (6):
      mwifiex: Fix firmware filename for sd8977 chipset
      mwifiex: Fix firmware filename for sd8997 chipset
      btmrvl: Fix firmware filename for sd8977 chipset
      btmrvl: Fix firmware filename for sd8997 chipset
      mwifiex: Use macro MWIFIEX_MAX_BSS_NUM for specifying limit of interfaces
      mwifiex: Fix reporting 'operation not supported' error code

Paolo Abeni (24):
      mptcp: add __init annotation on setup functions
      mptcp: refactor token container
      mptcp: move crypto test to KUNIT
      mptcp: introduce token KUNIT self-tests
      mptcp: check for plain TCP sock at accept time
      mptcp: create first subflow at msk creation time
      mptcp: __mptcp_tcp_fallback() returns a struct sock
      mptcp: close poll() races
      mptcp: do nonce initialization at subflow creation time
      inet_diag: support for wider protocol numbers
      mptcp: add msk interations helper
      mptcp: add MPTCP socket diag interface
      selftests/mptcp: add diag interface tests
      mptcp: zero token hash at creation time.
      subflow: always init 'rel_write_seq'
      mptcp: avoid data corruption on reinsert
      mptcp: mark as fallback even early ones
      mptcp: explicitly track the fully established status
      mptcp: cleanup subflow_finish_connect()
      subflow: explicitly check for plain tcp rsk
      subflow: use rsk_ops->send_reset()
      subflow: introduce and use mptcp_can_accept_new_subflow()
      mptcp: fix bogus sendmsg() return code under pressure
      mptcp: be careful on subflow creation

Parav Pandit (26):
      net/devlink: Prepare devlink port functions to fill extack
      net/devlink: Support querying hardware address of port function
      net/devlink: Support setting hardware address of port function
      net/mlx5: Constify mac address pointer
      net/mlx5: E-switch, Introduce and use eswitch support check helper
      net/mlx5: Move helper to eswitch layer
      net/mlx5: E-switch, Support querying port function mac address
      net/mlx5: Split mac address setting function for using state_lock
      net/mlx5: E-switch, Supporting setting devlink port function mac address
      net/mlx5: Avoid eswitch header inclusion in fs core layer
      net/mlx5: Avoid RDMA file inclusion in core driver
      net/mlx5: Avoid eswitch header inclusion in fs core layer
      net/mlx5: E-switch, When eswitch is unsupported, return -EOPNOTSUPP
      net/mlx5e: Fix missing switch_id for representors
      net/mlx5: E-switch, Avoid function change handler for non ECPF
      net/mlx5: E-switch, Reduce dependency on num_vfs during mode set
      devlink: Do not hold devlink mutex when initializing devlink fields
      devlink: Avoid duplicate check for reload enabled flag
      devlink: Add comment for devlink instance lock
      devlink: Constify devlink instance pointer
      devlink: Always use user_ptr[0] for devlink and simplify post_doit
      net/mlx5: E-switch, Consider maximum vf vports for steering init
      net/mlx5: E-switch, Reuse total_vports and avoid duplicate nvports
      net/mlx5: E-switch, Use eswitch total_vports
      net/mlx5e: Link non uplink representors to PCI device
      net/mlx5e: Enable users to change VF/PF representors carrier state

Patrick Steinhardt (1):
      Bluetooth: Fix update of connection state in `hci_encrypt_cfm`

Paul Blakey (8):
      net/mlx5e: CT: Save ct entries tuples in hashtables
      net/mlx5e: CT: Allow header rewrite of 5-tuple and ct clear action
      net/mlx5e: CT: Don't offload tuple rewrites for established tuples
      net/mlx5e: CT: Restore ct state from lookup in zone instead of tupleid
      net/mlx5e: Export sharing of mod headers to a new file
      net/mlx5e: CT: Re-use tuple modify headers for identical modify actions
      net/mlx5e: CT: Use mapping for zone restore register
      net/mlx5e: CT: Expand tunnel register mappings

Paul Greenwalt (7):
      ice: refactor FC functions
      ice: move auto FEC checks into ice_cfg_phy_fec()
      ice: restore PHY settings on media insertion
      ice: add link lenient and default override support
      ice: add ice_aq_get_phy_caps() debug logs
      ice: update reporting of autoneg capabilities
      ice: add AQC get link topology handle support

Paul M Stillwell Jr (2):
      ice: add 1G SGMII PHY type
      ice: fix overwriting TX/RX descriptor values when rebuilding VSI

Pavel Belous (2):
      net: atlantic: PTP statistics
      net: atlantic: add support for 64-bit reads/writes

Peilin Ye (5):
      Bluetooth: Fix slab-out-of-bounds read in hci_extended_inquiry_result_evt()
      Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_evt()
      Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_with_rssi_evt()
      xdp: Prevent kernel-infoleak in xsk_getsockopt()
      openvswitch: Prevent kernel-infoleak in ovs_ct_put_key()

Petr Machata (23):
      mlxsw: spectrum: Split handling of pedit mangle by chip type
      mlxsw: core_acl_flex_actions: Add L4_PORT_ACTION
      mlxsw: spectrum_acl: Support FLOW_ACTION_MANGLE for TCP, UDP ports
      selftests: forwarding: Add a test for pedit munge tcp, udp sport, dport
      mlxsw: Bump firmware version to XX.2007.1168
      mlxsw: Enforce firmware version for Spectrum-3
      net: sched: Pass root lock to Qdisc_ops.enqueue
      net: sched: Introduce helpers for qevent blocks
      net: sched: sch_red: Split init and change callbacks
      net: sched: sch_red: Add qevents "early_drop" and "mark"
      selftests: forwarding: Add a RED test for SW datapath
      net: sched: Pass qdisc reference in struct flow_block_offload
      mlxsw: spectrum_flow: Convert a goto to a return
      mlxsw: spectrum_flow: Drop an unused field
      mlxsw: spectrum_matchall: Publish matchall data structures
      mlxsw: spectrum_flow: Promote binder-type dispatch to spectrum.c
      mlxsw: spectrum_qdisc: Offload mirroring on RED qevent early_drop
      selftests: mlxsw: RED: Test offload of mirror on RED early_drop qevent
      net: sched: Do not drop root lock in tcf_qevent_handle()
      Revert "net: sched: Pass root lock to Qdisc_ops.enqueue"
      mlxsw: spectrum_span: On policer_id_base_ref_count, use dec_and_test
      mlxsw: spectrum_qdisc: Offload action trap for qevents
      selftests: mlxsw: RED: Test offload of trapping on RED qevents

Petr Vaněk (1):
      xfrm: introduce oseq-may-wrap flag

Ping-Cheng Chen (1):
      rtw88: 8821c: coex: add functions and parameters

Ping-Ke Shih (1):
      rtlwifi: 8821ae: remove unused path B parameters from swing table

Piotr Kwapulinski (2):
      i40e: make PF wait reset loop reliable
      i40e: detect and log info about pre-recovery mode

Po Liu (6):
      net: qos offload add flow status with dropped count
      net: qos: add tc police offloading action with max frame size limit
      net: enetc: add support max frame size for tc flower offload
      net: qos: police action add index for tc flower offloading
      net: enetc add tc flower offload flow metering policing action
      net:qos: police action offloading parameter 'burst' change to the original value

Po-Hsu Lin (2):
      selftests: rtnetlink: correct the final return value for the test
      selftests: rtnetlink: make kci_test_encap() return sub-test result

Pradeep Kumar Chitrapu (8):
      ath11k: add 6G frequency list supported by driver
      ath11k: add support for 6GHz radio in driver
      ath11k: Use freq instead of channel number in rx path
      ath11k: extend peer_assoc_cmd for 6GHz band
      ath11k: set psc channel flag when sending channel list to firmware.
      ath11k: Add 6G scan dwell time parameter in scan request command
      ath11k: Send multiple scan_chan_list messages if required
      ath11k: Add support for 6g scan hint

Prasanna Kerekoppa (1):
      brcmfmac: To fix Bss Info flag definition Bug

Priyaranjan Jha (2):
      tcp: fix segment accounting when DSACK range covers multiple segments
      tcp: add SNMP counter for no. of duplicate segments reported by DSACK

Quentin Monnet (3):
      tools, bpftool: Fix variable shadowing in emit_obj_refs_json()
      tools, bpftool: Skip type probe if name is not found
      tools, bpftool: Add LSM type to array of prog names

Quentin Schulz (3):
      net: phy: mscc: remove the TR CLK disable magic value
      net: phy: mscc: 1588 block initialization
      MIPS: dts: ocelot: describe the load/save GPIO

Radoslaw Tyl (1):
      ixgbe: Add ethtool support to enable 2.5 and 5.0 Gbps support

Raed Salem (4):
      net/mlx5: Accel, Add core IPsec support for the Connect-X family
      net/mlx5: IPsec: Add HW crypto offload support
      net/mlx5e: IPsec: Add Connect-X IPsec Rx data path offload
      net/mlx5e: IPsec: Add Connect-X IPsec ESN update offload support

Rahul Lakkireddy (8):
      cxgb4: always sync access when flashing PHY firmware
      cxgb4: move device dump arrays in header to C file
      cxgb4: add mirror action to TC-MATCHALL offload
      cxgb4: add support for mirror Rxqs
      cxgb4: add main VI to mirror VI config replication
      cxgb4: fix check for running offline ethtool selftest
      cxgb4: fix extracting IP addresses in TC-FLOWER rules
      cxgb4: add TC-MATCHALL IPv6 support

Rajkumar Manoharan (1):
      ath11k: build HE 6 GHz capability

Randy Dunlap (19):
      bpf: Fix net/core/filter build errors when INET is not enabled
      Documentation: networking: fix ethtool-netlink table formats
      net: qed: drop duplicate words in comments
      net: skbuff.h: drop duplicate words in comments
      net: wimax: fix duplicate words in comments
      net: 9p: drop duplicate word in comment
      net: caif: drop duplicate words in comments
      net: dsa.h: drop duplicate word in comment
      net: ip6_fib.h: drop duplicate word in comment
      net: sctp: drop duplicate words in comments
      net: ipv6: drop duplicate word in comment
      bpf: Drop duplicated words in uapi helper comments
      net: atm: lec_arpc.h: delete duplicated word
      net: rds: rdma_transport.h: delete duplicated word
      net/wireless: nl80211.h: drop duplicate words in comments
      net/wireless: wireless.h: drop duplicate word in comments
      net/wireless: cfg80211.h: drop duplicate words in comments
      net/wireless: mac80211.h: drop duplicate words in comments
      net/wireless: regulatory.h: drop duplicate word in comment

Raveendran Somu (2):
      brcmfmac: To fix kernel crash on out of boundary access
      brcmfmac: allow credit borrowing for all access categories

Reto Schneider (3):
      rtlwifi: rtl8192cu: Fix deadlock
      rtlwifi: rtl8192cu: Prevent leaking urb
      rtlwifi: rtl8192cu: Free ieee80211_hw if probing fails

Richard Sailer (1):
      net: dccp: Add SIOCOUTQ IOCTL support (send buffer fill)

Roi Dayan (3):
      net/mlx5e: CT: Fix releasing ft entries
      netfilter: conntrack: Move nf_ct_offload_timeout to header file
      netfilter: flowtable: Set offload timeout when adding flow

Roopa Prabhu (1):
      rtnetlink: add support for protodown reason

Russell King (36):
      net: phy: clean up cortina workaround
      net: phy: clean up PHY ID reading
      net: phy: clean up get_phy_c45_ids() failure handling
      net: phy: clean up get_phy_c22_id() invalid ID handling
      net: phy: reword get_phy_device() kerneldoc
      net: phy: add support for probing MMDs >= 8 for devices-in-package
      net: phy: set devices_in_package only after validation
      net: phy: split devices_in_package
      net: phy: read MMD ID from all present MMDs
      net: mvpp2: add port support helpers
      net: mvpp2: add mvpp2_phylink_to_port() helper
      net: mvpp2: add register modification helper
      net: mvpp2: set xlg flow control in mvpp2_mac_link_up()
      net: mtk_eth_soc: use resolved link config in mac_link_up()
      net: phylink: add phylink_speed_(up|down) interface
      net: dsa/ar9331: convert to mac_link_up()
      net: phylink: only restart AN if the link mode is using in-band AN
      net: dsa/b53: change b53_force_port_config() pause argument
      net: dsa/b53: use resolved link config in mac_link_up()
      net: dsa/bcm_sf2: fix incorrect usage of state->link
      net: dsa/bcm_sf2: move speed/duplex forcing to mac_link_up()
      net: dsa/bcm_sf2: move pause mode setting into mac_link_up()
      net: phylink: update ethtool reporting for fixed-link modes
      net: phylink: rejig link state tracking
      net: phylink: rearrange resolve mac_config() call
      net: phylink: ensure link is down when changing interface
      net: phylink: update PCS when changing interface during resolution
      net: phylink: avoid mac_config calls
      net: phylink: simplify ksettings_set() implementation
      net: phylink: simplify phy case for ksettings_set method
      net: phylink: use config.an_enabled in ksettings_set method
      net: phylink: simplify fixed-link case for ksettings_set method
      net: phylink: in-band pause mode advertisement update for PCS
      net: phylink: re-implement interface configuration with PCS
      net: phylink: add struct phylink_pcs
      net: phylink: add interface to configure clause 22 PCS PHY

Ryder Lee (9):
      mt76: mt7615: add .set_tsf callback
      mt76: mt7915: add a fixed AC queue mapping
      mt76: mt7915: add MU-MIMO support
      mt76: mt7915: use ieee80211_tx_queue_params to avoid open coded
      mt76: mt7915: overwrite qid for non-bufferable mgmt frames
      mt76: mt7915: update HE capabilities
      mt76: mt7915: avoid memcpy in rxv operation
      mt76: mt7915: add missing CONFIG_MAC80211_DEBUGFS
      mt76: mt7915: fix potential memory leak in mcu message handler

Sabrina Dubroca (1):
      geneve: move all configuration under struct geneve_config

Saeed Mahameed (7):
      net/mlx5e: vxlan: Use RCU for vxlan table lookup
      net/mlx5e: vxlan: Return bool instead of opaque ptr in port_lookup()
      Merge branch 'mlx5-next' of git://git.kernel.org/.../mellanox/linux
      net/mlx5e: API to manipulate TTC rules destinations
      net/mlx5e: CT: Return err_ptr from internal functions
      net/mlx5e: CT: Remove unused function param
      net/mlx5e: Fix build break when CONFIG_XPS is not set

Sasha Neftin (15):
      igc: Add initial EEE support
      igc: Add initial LTR support
      igc: Add LPI counters
      igc: Remove TCP segmentation TX fail counter
      igc: Refactor the igc_power_down_link()
      igc: Remove unneeded check for copper media type
      igc: Remove checking media type during MAC initialization
      igc: Remove unneeded variable
      igc: Add Receive Descriptor Minimum Threshold Count to clear HW counters
      igc: Remove unneeded ICTXQMTC register
      igc: Fix registers definition
      igc: Remove ledctl_ fields from the mac_info structure
      igc: Clean up the mac_info structure
      igc: Clean up the hw_stats structure
      igc: Fix static checker warning

Sathish Narasimman (5):
      Bluetooth: Translate additional address type during le_conn
      Bluetooth: Let controller creates RPA during le create conn
      Bluetooth: Enable/Disable address resolution during le create conn
      Bluetooth: Enable RPA Timeout
      Bluetooth: Enable controller RPA resolution using Experimental feature

Sean Wang (9):
      Bluetooth: btusb: fix up firmware download sequence
      Bluetooth: btmtksdio: fix up firmware download sequence
      mt76: mt7663: introduce ARP filter offload
      mt76: mt7615: fix up typo in Kconfig for MT7663U
      mt76: mt7663u: fix memory leak in set key
      mt76: mt7663u: fix potential memory leak in mcu message handler
      mt76: mt7615: fix potential memory leak in mcu message handler
      mt76: introduce mt76_sdio module
      mt76: mt7615: introduce mt7663s support

Sergey Organov (4):
      net: fec: enable to use PPS feature without time stamping
      net: fec: initialize clock with 0 rather than current kernel time
      net: fec: get rid of redundant code in fec_ptp_set()
      net: fec: replace snprintf() with strlcpy() in fec_ptp_init()

Seth Forshee (1):
      bpf: revert "test_bpf: Flag tests that cannot be jited on s390"

Shannon Nelson (9):
      ionic: get MTU from lif identity
      ionic: set netdev default name
      ionic: remove unused ionic_coal_hw_to_usec
      ionic: update eid test for overflow
      ionic: rearrange reset and bus-master control
      ionic: interface file updates
      ionic: use fewer firmware doorbells on rx fill
      ionic: tx separate servicing
      ionic: separate interrupt for Tx and Rx

Shiraz Saleem (1):
      i40e: Move client header location

Simon Wunderlich (1):
      batman-adv: Start new development cycle

Song Liu (12):
      perf: Expose get/put_callchain_entry()
      bpf: Introduce helper bpf_get_task_stack()
      bpf: Allow %pB in bpf_seq_printf() and bpf_trace_printk()
      selftests/bpf: Add bpf_iter test with bpf_get_task_stack()
      bpf: Fix build without CONFIG_STACKTRACE
      selftests/bpf: Fix compilation error of bpf_iter_task_stack.c
      bpf: Separate bpf_get_[stack|stackid] for perf events BPF
      bpf: Fail PERF_EVENT_IOC_SET_BPF when bpf_get_[stack|stackid] cannot work
      libbpf: Print hint when PERF_EVENT_IOC_SET_BPF returns -EPROTO
      selftests/bpf: Add callchain_stackid
      selftests/bpf: Add get_stackid_cannot_attach
      bpf: Fix build on architectures with special bpf_user_pt_regs_t

Soontak Lee (2):
      brcmfmac: Fix for unable to return to visible SSID
      brcmfmac: Fix for wrong disconnection event source information

Sowmiya Sree Elavalagan (1):
      ath11k: removing redundant reo unlock followed by immediate lock

Sriram Krishnan (1):
      hv_netvsc: add support for vlans in AF_PACKET mode

Sriram R (2):
      ath11k: Add dp tx err stats
      ath11k: Add support for ring backpressure stats

Stanislav Fomichev (7):
      bpf: Add BPF_CGROUP_INET_SOCK_RELEASE hook
      libbpf: Add support for BPF_CGROUP_INET_SOCK_RELEASE
      bpftool: Add support for BPF_CGROUP_INET_SOCK_RELEASE
      selftests/bpf: Test BPF_CGROUP_INET_SOCK_RELEASE
      selftests/bpf: Fix possible hang in sockopt_inherit
      bpf: Expose socket storage to BPF_PROG_TYPE_CGROUP_SOCK
      selftests/bpf: Verify socket storage in cgroup/sock_{create, release}

Stefan Roese (1):
      net: macb: Properly handle phylink on at91sam9x

Stefano Brivio (8):
      netfilter: nft_set_pipapo: Drop useless assignment of scratch  map index on insert
      ipv4: route: Ignore output interface in FIB lookup for PMTU route
      tunnels: PMTU discovery support for directly bridged IP packets
      vxlan: Support for PMTU discovery on directly bridged links
      geneve: Support for PMTU discovery on directly bridged links
      selftests: pmtu.sh: Add tests for bridged UDP tunnels
      selftests: pmtu.sh: Add tests for UDP tunnels handled by Open vSwitch
      ip_tunnel_core: Fix build for archs without _HAVE_ARCH_IPV6_CSUM

Steffen Klassert (4):
      Merge remote-tracking branch 'origin/testing'
      Merge remote-tracking branch 'origin/testing'
      Merge remote-tracking branch 'origin/testing'
      xfrm: Make the policy hold queue work with VTI.

Stephen Hemminger (1):
      hv_netvsc: do not use VF device if link is down

Stephen Rothwell (1):
      net/core/devlink.c: remove new uninitialized_var() usage

Sudarsana Reddy Kalluru (3):
      bnx2x: Add Idlechk related register definitions.
      bnx2x: Add support for idlechk tests.
      bnx2x: Perform Idlechk dump during the debug collection.

Surabhi Boob (1):
      ice: Graceful error handling in HW table calloc failure

Suraj Upadhyay (6):
      decnet: dn_dev: Remove an unnecessary label.
      net: decnet: af_decnet: Simplify goto loop.
      e1000: Remove unnecessary usages of memset
      e1000e: Remove unnecessary usages of memset
      igb: Remove unnecessary usages of memset
      ixgbe: Remove unnecessary usages of memset

Sven Auhagen (1):
      mvpp2: xdp ethtool stats

Sven Eckelmann (2):
      batman-adv: Switch mailing list subscription page
      batman-adv: Fix typos and grammar in documentation

Tang Bin (1):
      net/amd: Remove needless assignment and the extra brank lines

Tanner Love (1):
      selftests/net: update initializer syntax to use c99 designators

Tao Ren (1):
      of: mdio: preserve phy dev_flags in of_phy_connect()

Tariq Toukan (19):
      net/mlx5: kTLS, Improve TLS params layout structures
      net/mlx5e: Turn XSK ICOSQ into a general asynchronous one
      net/mlx5e: Refactor build channel params
      net/mlx5e: Accel, Expose flow steering API for rules add/del
      net/mlx5e: kTLS, Improve TLS feature modularity
      net/mlx5e: kTLS, Use kernel API to extract private offload context
      net/mlx5e: kTLS, Add kTLS RX HW offload support
      net/mlx5e: kTLS, Add kTLS RX resync support
      net/mlx5e: kTLS, Add kTLS RX stats
      net/mlx5e: Increase Async ICO SQ size
      net/mlx5e: kTLS, Cleanup redundant capability check
      net/mlx5e: kTLS, Improve rx handler function call
      net/mlx5: Make MLX5_EN_TLS non-prompt
      net/mlx5e: XDP, Avoid indirect call in TX flow
      net/mlx5e: RX, Avoid indirect call in representor CQE handling
      net/mlx5e: Do not request completion on every single UMR WQE
      net/mlx5e: RX, Re-work initializaiton of RX function pointers
      net/mlx5e: Move exposure of datapath function to txrx header
      net/mlx5e: Use indirect call wrappers for RX post WQEs functions

Tarun Singh (2):
      ice: Add RL profile bit mask check
      ice: Adjust scheduler default BW weight

Tetsuo Handa (1):
      net: fddi: skfp: Remove addr_to_string().

Thomas Pedersen (1):
      nl80211: S1G band and channel definitions

Tianjia Zhang (4):
      tools, bpftool: Fix wrong return value in do_dump()
      net: ethernet: aquantia: Fix wrong return value
      net/enetc: Fix wrong return value in enetc_psfp_parse_clsflower()
      liquidio: Fix wrong return value in cn23xx_get_pf_num()

Tiezhu Yang (1):
      Documentation/bpf: Use valid and new links in index.rst

Tim Harvey (1):
      lan743x: allow mac address to come from dt

Tobias Klauser (3):
      tools, bpftool: Correctly evaluate $(BUILD_BPF_SKELS) in Makefile
      tools, bpftool: Define prog_type_name array only once
      tools, bpftool: Define attach_type_name array only once

Todd Fujinaka (1):
      i40e: Add a check to see if MFS is set

Tom Parkin (31):
      l2tp: cleanup whitespace use
      l2tp: cleanup comments
      l2tp: cleanup difficult-to-read line breaks
      l2tp: cleanup wonky alignment of line-broken function calls
      l2tp: cleanup suspect code indent
      l2tp: add identifier name in function pointer prototype
      l2tp: prefer using BIT macro
      l2tp: prefer seq_puts for unformatted output
      l2tp: line-break long function prototypes
      l2tp: avoid precidence issues in L2TP_SKB_CB macro
      l2tp: cleanup comparisons to NULL
      l2tp: cleanup unnecessary braces in if statements
      l2tp: check socket address type in l2tp_dfs_seq_tunnel_show
      l2tp: cleanup netlink send of tunnel address information
      l2tp: cleanup netlink tunnel create address handling
      l2tp: cleanup kzalloc calls
      l2tp: avoid multiple assignments
      l2tp: WARN_ON rather than BUG_ON in l2tp_dfs_seq_start
      l2tp: remove BUG_ON in l2tp_session_queue_purge
      l2tp: remove BUG_ON in l2tp_tunnel_closeall
      l2tp: don't BUG_ON session magic checks in l2tp_ppp
      l2tp: don't BUG_ON seqfile checks in l2tp_ppp
      l2tp: WARN_ON rather than BUG_ON in l2tp_session_queue_purge
      l2tp: remove BUG_ON refcount value in l2tp_session_free
      l2tp: WARN_ON rather than BUG_ON in l2tp_session_free
      l2tp: don't export __l2tp_session_unhash
      l2tp: don't export tunnel and session free functions
      l2tp: return void from l2tp_session_delete
      l2tp: remove build_header callback in struct l2tp_session
      l2tp: tweak exports for l2tp_recv_common and l2tp_ioctl
      l2tp: improve API documentation in l2tp_core.h

Tonghao Zhang (1):
      net: openvswitch: silence suspicious RCU usage warning

Tony Ambardar (1):
      bpftool: Use only nftw for file tree parsing

Tony Lindgren (4):
      wlcore: Simplify runtime resume ELP path
      wlcore: Use spin_trylock in wlcore_irq_locked() for running the queue
      wlcore: Use spin_trylock in wlcore_irq() to see if we need to queue tx
      wlcore: Remove pointless spinlock

Tony Nguyen (4):
      iavf: Fix updating statistics
      ice: fix unused parameter warning
      ice: update PTYPE lookup table
      ice: Misc minor fixes

Tsang-Shian Lin (2):
      rtw88: fix LDPC field for RA info
      rtw88: fix short GI capability based on current bandwidth

Tzu-En Huang (14):
      rtw88: 8821c: add basic functions
      rtw88: 8821c: add set tx power index
      rtw88: 8821c: add dig related settings
      rtw88: 8821c: add set channel support
      rtw88: 8821c: add query rx desc support
      rtw88: 8821c: add false alarm statistics
      rtw88: 8821c: add phy calibration
      rtw88: 8821c: add cck pd settings
      rtw88: 8821c: add power tracking
      rtw88: 8821c: add beamformee support
      rtw88: single rf path chips don't support TX STBC
      rtw88: 8821c: Add 8821CE to Kconfig and Makefile
      rtw88: update tx descriptor of mgmt and reserved page packets
      rtw88: add h2c command in debugfs

Vadim Pasternak (2):
      mlxsw: core: Add ethtool support for QSFP-DD transceivers
      mlxsw: core: Add support for temperature thresholds reading for QSFP-DD transceivers

Vaibhav Gupta (48):
      pcnet32: Convert to generic power management
      amd8111e: Convert to generic power management
      amd-xgbe: Convert to generic power management
      tulip: dmfe: use generic power management
      tulip: windbond-840: use generic power management
      tulip: de2104x: use generic power management
      tulip: tulip_core: use generic power management
      tulip: uli526x: use generic power management
      ptp_pch: use generic power management
      bnx2x: use generic power management
      typhoon: use generic power management
      ne2k-pci: use generic power management
      starfire: use generic power management
      ena_netdev: use generic power management
      liquidio: use generic power management
      sundance: use generic power management
      benet: use generic power management
      mlx4: use generic power management
      ksz884x: use generic power management
      vxge: use generic power management
      natsemi: use generic power management
      netxen_nic: use generic power management
      qlcninc: use generic power management
      sun/sungem: use generic power management
      sun/niu: use generic power management
      sun/cassini: use generic power management
      sun/niu: add __maybe_unused attribute to PM functions
      epic100: use generic power management
      smsc9420: use generic power management
      rtl818x_pci: use generic power management
      orinoco: use generic power management
      adm8211: use generic power management
      ipw2100: use generic power management
      ipw2200: use generic power management
      ethernet: myri10ge: use generic power management
      farsync: use generic power management
      iavf: use generic power management
      igbvf: use generic power management
      ixgbe: use generic power management
      ixgbevf: use generic power management
      e100: use generic power management
      sc92031: use generic power management
      sis900: use generic power management
      tlan: use generic power management
      prism54: islpci_hotplug: use generic power management
      rt2x00: pci: use generic power management
      hostap: use generic power management
      airo: use generic power management

Vasundhara Volam (4):
      devlink: Add support for board.serial_number to info_get cb.
      bnxt_en: Add board.serial_number field to info_get cb
      bnxt_en: Remove PCIe non-counters from ethtool statistics
      bnxt_en: Add support for 'ethtool -d'

Veerendranath Jakkam (1):
      cfg80211: Add support to advertize OCV support

Venkata Lakshmi Narayana Gubba (3):
      Bluetooth: hci_qca: Bug fix during SSR timeout
      Bluetooth: hci_qca: Bug fixes for SSR
      Bluetooth: hci_qca: Stop collecting memdump again for command timeout during SSR

Venkateswara Naralasetty (1):
      ath11k: fix wmi peer flags in peer assoc command

Victor Raj (2):
      ice: distribute Tx queues evenly
      ice: adjust profile ID map locks

Vignesh Sridhar (2):
      ice: Fix RSS profile locks
      ice: Clear and free XLT entries on reset

Vinay Kumar Yadav (1):
      crypto/chtls: Enable tcp window scaling option

Vincent Duvert (1):
      appletalk: Fix atalk_proc_init() return path

Vishal Kulkarni (11):
      cxgb4: update set_flash to flash different images
      cxgb4: add support to flash PHY image
      cxgb4: add support to flash boot image
      cxgb4: add support to flash boot cfg image
      cxgb4: add support to read serial flash
      cxgb4: add skeleton for ethtool n-tuple filters
      cxgb4: add ethtool n-tuple filter insertion
      cxgb4: add ethtool n-tuple filter deletion
      cxgb4: add support to fetch ethtool n-tuple filters
      cxgb4: add action to steer flows to specific Rxq
      cxgb4: add loopback ethtool self-test

Vlad Buslov (1):
      net/mlx5e: Move TC-specific function definitions into MLX5_CLS_ACT

Vladimir Oltean (49):
      net: dsa: felix: make vcap is2 keys and actions static
      net: mscc: ocelot: use plain int when interacting with TCAM tables
      net: mscc: ocelot: access EtherType using __be16
      net: mscc: ocelot: rename ocelot_board.c to ocelot_vsc7514.c
      net: mscc: ocelot: rename module to mscc_ocelot
      net: mscc: ocelot: convert MSCC_OCELOT_SWITCH into a library
      net: mscc: ocelot: rename MSCC_OCELOT_SWITCH_OCELOT to MSCC_OCELOT_SWITCH
      net: mscc: ocelot: move ocelot_regs.c into ocelot_vsc7514.c
      net: mscc: ocelot: move net_device related functions to ocelot_net.c
      net: mscc: ocelot: rename ocelot_ace.{c, h} to ocelot_vcap.{c,h}
      net: mscc: ocelot: generalize the "ACE/ACL" names
      net: mscc: ocelot: unexpose ocelot_vcap_policer_{add,del}
      net: dsa: sja1105: remove empty structures from config table ops
      net: dsa: sja1105: make config table operation structures constant
      net: dsa: sja1105: make the instantiations of struct sja1105_info constant
      net: mscc: ocelot: fix encoding destination ports into multicast IPv4 address
      net: mscc: ocelot: make the NPI port a proper target for FDB and MDB
      net: dsa: felix: call port mdb operations from ocelot
      net: mscc: ocelot: introduce macros for iterating over PGIDs
      net: mscc: ocelot: support IPv4, IPv6 and plain Ethernet mdb entries
      net: mscc: ocelot: remove EXPORT_SYMBOL from ocelot_net.c
      net: dsa: felix: clarify the intention of writes to MII_BMCR
      net: dsa: felix: support half-duplex link modes
      net: dsa: felix: unconditionally configure MAC speed to 1000Mbps
      net: dsa: felix: set proper pause frame timers based on link speed
      net: dsa: felix: delete .phylink_mac_an_restart code
      net: dsa: felix: use resolved link config in mac_link_up()
      net: mscc: ocelot: convert port registers to regmap
      net: mscc: ocelot: convert QSYS_SWITCH_PORT_MODE and SYS_PORT_MODE to regfields
      net: dsa: felix: create a template for the DSA tags on xmit
      net: mscc: ocelot: split writes to pause frame enable bit and to thresholds
      net: mscc: ocelot: disable flow control on NPI interface
      net: dsa: felix: move probing to felix_vsc9959.c
      docs: devicetree: add bindings for Seville DSA switch inside Felix driver
      docs: networking: timestamping: add section for stacked PHC devices
      net: mscc: ocelot: rethink Kconfig dependencies again
      net: phy: continue searching for C45 MMDs even if first returned ffff:ffff
      ptp: add ability to configure duty cycle for periodic output
      ptp: introduce a phase offset in the periodic output request
      net: mscc: ocelot: add support for PTP waveform configuration
      testptp: promote 'perout' variable to int64_t
      testptp: add new options for perout phase and pulse width
      net: dsa: use the ETH_MIN_MTU and ETH_DATA_LEN default values
      net: mscc: ocelot: fix non-initialized CPU port on VSC7514
      net: phy: fix check in get_phy_c45_ids
      net: dsa: stop overriding master's ndo_get_phys_port_name
      net: dsa: sja1105: poll for extts events from a timer
      ptp: only allow phase values lower than 1 period
      net: dsa: sja1105: use detected device id instead of DT one on mismatch

Vladyslav Tarasiuk (7):
      devlink: Refactor devlink health reporter constructor
      devlink: Rework devlink health reporter destructor
      devlink: Create generic devlink health reporter search function
      devlink: Implement devlink health reporters on per-port basis
      devlink: Add devlink health port reporters API
      net/mlx5e: Move devlink port register and unregister calls
      net/mlx5e: Move devlink-health rx and tx reporters to devlink port

Wang Hai (8):
      net: ena: Fix using plain integer as NULL pointer in ena_init_napi_in_range
      net: hsr: remove redundant null check
      net: qed: Remove unneeded cast from memory allocation
      net: hix5hd2_gmac: Remove unneeded cast from memory allocation
      liquidio: Replace vmalloc with kmalloc in octeon_register_dispatch_fn()
      net: ll_temac: Use devm_platform_ioremap_resource_byname()
      qtnfmac: Missing platform_device_unregister() on error in qtnf_core_mac_alloc()
      wl1251: fix always return 0 error

Wei Yongjun (7):
      iavf: fix error return code in iavf_init_get_resources()
      ksz884x: mark pcidev_suspend() as __maybe_unused
      mlx4: Mark PM functions as __maybe_unused
      sun/cassini: mark cas_resume() as __maybe_unused
      net: make symbol 'flush_works' static
      ice: mark PM functions as __maybe_unused
      rtw88: 8821c: make symbol 'rtw8821c_rtw_pwr_track_tbl' static

Wenbo Zhang (1):
      bpf: Fix fds_example SIGSEGV error

Willem de Bruijn (6):
      ipv6/ping: set skb->mark on icmpv6 sockets
      icmp: support rfc 4884
      icmp: revise rfc4884 tests
      icmp: prepare rfc 4884 for ipv6
      icmp6: support rfc 4884
      selftests/net: relax cpu affinity requirement in msg_zerocopy test

Wolfram Sang (1):
      iwlwifi: yoyo: don't print failure if debug firmware is missing

Wright Feng (5):
      brcmfmac: fix invalid permanent MAC address in wiphy
      brcmfmac: keep SDIO watchdog running when console_interval is non-zero
      brcmfmac: reduce maximum station interface from 2 to 1 in RSDB mode
      brcmfmac: set state of hanger slot to FREE when flushing PSQ
      brcmfmac: set pacing shift before transmitting skb to bus

Xin Long (18):
      xfrm: add is_ipip to struct xfrm_input_afinfo
      tunnel4: add cb_handler to struct xfrm_tunnel
      tunnel6: add tunnel6_input_afinfo for ipip and ipv6 tunnels
      ip_vti: support IPIP tunnel processing with .cb_handler
      ip_vti: support IPIP6 tunnel processing
      ip6_vti: support IP6IP6 tunnel processing with .cb_handler
      ip6_vti: support IP6IP tunnel processing
      ipcomp: assign if_id to child tunnel from parent tunnel
      xfrm: interface: support IP6IP6 and IP6IP tunnels processing with .cb_handler
      xfrm: interface: support IPIP and IPIP6 tunnels processing with .cb_handler
      ip_vti: not register vti_ipip_handler twice
      ip6_vti: not register vti_ipv6_handler twice
      xfrm: interface: not xfrmi_ipv6/ipip_handler twice
      xfrm: interface: use IS_REACHABLE to avoid some compile errors
      ip6_vti: use IS_REACHABLE to avoid some compile errors
      net: thunderx: use spin_lock_bh in nicvf_set_rx_mode_task()
      ipv6: add ipv6_dev_find()
      tipc: set ub->ifindex for local ipv6 address

Xu Wang (6):
      net: enetc: use eth_broadcast_addr() to assign broadcast
      airo: use set_current_state macro
      zd1211rw: remove needless check before usb_free_coherent()
      net: vxge-main: Remove unnecessary cast in kfree()
      net: hns: use eth_broadcast_addr() to assign broadcast address
      mwifiex: 11n_rxreorder: Remove unnecessary cast in kfree()

Yan-Hsuan Chuang (5):
      rtw88: pci: disable aspm for platform inter-op with module parameter
      rtw88: 8822c: add new RFE type 6
      rtw88: coex: only skip coex triggered by BT info
      rtw88: add ieee80211_ops::change_interface
      rtw88: allows driver to enable/disable beacon

YiFei Zhu (6):
      selftests/bpf: Add test for CGROUP_STORAGE map on multiple attaches
      selftests/bpf: Test CGROUP_STORAGE map can't be used by multiple progs
      bpf: Make cgroup storages shared between programs on the same cgroup
      selftests/bpf: Test CGROUP_STORAGE behavior on shared egress + ingress
      Documentation/bpf: Document CGROUP_STORAGE map type
      bpf/local_storage: Fix build without CONFIG_CGROUP

Yonghong Song (38):
      bpf: Avoid verifier failure for 32bit pointer arithmetic
      tools/bpf: Add verifier tests for 32bit pointer/scalar arithmetic
      net: bpf: Add bpf_seq_afinfo in tcp_iter_state
      net: bpf: Implement bpf iterator for tcp
      bpf: Support 'X' in bpf_seq_printf() helper
      bpf: Allow tracing programs to use bpf_jiffies64() helper
      bpf: Add bpf_skc_to_tcp6_sock() helper
      bpf: Add bpf_skc_to_{tcp, tcp_timewait, tcp_request}_sock() helpers
      net: bpf: Add bpf_seq_afinfo in udp_iter_state
      net: bpf: Implement bpf iterator for udp
      bpf: Add bpf_skc_to_udp6_sock() helper
      selftests/bpf: Move newer bpf_iter_* type redefining to a new header file
      selftests/bpf: Refactor some net macros to bpf_tracing_net.h
      selftests/bpf: Add more common macros to bpf_tracing_net.h
      selftests/bpf: Implement sample tcp/tcp6 bpf_iter programs
      selftests/bpf: Implement sample udp/udp6 bpf_iter programs
      selftests/bpf: Add tcp/udp iterator programs to selftests
      bpf: Compute bpf_skc_to_*() helper socket btf ids at build time
      tools/bpf: Sync btf_ids.h to tools
      bpf: Add BTF_ID_LIST_GLOBAL in btf_ids.h
      bpf: Make btf_sock_ids global
      bpf: net: Use precomputed btf_id for bpf iterators
      bpf: Refactor bpf_iter_reg to have separate seq_info member
      bpf: Refactor to provide aux info to bpf_iter_init_seq_priv_t
      bpf: Support readonly/readwrite buffers in verifier
      bpf: Fix pos computation for bpf_iter seq_ops->start()
      bpf: Implement bpf iterator for map elements
      bpf: Implement bpf iterator for hash maps
      bpf: Implement bpf iterator for array maps
      bpf: Implement bpf iterator for sock local storage map
      tools/libbpf: Add support for bpf map element iterator
      tools/bpftool: Add bpftool support for bpf map element iterator
      selftests/bpf: Add test for bpf hash map iterators
      selftests/bpf: Add test for bpf array map iterators
      selftests/bpf: Add a test for bpf sk_storage_map iterator
      selftests/bpf: Add a test for out of bound rdonly buf access
      bpf: Add missing newline characters in verifier error messages
      selftests/bpf: Test bpf_iter buffer access with negative offset

Yousuk Seung (6):
      tcp: stamp SCM_TSTAMP_ACK later in tcp_clean_rtx_queue()
      tcp: add ece_ack flag to reno sack functions
      tcp: count sacked packets in tcp_sacktag_state
      tcp: update delivered_ce with delivered
      tcp: call tcp_ack_tstamp() when not fully acked
      tcp: add earliest departure time to SCM_TIMESTAMPING_OPT_STATS

YueHaibing (10):
      iwlwifi: mvm: Remove unused inline function iwl_mvm_tid_to_ac_queue
      lan743x: Remove duplicated include from lan743x_main.c
      cipso: Remove unused inline functions
      net: flow: Remove unused inline function
      mptcp: Remove unused inline function mptcp_rcv_synsent()
      netpoll: Remove unused inline function netpoll_netdev_init()
      tools/bpftool: Fix error handing in do_skeleton()
      sfc_ef100: remove duplicated include from ef100_netdev.c
      fib: Fix undef compile warning
      dpaa2-eth: Fix passing zero to 'PTR_ERR' warning

Yuval Basson (1):
      qed: Fix ILT and XRCD bitmap memory leaks

Zhang Changzhong (3):
      net: bna: Remove unused variable 't'
      net: ethernet: et131x: Remove unused variable 'pm_csr'
      net: fs_enet: remove redundant null check

Zheng Yongjun (1):
      drivers: bcma: remove set but not used variable `addrh` and `sizeh`

Zong-Zhe Yang (1):
      rtw88: coex: Fix ACL Tx pause during BT inquiry/page.

kernel test robot (1):
      net: phy: mscc: fix ptr_ret.cocci warnings

tannerlove (2):
      selftests/net: plug rxtimestamp test into kselftest framework
      selftests/net: add ipv6 test coverage in rxtimestamp test

wenxu (1):
      net/sched: act_ct: fix miss set mru for ovs after defrag in act_ct

 Documentation/bpf/btf.rst                                                                          |   36 +
 Documentation/bpf/index.rst                                                                        |   21 +-
 Documentation/bpf/map_cgroup_storage.rst                                                           |  169 ++
 Documentation/devicetree/bindings/misc/fsl,qoriq-mc.txt                                            |    2 +-
 Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml                                     |    3 +
 Documentation/devicetree/bindings/net/dsa/dsa.txt                                                  |  255 +-
 Documentation/devicetree/bindings/net/dsa/dsa.yaml                                                 |   92 +
 Documentation/devicetree/bindings/net/dsa/ocelot.txt                                               |  105 +-
 Documentation/devicetree/bindings/net/ethernet-phy.yaml                                            |   12 +
 Documentation/devicetree/bindings/net/mdio.yaml                                                    |    7 +
 Documentation/devicetree/bindings/net/mscc-phy-vsc8531.txt                                         |    3 +
 Documentation/devicetree/bindings/net/realtek-bluetooth.yaml                                       |    2 +-
 Documentation/devicetree/bindings/net/ti,dp83867.yaml                                              |    2 +-
 Documentation/devicetree/bindings/net/ti,dp83869.yaml                                              |   18 +-
 .../staging/wilc1000 => Documentation/devicetree/bindings/net/wireless}/microchip,wilc1000.yaml    |    0
 Documentation/driver-api/driver-model/devres.rst                                                   |    3 +-
 Documentation/driver-api/index.rst                                                                 |    1 +
 Documentation/driver-api/pldmfw/driver-ops.rst                                                     |   56 +
 Documentation/driver-api/pldmfw/file-format.rst                                                    |  203 ++
 Documentation/driver-api/pldmfw/index.rst                                                          |   72 +
 Documentation/filesystems/debugfs.rst                                                              |   12 +-
 Documentation/networking/batman-adv.rst                                                            |    8 +-
 Documentation/networking/dccp.rst                                                                  |    3 +
 Documentation/networking/{ => device_drivers/appletalk}/cops.rst                                   |    0
 Documentation/networking/device_drivers/appletalk/index.rst                                        |   19 +
 Documentation/networking/{ => device_drivers/appletalk}/ltpc.rst                                   |    0
 Documentation/networking/{ => device_drivers/atm}/cxacru-cf.py                                     |    0
 Documentation/networking/{ => device_drivers/atm}/cxacru.rst                                       |    0
 Documentation/networking/{ => device_drivers/atm}/fore200e.rst                                     |    0
 Documentation/networking/device_drivers/atm/index.rst                                              |   20 +
 Documentation/networking/{ => device_drivers/atm}/iphase.rst                                       |    0
 Documentation/networking/device_drivers/cable/index.rst                                            |   18 +
 Documentation/networking/device_drivers/{ => cable}/sb1000.rst                                     |    0
 Documentation/networking/device_drivers/cellular/index.rst                                         |   18 +
 Documentation/networking/device_drivers/{ => cellular}/qualcomm/rmnet.rst                          |    0
 Documentation/networking/device_drivers/{ => ethernet}/3com/3c509.rst                              |    0
 Documentation/networking/device_drivers/{ => ethernet}/3com/vortex.rst                             |    2 -
 Documentation/networking/{ => device_drivers/ethernet/altera}/altera_tse.rst                       |    0
 Documentation/networking/device_drivers/{ => ethernet}/amazon/ena.rst                              |    0
 Documentation/networking/device_drivers/{ => ethernet}/aquantia/atlantic.rst                       |    0
 Documentation/networking/device_drivers/{ => ethernet}/chelsio/cxgb.rst                            |    0
 Documentation/networking/device_drivers/{ => ethernet}/cirrus/cs89x0.rst                           |    0
 Documentation/networking/device_drivers/{ => ethernet}/davicom/dm9000.rst                          |    0
 Documentation/networking/device_drivers/{ => ethernet}/dec/de4x5.rst                               |    0
 Documentation/networking/device_drivers/{ => ethernet}/dec/dmfe.rst                                |    0
 Documentation/networking/device_drivers/{ => ethernet}/dlink/dl2k.rst                              |    0
 Documentation/networking/device_drivers/{ => ethernet}/freescale/dpaa.rst                          |    0
 Documentation/networking/device_drivers/{ => ethernet}/freescale/dpaa2/dpio-driver.rst             |    6 +-
 Documentation/networking/device_drivers/{ => ethernet}/freescale/dpaa2/ethernet-driver.rst         |    3 +-
 Documentation/networking/device_drivers/{ => ethernet}/freescale/dpaa2/index.rst                   |    0
 Documentation/networking/device_drivers/{ => ethernet}/freescale/dpaa2/mac-phy-support.rst         |    0
 Documentation/networking/device_drivers/{ => ethernet}/freescale/dpaa2/overview.rst                |    0
 Documentation/networking/device_drivers/{ => ethernet}/freescale/gianfar.rst                       |    0
 Documentation/networking/device_drivers/{ => ethernet}/google/gve.rst                              |    0
 Documentation/networking/{ => device_drivers/ethernet/huawei}/hinic.rst                            |    0
 Documentation/networking/device_drivers/ethernet/index.rst                                         |   60 +
 Documentation/networking/device_drivers/{ => ethernet}/intel/e100.rst                              |    4 +-
 Documentation/networking/device_drivers/{ => ethernet}/intel/e1000.rst                             |    0
 Documentation/networking/device_drivers/{ => ethernet}/intel/e1000e.rst                            |    0
 Documentation/networking/device_drivers/{ => ethernet}/intel/fm10k.rst                             |    2 +-
 Documentation/networking/device_drivers/{ => ethernet}/intel/i40e.rst                              |    0
 Documentation/networking/device_drivers/{ => ethernet}/intel/iavf.rst                              |    2 +-
 Documentation/networking/device_drivers/{ => ethernet}/intel/ice.rst                               |    0
 Documentation/networking/device_drivers/{ => ethernet}/intel/igb.rst                               |    2 +-
 Documentation/networking/device_drivers/{ => ethernet}/intel/igbvf.rst                             |    2 +-
 Documentation/networking/device_drivers/{ => ethernet}/intel/ixgb.rst                              |    2 +-
 Documentation/networking/device_drivers/{ => ethernet}/intel/ixgbe.rst                             |    0
 Documentation/networking/device_drivers/{ => ethernet}/intel/ixgbevf.rst                           |    0
 Documentation/networking/device_drivers/{ => ethernet}/marvell/octeontx2.rst                       |    0
 Documentation/networking/device_drivers/{ => ethernet}/mellanox/mlx5.rst                           |    0
 Documentation/networking/device_drivers/{ => ethernet}/microsoft/netvsc.rst                        |    0
 Documentation/networking/device_drivers/{ => ethernet}/neterion/s2io.rst                           |    0
 Documentation/networking/device_drivers/{ => ethernet}/neterion/vxge.rst                           |    0
 Documentation/networking/device_drivers/{ => ethernet}/netronome/nfp.rst                           |    0
 Documentation/networking/device_drivers/{ => ethernet}/pensando/ionic.rst                          |    0
 Documentation/networking/device_drivers/{ => ethernet}/smsc/smc9.rst                               |    0
 Documentation/networking/device_drivers/{ => ethernet}/stmicro/stmmac.rst                          |    0
 Documentation/networking/device_drivers/{ => ethernet}/ti/cpsw.rst                                 |    0
 Documentation/networking/device_drivers/{ => ethernet}/ti/cpsw_switchdev.rst                       |    0
 Documentation/networking/device_drivers/{ => ethernet}/ti/tlan.rst                                 |    0
 Documentation/networking/device_drivers/{ => ethernet}/toshiba/spider_net.rst                      |    0
 Documentation/networking/{ => device_drivers/fddi}/defza.rst                                       |    0
 Documentation/networking/device_drivers/fddi/index.rst                                             |   19 +
 Documentation/networking/{ => device_drivers/fddi}/skfp.rst                                        |    0
 Documentation/networking/{ => device_drivers/hamradio}/baycom.rst                                  |    0
 Documentation/networking/device_drivers/hamradio/index.rst                                         |   19 +
 Documentation/networking/{ => device_drivers/hamradio}/z8530drv.rst                                |    0
 Documentation/networking/device_drivers/index.rst                                                  |   56 +-
 Documentation/networking/device_drivers/wan/index.rst                                              |   18 +
 Documentation/networking/{ => device_drivers/wan}/z8530book.rst                                    |    0
 Documentation/networking/device_drivers/wifi/index.rst                                             |   20 +
 Documentation/networking/device_drivers/{ => wifi}/intel/ipw2100.rst                               |    2 +-
 Documentation/networking/device_drivers/{ => wifi}/intel/ipw2200.rst                               |    0
 Documentation/networking/{ => device_drivers/wifi}/ray_cs.rst                                      |    0
 Documentation/networking/devlink/devlink-info.rst                                                  |   12 +-
 Documentation/networking/devlink/devlink-trap.rst                                                  |    4 +
 Documentation/networking/devlink/ice.rst                                                           |   55 +-
 Documentation/networking/ethtool-netlink.rst                                                       |  164 +-
 Documentation/networking/filter.rst                                                                |    2 +
 Documentation/networking/index.rst                                                                 |   13 -
 Documentation/networking/timestamping.rst                                                          |  165 ++
 Documentation/networking/tls-offload.rst                                                           |   18 +
 MAINTAINERS                                                                                        |   80 +-
 Makefile                                                                                           |   25 +-
 arch/arm64/include/asm/extable.h                                                                   |   12 +
 arch/arm64/include/asm/unistd32.h                                                                  |    4 +-
 arch/arm64/mm/extable.c                                                                            |   12 +-
 arch/arm64/net/bpf_jit_comp.c                                                                      |   93 +-
 arch/c6x/lib/checksum.c                                                                            |    2 +-
 arch/c6x/lib/csum_64plus.S                                                                         |    8 +-
 arch/mips/boot/dts/mscc/ocelot_pcb120.dts                                                          |   12 +-
 arch/mips/kernel/syscalls/syscall_n32.tbl                                                          |    4 +-
 arch/mips/kernel/syscalls/syscall_o32.tbl                                                          |    4 +-
 arch/nios2/include/asm/checksum.h                                                                  |    5 +-
 arch/parisc/kernel/syscalls/syscall.tbl                                                            |    4 +-
 arch/powerpc/kernel/syscalls/syscall.tbl                                                           |    4 +-
 arch/riscv/net/bpf_jit.h                                                                           |  483 +++-
 arch/riscv/net/bpf_jit_comp32.c                                                                    |   14 +-
 arch/riscv/net/bpf_jit_comp64.c                                                                    |  293 +-
 arch/riscv/net/bpf_jit_core.c                                                                      |    6 +-
 arch/s390/kernel/syscalls/syscall.tbl                                                              |    4 +-
 arch/s390/net/bpf_jit_comp.c                                                                       |   63 +-
 arch/sparc/kernel/sys32.S                                                                          |   12 +-
 arch/sparc/kernel/syscalls/syscall.tbl                                                             |    4 +-
 arch/x86/entry/syscall_x32.c                                                                       |    7 +
 arch/x86/entry/syscalls/syscall_32.tbl                                                             |    4 +-
 arch/x86/entry/syscalls/syscall_64.tbl                                                             |    4 +-
 crypto/af_alg.c                                                                                    |    8 +-
 crypto/algif_aead.c                                                                                |    4 -
 crypto/algif_hash.c                                                                                |    4 -
 crypto/algif_rng.c                                                                                 |    2 -
 crypto/algif_skcipher.c                                                                            |    4 -
 drivers/atm/Kconfig                                                                                |    8 +-
 drivers/atm/eni.c                                                                                  |   21 +-
 drivers/atm/firestream.c                                                                           |    2 -
 drivers/atm/fore200e.c                                                                             |   27 -
 drivers/atm/horizon.c                                                                              |   40 -
 drivers/atm/idt77252.c                                                                             |    9 +-
 drivers/atm/iphase.c                                                                               |   16 -
 drivers/atm/lanai.c                                                                                |    2 -
 drivers/atm/solos-pci.c                                                                            |    4 +-
 drivers/atm/zatm.c                                                                                 |   16 -
 drivers/bcma/driver_gpio.c                                                                         |   23 +-
 drivers/bcma/scan.c                                                                                |    8 +-
 drivers/bluetooth/bcm203x.c                                                                        |    2 +-
 drivers/bluetooth/bluecard_cs.c                                                                    |    2 -
 drivers/bluetooth/btintel.c                                                                        |   59 +
 drivers/bluetooth/btintel.h                                                                        |   21 +
 drivers/bluetooth/btmrvl_main.c                                                                    |   11 +
 drivers/bluetooth/btmrvl_sdio.c                                                                    |   21 +-
 drivers/bluetooth/btmtksdio.c                                                                      |   16 +-
 drivers/bluetooth/btqca.c                                                                          |   27 +
 drivers/bluetooth/btqca.h                                                                          |    2 +
 drivers/bluetooth/btusb.c                                                                          |  303 ++-
 drivers/bluetooth/hci_h5.c                                                                         |    2 +-
 drivers/bluetooth/hci_ll.c                                                                         |    2 +-
 drivers/bluetooth/hci_qca.c                                                                        |  134 +-
 drivers/bluetooth/hci_serdev.c                                                                     |    3 +-
 drivers/crypto/chelsio/chtls/chtls_cm.c                                                            |    3 +-
 drivers/crypto/chelsio/chtls/chtls_main.c                                                          |   18 +-
 drivers/infiniband/hw/bnxt_re/hw_counters.c                                                        |    2 +-
 drivers/infiniband/hw/i40iw/Makefile                                                               |    1 -
 drivers/infiniband/hw/i40iw/i40iw.h                                                                |    2 +-
 drivers/infiniband/hw/qedr/main.c                                                                  |   20 +-
 drivers/infiniband/hw/qedr/verbs.c                                                                 |   97 +-
 drivers/isdn/capi/Kconfig                                                                          |    2 +-
 drivers/isdn/hardware/mISDN/hfcpci.c                                                               |   12 +-
 drivers/isdn/hardware/mISDN/hfcsusb.c                                                              |    3 +-
 drivers/isdn/hardware/mISDN/netjet.c                                                               |    8 +-
 drivers/isdn/mISDN/socket.c                                                                        |   10 +-
 drivers/net/Kconfig                                                                                |    3 +-
 drivers/net/appletalk/Kconfig                                                                      |    3 +-
 drivers/net/bareudp.c                                                                              |    7 +-
 drivers/net/bonding/bond_main.c                                                                    |  139 +-
 drivers/net/bonding/bond_options.c                                                                 |    8 +
 drivers/net/caif/caif_hsi.c                                                                        |    6 +-
 drivers/net/caif/caif_serial.c                                                                     |    2 +-
 drivers/net/caif/caif_spi.c                                                                        |    4 +-
 drivers/net/caif/caif_virtio.c                                                                     |    2 +-
 drivers/net/dsa/Kconfig                                                                            |    1 +
 drivers/net/dsa/b53/b53_common.c                                                                   |   31 +-
 drivers/net/dsa/b53/b53_spi.c                                                                      |   26 +-
 drivers/net/dsa/bcm_sf2.c                                                                          |   89 +-
 drivers/net/dsa/bcm_sf2_cfp.c                                                                      |    8 +-
 drivers/net/dsa/dsa_loop.c                                                                         |   72 +-
 drivers/net/dsa/lan9303-core.c                                                                     |    7 +-
 drivers/net/dsa/microchip/ksz8795.c                                                                |   19 +-
 drivers/net/dsa/microchip/ksz9477.c                                                                |   24 +-
 drivers/net/dsa/microchip/ksz_common.c                                                             |   35 +-
 drivers/net/dsa/microchip/ksz_common.h                                                             |    9 +-
 drivers/net/dsa/mv88e6xxx/chip.c                                                                   |   41 +-
 drivers/net/dsa/mv88e6xxx/chip.h                                                                   |    7 +-
 drivers/net/dsa/mv88e6xxx/global1.c                                                                |   17 +
 drivers/net/dsa/mv88e6xxx/global1.h                                                                |    2 +
 drivers/net/dsa/mv88e6xxx/global2.c                                                                |    5 +-
 drivers/net/dsa/mv88e6xxx/global2_scratch.c                                                        |    9 +-
 drivers/net/dsa/ocelot/Kconfig                                                                     |   15 +-
 drivers/net/dsa/ocelot/Makefile                                                                    |    3 +-
 drivers/net/dsa/ocelot/felix.c                                                                     |  364 +--
 drivers/net/dsa/ocelot/felix.h                                                                     |   39 +-
 drivers/net/dsa/ocelot/felix_vsc9959.c                                                             |  626 +++--
 drivers/net/dsa/ocelot/seville_vsc9953.c                                                           | 1104 ++++++++
 drivers/net/dsa/qca/ar9331.c                                                                       |   60 +-
 drivers/net/dsa/qca8k.c                                                                            |  558 +++-
 drivers/net/dsa/qca8k.h                                                                            |   45 +
 drivers/net/dsa/rtl8366.c                                                                          |   37 +-
 drivers/net/dsa/rtl8366rb.c                                                                        |   31 +-
 drivers/net/dsa/sja1105/sja1105.h                                                                  |   12 +-
 drivers/net/dsa/sja1105/sja1105_dynamic_config.c                                                   |   25 +-
 drivers/net/dsa/sja1105/sja1105_dynamic_config.h                                                   |    4 +-
 drivers/net/dsa/sja1105/sja1105_flower.c                                                           |   16 +-
 drivers/net/dsa/sja1105/sja1105_main.c                                                             |   39 +-
 drivers/net/dsa/sja1105/sja1105_ptp.c                                                              |   79 +-
 drivers/net/dsa/sja1105/sja1105_ptp.h                                                              |    5 +-
 drivers/net/dsa/sja1105/sja1105_spi.c                                                              |   17 +-
 drivers/net/dsa/sja1105/sja1105_static_config.c                                                    |   36 +-
 drivers/net/dsa/sja1105/sja1105_static_config.h                                                    |   12 +-
 drivers/net/dsa/sja1105/sja1105_tas.c                                                              |    3 +-
 drivers/net/dsa/sja1105/sja1105_vl.c                                                               |    2 +-
 drivers/net/dsa/vitesse-vsc73xx-platform.c                                                         |    2 +-
 drivers/net/dsa/vitesse-vsc73xx-spi.c                                                              |    2 +-
 drivers/net/ethernet/3com/3c59x.c                                                                  |    4 +-
 drivers/net/ethernet/3com/Kconfig                                                                  |    4 +-
 drivers/net/ethernet/3com/typhoon.c                                                                |   53 +-
 drivers/net/ethernet/8390/8390.h                                                                   |   61 +-
 drivers/net/ethernet/8390/ne2k-pci.c                                                               |   38 +-
 drivers/net/ethernet/adaptec/starfire.c                                                            |   23 +-
 drivers/net/ethernet/aeroflex/greth.c                                                              |    2 +-
 drivers/net/ethernet/agere/et131x.c                                                                |    7 -
 drivers/net/ethernet/alteon/acenic.c                                                               |  119 +-
 drivers/net/ethernet/amazon/ena/ena_admin_defs.h                                                   |   47 +-
 drivers/net/ethernet/amazon/ena/ena_com.c                                                          |   19 +-
 drivers/net/ethernet/amazon/ena/ena_com.h                                                          |   13 +-
 drivers/net/ethernet/amazon/ena/ena_eth_com.c                                                      |   51 +-
 drivers/net/ethernet/amazon/ena/ena_eth_com.h                                                      |    3 +-
 drivers/net/ethernet/amazon/ena/ena_ethtool.c                                                      |    4 +-
 drivers/net/ethernet/amazon/ena/ena_netdev.c                                                       |  211 +-
 drivers/net/ethernet/amazon/ena/ena_netdev.h                                                       |    3 +
 drivers/net/ethernet/amazon/ena/ena_pci_id_tbl.h                                                   |    5 +
 drivers/net/ethernet/amd/amd8111e.c                                                                |  111 +-
 drivers/net/ethernet/amd/au1000_eth.c                                                              |    5 -
 drivers/net/ethernet/amd/pcnet32.c                                                                 |  203 +-
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c                                                           |  275 +-
 drivers/net/ethernet/amd/xgbe/xgbe-main.c                                                          |   12 +-
 drivers/net/ethernet/amd/xgbe/xgbe-pci.c                                                           |   19 +-
 drivers/net/ethernet/amd/xgbe/xgbe.h                                                               |   13 +-
 drivers/net/ethernet/aquantia/atlantic/aq_common.h                                                 |   18 +-
 drivers/net/ethernet/aquantia/atlantic/aq_drvinfo.c                                                |   62 +-
 drivers/net/ethernet/aquantia/atlantic/aq_drvinfo.h                                                |   10 +-
 drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c                                                |   98 +-
 drivers/net/ethernet/aquantia/atlantic/aq_hw.h                                                     |   17 +-
 drivers/net/ethernet/aquantia/atlantic/aq_hw_utils.c                                               |   34 +-
 drivers/net/ethernet/aquantia/atlantic/aq_hw_utils.h                                               |    8 +-
 drivers/net/ethernet/aquantia/atlantic/aq_main.c                                                   |   22 +-
 drivers/net/ethernet/aquantia/atlantic/aq_nic.c                                                    |  117 +-
 drivers/net/ethernet/aquantia/atlantic/aq_nic.h                                                    |    9 +-
 drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c                                               |    9 +-
 drivers/net/ethernet/aquantia/atlantic/aq_pci_func.h                                               |    8 +-
 drivers/net/ethernet/aquantia/atlantic/aq_ptp.c                                                    |   77 +-
 drivers/net/ethernet/aquantia/atlantic/aq_ptp.h                                                    |   27 +-
 drivers/net/ethernet/aquantia/atlantic/aq_ring.c                                                   |   85 +-
 drivers/net/ethernet/aquantia/atlantic/aq_ring.h                                                   |   22 +-
 drivers/net/ethernet/aquantia/atlantic/aq_vec.c                                                    |   74 +-
 drivers/net/ethernet/aquantia/atlantic/aq_vec.h                                                    |   11 +-
 drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c                                          |  138 +-
 drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c                                          |   70 +-
 drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.h                                          |    3 +
 drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c                                         |   61 +-
 drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.h                                         |   28 +-
 drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh_internal.h                                |   41 +-
 drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c                                       |   62 +-
 drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h                                       |    2 +-
 drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils_fw2x.c                                  |    4 +-
 drivers/net/ethernet/aquantia/atlantic/hw_atl2/hw_atl2.c                                           |   10 +-
 drivers/net/ethernet/aquantia/atlantic/hw_atl2/hw_atl2_utils.c                                     |    3 +-
 drivers/net/ethernet/aquantia/atlantic/hw_atl2/hw_atl2_utils_fw.c                                  |  227 +-
 drivers/net/ethernet/arc/emac_main.c                                                               |    2 +-
 drivers/net/ethernet/aurora/nb8800.c                                                               |    2 +-
 drivers/net/ethernet/broadcom/bcmsysport.c                                                         |   36 +-
 drivers/net/ethernet/broadcom/bnx2x/Makefile                                                       |    2 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x.h                                                        |   18 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c                                                    |   15 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h                                                    |   12 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c                                                   |  155 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_reg.h                                                    |   78 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_self_test.c                                              | 3183 ++++++++++++++++++++++
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c                                                  |    2 +
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                                                          |  880 +++---
 drivers/net/ethernet/broadcom/bnxt/bnxt.h                                                          |  126 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c                                                      |    2 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c                                                  |   15 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c                                                  |  190 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.h                                                  |    3 +
 drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h                                                      |  468 +++-
 drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c                                                    |    2 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c                                                       |   18 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c                                                      |    4 -
 drivers/net/ethernet/broadcom/genet/bcmgenet.c                                                     |   17 +
 drivers/net/ethernet/broadcom/tg3.h                                                                |    2 +-
 drivers/net/ethernet/brocade/bna/bfa_ioc.c                                                         |    3 +-
 drivers/net/ethernet/brocade/bna/bfi.h                                                             |    2 +-
 drivers/net/ethernet/cadence/macb.h                                                                |    3 +
 drivers/net/ethernet/cadence/macb_main.c                                                           |  221 +-
 drivers/net/ethernet/cadence/macb_pci.c                                                            |    2 +-
 drivers/net/ethernet/cadence/macb_ptp.c                                                            |    2 +-
 drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c                                            |    2 +-
 drivers/net/ethernet/cavium/liquidio/lio_main.c                                                    |   90 +-
 drivers/net/ethernet/cavium/liquidio/lio_vf_main.c                                                 |   59 +-
 drivers/net/ethernet/cavium/liquidio/octeon_device.c                                               |   11 +-
 drivers/net/ethernet/cavium/liquidio/octeon_network.h                                              |    2 +-
 drivers/net/ethernet/cavium/liquidio/request_manager.c                                             |   10 +-
 drivers/net/ethernet/cavium/octeon/octeon_mgmt.c                                                   |    7 +-
 drivers/net/ethernet/cavium/thunder/nicvf_main.c                                                   |   11 +-
 drivers/net/ethernet/cavium/thunder/nicvf_queues.c                                                 |    5 +-
 drivers/net/ethernet/chelsio/Kconfig                                                               |    2 +-
 drivers/net/ethernet/chelsio/cxgb4/cudbg_entity.h                                                  |  161 --
 drivers/net/ethernet/chelsio/cxgb4/cudbg_if.h                                                      |    3 +-
 drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.c                                                     |  443 ++++
 drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.h                                                     |    4 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4.h                                                         |  120 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.c                                                   |  260 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.h                                                   |    1 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c                                                 |   66 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c                                                 |  626 ++++-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c                                                  |    5 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.h                                                  |    2 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c                                                    |  598 ++++-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c                                               |  144 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.h                                               |    8 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_matchall.c                                             |  146 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_matchall.h                                             |    6 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h                                                     |    2 +
 drivers/net/ethernet/chelsio/cxgb4/sge.c                                                           |  109 +-
 drivers/net/ethernet/chelsio/cxgb4/smt.c                                                           |    2 +-
 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c                                                         |  334 ++-
 drivers/net/ethernet/chelsio/cxgb4/t4_regs.h                                                       |   10 +
 drivers/net/ethernet/chelsio/cxgb4vf/adapter.h                                                     |    2 +-
 drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c                                                |   47 +-
 drivers/net/ethernet/chelsio/cxgb4vf/sge.c                                                         |    2 +-
 drivers/net/ethernet/chelsio/cxgb4vf/t4vf_common.h                                                 |    2 +-
 drivers/net/ethernet/chelsio/cxgb4vf/t4vf_hw.c                                                     |    6 +-
 drivers/net/ethernet/cirrus/Kconfig                                                                |    2 +-
 drivers/net/ethernet/cisco/enic/enic_main.c                                                        |  105 +-
 drivers/net/ethernet/cortina/Kconfig                                                               |    2 +-
 drivers/net/ethernet/dec/tulip/Kconfig                                                             |    4 +-
 drivers/net/ethernet/dec/tulip/de2104x.c                                                           |   25 +-
 drivers/net/ethernet/dec/tulip/dmfe.c                                                              |   49 +-
 drivers/net/ethernet/dec/tulip/tulip_core.c                                                        |   51 +-
 drivers/net/ethernet/dec/tulip/uli526x.c                                                           |   48 +-
 drivers/net/ethernet/dec/tulip/winbond-840.c                                                       |   26 +-
 drivers/net/ethernet/dlink/dl2k.c                                                                  |   10 +-
 drivers/net/ethernet/dlink/sundance.c                                                              |   29 +-
 drivers/net/ethernet/emulex/benet/be.h                                                             |    5 -
 drivers/net/ethernet/emulex/benet/be_main.c                                                        |  220 +-
 drivers/net/ethernet/fealnx.c                                                                      |   91 +-
 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c                                           |    8 +-
 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-trace.h                                             |    1 -
 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c                                                   |  263 +-
 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h                                                   |   15 +-
 drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c                                               |    3 +-
 drivers/net/ethernet/freescale/dpaa2/dpni-cmd.h                                                    |   13 +
 drivers/net/ethernet/freescale/dpaa2/dpni.c                                                        |   44 +-
 drivers/net/ethernet/freescale/dpaa2/dpni.h                                                        |   16 +
 drivers/net/ethernet/freescale/enetc/Kconfig                                                       |    2 +
 drivers/net/ethernet/freescale/enetc/enetc.c                                                       |  164 +-
 drivers/net/ethernet/freescale/enetc/enetc.h                                                       |   36 +-
 drivers/net/ethernet/freescale/enetc/enetc_ethtool.c                                               |   84 +-
 drivers/net/ethernet/freescale/enetc/enetc_hw.h                                                    |   50 +-
 drivers/net/ethernet/freescale/enetc/enetc_pf.c                                                    |  196 +-
 drivers/net/ethernet/freescale/enetc/enetc_pf.h                                                    |    5 +
 drivers/net/ethernet/freescale/enetc/enetc_qos.c                                                   |  213 +-
 drivers/net/ethernet/freescale/fec_main.c                                                          |    7 +-
 drivers/net/ethernet/freescale/fec_ptp.c                                                           |   13 +-
 drivers/net/ethernet/freescale/fman/fman.c                                                         |    3 +-
 drivers/net/ethernet/freescale/fman/fman_dtsec.c                                                   |    4 +-
 drivers/net/ethernet/freescale/fman/fman_mac.h                                                     |    2 +-
 drivers/net/ethernet/freescale/fman/fman_memac.c                                                   |    3 +-
 drivers/net/ethernet/freescale/fman/fman_port.c                                                    |    9 +-
 drivers/net/ethernet/freescale/fman/fman_tgec.c                                                    |    2 +-
 drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c                                              |    6 +-
 drivers/net/ethernet/freescale/xgmac_mdio.c                                                        |   33 +-
 drivers/net/ethernet/hisilicon/hix5hd2_gmac.c                                                      |    6 +-
 drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c                                                 |    2 +-
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c                                                    |   41 +-
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.h                                                    |    2 +-
 drivers/net/ethernet/huawei/hinic/Makefile                                                         |    2 +-
 drivers/net/ethernet/huawei/hinic/hinic_dev.h                                                      |   23 +
 drivers/net/ethernet/huawei/hinic/hinic_devlink.c                                                  |  608 +++++
 drivers/net/ethernet/huawei/hinic/hinic_devlink.h                                                  |  119 +
 drivers/net/ethernet/huawei/hinic/hinic_ethtool.c                                                  |  602 ++++-
 drivers/net/ethernet/huawei/hinic/hinic_hw_api_cmd.c                                               |   27 +-
 drivers/net/ethernet/huawei/hinic/hinic_hw_api_cmd.h                                               |    4 +
 drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c                                                  |    2 +
 drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.h                                                  |   10 +
 drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c                                                   |  254 +-
 drivers/net/ethernet/huawei/hinic/hinic_hw_dev.h                                                   |  226 +-
 drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c                                                   |   39 +
 drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.h                                                   |    6 +-
 drivers/net/ethernet/huawei/hinic/hinic_hw_if.c                                                    |   23 +
 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h                                                    |   10 +-
 drivers/net/ethernet/huawei/hinic/hinic_hw_io.h                                                    |   10 +
 drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c                                                  |  312 ++-
 drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.h                                                  |   22 +
 drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c                                                  |   11 +
 drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.h                                                  |   17 +-
 drivers/net/ethernet/huawei/hinic/hinic_main.c                                                     |  205 +-
 drivers/net/ethernet/huawei/hinic/hinic_port.c                                                     |  256 +-
 drivers/net/ethernet/huawei/hinic/hinic_port.h                                                     |  144 +
 drivers/net/ethernet/huawei/hinic/hinic_rx.c                                                       |   58 +-
 drivers/net/ethernet/huawei/hinic/hinic_sriov.c                                                    |   81 +-
 drivers/net/ethernet/huawei/hinic/hinic_tx.c                                                       |   80 +
 drivers/net/ethernet/huawei/hinic/hinic_tx.h                                                       |    2 +
 drivers/net/ethernet/intel/Kconfig                                                                 |   25 +-
 drivers/net/ethernet/intel/e100.c                                                                  |   38 +-
 drivers/net/ethernet/intel/e1000/e1000.h                                                           |    1 -
 drivers/net/ethernet/intel/e1000/e1000_ethtool.c                                                   |    6 +-
 drivers/net/ethernet/intel/e1000/e1000_hw.c                                                        |    4 +-
 drivers/net/ethernet/intel/e1000/e1000_main.c                                                      |    8 +-
 drivers/net/ethernet/intel/e1000/e1000_param.c                                                     |    2 +-
 drivers/net/ethernet/intel/e1000e/82571.c                                                          |    4 +-
 drivers/net/ethernet/intel/e1000e/e1000.h                                                          |    1 -
 drivers/net/ethernet/intel/e1000e/ethtool.c                                                        |   17 +-
 drivers/net/ethernet/intel/e1000e/ich8lan.c                                                        |   14 +-
 drivers/net/ethernet/intel/e1000e/netdev.c                                                         |   38 +-
 drivers/net/ethernet/intel/e1000e/param.c                                                          |    2 +-
 drivers/net/ethernet/intel/e1000e/phy.c                                                            |    2 +-
 drivers/net/ethernet/intel/e1000e/ptp.c                                                            |    3 +-
 drivers/net/ethernet/intel/fm10k/fm10k.h                                                           |   11 +-
 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c                                                   |    6 +-
 drivers/net/ethernet/intel/fm10k/fm10k_main.c                                                      |   18 +-
 drivers/net/ethernet/intel/fm10k/fm10k_mbx.c                                                       |    6 +-
 drivers/net/ethernet/intel/fm10k/fm10k_netdev.c                                                    |  166 +-
 drivers/net/ethernet/intel/fm10k/fm10k_pci.c                                                       |    4 -
 drivers/net/ethernet/intel/fm10k/fm10k_pf.c                                                        |    8 +-
 drivers/net/ethernet/intel/i40e/i40e.h                                                             |   49 +-
 drivers/net/ethernet/intel/i40e/i40e_adminq.c                                                      |    2 +-
 drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h                                                  |  496 +---
 drivers/net/ethernet/intel/i40e/i40e_client.c                                                      |    2 +-
 drivers/net/ethernet/intel/i40e/i40e_common.c                                                      |    7 +-
 drivers/net/ethernet/intel/i40e/i40e_dcb.h                                                         |    5 -
 drivers/net/ethernet/intel/i40e/i40e_debugfs.c                                                     |  101 +-
 drivers/net/ethernet/intel/i40e/i40e_devids.h                                                      |    7 +-
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c                                                     |   13 +-
 drivers/net/ethernet/intel/i40e/i40e_hmc.h                                                         |    1 -
 drivers/net/ethernet/intel/i40e/i40e_main.c                                                        |  282 +-
 drivers/net/ethernet/intel/i40e/i40e_osdep.h                                                       |    1 -
 drivers/net/ethernet/intel/i40e/i40e_ptp.c                                                         |    2 +-
 drivers/net/ethernet/intel/i40e/i40e_register.h                                                    | 4658 +-------------------------------
 drivers/net/ethernet/intel/i40e/i40e_txrx.c                                                        |   23 +-
 drivers/net/ethernet/intel/i40e/i40e_txrx.h                                                        |   26 +-
 drivers/net/ethernet/intel/i40e/i40e_type.h                                                        |   82 -
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c                                                 |  234 +-
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h                                                 |    1 -
 drivers/net/ethernet/intel/i40e/i40e_xsk.c                                                         |   61 +-
 drivers/net/ethernet/intel/i40e/i40e_xsk.h                                                         |    3 +-
 drivers/net/ethernet/intel/iavf/iavf.h                                                             |    1 -
 drivers/net/ethernet/intel/iavf/iavf_ethtool.c                                                     |    1 -
 drivers/net/ethernet/intel/iavf/iavf_main.c                                                        |   68 +-
 drivers/net/ethernet/intel/iavf/iavf_txrx.c                                                        |    2 +-
 drivers/net/ethernet/intel/iavf/iavf_type.h                                                        |    8 -
 drivers/net/ethernet/intel/ice/Makefile                                                            |    1 +
 drivers/net/ethernet/intel/ice/ice.h                                                               |   23 +-
 drivers/net/ethernet/intel/ice/ice_adminq_cmd.h                                                    |  214 +-
 drivers/net/ethernet/intel/ice/ice_base.c                                                          |    2 +-
 drivers/net/ethernet/intel/ice/ice_common.c                                                        | 1432 +++++++---
 drivers/net/ethernet/intel/ice/ice_common.h                                                        |   36 +-
 drivers/net/ethernet/intel/ice/ice_controlq.c                                                      |    6 +-
 drivers/net/ethernet/intel/ice/ice_dcb.c                                                           |   37 +-
 drivers/net/ethernet/intel/ice/ice_dcb.h                                                           |    4 +-
 drivers/net/ethernet/intel/ice/ice_dcb_lib.c                                                       |    6 +-
 drivers/net/ethernet/intel/ice/ice_dcb_lib.h                                                       |   11 +
 drivers/net/ethernet/intel/ice/ice_devlink.c                                                       |  121 +-
 drivers/net/ethernet/intel/ice/ice_ethtool.c                                                       |  745 ++++--
 drivers/net/ethernet/intel/ice/ice_flex_pipe.c                                                     |  135 +-
 drivers/net/ethernet/intel/ice/ice_flex_type.h                                                     |   39 +-
 drivers/net/ethernet/intel/ice/ice_flow.c                                                          |   13 +-
 drivers/net/ethernet/intel/ice/ice_fw_update.c                                                     |  773 ++++++
 drivers/net/ethernet/intel/ice/ice_fw_update.h                                                     |   12 +
 drivers/net/ethernet/intel/ice/ice_hw_autogen.h                                                    |   13 +-
 drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h                                                     |  314 +++
 drivers/net/ethernet/intel/ice/ice_lib.c                                                           |   43 +-
 drivers/net/ethernet/intel/ice/ice_lib.h                                                           |    2 +
 drivers/net/ethernet/intel/ice/ice_main.c                                                          | 1137 +++++++-
 drivers/net/ethernet/intel/ice/ice_nvm.c                                                           |  191 +-
 drivers/net/ethernet/intel/ice/ice_nvm.h                                                           |   20 +
 drivers/net/ethernet/intel/ice/ice_sched.c                                                         |  135 +-
 drivers/net/ethernet/intel/ice/ice_sched.h                                                         |    2 +-
 drivers/net/ethernet/intel/ice/ice_switch.c                                                        |   58 +-
 drivers/net/ethernet/intel/ice/ice_txrx.c                                                          |   39 +-
 drivers/net/ethernet/intel/ice/ice_txrx.h                                                          |    2 +-
 drivers/net/ethernet/intel/ice/ice_txrx_lib.c                                                      |    7 +-
 drivers/net/ethernet/intel/ice/ice_type.h                                                          |   73 +-
 drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c                                                   |   61 +-
 drivers/net/ethernet/intel/ice/ice_virtchnl_pf.h                                                   |    3 +
 drivers/net/ethernet/intel/ice/ice_xsk.c                                                           |   18 +-
 drivers/net/ethernet/intel/igb/e1000_82575.c                                                       |    4 +-
 drivers/net/ethernet/intel/igb/e1000_nvm.c                                                         |    2 +-
 drivers/net/ethernet/intel/igb/e1000_phy.c                                                         |    4 +-
 drivers/net/ethernet/intel/igb/igb.h                                                               |    1 -
 drivers/net/ethernet/intel/igb/igb_ethtool.c                                                       |   13 +-
 drivers/net/ethernet/intel/igb/igb_main.c                                                          |   41 +-
 drivers/net/ethernet/intel/igb/igb_ptp.c                                                           |    2 +-
 drivers/net/ethernet/intel/igbvf/ethtool.c                                                         |    2 -
 drivers/net/ethernet/intel/igbvf/igbvf.h                                                           |    1 -
 drivers/net/ethernet/intel/igbvf/netdev.c                                                          |   46 +-
 drivers/net/ethernet/intel/igc/igc.h                                                               |    8 +-
 drivers/net/ethernet/intel/igc/igc_defines.h                                                       |   39 +-
 drivers/net/ethernet/intel/igc/igc_ethtool.c                                                       |  112 +-
 drivers/net/ethernet/intel/igc/igc_hw.h                                                            |   21 +-
 drivers/net/ethernet/intel/igc/igc_i225.c                                                          |  156 ++
 drivers/net/ethernet/intel/igc/igc_i225.h                                                          |    3 +
 drivers/net/ethernet/intel/igc/igc_mac.c                                                           |   28 +-
 drivers/net/ethernet/intel/igc/igc_main.c                                                          |   68 +-
 drivers/net/ethernet/intel/igc/igc_ptp.c                                                           |  256 +-
 drivers/net/ethernet/intel/igc/igc_regs.h                                                          |   30 +-
 drivers/net/ethernet/intel/ixgb/ixgb.h                                                             |    1 -
 drivers/net/ethernet/intel/ixgb/ixgb_ethtool.c                                                     |    2 -
 drivers/net/ethernet/intel/ixgb/ixgb_main.c                                                        |    6 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe.h                                                           |    4 -
 drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c                                                     |    2 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c                                                     |    6 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_common.c                                                    |    4 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c                                                   |  283 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c                                                      |    5 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c                                                     |    8 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c                                                      |  317 +--
 drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c                                                       |   14 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c                                                       |    4 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c                                                     |    6 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c                                                      |   10 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c                                                       |    4 +-
 drivers/net/ethernet/intel/ixgbevf/ethtool.c                                                       |    2 -
 drivers/net/ethernet/intel/ixgbevf/ixgbevf.h                                                       |    1 -
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c                                                  |   67 +-
 drivers/net/ethernet/intel/ixgbevf/vf.c                                                            |    6 +-
 drivers/net/ethernet/jme.c                                                                         |    2 +-
 drivers/net/ethernet/jme.h                                                                         |    2 +-
 drivers/net/ethernet/marvell/Kconfig                                                               |    1 +
 drivers/net/ethernet/marvell/mv643xx_eth.c                                                         |    5 +-
 drivers/net/ethernet/marvell/mvneta.c                                                              |  242 +-
 drivers/net/ethernet/marvell/mvpp2/mvpp2.h                                                         |   57 +-
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c                                                    |  906 ++++++-
 drivers/net/ethernet/marvell/octeontx2/af/common.h                                                 |    2 +-
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c                                             |    6 +-
 drivers/net/ethernet/marvell/skge.c                                                                |   76 +-
 drivers/net/ethernet/marvell/sky2.c                                                                |   87 +-
 drivers/net/ethernet/mediatek/mtk_eth_soc.c                                                        |   45 +-
 drivers/net/ethernet/mediatek/mtk_star_emac.c                                                      |   13 +-
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c                                                     |  131 +-
 drivers/net/ethernet/mellanox/mlx4/en_rx.c                                                         |    4 +-
 drivers/net/ethernet/mellanox/mlx4/eq.c                                                            |    2 +-
 drivers/net/ethernet/mellanox/mlx4/main.c                                                          |   11 +-
 drivers/net/ethernet/mellanox/mlx4/mcg.c                                                           |    4 +-
 drivers/net/ethernet/mellanox/mlx4/mlx4_en.h                                                       |    2 -
 drivers/net/ethernet/mellanox/mlx5/core/Kconfig                                                    |   27 +-
 drivers/net/ethernet/mellanox/mlx5/core/Makefile                                                   |    8 +-
 drivers/net/ethernet/mellanox/mlx5/core/accel/ipsec.c                                              |  108 +-
 drivers/net/ethernet/mellanox/mlx5/core/accel/ipsec.h                                              |   45 +-
 drivers/net/ethernet/mellanox/mlx5/core/accel/ipsec_offload.c                                      |  385 +++
 drivers/net/ethernet/mellanox/mlx5/core/accel/ipsec_offload.h                                      |   38 +
 drivers/net/ethernet/mellanox/mlx5/core/accel/tls.c                                                |    4 +-
 drivers/net/ethernet/mellanox/mlx5/core/accel/tls.h                                                |   19 +-
 drivers/net/ethernet/mellanox/mlx5/core/devlink.c                                                  |    2 +
 drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c                                           |    2 +-
 drivers/net/ethernet/mellanox/mlx5/core/diag/rsc_dump.c                                            |    6 +
 drivers/net/ethernet/mellanox/mlx5/core/diag/rsc_dump.h                                            |   33 +-
 drivers/net/ethernet/mellanox/mlx5/core/en.h                                                       |  103 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/devlink.c                                               |   19 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/fs.h                                                    |   34 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/health.c                                                |   58 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/health.h                                                |   16 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.c                                               |  157 ++
 drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.h                                               |   31 +
 drivers/net/ethernet/mellanox/mlx5/core/en/params.h                                                |   22 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/port.c                                                  |    3 +
 drivers/net/ethernet/mellanox/mlx5/core/en/rep/neigh.c                                             |    1 +
 drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c                                                |   17 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c                                           |  154 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c                                           |   93 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c                                                 |  481 +++-
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h                                                 |   32 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h                                                  |   93 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c                                                   |   30 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h                                                   |   13 +
 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c                                             |   54 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/tx.c                                                |   22 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/umem.c                                              |   13 -
 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/umem.h                                              |    2 -
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/en_accel.h                                        |   10 +
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c                                          |  400 +++
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.h                                          |   27 +
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c                                           |   51 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h                                           |   10 +
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c                                        |  544 ++++
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.h                                        |   26 +
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.c                                      |   56 +
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.h                                      |   23 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls.c                                            |  123 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls.h                                            |  114 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c                                         |  680 +++++
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c                                         |  208 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_txrx.c                                       |  119 +
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_txrx.h                                       |   42 +
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_utils.h                                      |   86 +
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c                                             |   28 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.h                                             |   14 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls_rxtx.c                                        |   34 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls_rxtx.h                                        |   34 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c                                                  |   36 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_common.c                                                |   12 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c                                               |   23 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_fs.c                                                    |   84 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c                                                  |  290 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_rep.c                                                   |   75 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_rep.h                                                   |    6 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c                                                    |  169 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_stats.c                                                 |   39 +
 drivers/net/ethernet/mellanox/mlx5/core/en_stats.h                                                 |   25 +
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c                                                    |  279 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.h                                                    |   33 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_tx.c                                                    |    1 -
 drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c                                                  |   14 +-
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.c                                                  |  161 +-
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.h                                                  |   47 +-
 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c                                         |  115 +-
 drivers/net/ethernet/mellanox/mlx5/core/fpga/conn.c                                                |    4 +-
 drivers/net/ethernet/mellanox/mlx5/core/fpga/ipsec.c                                               |   51 +-
 drivers/net/ethernet/mellanox/mlx5/core/fpga/ipsec.h                                               |   37 +-
 drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c                                                   |    2 +
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c                                                  |   14 +-
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.h                                                  |   10 +
 drivers/net/ethernet/mellanox/mlx5/core/fw.c                                                       |    9 +-
 drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c                                              |    3 +-
 drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.h                                              |    2 +-
 drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib_vlan.c                                         |    3 +-
 drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c                                                   |    8 +-
 drivers/net/ethernet/mellanox/mlx5/core/lib/crypto.c                                               |    5 +-
 drivers/net/ethernet/mellanox/mlx5/core/lib/mlx5.h                                                 |    8 +-
 drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.c                                                |  114 +-
 drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.h                                                |   10 +-
 drivers/net/ethernet/mellanox/mlx5/core/main.c                                                     |    9 +-
 drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c                                                |  145 +-
 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c                                      |   15 +-
 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c                                         |    5 +-
 drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c                                           |   42 +-
 drivers/net/ethernet/mellanox/mlx5/core/vport.c                                                    |    4 +-
 drivers/net/ethernet/mellanox/mlx5/core/wq.h                                                       |   15 +
 drivers/net/ethernet/mellanox/mlxsw/Makefile                                                       |    3 +-
 drivers/net/ethernet/mellanox/mlxsw/core.c                                                         |   34 +-
 drivers/net/ethernet/mellanox/mlxsw/core.h                                                         |   25 +-
 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_actions.c                                        |  355 ++-
 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_actions.h                                        |   10 +
 drivers/net/ethernet/mellanox/mlxsw/core_env.c                                                     |   53 +-
 drivers/net/ethernet/mellanox/mlxsw/minimal.c                                                      |    4 +-
 drivers/net/ethernet/mellanox/mlxsw/pci.c                                                          |    6 +-
 drivers/net/ethernet/mellanox/mlxsw/pci_hw.h                                                       |    7 +-
 drivers/net/ethernet/mellanox/mlxsw/reg.h                                                          |  195 +-
 drivers/net/ethernet/mellanox/mlxsw/resources.h                                                    |    2 +
 drivers/net/ethernet/mellanox/mlxsw/spectrum.c                                                     | 1944 ++------------
 drivers/net/ethernet/mellanox/mlxsw/spectrum.h                                                     |  151 +-
 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c                                                 |  108 +-
 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_actions.c                                    |   31 +-
 drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c                                                 |    5 +-
 drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c                                                 |    8 +-
 drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c                                             | 1644 ++++++++++++
 drivers/net/ethernet/mellanox/mlxsw/spectrum_flow.c                                                |   18 +-
 drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c                                              |   30 +-
 drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c                                            |   29 +-
 drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c                                             |  468 ++++
 drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c                                               |  524 ++++
 drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c                                                |  655 ++++-
 drivers/net/ethernet/mellanox/mlxsw/spectrum_span.h                                                |   33 +-
 drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c                                                |  255 +-
 drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.h                                                |   18 +-
 drivers/net/ethernet/mellanox/mlxsw/switchib.c                                                     |    2 +-
 drivers/net/ethernet/mellanox/mlxsw/switchx2.c                                                     |    2 +-
 drivers/net/ethernet/mellanox/mlxsw/trap.h                                                         |   10 +-
 drivers/net/ethernet/micrel/ksz884x.c                                                              |   93 +-
 drivers/net/ethernet/microchip/lan743x_main.c                                                      |   93 +-
 drivers/net/ethernet/mscc/Kconfig                                                                  |   22 +-
 drivers/net/ethernet/mscc/Makefile                                                                 |   16 +-
 drivers/net/ethernet/mscc/ocelot.c                                                                 | 1093 +-------
 drivers/net/ethernet/mscc/ocelot.h                                                                 |   51 +-
 drivers/net/ethernet/mscc/ocelot_board.c                                                           |  626 -----
 drivers/net/ethernet/mscc/ocelot_flower.c                                                          |  148 +-
 drivers/net/ethernet/mscc/ocelot_io.c                                                              |   18 +-
 drivers/net/ethernet/mscc/ocelot_net.c                                                             | 1050 ++++++++
 drivers/net/ethernet/mscc/ocelot_police.c                                                          |   49 +-
 drivers/net/ethernet/mscc/ocelot_police.h                                                          |   25 +-
 drivers/net/ethernet/mscc/ocelot_ptp.c                                                             |   74 +-
 drivers/net/ethernet/mscc/ocelot_regs.c                                                            |  450 ----
 drivers/net/ethernet/mscc/ocelot_tc.c                                                              |  179 --
 drivers/net/ethernet/mscc/ocelot_tc.h                                                              |   22 -
 drivers/net/ethernet/mscc/{ocelot_ace.c => ocelot_vcap.c}                                          |  336 +--
 drivers/net/ethernet/mscc/{ocelot_ace.h => ocelot_vcap.h}                                          |   88 +-
 drivers/net/ethernet/mscc/ocelot_vsc7514.c                                                         | 1138 ++++++++
 drivers/net/ethernet/myricom/myri10ge/myri10ge.c                                                   |   37 +-
 drivers/net/ethernet/natsemi/natsemi.c                                                             |   26 +-
 drivers/net/ethernet/neterion/Kconfig                                                              |    4 +-
 drivers/net/ethernet/neterion/s2io.c                                                               |  191 +-
 drivers/net/ethernet/neterion/vxge/vxge-config.c                                                   |   42 +-
 drivers/net/ethernet/neterion/vxge/vxge-main.c                                                     |   82 +-
 drivers/net/ethernet/netronome/nfp/flower/main.h                                                   |    2 +-
 drivers/net/ethernet/netronome/nfp/flower/offload.c                                                |   10 +-
 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c                                               |    8 +-
 drivers/net/ethernet/netronome/nfp/nfp_devlink.c                                                   |   17 +-
 drivers/net/ethernet/netronome/nfp/nfp_net.h                                                       |    5 -
 drivers/net/ethernet/netronome/nfp/nfp_net_common.c                                                |  132 +-
 drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c                                               |    2 +-
 drivers/net/ethernet/packetengines/hamachi.c                                                       |  111 +-
 drivers/net/ethernet/packetengines/yellowfin.c                                                     |   83 +-
 drivers/net/ethernet/pensando/Kconfig                                                              |    2 +-
 drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c                                                |    9 +-
 drivers/net/ethernet/pensando/ionic/ionic_dev.h                                                    |    2 -
 drivers/net/ethernet/pensando/ionic/ionic_devlink.c                                                |    5 +-
 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c                                                |   96 +-
 drivers/net/ethernet/pensando/ionic/ionic_if.h                                                     |   88 +-
 drivers/net/ethernet/pensando/ionic/ionic_lif.c                                                    |   66 +-
 drivers/net/ethernet/pensando/ionic/ionic_lif.h                                                    |   19 +-
 drivers/net/ethernet/pensando/ionic/ionic_txrx.c                                                   |  188 +-
 drivers/net/ethernet/pensando/ionic/ionic_txrx.h                                                   |    2 +
 drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c                                               |   59 +-
 drivers/net/ethernet/qlogic/qed/Makefile                                                           |   41 +-
 drivers/net/ethernet/qlogic/qed/qed.h                                                              |  155 +-
 drivers/net/ethernet/qlogic/qed/qed_chain.c                                                        |  371 +++
 drivers/net/ethernet/qlogic/qed/qed_cxt.c                                                          |   49 +-
 drivers/net/ethernet/qlogic/qed/qed_cxt.h                                                          |   30 +-
 drivers/net/ethernet/qlogic/qed/qed_dcbx.c                                                         |   57 +-
 drivers/net/ethernet/qlogic/qed/qed_dcbx.h                                                         |   32 +-
 drivers/net/ethernet/qlogic/qed/qed_debug.c                                                        |   55 +-
 drivers/net/ethernet/qlogic/qed/qed_debug.h                                                        |    3 +-
 drivers/net/ethernet/qlogic/qed/qed_dev.c                                                          |  475 +---
 drivers/net/ethernet/qlogic/qed/qed_dev_api.h                                                      |   62 +-
 drivers/net/ethernet/qlogic/qed/qed_fcoe.c                                                         |   84 +-
 drivers/net/ethernet/qlogic/qed/qed_fcoe.h                                                         |   35 +-
 drivers/net/ethernet/qlogic/qed/qed_hsi.h                                                          | 1085 ++++----
 drivers/net/ethernet/qlogic/qed/qed_hw.c                                                           |   35 +-
 drivers/net/ethernet/qlogic/qed/qed_hw.h                                                           |   37 +-
 drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c                                                |  158 +-
 drivers/net/ethernet/qlogic/qed/qed_init_ops.c                                                     |  103 +-
 drivers/net/ethernet/qlogic/qed/qed_init_ops.h                                                     |   30 +-
 drivers/net/ethernet/qlogic/qed/qed_int.c                                                          |  153 +-
 drivers/net/ethernet/qlogic/qed/qed_int.h                                                          |   30 +-
 drivers/net/ethernet/qlogic/qed/qed_iscsi.c                                                        |  117 +-
 drivers/net/ethernet/qlogic/qed/qed_iscsi.h                                                        |   34 +-
 drivers/net/ethernet/qlogic/qed/qed_iwarp.c                                                        |  181 +-
 drivers/net/ethernet/qlogic/qed/qed_iwarp.h                                                        |   31 +-
 drivers/net/ethernet/qlogic/qed/qed_l2.c                                                           |  111 +-
 drivers/net/ethernet/qlogic/qed/qed_l2.h                                                           |   31 +-
 drivers/net/ethernet/qlogic/qed/qed_ll2.c                                                          |   83 +-
 drivers/net/ethernet/qlogic/qed/qed_ll2.h                                                          |   32 +-
 drivers/net/ethernet/qlogic/qed/qed_main.c                                                         |  811 ++++--
 drivers/net/ethernet/qlogic/qed/qed_mcp.c                                                          |  161 +-
 drivers/net/ethernet/qlogic/qed/qed_mcp.h                                                          |  176 +-
 drivers/net/ethernet/qlogic/qed/qed_mng_tlv.c                                                      |    8 +-
 drivers/net/ethernet/qlogic/qed/qed_ooo.c                                                          |   30 +-
 drivers/net/ethernet/qlogic/qed/qed_ooo.h                                                          |   30 +-
 drivers/net/ethernet/qlogic/qed/qed_ptp.c                                                          |   32 +-
 drivers/net/ethernet/qlogic/qed/qed_ptp.h                                                          |    9 +
 drivers/net/ethernet/qlogic/qed/qed_rdma.c                                                         |   84 +-
 drivers/net/ethernet/qlogic/qed/qed_rdma.h                                                         |   33 +-
 drivers/net/ethernet/qlogic/qed/qed_reg_addr.h                                                     |   30 +-
 drivers/net/ethernet/qlogic/qed/qed_roce.c                                                         |  237 +-
 drivers/net/ethernet/qlogic/qed/qed_roce.h                                                         |   31 +-
 drivers/net/ethernet/qlogic/qed/qed_selftest.c                                                     |   30 +-
 drivers/net/ethernet/qlogic/qed/qed_selftest.h                                                     |    4 +-
 drivers/net/ethernet/qlogic/qed/qed_sp.h                                                           |   39 +-
 drivers/net/ethernet/qlogic/qed/qed_sp_commands.c                                                  |   58 +-
 drivers/net/ethernet/qlogic/qed/qed_spq.c                                                          |  136 +-
 drivers/net/ethernet/qlogic/qed/qed_sriov.c                                                        |   70 +-
 drivers/net/ethernet/qlogic/qed/qed_sriov.h                                                        |   32 +-
 drivers/net/ethernet/qlogic/qed/qed_vf.c                                                           |   30 +-
 drivers/net/ethernet/qlogic/qed/qed_vf.h                                                           |   29 +-
 drivers/net/ethernet/qlogic/qede/Makefile                                                          |    4 +-
 drivers/net/ethernet/qlogic/qede/qede.h                                                            |  209 +-
 drivers/net/ethernet/qlogic/qede/qede_dcbnl.c                                                      |    7 +-
 drivers/net/ethernet/qlogic/qede/qede_ethtool.c                                                    |  528 ++--
 drivers/net/ethernet/qlogic/qede/qede_filter.c                                                     |  184 +-
 drivers/net/ethernet/qlogic/qede/qede_fp.c                                                         |  205 +-
 drivers/net/ethernet/qlogic/qede/qede_main.c                                                       |  232 +-
 drivers/net/ethernet/qlogic/qede/qede_ptp.c                                                        |   41 +-
 drivers/net/ethernet/qlogic/qede/qede_ptp.h                                                        |   31 +-
 drivers/net/ethernet/qlogic/qede/qede_rdma.c                                                       |   31 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic.h                                                        |    7 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c                                              |   31 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c                                                     |   11 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c                                                   |   97 +-
 drivers/net/ethernet/rdc/r6040.c                                                                   |   64 +-
 drivers/net/ethernet/realtek/r8169.h                                                               |    2 +-
 drivers/net/ethernet/realtek/r8169_main.c                                                          |  390 ++-
 drivers/net/ethernet/realtek/r8169_phy_config.c                                                    |   81 +-
 drivers/net/ethernet/sfc/Kconfig                                                                   |    5 +-
 drivers/net/ethernet/sfc/Makefile                                                                  |    4 +-
 drivers/net/ethernet/sfc/bitfield.h                                                                |   34 +-
 drivers/net/ethernet/sfc/ef10.c                                                                    |  346 +--
 drivers/net/ethernet/sfc/ef100.c                                                                   |  543 ++++
 drivers/net/ethernet/sfc/ef100.h                                                                   |   12 +
 drivers/net/ethernet/sfc/ef100_ethtool.c                                                           |   24 +
 drivers/net/ethernet/sfc/ef100_ethtool.h                                                           |   12 +
 drivers/net/ethernet/sfc/ef100_netdev.c                                                            |  289 ++
 drivers/net/ethernet/sfc/ef100_netdev.h                                                            |   17 +
 drivers/net/ethernet/sfc/ef100_nic.c                                                               | 1278 +++++++++
 drivers/net/ethernet/sfc/ef100_nic.h                                                               |   80 +
 drivers/net/ethernet/sfc/ef100_regs.h                                                              |  693 +++++
 drivers/net/ethernet/sfc/ef100_rx.c                                                                |  167 ++
 drivers/net/ethernet/sfc/ef100_rx.h                                                                |   21 +
 drivers/net/ethernet/sfc/ef100_tx.c                                                                |  408 +++
 drivers/net/ethernet/sfc/ef100_tx.h                                                                |   26 +
 drivers/net/ethernet/sfc/efx.c                                                                     |  322 +--
 drivers/net/ethernet/sfc/efx.h                                                                     |   50 +-
 drivers/net/ethernet/sfc/efx_channels.c                                                            |   76 +-
 drivers/net/ethernet/sfc/efx_channels.h                                                            |    3 +
 drivers/net/ethernet/sfc/efx_common.c                                                              |  263 +-
 drivers/net/ethernet/sfc/efx_common.h                                                              |   44 +-
 drivers/net/ethernet/sfc/ethtool.c                                                                 |  914 -------
 drivers/net/ethernet/sfc/ethtool_common.c                                                          |  910 ++++++-
 drivers/net/ethernet/sfc/ethtool_common.h                                                          |   35 +-
 drivers/net/ethernet/sfc/farch.c                                                                   |    6 +-
 drivers/net/ethernet/sfc/io.h                                                                      |   16 +-
 drivers/net/ethernet/sfc/mcdi.c                                                                    |   74 +-
 drivers/net/ethernet/sfc/mcdi.h                                                                    |   14 +-
 drivers/net/ethernet/sfc/mcdi_filters.c                                                            |   77 +-
 drivers/net/ethernet/sfc/mcdi_filters.h                                                            |    3 +
 drivers/net/ethernet/sfc/mcdi_functions.c                                                          |   57 +-
 drivers/net/ethernet/sfc/mcdi_functions.h                                                          |    1 +
 drivers/net/ethernet/sfc/mcdi_pcol.h                                                               | 6933 +++++++++++++++++++++++++++++++++++++++++++++++-
 drivers/net/ethernet/sfc/mcdi_port.c                                                               |  105 +-
 drivers/net/ethernet/sfc/mcdi_port.h                                                               |   18 +
 drivers/net/ethernet/sfc/mcdi_port_common.c                                                        |  141 +-
 drivers/net/ethernet/sfc/mcdi_port_common.h                                                        |    5 +-
 drivers/net/ethernet/sfc/net_driver.h                                                              |   98 +-
 drivers/net/ethernet/sfc/nic.c                                                                     |   44 +
 drivers/net/ethernet/sfc/nic.h                                                                     |  301 +--
 drivers/net/ethernet/sfc/nic_common.h                                                              |  286 ++
 drivers/net/ethernet/sfc/ptp.c                                                                     |   25 +-
 drivers/net/ethernet/sfc/ptp.h                                                                     |   45 +
 drivers/net/ethernet/sfc/rx.c                                                                      |  244 +-
 drivers/net/ethernet/sfc/rx_common.c                                                               |  245 +-
 drivers/net/ethernet/sfc/rx_common.h                                                               |   15 +-
 drivers/net/ethernet/sfc/selftest.c                                                                |   18 +-
 drivers/net/ethernet/sfc/siena.c                                                                   |    9 +-
 drivers/net/ethernet/sfc/tx.c                                                                      |   82 +-
 drivers/net/ethernet/sfc/tx.h                                                                      |    3 -
 drivers/net/ethernet/sfc/tx_common.c                                                               |   53 +-
 drivers/net/ethernet/sfc/tx_common.h                                                               |    3 +
 drivers/net/ethernet/sgi/ioc3-eth.c                                                                |    4 +-
 drivers/net/ethernet/silan/sc92031.c                                                               |   26 +-
 drivers/net/ethernet/sis/sis190.c                                                                  |   52 +-
 drivers/net/ethernet/sis/sis900.c                                                                  |  112 +-
 drivers/net/ethernet/smsc/Kconfig                                                                  |    4 +-
 drivers/net/ethernet/smsc/epic100.c                                                                |   19 +-
 drivers/net/ethernet/smsc/smsc9420.c                                                               |   40 +-
 drivers/net/ethernet/socionext/netsec.c                                                            |    3 -
 drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c                                                |   53 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c                                               |   19 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c                                                  |   18 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c                                             |    2 +-
 drivers/net/ethernet/sun/cassini.c                                                                 |  121 +-
 drivers/net/ethernet/sun/niu.c                                                                     |   17 +-
 drivers/net/ethernet/sun/sungem.c                                                                  |  129 +-
 drivers/net/ethernet/synopsys/dwc-xlgmac-net.c                                                     |    2 +-
 drivers/net/ethernet/ti/Kconfig                                                                    |    2 +-
 drivers/net/ethernet/ti/am65-cpsw-ethtool.c                                                        |    6 +-
 drivers/net/ethernet/ti/am65-cpsw-nuss.c                                                           |   77 +-
 drivers/net/ethernet/ti/am65-cpsw-nuss.h                                                           |    2 +-
 drivers/net/ethernet/ti/am65-cpsw-qos.c                                                            |    8 +-
 drivers/net/ethernet/ti/cpsw_priv.c                                                                |    3 -
 drivers/net/ethernet/ti/tlan.c                                                                     |   33 +-
 drivers/net/ethernet/toshiba/spider_net.c                                                          |    6 +-
 drivers/net/ethernet/via/via-velocity.c                                                            |  163 +-
 drivers/net/ethernet/via/via-velocity.h                                                            |   44 -
 drivers/net/ethernet/xilinx/ll_temac_main.c                                                        |    6 +-
 drivers/net/ethernet/xircom/xirc2ps_cs.c                                                           |    2 +-
 drivers/net/fddi/Kconfig                                                                           |    4 +-
 drivers/net/fddi/skfp/ess.c                                                                        |   10 +-
 drivers/net/fddi/skfp/h/cmtdef.h                                                                   |    1 -
 drivers/net/fddi/skfp/smt.c                                                                        |   60 +-
 drivers/net/geneve.c                                                                               |  246 +-
 drivers/net/hamradio/Kconfig                                                                       |   16 +-
 drivers/net/hamradio/scc.c                                                                         |    2 +-
 drivers/net/hyperv/hyperv_net.h                                                                    |    1 +
 drivers/net/hyperv/netvsc_bpf.c                                                                    |   21 +-
 drivers/net/hyperv/netvsc_drv.c                                                                    |   50 +-
 drivers/net/ipa/gsi.c                                                                              |  117 +-
 drivers/net/ipa/gsi.h                                                                              |   12 +-
 drivers/net/ipa/gsi_private.h                                                                      |    6 +-
 drivers/net/ipa/gsi_trans.h                                                                        |   12 +-
 drivers/net/ipa/ipa_clock.c                                                                        |    8 +-
 drivers/net/ipa/ipa_clock.h                                                                        |   10 +-
 drivers/net/ipa/ipa_cmd.h                                                                          |   10 +-
 drivers/net/ipa/ipa_endpoint.c                                                                     |  304 ++-
 drivers/net/ipa/ipa_gsi.h                                                                          |   13 +-
 drivers/net/ipa/ipa_interrupt.h                                                                    |    2 +-
 drivers/net/ipa/ipa_main.c                                                                         |   13 +-
 drivers/net/ipa/ipa_mem.c                                                                          |    7 +-
 drivers/net/ipa/ipa_reg.h                                                                          |   60 +-
 drivers/net/ipa/ipa_smp2p.h                                                                        |    2 +-
 drivers/net/ipa/ipa_table.c                                                                        |    3 +-
 drivers/net/ipa/ipa_table.h                                                                        |    4 +-
 drivers/net/ipa/ipa_uc.c                                                                           |   15 +-
 drivers/net/netdevsim/Makefile                                                                     |    2 +-
 drivers/net/netdevsim/bpf.c                                                                        |    4 -
 drivers/net/netdevsim/dev.c                                                                        |   17 +-
 drivers/net/netdevsim/netdev.c                                                                     |   14 +-
 drivers/net/netdevsim/netdevsim.h                                                                  |   21 +-
 drivers/net/netdevsim/udp_tunnels.c                                                                |  192 ++
 drivers/net/phy/Kconfig                                                                            |    6 +
 drivers/net/phy/Makefile                                                                           |    1 +
 drivers/net/phy/adin.c                                                                             |   12 +-
 drivers/net/phy/at803x.c                                                                           |   85 +-
 drivers/net/phy/dp83640.c                                                                          |    5 +-
 drivers/net/phy/dp83822.c                                                                          |   79 +-
 drivers/net/phy/dp83869.c                                                                          |   53 +-
 drivers/net/phy/marvell.c                                                                          |  268 +-
 drivers/net/phy/marvell10g.c                                                                       |   22 +
 drivers/net/phy/mdio-boardinfo.c                                                                   |    3 +-
 drivers/net/phy/mdio-cavium.h                                                                      |   14 +-
 drivers/net/phy/mdio-mux-gpio.c                                                                    |   11 +-
 drivers/net/phy/mdio-octeon.c                                                                      |   11 +-
 drivers/net/phy/mdio-thunder.c                                                                     |    2 +-
 drivers/net/phy/mdio_bus.c                                                                         |  127 +-
 drivers/net/phy/mdio_device.c                                                                      |   19 +-
 drivers/net/phy/mdio_devres.c                                                                      |  133 +
 drivers/net/phy/mscc/Makefile                                                                      |    4 +
 drivers/net/phy/mscc/mscc.h                                                                        |   63 +
 drivers/net/phy/mscc/mscc_fc_buffer.h                                                              |    2 +-
 drivers/net/phy/mscc/mscc_mac.h                                                                    |    2 +-
 drivers/net/phy/mscc/mscc_macsec.c                                                                 |   22 +-
 drivers/net/phy/mscc/mscc_macsec.h                                                                 |    2 +-
 drivers/net/phy/mscc/mscc_main.c                                                                   |  111 +-
 drivers/net/phy/mscc/mscc_ptp.c                                                                    | 1590 +++++++++++
 drivers/net/phy/mscc/mscc_ptp.h                                                                    |  477 ++++
 drivers/net/phy/phy-c45.c                                                                          |    4 +-
 drivers/net/phy/phy-core.c                                                                         |   17 +-
 drivers/net/phy/phy.c                                                                              |   48 +
 drivers/net/phy/phy_device.c                                                                       |  324 ++-
 drivers/net/phy/phylink.c                                                                          |  431 ++-
 drivers/net/phy/realtek.c                                                                          |   12 +
 drivers/net/phy/sfp.c                                                                              |   54 +-
 drivers/net/plip/plip.c                                                                            |    4 +-
 drivers/net/ppp/pppoe.c                                                                            |    2 -
 drivers/net/ppp/pptp.c                                                                             |    2 -
 drivers/net/thunderbolt.c                                                                          |    4 +
 drivers/net/tun.c                                                                                  |   17 +-
 drivers/net/usb/cdc_ether.c                                                                        |    7 +-
 drivers/net/usb/cdc_ncm.c                                                                          |    4 +
 drivers/net/usb/hso.c                                                                              |   16 +-
 drivers/net/usb/ipheth.c                                                                           |    2 +-
 drivers/net/usb/usbnet.c                                                                           |    3 +-
 drivers/net/veth.c                                                                                 |   15 -
 drivers/net/virtio_net.c                                                                           |   17 -
 drivers/net/vrf.c                                                                                  |  468 +++-
 drivers/net/vxlan.c                                                                                |   57 +-
 drivers/net/wan/c101.c                                                                             |    2 +-
 drivers/net/wan/cosa.c                                                                             |    4 +-
 drivers/net/wan/farsync.c                                                                          |   37 +-
 drivers/net/wan/lmc/lmc_main.c                                                                     |    2 +-
 drivers/net/wan/n2.c                                                                               |    2 +-
 drivers/net/wan/pc300too.c                                                                         |    2 +-
 drivers/net/wan/pci200syn.c                                                                        |    2 +-
 drivers/net/wan/wanxl.c                                                                            |   54 +-
 drivers/net/wireless/Kconfig                                                                       |    6 +-
 drivers/net/wireless/Makefile                                                                      |    1 +
 drivers/net/wireless/admtek/adm8211.c                                                              |   25 +-
 drivers/net/wireless/ath/Kconfig                                                                   |    4 +-
 drivers/net/wireless/ath/ath10k/htt_tx.c                                                           |    4 +
 drivers/net/wireless/ath/ath10k/mac.c                                                              |    9 +-
 drivers/net/wireless/ath/ath10k/usb.c                                                              |    2 +-
 drivers/net/wireless/ath/ath11k/Kconfig                                                            |    9 +
 drivers/net/wireless/ath/ath11k/Makefile                                                           |    4 +-
 drivers/net/wireless/ath/ath11k/core.c                                                             |   10 +
 drivers/net/wireless/ath/ath11k/core.h                                                             |   52 +-
 drivers/net/wireless/ath/ath11k/dbring.c                                                           |  356 +++
 drivers/net/wireless/ath/ath11k/dbring.h                                                           |   79 +
 drivers/net/wireless/ath/ath11k/debug.c                                                            |  128 +-
 drivers/net/wireless/ath/ath11k/dp.c                                                               |    3 +-
 drivers/net/wireless/ath/ath11k/dp.h                                                               |   42 +
 drivers/net/wireless/ath/ath11k/dp_rx.c                                                            |   36 +-
 drivers/net/wireless/ath/ath11k/dp_tx.c                                                            |    7 +-
 drivers/net/wireless/ath/ath11k/mac.c                                                              |  222 +-
 drivers/net/wireless/ath/ath11k/reg.c                                                              |    4 +
 drivers/net/wireless/ath/ath11k/spectral.c                                                         | 1023 +++++++
 drivers/net/wireless/ath/ath11k/spectral.h                                                         |   82 +
 drivers/net/wireless/ath/ath11k/wmi.c                                                              |  690 ++++-
 drivers/net/wireless/ath/ath11k/wmi.h                                                              |  184 +-
 drivers/net/wireless/ath/ath6kl/usb.c                                                              |    2 +-
 drivers/net/wireless/ath/ath9k/Kconfig                                                             |    5 +-
 drivers/net/wireless/ath/ath9k/hw.c                                                                |    2 +-
 drivers/net/wireless/ath/carl9170/Kconfig                                                          |    2 +-
 drivers/net/wireless/ath/carl9170/usb.c                                                            |    2 +-
 drivers/net/wireless/ath/spectral_common.h                                                         |   17 +
 drivers/net/wireless/ath/wil6210/Kconfig                                                           |    2 +-
 drivers/net/wireless/atmel/at76c50x-usb.c                                                          |    2 +-
 drivers/net/wireless/broadcom/b43/main.c                                                           |   16 +-
 drivers/net/wireless/broadcom/b43/phy_common.c                                                     |    2 +-
 drivers/net/wireless/broadcom/b43/phy_g.c                                                          |   12 +-
 drivers/net/wireless/broadcom/b43/phy_ht.c                                                         |    2 +-
 drivers/net/wireless/broadcom/b43/phy_lp.c                                                         |    2 +-
 drivers/net/wireless/broadcom/b43/phy_n.c                                                          |  152 +-
 drivers/net/wireless/broadcom/b43/radio_2056.c                                                     |    2 +-
 drivers/net/wireless/broadcom/b43/tables_nphy.c                                                    |    4 +-
 drivers/net/wireless/broadcom/b43legacy/main.c                                                     |   12 +-
 drivers/net/wireless/broadcom/b43legacy/phy.c                                                      |    8 +-
 drivers/net/wireless/broadcom/b43legacy/radio.c                                                    |    8 +-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c                                          |    4 +-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c                                        |   56 +-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c                                          |    2 +-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c                                            |    3 +
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h                                      |    2 +-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c                                        |   75 +-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c                                          |    3 +-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c                                              |   19 +-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c                                             |    5 +-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c                                            |   59 +-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h                                            |    3 +
 drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.c                                             |   62 +-
 drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.h                                             |    6 +-
 drivers/net/wireless/cisco/airo.c                                                                  |   43 +-
 drivers/net/wireless/intel/ipw2x00/Kconfig                                                         |    8 +-
 drivers/net/wireless/intel/ipw2x00/ipw2100.c                                                       |  156 +-
 drivers/net/wireless/intel/ipw2x00/ipw2200.c                                                       |   86 +-
 drivers/net/wireless/intel/iwlegacy/4965-mac.c                                                     |    2 +-
 drivers/net/wireless/intel/iwlegacy/4965-rs.c                                                      |    2 +-
 drivers/net/wireless/intel/iwlegacy/common.c                                                       |    4 +-
 drivers/net/wireless/intel/iwlwifi/Kconfig                                                         |    2 +-
 drivers/net/wireless/intel/iwlwifi/dvm/commands.h                                                  |   12 +-
 drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c                                                  |    1 +
 drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h                                                |    4 +-
 drivers/net/wireless/intel/iwlwifi/fw/api/tx.h                                                     |   14 +-
 drivers/net/wireless/intel/iwlwifi/fw/dbg.c                                                        |    2 +-
 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c                                                    |    2 +-
 drivers/net/wireless/intel/iwlwifi/iwl-config.h                                                    |    2 +-
 drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c                                                   |    2 +-
 drivers/net/wireless/intel/iwlwifi/iwl-op-mode.h                                                   |    2 +-
 drivers/net/wireless/intel/iwlwifi/iwl-trans.h                                                     |    2 +-
 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c                                                  |   10 +-
 drivers/net/wireless/intel/iwlwifi/mvm/rs.c                                                        |    2 +-
 drivers/net/wireless/intel/iwlwifi/mvm/sta.c                                                       |    8 -
 drivers/net/wireless/intersil/Kconfig                                                              |    2 +-
 drivers/net/wireless/intersil/hostap/hostap_hw.c                                                   |    6 +-
 drivers/net/wireless/intersil/hostap/hostap_pci.c                                                  |   34 +-
 drivers/net/wireless/intersil/orinoco/Kconfig                                                      |    4 +-
 drivers/net/wireless/intersil/orinoco/orinoco_nortel.c                                             |    3 +-
 drivers/net/wireless/intersil/orinoco/orinoco_pci.c                                                |    3 +-
 drivers/net/wireless/intersil/orinoco/orinoco_pci.h                                                |   32 +-
 drivers/net/wireless/intersil/orinoco/orinoco_plx.c                                                |    3 +-
 drivers/net/wireless/intersil/orinoco/orinoco_tmd.c                                                |    3 +-
 drivers/net/wireless/intersil/orinoco/orinoco_usb.c                                                |    6 +-
 drivers/net/wireless/intersil/p54/Kconfig                                                          |    6 +-
 drivers/net/wireless/intersil/p54/fwio.c                                                           |    2 +-
 drivers/net/wireless/intersil/p54/p54pci.c                                                         |   65 +-
 drivers/net/wireless/intersil/p54/p54usb.c                                                         |    2 +-
 drivers/net/wireless/intersil/prism54/isl_oid.h                                                    |    2 +-
 drivers/net/wireless/intersil/prism54/islpci_dev.c                                                 |   30 +-
 drivers/net/wireless/intersil/prism54/islpci_eth.c                                                 |   24 +-
 drivers/net/wireless/intersil/prism54/islpci_hotplug.c                                             |   39 +-
 drivers/net/wireless/intersil/prism54/islpci_mgt.c                                                 |   21 +-
 drivers/net/wireless/mac80211_hwsim.c                                                              |    2 +-
 drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c                                               |    2 +-
 drivers/net/wireless/marvell/mwifiex/cfg80211.c                                                    |   21 +-
 drivers/net/wireless/marvell/mwifiex/main.c                                                        |    2 +-
 drivers/net/wireless/marvell/mwifiex/sdio.h                                                        |    4 +-
 drivers/net/wireless/marvell/mwifiex/sta_cmd.c                                                     |    4 +-
 drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c                                                 |   22 +-
 drivers/net/wireless/mediatek/mt76/Kconfig                                                         |    4 +
 drivers/net/wireless/mediatek/mt76/Makefile                                                        |    3 +
 drivers/net/wireless/mediatek/mt76/debugfs.c                                                       |    7 +-
 drivers/net/wireless/mediatek/mt76/dma.c                                                           |    6 +
 drivers/net/wireless/mediatek/mt76/eeprom.c                                                        |    5 +
 drivers/net/wireless/mediatek/mt76/mac80211.c                                                      |   37 +-
 drivers/net/wireless/mediatek/mt76/mt76.h                                                          |  115 +-
 drivers/net/wireless/mediatek/mt76/mt7603/main.c                                                   |    6 +-
 drivers/net/wireless/mediatek/mt76/mt7603/mt7603.h                                                 |    2 -
 drivers/net/wireless/mediatek/mt76/mt7615/Kconfig                                                  |   19 +-
 drivers/net/wireless/mediatek/mt76/mt7615/Makefile                                                 |    7 +-
 drivers/net/wireless/mediatek/mt76/mt7615/debugfs.c                                                |  102 +-
 drivers/net/wireless/mediatek/mt76/mt7615/dma.c                                                    |    4 -
 drivers/net/wireless/mediatek/mt76/mt7615/init.c                                                   |   17 +-
 drivers/net/wireless/mediatek/mt76/mt7615/mac.c                                                    |  312 ++-
 drivers/net/wireless/mediatek/mt76/mt7615/mac.h                                                    |    5 +
 drivers/net/wireless/mediatek/mt76/mt7615/main.c                                                   |  332 ++-
 drivers/net/wireless/mediatek/mt76/mt7615/mcu.c                                                    |  371 ++-
 drivers/net/wireless/mediatek/mt76/mt7615/mcu.h                                                    |   54 +-
 drivers/net/wireless/mediatek/mt76/mt7615/mmio.c                                                   |   49 +-
 drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h                                                 |   95 +-
 drivers/net/wireless/mediatek/mt76/mt7615/pci.c                                                    |    4 +
 drivers/net/wireless/mediatek/mt76/mt7615/pci_init.c                                               |    4 +
 drivers/net/wireless/mediatek/mt76/mt7615/pci_mac.c                                                |    1 -
 drivers/net/wireless/mediatek/mt76/mt7615/regs.h                                                   |   33 +-
 drivers/net/wireless/mediatek/mt76/mt7615/sdio.c                                                   |  478 ++++
 drivers/net/wireless/mediatek/mt76/mt7615/sdio.h                                                   |  115 +
 drivers/net/wireless/mediatek/mt76/mt7615/sdio_mcu.c                                               |  162 ++
 drivers/net/wireless/mediatek/mt76/mt7615/sdio_txrx.c                                              |  268 ++
 drivers/net/wireless/mediatek/mt76/mt7615/testmode.c                                               |  363 +++
 drivers/net/wireless/mediatek/mt76/mt7615/usb.c                                                    |  246 +-
 drivers/net/wireless/mediatek/mt76/mt7615/usb_init.c                                               |  145 -
 drivers/net/wireless/mediatek/mt76/mt7615/usb_mcu.c                                                |    7 +-
 drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c                                               |  394 +++
 drivers/net/wireless/mediatek/mt76/mt76x0/usb.c                                                    |    6 +-
 drivers/net/wireless/mediatek/mt76/mt76x02.h                                                       |    1 -
 drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c                                                  |    2 +-
 drivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c                                              |    3 +-
 drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c                                               |    7 +-
 drivers/net/wireless/mediatek/mt76/mt76x02_util.c                                                  |    8 +-
 drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2.h                                                 |    1 +
 drivers/net/wireless/mediatek/mt76/mt76x2/pci.c                                                    |   70 +-
 drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c                                               |   17 +
 drivers/net/wireless/mediatek/mt76/mt76x2/usb.c                                                    |    8 +-
 drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c                                                |   11 +-
 drivers/net/wireless/mediatek/mt76/mt7915/dma.c                                                    |   21 +-
 drivers/net/wireless/mediatek/mt76/mt7915/init.c                                                   |   44 +-
 drivers/net/wireless/mediatek/mt76/mt7915/mac.c                                                    |   93 +-
 drivers/net/wireless/mediatek/mt76/mt7915/mac.h                                                    |   17 -
 drivers/net/wireless/mediatek/mt76/mt7915/main.c                                                   |   13 +-
 drivers/net/wireless/mediatek/mt76/mt7915/mcu.c                                                    |  117 +-
 drivers/net/wireless/mediatek/mt76/mt7915/mcu.h                                                    |    6 +-
 drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h                                                 |   35 +-
 drivers/net/wireless/mediatek/mt76/mt7915/pci.c                                                    |    2 +-
 drivers/net/wireless/mediatek/mt76/mt7915/regs.h                                                   |    5 +
 drivers/net/wireless/mediatek/mt76/pci.c                                                           |    1 +
 drivers/net/wireless/mediatek/mt76/sdio.c                                                          |  368 +++
 drivers/net/wireless/mediatek/mt76/testmode.c                                                      |  497 ++++
 drivers/net/wireless/mediatek/mt76/testmode.h                                                      |  156 ++
 drivers/net/wireless/mediatek/mt76/tx.c                                                            |   47 +
 drivers/net/wireless/mediatek/mt76/usb.c                                                           |   90 +-
 drivers/net/wireless/mediatek/mt76/util.c                                                          |    4 +-
 drivers/net/wireless/mediatek/mt7601u/mcu.c                                                        |    4 +-
 drivers/net/wireless/microchip/Kconfig                                                             |   15 +
 drivers/net/wireless/microchip/Makefile                                                            |    2 +
 drivers/{staging => net/wireless/microchip}/wilc1000/Kconfig                                       |    0
 drivers/{staging => net/wireless/microchip}/wilc1000/Makefile                                      |    3 -
 drivers/{staging => net/wireless/microchip}/wilc1000/cfg80211.c                                    |    2 +
 drivers/{staging => net/wireless/microchip}/wilc1000/cfg80211.h                                    |    0
 drivers/{staging => net/wireless/microchip}/wilc1000/fw.h                                          |    0
 drivers/{staging => net/wireless/microchip}/wilc1000/hif.c                                         |    0
 drivers/{staging => net/wireless/microchip}/wilc1000/hif.h                                         |    0
 drivers/{staging => net/wireless/microchip}/wilc1000/mon.c                                         |    3 +-
 drivers/{staging => net/wireless/microchip}/wilc1000/netdev.c                                      |   35 +-
 drivers/{staging => net/wireless/microchip}/wilc1000/netdev.h                                      |    0
 drivers/{staging => net/wireless/microchip}/wilc1000/sdio.c                                        |    6 +-
 drivers/{staging => net/wireless/microchip}/wilc1000/spi.c                                         |    0
 drivers/{staging => net/wireless/microchip}/wilc1000/wlan.c                                        |    0
 drivers/{staging => net/wireless/microchip}/wilc1000/wlan.h                                        |    0
 drivers/{staging => net/wireless/microchip}/wilc1000/wlan_cfg.c                                    |    0
 drivers/{staging => net/wireless/microchip}/wilc1000/wlan_cfg.h                                    |    0
 drivers/{staging => net/wireless/microchip}/wilc1000/wlan_if.h                                     |    0
 drivers/net/wireless/quantenna/qtnfmac/core.c                                                      |    5 +-
 drivers/net/wireless/ralink/rt2x00/rt2400pci.c                                                     |    3 +-
 drivers/net/wireless/ralink/rt2x00/rt2500pci.c                                                     |    3 +-
 drivers/net/wireless/ralink/rt2x00/rt2800pci.c                                                     |    3 +-
 drivers/net/wireless/ralink/rt2x00/rt2x00.h                                                        |    5 +-
 drivers/net/wireless/ralink/rt2x00/rt2x00dev.c                                                     |    4 +-
 drivers/net/wireless/ralink/rt2x00/rt2x00pci.c                                                     |   31 +-
 drivers/net/wireless/ralink/rt2x00/rt2x00pci.h                                                     |    9 +-
 drivers/net/wireless/ralink/rt2x00/rt2x00soc.c                                                     |    2 +-
 drivers/net/wireless/ralink/rt2x00/rt2x00usb.c                                                     |    2 +-
 drivers/net/wireless/ralink/rt2x00/rt61pci.c                                                       |    3 +-
 drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c                                                 |   23 +-
 drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c                                      |    8 +-
 drivers/net/wireless/realtek/rtlwifi/ps.c                                                          |   12 +-
 drivers/net/wireless/realtek/rtlwifi/rtl8188ee/dm.c                                                |    4 +-
 drivers/net/wireless/realtek/rtlwifi/rtl8188ee/trx.c                                               |    2 +-
 drivers/net/wireless/realtek/rtlwifi/rtl8192cu/hw.c                                                |    4 +-
 drivers/net/wireless/realtek/rtlwifi/rtl8723be/dm.c                                                |    4 +-
 drivers/net/wireless/realtek/rtlwifi/rtl8821ae/dm.c                                                |  138 +-
 drivers/net/wireless/realtek/rtlwifi/usb.c                                                         |   12 +-
 drivers/net/wireless/realtek/rtw88/Kconfig                                                         |   14 +
 drivers/net/wireless/realtek/rtw88/Makefile                                                        |    6 +
 drivers/net/wireless/realtek/rtw88/bf.c                                                            |    5 +-
 drivers/net/wireless/realtek/rtw88/coex.c                                                          |  101 +-
 drivers/net/wireless/realtek/rtw88/coex.h                                                          |    3 +
 drivers/net/wireless/realtek/rtw88/debug.c                                                         |   30 +
 drivers/net/wireless/realtek/rtw88/fw.c                                                            |   17 +-
 drivers/net/wireless/realtek/rtw88/fw.h                                                            |    2 +
 drivers/net/wireless/realtek/rtw88/mac80211.c                                                      |   27 +
 drivers/net/wireless/realtek/rtw88/main.c                                                          |   23 +-
 drivers/net/wireless/realtek/rtw88/main.h                                                          |   13 +
 drivers/net/wireless/realtek/rtw88/pci.c                                                           |    9 +
 drivers/net/wireless/realtek/rtw88/reg.h                                                           |    5 +
 drivers/net/wireless/realtek/rtw88/rtw8723d.c                                                      |   13 +-
 drivers/net/wireless/realtek/rtw88/rtw8821c.c                                                      | 1853 +++++++++++++
 drivers/net/wireless/realtek/rtw88/rtw8821c.h                                                      |  259 ++
 drivers/net/wireless/realtek/rtw88/rtw8821c_table.c                                                | 6611 +++++++++++++++++++++++++++++++++++++++++++++
 drivers/net/wireless/realtek/rtw88/rtw8821c_table.h                                                |   15 +
 drivers/net/wireless/realtek/rtw88/rtw8821ce.c                                                     |   30 +
 drivers/net/wireless/realtek/rtw88/rtw8821ce.h                                                     |   14 +
 drivers/net/wireless/realtek/rtw88/rtw8822b.c                                                      |    7 +-
 drivers/net/wireless/realtek/rtw88/rtw8822c.c                                                      |   10 +-
 drivers/net/wireless/realtek/rtw88/rtw8822ce.c                                                     |    4 +
 drivers/net/wireless/realtek/rtw88/tx.c                                                            |  104 +-
 drivers/net/wireless/realtek/rtw88/tx.h                                                            |   13 +-
 drivers/net/wireless/ti/wl1251/event.c                                                             |    2 +-
 drivers/net/wireless/ti/wlcore/main.c                                                              |   84 +-
 drivers/net/wireless/zydas/zd1211rw/zd_usb.c                                                       |    4 +-
 drivers/net/xen-netback/common.h                                                                   |    4 +
 drivers/net/xen-netback/interface.c                                                                |    2 +
 drivers/net/xen-netback/netback.c                                                                  |    7 +
 drivers/net/xen-netback/rx.c                                                                       |   15 +-
 drivers/net/xen-netback/xenbus.c                                                                   |   34 +
 drivers/net/xen-netfront.c                                                                         |  319 ++-
 drivers/of/of_mdio.c                                                                               |    4 +-
 drivers/ptp/idt8a340_reg.h                                                                         |   48 +
 drivers/ptp/ptp_chardev.c                                                                          |   46 +-
 drivers/ptp/ptp_clockmatrix.c                                                                      | 1151 ++++++--
 drivers/ptp/ptp_clockmatrix.h                                                                      |   61 +-
 drivers/ptp/ptp_pch.c                                                                              |   37 +-
 drivers/s390/net/ism_drv.c                                                                         |    2 +-
 drivers/s390/net/qeth_core.h                                                                       |   10 +-
 drivers/s390/net/qeth_core_main.c                                                                  |  269 +-
 drivers/s390/net/qeth_core_mpc.c                                                                   |   16 +-
 drivers/s390/net/qeth_core_mpc.h                                                                   |   17 +-
 drivers/s390/net/qeth_core_sys.c                                                                   |   20 +-
 drivers/s390/net/qeth_l2_main.c                                                                    |   14 +-
 drivers/s390/net/qeth_l3_main.c                                                                    |   20 +-
 drivers/scsi/qedf/qedf_main.c                                                                      |   78 +-
 drivers/ssb/driver_chipcommon.c                                                                    |    4 +-
 drivers/ssb/driver_chipcommon_pmu.c                                                                |    2 +-
 drivers/ssb/sprom.c                                                                                |    2 +-
 drivers/staging/Kconfig                                                                            |    2 -
 drivers/staging/Makefile                                                                           |    1 -
 drivers/staging/octeon/ethernet-mdio.c                                                             |    2 +-
 drivers/staging/octeon/ethernet-mdio.h                                                             |    2 -
 drivers/staging/octeon/ethernet.c                                                                  |    3 +-
 fs/debugfs/file.c                                                                                  |   27 +-
 fs/exec.c                                                                                          |   38 +-
 fs/proc/proc_net.c                                                                                 |    2 +-
 include/asm-generic/checksum.h                                                                     |    6 +-
 include/asm-generic/vmlinux.lds.h                                                                  |    4 +
 include/linux/atmdev.h                                                                             |    9 -
 include/linux/binfmts.h                                                                            |    1 -
 include/linux/bpf-cgroup.h                                                                         |   16 +-
 include/linux/bpf-netns.h                                                                          |    3 +
 include/linux/bpf.h                                                                                |  160 +-
 include/linux/bpf_types.h                                                                          |    2 +
 include/linux/bpf_verifier.h                                                                       |    1 +
 include/linux/bpfilter.h                                                                           |   13 +-
 include/linux/btf_ids.h                                                                            |  130 +
 include/linux/compat.h                                                                             |    4 -
 include/linux/debugfs.h                                                                            |   12 +-
 include/linux/dsa/loop.h                                                                           |   41 +
 include/linux/ethtool.h                                                                            |   55 +
 include/linux/filter.h                                                                             |  155 +-
 include/linux/fsl/enetc_mdio.h                                                                     |    1 +
 include/linux/hashtable.h                                                                          |    4 +-
 include/linux/icmp.h                                                                               |    5 +
 include/linux/icmpv6.h                                                                             |   22 +-
 include/linux/ieee80211.h                                                                          |    2 +
 include/linux/if_bridge.h                                                                          |    1 +
 include/linux/indirect_call_wrapper.h                                                              |   12 +
 include/linux/ipv6.h                                                                               |    3 +-
 include/linux/linkmode.h                                                                           |    6 +
 include/linux/marvell_phy.h                                                                        |    2 +
 include/linux/mdio.h                                                                               |    1 +
 include/linux/mlx5/accel.h                                                                         |    6 +-
 include/linux/mlx5/cq.h                                                                            |    1 -
 include/linux/mlx5/device.h                                                                        |    9 +
 include/linux/mlx5/driver.h                                                                        |    5 +-
 include/linux/mlx5/fs.h                                                                            |    5 +-
 include/linux/mlx5/mlx5_ifc.h                                                                      |   17 +-
 include/linux/mlx5/port.h                                                                          |    3 +
 include/linux/mlx5/qp.h                                                                            |    2 +-
 include/linux/mlx5/rsc_dump.h                                                                      |   51 +
 include/linux/mlx5/vport.h                                                                         |    2 +-
 include/linux/mmc/sdio_ids.h                                                                       |    3 +
 include/linux/mroute.h                                                                             |    5 +-
 include/linux/mroute6.h                                                                            |    8 +-
 include/linux/net.h                                                                                |   10 +-
 {drivers/net/ethernet/intel/i40e => include/linux/net/intel}/i40e_client.h                         |    9 -
 include/linux/netdevice.h                                                                          |   46 +-
 include/linux/netfilter.h                                                                          |   20 +-
 include/linux/netfilter/x_tables.h                                                                 |    4 +-
 include/linux/netpoll.h                                                                            |    3 -
 include/linux/of_mdio.h                                                                            |   40 +-
 include/linux/perf_event.h                                                                         |    2 +
 include/linux/phy.h                                                                                |  113 +-
 include/linux/phylink.h                                                                            |  105 +-
 include/linux/pldmfw.h                                                                             |  165 ++
 include/linux/proc_fs.h                                                                            |    3 +-
 include/linux/qed/common_hsi.h                                                                     |   30 +-
 include/linux/qed/eth_common.h                                                                     |   30 +-
 include/linux/qed/fcoe_common.h                                                                    |    3 +-
 include/linux/qed/iscsi_common.h                                                                   |   30 +-
 include/linux/qed/iwarp_common.h                                                                   |   30 +-
 include/linux/qed/qed_chain.h                                                                      |  360 +--
 include/linux/qed/qed_eth_if.h                                                                     |   30 +-
 include/linux/qed/qed_fcoe_if.h                                                                    |    4 +-
 include/linux/qed/qed_if.h                                                                         |  184 +-
 include/linux/qed/qed_iov_if.h                                                                     |   30 +-
 include/linux/qed/qed_iscsi_if.h                                                                   |   30 +-
 include/linux/qed/qed_ll2_if.h                                                                     |   30 +-
 include/linux/qed/qed_rdma_if.h                                                                    |   31 +-
 include/linux/qed/qede_rdma.h                                                                      |   31 +-
 include/linux/qed/rdma_common.h                                                                    |   30 +-
 include/linux/qed/roce_common.h                                                                    |   30 +-
 include/linux/qed/storage_common.h                                                                 |   30 +-
 include/linux/qed/tcp_common.h                                                                     |   30 +-
 include/linux/sched.h                                                                              |    9 -
 include/linux/sched/signal.h                                                                       |    2 +
 include/linux/skbuff.h                                                                             |    9 +-
 include/linux/sockptr.h                                                                            |  127 +
 include/linux/syscalls.h                                                                           |    4 +
 include/linux/tcp.h                                                                                |    4 +-
 include/linux/umh.h                                                                                |   15 -
 include/linux/usb/usbnet.h                                                                         |    2 +
 include/linux/usermode_driver.h                                                                    |   18 +
 include/linux/wimax/debug.h                                                                        |    4 +-
 include/net/9p/transport.h                                                                         |    2 +-
 include/net/act_api.h                                                                              |   11 +-
 include/net/addrconf.h                                                                             |    2 +
 include/net/bluetooth/bluetooth.h                                                                  |   12 +
 include/net/bluetooth/hci.h                                                                        |   28 +-
 include/net/bluetooth/hci_core.h                                                                   |  107 +-
 include/net/bluetooth/hci_sock.h                                                                   |    4 +-
 include/net/bluetooth/mgmt.h                                                                       |   95 +
 include/net/bluetooth/sco.h                                                                        |    2 +
 include/net/bonding.h                                                                              |    8 +
 include/net/busy_poll.h                                                                            |    6 +-
 include/net/caif/caif_layer.h                                                                      |    4 +-
 include/net/cfg80211.h                                                                             |   41 +-
 include/net/cipso_ipv4.h                                                                           |   12 -
 include/net/compat.h                                                                               |    1 -
 include/net/devlink.h                                                                              |   78 +-
 include/net/dsa.h                                                                                  |   54 +-
 include/net/dst.h                                                                                  |   10 -
 include/net/fib_rules.h                                                                            |   18 +
 include/net/flow.h                                                                                 |   18 -
 include/net/flow_dissector.h                                                                       |    9 +
 include/net/flow_offload.h                                                                         |   20 +-
 include/net/fq.h                                                                                   |    1 -
 include/net/fq_impl.h                                                                              |    3 +-
 include/net/ieee80211_radiotap.h                                                                   |    1 +
 include/net/inet_connection_sock.h                                                                 |   16 +-
 include/net/inet_sock.h                                                                            |    1 +
 include/net/ip.h                                                                                   |   17 +-
 include/net/ip6_checksum.h                                                                         |    9 -
 include/net/ip6_fib.h                                                                              |   38 +-
 include/net/ip_tunnels.h                                                                           |    2 +
 include/net/ip_vs.h                                                                                |   44 +-
 include/net/ipv6.h                                                                                 |   10 +-
 include/net/l3mdev.h                                                                               |   39 +
 include/net/mac80211.h                                                                             |   42 +-
 include/net/mptcp.h                                                                                |   15 +-
 include/net/netfilter/nf_conntrack.h                                                               |   12 +
 include/net/netfilter/nf_tables.h                                                                  |   25 +-
 include/net/pkt_cls.h                                                                              |   54 +-
 include/net/regulatory.h                                                                           |    2 +-
 include/net/request_sock.h                                                                         |    2 +-
 include/net/rpl.h                                                                                  |    6 -
 include/net/sch_generic.h                                                                          |    3 +-
 include/net/sctp/sctp.h                                                                            |    4 +-
 include/net/sctp/structs.h                                                                         |   18 +-
 include/net/sock.h                                                                                 |   30 +-
 include/net/switchdev.h                                                                            |   38 +
 include/net/tc_act/tc_police.h                                                                     |   42 +-
 include/net/tcp.h                                                                                  |   27 +-
 include/net/tls.h                                                                                  |   34 +-
 include/net/transp_v6.h                                                                            |    3 -
 include/net/tso.h                                                                                  |   23 +-
 include/net/udp.h                                                                                  |   10 +-
 include/net/udp_tunnel.h                                                                           |  169 +-
 include/net/wimax.h                                                                                |    2 +-
 include/net/xdp.h                                                                                  |   59 +-
 include/net/xdp_sock.h                                                                             |    4 +
 include/net/xfrm.h                                                                                 |   14 +-
 include/soc/mscc/ocelot.h                                                                          |   91 +-
 include/soc/mscc/ocelot_dev.h                                                                      |   78 -
 include/soc/mscc/ocelot_qsys.h                                                                     |   13 -
 include/soc/mscc/ocelot_sys.h                                                                      |   23 -
 include/trace/events/xdp.h                                                                         |   16 +-
 include/uapi/asm-generic/unistd.h                                                                  |    4 +-
 include/uapi/linux/atmioc.h                                                                        |    2 +-
 include/uapi/linux/batadv_packet.h                                                                 |   50 +-
 include/uapi/linux/batman_adv.h                                                                    |    7 +-
 include/uapi/linux/bpf.h                                                                           |  393 ++-
 include/uapi/linux/caif/caif_socket.h                                                              |    2 +-
 include/uapi/linux/devlink.h                                                                       |   15 +
 include/uapi/linux/errqueue.h                                                                      |   14 +-
 include/uapi/linux/ethtool.h                                                                       |   87 +
 include/uapi/linux/ethtool_netlink.h                                                               |   57 +
 include/uapi/linux/hsr_netlink.h                                                                   |    2 +-
 include/uapi/linux/icmp.h                                                                          |   22 +
 include/uapi/linux/icmpv6.h                                                                        |    1 +
 include/uapi/linux/if_bridge.h                                                                     |   75 +
 include/uapi/linux/if_link.h                                                                       |   23 +-
 include/uapi/linux/if_xdp.h                                                                        |    5 +-
 include/uapi/linux/in.h                                                                            |    1 +
 include/uapi/linux/in6.h                                                                           |    1 +
 include/uapi/linux/inet_diag.h                                                                     |    1 +
 include/uapi/linux/mdio.h                                                                          |   26 +
 include/uapi/linux/mptcp.h                                                                         |   17 +
 include/uapi/linux/mrp_bridge.h                                                                    |   38 +
 include/uapi/linux/neighbour.h                                                                     |   24 +
 include/uapi/linux/netfilter/nf_tables.h                                                           |   14 +
 include/uapi/linux/netfilter/xt_connmark.h                                                         |    2 +-
 include/uapi/linux/nl80211.h                                                                       |   94 +-
 include/uapi/linux/openvswitch.h                                                                   |    3 +-
 include/uapi/linux/pkt_cls.h                                                                       |    3 +
 include/uapi/linux/pkt_sched.h                                                                     |    2 +
 include/uapi/linux/ptp_clock.h                                                                     |   34 +-
 include/uapi/linux/rtnetlink.h                                                                     |   46 +-
 include/uapi/linux/seg6_iptunnel.h                                                                 |   21 -
 include/uapi/linux/snmp.h                                                                          |    1 +
 include/uapi/linux/tcp.h                                                                           |    1 +
 include/uapi/linux/wireless.h                                                                      |    2 +-
 include/uapi/linux/xdp_diag.h                                                                      |   11 +
 include/uapi/linux/xfrm.h                                                                          |    1 +
 include/xen/interface/io/netif.h                                                                   |   20 +-
 kernel/Makefile                                                                                    |    1 +
 kernel/bpf/Makefile                                                                                |    2 +-
 kernel/bpf/arraymap.c                                                                              |  165 +-
 kernel/bpf/bpf_iter.c                                                                              |   85 +-
 kernel/bpf/bpf_struct_ops.c                                                                        |    3 +
 kernel/bpf/btf.c                                                                                   |  177 +-
 kernel/bpf/cgroup.c                                                                                |   82 +-
 kernel/bpf/core.c                                                                                  |   67 +-
 kernel/bpf/cpumap.c                                                                                |  170 +-
 kernel/bpf/devmap.c                                                                                |    6 +
 kernel/bpf/hashtab.c                                                                               |  217 +-
 kernel/bpf/local_storage.c                                                                         |  219 +-
 kernel/bpf/lpm_trie.c                                                                              |    8 +-
 kernel/bpf/map_iter.c                                                                              |   83 +-
 kernel/bpf/net_namespace.c                                                                         |  139 +-
 kernel/bpf/prog_iter.c                                                                             |  107 +
 kernel/bpf/queue_stack_maps.c                                                                      |   13 +-
 kernel/bpf/reuseport_array.c                                                                       |    5 +-
 kernel/bpf/ringbuf.c                                                                               |   10 +-
 kernel/bpf/stackmap.c                                                                              |  267 +-
 kernel/bpf/syscall.c                                                                               |   64 +
 kernel/bpf/task_iter.c                                                                             |   32 +-
 kernel/bpf/verifier.c                                                                              |  243 +-
 kernel/events/callchain.c                                                                          |   13 +-
 kernel/events/core.c                                                                               |   18 +
 kernel/exit.c                                                                                      |   25 +-
 kernel/fork.c                                                                                      |    6 +-
 kernel/trace/Makefile                                                                              |    2 +
 kernel/trace/bpf_trace.c                                                                           |   82 +-
 kernel/trace/bpf_trace.h                                                                           |   34 +
 kernel/umh.c                                                                                       |  171 +-
 kernel/usermode_driver.c                                                                           |  182 ++
 lib/Kconfig                                                                                        |    4 +
 lib/Makefile                                                                                       |    3 +
 lib/checksum.c                                                                                     |    4 +-
 lib/pldmfw/Makefile                                                                                |    2 +
 lib/pldmfw/pldmfw.c                                                                                |  879 ++++++
 lib/pldmfw/pldmfw_private.h                                                                        |  238 ++
 lib/test_bpf.c                                                                                     |   20 -
 mm/cma.h                                                                                           |    3 +
 mm/cma_debug.c                                                                                     |    7 +-
 net/9p/client.c                                                                                    |    2 +-
 net/9p/trans_rdma.c                                                                                |    7 +-
 net/Kconfig                                                                                        |    1 -
 net/appletalk/atalk_proc.c                                                                         |    2 +
 net/appletalk/ddp.c                                                                                |    2 -
 net/atm/common.c                                                                                   |   20 +-
 net/atm/common.h                                                                                   |    2 +-
 net/atm/lec_arpc.h                                                                                 |    2 +-
 net/atm/pvc.c                                                                                      |    2 +-
 net/atm/svc.c                                                                                      |    6 +-
 net/ax25/Kconfig                                                                                   |   10 +-
 net/ax25/af_ax25.c                                                                                 |    6 +-
 net/batman-adv/bat_iv_ogm.c                                                                        |   25 +-
 net/batman-adv/bat_v_elp.c                                                                         |   10 +-
 net/batman-adv/bat_v_ogm.c                                                                         |   27 +-
 net/batman-adv/bridge_loop_avoidance.c                                                             |    6 +-
 net/batman-adv/distributed-arp-table.c                                                             |    2 +-
 net/batman-adv/fragmentation.c                                                                     |    6 +-
 net/batman-adv/hard-interface.c                                                                    |   16 +-
 net/batman-adv/log.h                                                                               |    6 +-
 net/batman-adv/main.c                                                                              |    2 +-
 net/batman-adv/main.h                                                                              |    8 +-
 net/batman-adv/multicast.c                                                                         |   21 +-
 net/batman-adv/netlink.c                                                                           |   14 +-
 net/batman-adv/network-coding.c                                                                    |   14 +-
 net/batman-adv/originator.c                                                                        |    8 +-
 net/batman-adv/routing.c                                                                           |    4 +-
 net/batman-adv/send.c                                                                              |    4 +-
 net/batman-adv/soft-interface.c                                                                    |    2 +-
 net/batman-adv/tp_meter.c                                                                          |   12 +-
 net/batman-adv/translation-table.c                                                                 |   10 +-
 net/batman-adv/tvlv.c                                                                              |    4 +-
 net/batman-adv/types.h                                                                             |   18 +-
 net/bluetooth/6lowpan.c                                                                            |    5 +
 net/bluetooth/Kconfig                                                                              |    2 +-
 net/bluetooth/Makefile                                                                             |    2 +-
 net/bluetooth/af_bluetooth.c                                                                       |    5 +-
 net/bluetooth/bnep/sock.c                                                                          |    2 -
 net/bluetooth/cmtp/sock.c                                                                          |    2 -
 net/bluetooth/hci_conn.c                                                                           |   51 +-
 net/bluetooth/hci_core.c                                                                           |  212 +-
 net/bluetooth/hci_event.c                                                                          |   71 +-
 net/bluetooth/hci_request.c                                                                        |  286 +-
 net/bluetooth/hci_request.h                                                                        |    5 +-
 net/bluetooth/hci_sock.c                                                                           |   15 +-
 net/bluetooth/hidp/sock.c                                                                          |    2 -
 net/bluetooth/l2cap_core.c                                                                         |   25 +-
 net/bluetooth/l2cap_sock.c                                                                         |   26 +-
 net/bluetooth/mgmt.c                                                                               |  577 +++-
 net/bluetooth/mgmt_config.c                                                                        |  283 ++
 net/bluetooth/mgmt_config.h                                                                        |   17 +
 net/bluetooth/msft.c                                                                               |    7 +
 net/bluetooth/msft.h                                                                               |    9 +
 net/bluetooth/rfcomm/core.c                                                                        |    2 +-
 net/bluetooth/rfcomm/sock.c                                                                        |   14 +-
 net/bluetooth/sco.c                                                                                |   38 +-
 net/bluetooth/selftest.c                                                                           |    2 +-
 net/bluetooth/smp.c                                                                                |    8 +-
 net/bpf/test_run.c                                                                                 |   43 +-
 net/bpfilter/Kconfig                                                                               |   10 +-
 net/bpfilter/Makefile                                                                              |    2 +
 net/bpfilter/bpfilter_kern.c                                                                       |   96 +-
 net/bpfilter/bpfilter_umh_blob.S                                                                   |    2 +-
 net/bridge/br_device.c                                                                             |    2 +
 net/bridge/br_fdb.c                                                                                |  127 +-
 net/bridge/br_mrp.c                                                                                |  576 +++-
 net/bridge/br_mrp_netlink.c                                                                        |  246 +-
 net/bridge/br_mrp_switchdev.c                                                                      |   62 +
 net/bridge/br_netlink.c                                                                            |   28 +-
 net/bridge/br_netlink_tunnel.c                                                                     |   49 +-
 net/bridge/br_private.h                                                                            |   17 +
 net/bridge/br_private_mrp.h                                                                        |   27 +-
 net/bridge/netfilter/ebtables.c                                                                    |  252 +-
 net/caif/caif_socket.c                                                                             |   10 +-
 net/can/af_can.c                                                                                   |    2 +
 net/can/bcm.c                                                                                      |    2 -
 net/can/j1939/socket.c                                                                             |   12 +-
 net/can/raw.c                                                                                      |   16 +-
 net/compat.c                                                                                       |  122 +-
 net/core/bpf_sk_storage.c                                                                          |  260 +-
 net/core/dev.c                                                                                     |  583 +++-
 net/core/dev_ioctl.c                                                                               |   29 +-
 net/core/devlink.c                                                                                 |  653 +++--
 net/core/fib_rules.c                                                                               |   31 +-
 net/core/filter.c                                                                                  |  386 ++-
 net/core/flow_dissector.c                                                                          |   17 +
 net/core/flow_offload.c                                                                            |   12 +-
 net/core/neighbour.c                                                                               |    1 +
 net/core/rtnetlink.c                                                                               |  118 +-
 net/core/skbuff.c                                                                                  |    7 +-
 net/core/sock.c                                                                                    |  119 +-
 net/core/sock_map.c                                                                                |   88 +-
 net/core/tso.c                                                                                     |   44 +-
 net/core/xdp.c                                                                                     |    9 -
 net/dcb/dcbnl.c                                                                                    |    2 +-
 net/dccp/Kconfig                                                                                   |    2 +-
 net/dccp/ccids/Kconfig                                                                             |    4 +-
 net/dccp/ccids/ccid3.c                                                                             |    2 +-
 net/dccp/ccids/ccid3.h                                                                             |    2 +-
 net/dccp/ccids/lib/packet_history.c                                                                |    4 +-
 net/dccp/ccids/lib/packet_history.h                                                                |    2 +-
 net/dccp/dccp.h                                                                                    |    8 +-
 net/dccp/feat.c                                                                                    |    6 +
 net/dccp/input.c                                                                                   |    1 +
 net/dccp/ipv4.c                                                                                    |   14 +-
 net/dccp/ipv6.c                                                                                    |   14 -
 net/dccp/options.c                                                                                 |    4 +
 net/dccp/proto.c                                                                                   |   54 +-
 net/dccp/timer.c                                                                                   |    2 +
 net/decnet/af_decnet.c                                                                             |   26 +-
 net/decnet/dn_dev.c                                                                                |    8 +-
 net/decnet/dn_route.c                                                                              |    4 +-
 net/decnet/netfilter/dn_rtmsg.c                                                                    |    2 +-
 net/devres.c                                                                                       |    4 +-
 net/dsa/Kconfig                                                                                    |    7 +
 net/dsa/Makefile                                                                                   |    1 +
 net/dsa/dsa2.c                                                                                     |   25 +-
 net/dsa/dsa_priv.h                                                                                 |    2 +-
 net/dsa/master.c                                                                                   |   62 +-
 net/dsa/slave.c                                                                                    |    6 +-
 net/dsa/tag_ksz.c                                                                                  |    9 +-
 net/dsa/tag_lan9303.c                                                                              |   17 +-
 net/dsa/tag_mtk.c                                                                                  |    3 +-
 net/dsa/tag_ocelot.c                                                                               |   21 +-
 net/dsa/tag_qca.c                                                                                  |    8 +-
 net/dsa/tag_rtl4_a.c                                                                               |  130 +
 net/ethtool/Makefile                                                                               |    3 +-
 net/ethtool/cabletest.c                                                                            |   18 +-
 net/ethtool/common.c                                                                               |   35 +
 net/ethtool/common.h                                                                               |    3 +
 net/ethtool/ioctl.c                                                                                |   27 +-
 net/ethtool/linkmodes.c                                                                            |   18 +-
 net/ethtool/linkstate.c                                                                            |   52 +-
 net/ethtool/netlink.c                                                                              |   12 +
 net/ethtool/netlink.h                                                                              |    4 +
 net/ethtool/strset.c                                                                               |   16 +-
 net/ethtool/tunnels.c                                                                              |  312 +++
 net/hsr/Kconfig                                                                                    |   35 +-
 net/hsr/hsr_debugfs.c                                                                              |   41 +-
 net/hsr/hsr_device.c                                                                               |  183 +-
 net/hsr/hsr_device.h                                                                               |    2 +
 net/hsr/hsr_forward.c                                                                              |  319 ++-
 net/hsr/hsr_forward.h                                                                              |   16 +-
 net/hsr/hsr_framereg.c                                                                             |   95 +-
 net/hsr/hsr_framereg.h                                                                             |   31 +-
 net/hsr/hsr_main.c                                                                                 |    2 +
 net/hsr/hsr_main.h                                                                                 |  120 +-
 net/hsr/hsr_netlink.c                                                                              |   38 +-
 net/hsr/hsr_netlink.h                                                                              |    2 +
 net/hsr/hsr_slave.c                                                                                |   26 +-
 net/hsr/hsr_slave.h                                                                                |    4 +
 net/ieee802154/socket.c                                                                            |   14 +-
 net/ipv4/Kconfig                                                                                   |    8 +-
 net/ipv4/Makefile                                                                                  |    3 +-
 net/ipv4/af_inet.c                                                                                 |   15 +-
 net/ipv4/bpfilter/sockopt.c                                                                        |   36 +-
 net/ipv4/cipso_ipv4.c                                                                              |   10 +-
 net/ipv4/fib_rules.c                                                                               |   12 +-
 net/ipv4/fib_trie.c                                                                                |    2 +-
 net/ipv4/gre_offload.c                                                                             |   13 +-
 net/ipv4/icmp.c                                                                                    |   59 +
 net/ipv4/inet_connection_sock.c                                                                    |   61 +-
 net/ipv4/inet_diag.c                                                                               |   65 +-
 net/ipv4/inet_hashtables.c                                                                         |   60 +-
 net/ipv4/ip_options.c                                                                              |   43 +-
 net/ipv4/ip_output.c                                                                               |    6 +
 net/ipv4/ip_sockglue.c                                                                             |  601 ++---
 net/ipv4/ip_tunnel_core.c                                                                          |  245 ++
 net/ipv4/ip_vti.c                                                                                  |   80 +-
 net/ipv4/ipcomp.c                                                                                  |    1 +
 net/ipv4/ipmr.c                                                                                    |   17 +-
 net/ipv4/netfilter/arp_tables.c                                                                    |  105 +-
 net/ipv4/netfilter/ip_tables.c                                                                     |  104 +-
 net/ipv4/netfilter/ipt_CLUSTERIP.c                                                                 |    2 +-
 net/ipv4/netfilter/nf_reject_ipv4.c                                                                |   21 +
 net/ipv4/proc.c                                                                                    |    1 +
 net/ipv4/raw.c                                                                                     |   30 +-
 net/ipv4/route.c                                                                                   |    5 +
 net/ipv4/syncookies.c                                                                              |   45 +-
 net/ipv4/tcp.c                                                                                     |   67 +-
 net/ipv4/tcp_highspeed.c                                                                           |    2 +-
 net/ipv4/tcp_htcp.c                                                                                |    2 +-
 net/ipv4/tcp_input.c                                                                               |  152 +-
 net/ipv4/tcp_ipv4.c                                                                                |  171 +-
 net/ipv4/tcp_output.c                                                                              |   16 +-
 net/ipv4/tcp_timer.c                                                                               |    2 +-
 net/ipv4/tcp_veno.c                                                                                |    2 +-
 net/ipv4/tunnel4.c                                                                                 |   43 +
 net/ipv4/udp.c                                                                                     |  287 +-
 net/ipv4/udp_impl.h                                                                                |   10 +-
 net/ipv4/{udp_tunnel.c => udp_tunnel_core.c}                                                       |    0
 net/ipv4/udp_tunnel_nic.c                                                                          |  897 +++++++
 net/ipv4/udp_tunnel_stub.c                                                                         |    7 +
 net/ipv4/udplite.c                                                                                 |    4 -
 net/ipv6/Kconfig                                                                                   |    2 +-
 net/ipv6/addrconf.c                                                                                |   63 +-
 net/ipv6/af_inet6.c                                                                                |    4 -
 net/ipv6/datagram.c                                                                                |   16 +
 net/ipv6/exthdrs.c                                                                                 |    3 +-
 net/ipv6/fib6_rules.c                                                                              |   21 +-
 net/ipv6/icmp.c                                                                                    |    5 +-
 net/ipv6/inet6_hashtables.c                                                                        |   66 +-
 net/ipv6/ip6_fib.c                                                                                 |    3 +-
 net/ipv6/ip6_flowlabel.c                                                                           |  316 ++-
 net/ipv6/ip6_icmp.c                                                                                |   10 +-
 net/ipv6/ip6_offload.c                                                                             |    8 +-
 net/ipv6/ip6_output.c                                                                              |    6 +-
 net/ipv6/ip6_tunnel.c                                                                              |   10 +-
 net/ipv6/ip6_vti.c                                                                                 |   52 +-
 net/ipv6/ip6mr.c                                                                                   |   17 +-
 net/ipv6/ipcomp6.c                                                                                 |    1 +
 net/ipv6/ipv6_sockglue.c                                                                           |  724 +++--
 net/ipv6/netfilter/ip6_tables.c                                                                    |  104 +-
 net/ipv6/netfilter/ip6t_ah.c                                                                       |    3 +-
 net/ipv6/netfilter/ip6t_frag.c                                                                     |    3 +-
 net/ipv6/netfilter/ip6t_hbh.c                                                                      |    3 +-
 net/ipv6/netfilter/ip6t_rt.c                                                                       |    3 +-
 net/ipv6/netfilter/nf_reject_ipv6.c                                                                |   26 +
 net/ipv6/ping.c                                                                                    |    1 +
 net/ipv6/raw.c                                                                                     |   62 +-
 net/ipv6/route.c                                                                                   |   21 +-
 net/ipv6/rpl_iptunnel.c                                                                            |    3 +-
 net/ipv6/seg6_iptunnel.c                                                                           |   17 +
 net/ipv6/syncookies.c                                                                              |    5 +-
 net/ipv6/tcp_ipv6.c                                                                                |   23 +-
 net/ipv6/tunnel6.c                                                                                 |   41 +
 net/ipv6/udp.c                                                                                     |  135 +-
 net/ipv6/udp_impl.h                                                                                |   10 +-
 net/ipv6/udplite.c                                                                                 |    4 -
 net/iucv/af_iucv.c                                                                                 |    4 +-
 net/kcm/kcmsock.c                                                                                  |    6 +-
 net/key/af_key.c                                                                                   |    2 -
 net/l2tp/l2tp_core.c                                                                               |  247 +-
 net/l2tp/l2tp_core.h                                                                               |  205 +-
 net/l2tp/l2tp_debugfs.c                                                                            |   34 +-
 net/l2tp/l2tp_eth.c                                                                                |   21 +-
 net/l2tp/l2tp_ip.c                                                                                 |   41 +-
 net/l2tp/l2tp_ip6.c                                                                                |   43 +-
 net/l2tp/l2tp_netlink.c                                                                            |  259 +-
 net/l2tp/l2tp_ppp.c                                                                                |   97 +-
 net/l3mdev/l3mdev.c                                                                                |   93 +
 net/llc/af_llc.c                                                                                   |    5 +-
 net/llc/llc_conn.c                                                                                 |    7 +-
 net/llc/llc_input.c                                                                                |    1 +
 net/llc/llc_pdu.c                                                                                  |    2 +-
 net/llc/llc_sap.c                                                                                  |    3 +
 net/mac80211/agg-rx.c                                                                              |    2 +-
 net/mac80211/airtime.c                                                                             |   26 +-
 net/mac80211/cfg.c                                                                                 |   21 +-
 net/mac80211/chan.c                                                                                |    9 +-
 net/mac80211/debugfs_netdev.c                                                                      |    5 +
 net/mac80211/driver-ops.h                                                                          |   11 +-
 net/mac80211/ht.c                                                                                  |    4 +-
 net/mac80211/ibss.c                                                                                |    4 +-
 net/mac80211/ieee80211_i.h                                                                         |   16 +-
 net/mac80211/iface.c                                                                               |   25 +-
 net/mac80211/key.c                                                                                 |    2 +-
 net/mac80211/mesh.c                                                                                |    9 +-
 net/mac80211/mesh_hwmp.c                                                                           |   41 +-
 net/mac80211/mesh_pathtbl.c                                                                        |    4 +-
 net/mac80211/mesh_plink.c                                                                          |    2 +-
 net/mac80211/mlme.c                                                                                |   22 +-
 net/mac80211/offchannel.c                                                                          |    6 +-
 net/mac80211/rx.c                                                                                  |   66 +-
 net/mac80211/scan.c                                                                                |    8 +-
 net/mac80211/sta_info.c                                                                            |    8 +-
 net/mac80211/sta_info.h                                                                            |    2 +
 net/mac80211/status.c                                                                              |    4 +-
 net/mac80211/tdls.c                                                                                |    8 +-
 net/mac80211/trace.h                                                                               |    3 +-
 net/mac80211/tx.c                                                                                  |   99 +-
 net/mac80211/util.c                                                                                |   20 +-
 net/mac80211/wme.c                                                                                 |    2 +-
 net/mpls/af_mpls.c                                                                                 |   17 +-
 net/mptcp/Kconfig                                                                                  |   24 +-
 net/mptcp/Makefile                                                                                 |    7 +
 net/mptcp/crypto.c                                                                                 |   63 +-
 net/mptcp/crypto_test.c                                                                            |   72 +
 net/mptcp/ctrl.c                                                                                   |    1 +
 net/mptcp/mptcp_diag.c                                                                             |  169 ++
 net/mptcp/options.c                                                                                |   71 +-
 net/mptcp/pm.c                                                                                     |   46 +-
 net/mptcp/pm_netlink.c                                                                             |    2 +-
 net/mptcp/protocol.c                                                                               |  853 ++++--
 net/mptcp/protocol.h                                                                               |  130 +-
 net/mptcp/subflow.c                                                                                |  341 ++-
 net/mptcp/syncookies.c                                                                             |  130 +
 net/mptcp/token.c                                                                                  |  373 ++-
 net/mptcp/token_test.c                                                                             |  140 +
 net/ncsi/ncsi-rsp.c                                                                                |    2 +-
 net/netfilter/Kconfig                                                                              |    2 +-
 net/netfilter/ipset/ip_set_core.c                                                                  |    2 +-
 net/netfilter/ipvs/ip_vs_conn.c                                                                    |   92 +-
 net/netfilter/ipvs/ip_vs_core.c                                                                    |  139 +-
 net/netfilter/ipvs/ip_vs_ctl.c                                                                     |   55 +-
 net/netfilter/nf_conntrack_core.c                                                                  |   14 +-
 net/netfilter/nf_conntrack_h323_asn1.c                                                             |    6 +-
 net/netfilter/nf_conntrack_proto.c                                                                 |    2 +-
 net/netfilter/nf_conntrack_proto_tcp.c                                                             |    2 +-
 net/netfilter/nf_conntrack_standalone.c                                                            |    2 +-
 net/netfilter/nf_flow_table_core.c                                                                 |    2 +
 net/netfilter/nf_flow_table_offload.c                                                              |    2 +-
 net/netfilter/nf_nat_core.c                                                                        |   12 +-
 net/netfilter/nf_sockopt.c                                                                         |   60 +-
 net/netfilter/nf_synproxy_core.c                                                                   |    6 +-
 net/netfilter/nf_tables_api.c                                                                      |  237 +-
 net/netfilter/nf_tables_core.c                                                                     |    2 +-
 net/netfilter/nf_tables_offload.c                                                                  |    2 +-
 net/netfilter/nfnetlink_acct.c                                                                     |    2 +-
 net/netfilter/nfnetlink_cttimeout.c                                                                |    2 +-
 net/netfilter/nft_cmp.c                                                                            |    4 +-
 net/netfilter/nft_compat.c                                                                         |   36 +-
 net/netfilter/nft_ct.c                                                                             |    6 +-
 net/netfilter/nft_fib.c                                                                            |    2 +-
 net/netfilter/nft_immediate.c                                                                      |   51 +
 net/netfilter/nft_meta.c                                                                           |    2 +-
 net/netfilter/nft_payload.c                                                                        |    2 +-
 net/netfilter/nft_reject.c                                                                         |    3 +-
 net/netfilter/nft_set_pipapo.c                                                                     |   14 +-
 net/netfilter/utils.c                                                                              |    8 +-
 net/netfilter/x_tables.c                                                                           |   30 +-
 net/netfilter/xt_CONNSECMARK.c                                                                     |    2 +-
 net/netfilter/xt_connmark.c                                                                        |    2 +-
 net/netfilter/xt_nfacct.c                                                                          |    2 +-
 net/netfilter/xt_time.c                                                                            |    2 +-
 net/netlabel/netlabel_domainhash.c                                                                 |    2 +-
 net/netlink/af_netlink.c                                                                           |   17 +-
 net/netrom/af_netrom.c                                                                             |    4 +-
 net/nfc/core.c                                                                                     |    3 +-
 net/nfc/llcp_sock.c                                                                                |    8 +-
 net/nfc/nci/core.c                                                                                 |    4 +-
 net/nfc/rawsock.c                                                                                  |    4 -
 net/openvswitch/conntrack.c                                                                        |   38 +-
 net/openvswitch/datapath.c                                                                         |   45 +-
 net/openvswitch/datapath.h                                                                         |    9 +-
 net/openvswitch/flow.c                                                                             |    1 +
 net/openvswitch/flow_netlink.c                                                                     |    6 +-
 net/openvswitch/flow_table.c                                                                       |  287 +-
 net/openvswitch/flow_table.h                                                                       |   24 +-
 net/openvswitch/vport.c                                                                            |    3 +-
 net/packet/af_packet.c                                                                             |   96 +-
 net/packet/internal.h                                                                              |    2 +-
 net/phonet/pep.c                                                                                   |    4 +-
 net/phonet/socket.c                                                                                |   10 -
 net/qrtr/qrtr.c                                                                                    |    2 -
 net/rds/af_rds.c                                                                                   |   30 +-
 net/rds/rdma.c                                                                                     |   14 +-
 net/rds/rdma_transport.h                                                                           |    2 +-
 net/rds/rds.h                                                                                      |    6 +-
 net/rose/af_rose.c                                                                                 |    4 +-
 net/rxrpc/af_rxrpc.c                                                                               |   10 +-
 net/rxrpc/ar-internal.h                                                                            |    4 +-
 net/rxrpc/key.c                                                                                    |    9 +-
 net/sched/Kconfig                                                                                  |    4 +
 net/sched/act_api.c                                                                                |   12 +-
 net/sched/act_csum.c                                                                               |    3 +-
 net/sched/act_ct.c                                                                                 |   16 +-
 net/sched/act_gact.c                                                                               |    7 +-
 net/sched/act_gate.c                                                                               |    6 +-
 net/sched/act_mirred.c                                                                             |    6 +-
 net/sched/act_pedit.c                                                                              |    9 +-
 net/sched/act_police.c                                                                             |    4 +-
 net/sched/act_skbedit.c                                                                            |    5 +-
 net/sched/act_vlan.c                                                                               |    6 +-
 net/sched/cls_api.c                                                                                |  134 +-
 net/sched/cls_flower.c                                                                             |   17 +
 net/sched/cls_matchall.c                                                                           |    3 +-
 net/sched/cls_tcindex.c                                                                            |    2 +-
 net/sched/cls_u32.c                                                                                |   24 +-
 net/sched/em_canid.c                                                                               |    1 +
 net/sched/ematch.c                                                                                 |    3 +-
 net/sched/sch_api.c                                                                                |    6 +-
 net/sched/sch_cake.c                                                                               |    8 +-
 net/sched/sch_cbq.c                                                                                |    2 +-
 net/sched/sch_drr.c                                                                                |    2 +-
 net/sched/sch_ets.c                                                                                |    2 +-
 net/sched/sch_fq_codel.c                                                                           |    2 +-
 net/sched/sch_fq_pie.c                                                                             |    2 +-
 net/sched/sch_hfsc.c                                                                               |    2 +-
 net/sched/sch_htb.c                                                                                |    2 +-
 net/sched/sch_multiq.c                                                                             |    2 +-
 net/sched/sch_prio.c                                                                               |    2 +-
 net/sched/sch_qfq.c                                                                                |    2 +-
 net/sched/sch_red.c                                                                                |   98 +-
 net/sched/sch_sfb.c                                                                                |    2 +-
 net/sched/sch_sfq.c                                                                                |    2 +-
 net/sched/sch_taprio.c                                                                             |    5 +-
 net/sctp/ipv6.c                                                                                    |    6 -
 net/sctp/protocol.c                                                                                |   20 +-
 net/sctp/socket.c                                                                                  | 1239 ++++-----
 net/smc/af_smc.c                                                                                   |   26 +-
 net/smc/smc_clc.h                                                                                  |    1 +
 net/smc/smc_core.c                                                                                 |    4 +-
 net/socket.c                                                                                       |  133 +-
 net/switchdev/switchdev.c                                                                          |    3 +-
 net/tipc/bcast.c                                                                                   |    6 +-
 net/tipc/bcast.h                                                                                   |    4 +-
 net/tipc/bearer.c                                                                                  |    2 +-
 net/tipc/discover.c                                                                                |    5 +-
 net/tipc/eth_media.c                                                                               |    4 +-
 net/tipc/link.c                                                                                    |   16 +-
 net/tipc/msg.c                                                                                     |    2 +-
 net/tipc/msg.h                                                                                     |   46 +-
 net/tipc/name_distr.c                                                                              |  116 +-
 net/tipc/name_distr.h                                                                              |    9 +-
 net/tipc/name_table.c                                                                              |    9 +-
 net/tipc/name_table.h                                                                              |    2 +
 net/tipc/node.c                                                                                    |   33 +-
 net/tipc/node.h                                                                                    |    8 +-
 net/tipc/socket.c                                                                                  |   16 +-
 net/tipc/udp_media.c                                                                               |   10 +-
 net/tls/tls_device.c                                                                               |   60 +-
 net/tls/tls_main.c                                                                                 |   17 +-
 net/unix/af_unix.c                                                                                 |    6 -
 net/vmw_vsock/af_vsock.c                                                                           |    6 +-
 net/wireless/chan.c                                                                                |   35 +
 net/wireless/core.c                                                                                |    5 +-
 net/wireless/mesh.c                                                                                |    1 +
 net/wireless/nl80211.c                                                                             |   77 +-
 net/wireless/reg.c                                                                                 |    4 +-
 net/wireless/scan.c                                                                                |   10 +
 net/wireless/trace.h                                                                               |    4 +-
 net/wireless/util.c                                                                                |    8 +
 net/wireless/wext-compat.c                                                                         |    1 -
 net/x25/Kconfig                                                                                    |    2 +-
 net/x25/af_x25.c                                                                                   |    4 +-
 net/x25/x25_link.c                                                                                 |    2 +-
 net/x25/x25_route.c                                                                                |    2 +-
 net/xdp/xsk.c                                                                                      |   46 +-
 net/xdp/xsk_buff_pool.c                                                                            |    1 +
 net/xdp/xsk_diag.c                                                                                 |   17 +
 net/xdp/xsk_queue.h                                                                                |    6 +
 net/xdp/xskmap.c                                                                                   |    3 +
 net/xfrm/xfrm_device.c                                                                             |   35 +-
 net/xfrm/xfrm_input.c                                                                              |   24 +-
 net/xfrm/xfrm_interface.c                                                                          |  136 +-
 net/xfrm/xfrm_policy.c                                                                             |   11 +
 net/xfrm/xfrm_replay.c                                                                             |   12 +-
 net/xfrm/xfrm_state.c                                                                              |    6 +-
 samples/bpf/Makefile                                                                               |    2 +-
 samples/bpf/fds_example.c                                                                          |    3 +-
 samples/bpf/map_perf_test_kern.c                                                                   |  188 +-
 samples/bpf/map_perf_test_user.c                                                                   |  164 +-
 samples/bpf/offwaketime_kern.c                                                                     |    7 +-
 samples/bpf/test_map_in_map_kern.c                                                                 |   94 +-
 samples/bpf/test_map_in_map_user.c                                                                 |   53 +-
 samples/bpf/test_overhead_kprobe_kern.c                                                            |   12 +-
 samples/bpf/test_probe_write_user_kern.c                                                           |    9 +-
 samples/bpf/tracex1_kern.c                                                                         |    9 +-
 samples/bpf/tracex5_kern.c                                                                         |    4 +-
 samples/bpf/xdp_redirect_cpu_kern.c                                                                |   25 +-
 samples/bpf/xdp_redirect_cpu_user.c                                                                |  209 +-
 samples/bpf/xdpsock_user.c                                                                         |   87 +-
 scripts/bpf_helpers_doc.py                                                                         |   21 +-
 scripts/link-vmlinux.sh                                                                            |    6 +
 tools/Makefile                                                                                     |    3 +
 tools/bpf/Makefile                                                                                 |    9 +-
 tools/bpf/bpftool/.gitignore                                                                       |    5 +-
 tools/bpf/bpftool/Documentation/bpftool-btf.rst                                                    |    5 +
 tools/bpf/bpftool/Documentation/bpftool-iter.rst                                                   |   18 +-
 tools/bpf/bpftool/Documentation/bpftool-link.rst                                                   |   21 +-
 tools/bpf/bpftool/Documentation/bpftool-map.rst                                                    |    8 +-
 tools/bpf/bpftool/Documentation/bpftool-prog.rst                                                   |   13 +-
 tools/bpf/bpftool/Makefile                                                                         |   69 +-
 tools/bpf/bpftool/bash-completion/bpftool                                                          |   24 +-
 tools/bpf/bpftool/btf.c                                                                            |   62 +-
 tools/bpf/bpftool/common.c                                                                         |  483 +++-
 tools/bpf/bpftool/feature.c                                                                        |   12 +-
 tools/bpf/bpftool/gen.c                                                                            |   28 +-
 tools/bpf/bpftool/iter.c                                                                           |   33 +-
 tools/bpf/bpftool/link.c                                                                           |   48 +-
 tools/bpf/bpftool/main.c                                                                           |   12 +-
 tools/bpf/bpftool/main.h                                                                           |  129 +-
 tools/bpf/bpftool/map.c                                                                            |  167 +-
 tools/bpf/bpftool/pids.c                                                                           |  231 ++
 tools/bpf/bpftool/prog.c                                                                           |  197 +-
 tools/bpf/bpftool/skeleton/pid_iter.bpf.c                                                          |   81 +
 tools/bpf/bpftool/skeleton/pid_iter.h                                                              |   12 +
 tools/bpf/bpftool/skeleton/profiler.bpf.c                                                          |    7 +-
 tools/bpf/bpftool/skeleton/profiler.h                                                              |   46 -
 tools/bpf/resolve_btfids/.gitignore                                                                |    4 +
 tools/bpf/resolve_btfids/Build                                                                     |   10 +
 tools/bpf/resolve_btfids/Makefile                                                                  |   91 +
 tools/bpf/resolve_btfids/main.c                                                                    |  665 +++++
 tools/build/Build.include                                                                          |    3 +-
 tools/build/feature/Makefile                                                                       |    4 +-
 tools/build/feature/test-clang-bpf-co-re.c                                                         |    9 +
 tools/build/feature/test-clang-bpf-global-var.c                                                    |    4 -
 tools/include/linux/btf_ids.h                                                                      |  130 +
 tools/include/linux/compiler.h                                                                     |    4 +
 tools/include/uapi/asm-generic/unistd.h                                                            |    4 +-
 tools/include/uapi/linux/bpf.h                                                                     |  393 ++-
 tools/include/uapi/linux/if_link.h                                                                 |    1 +
 tools/include/uapi/linux/if_xdp.h                                                                  |    5 +-
 tools/lib/bpf/bpf.c                                                                                |   11 +
 tools/lib/bpf/bpf.h                                                                                |    5 +-
 tools/lib/bpf/bpf_core_read.h                                                                      |    8 +-
 tools/lib/bpf/bpf_endian.h                                                                         |   43 +-
 tools/lib/bpf/bpf_helpers.h                                                                        |    3 +-
 tools/lib/bpf/bpf_tracing.h                                                                        |    4 +-
 tools/lib/bpf/btf.c                                                                                |  127 +-
 tools/lib/bpf/btf.h                                                                                |   17 +-
 tools/lib/bpf/btf_dump.c                                                                           |   12 +-
 tools/lib/bpf/libbpf.c                                                                             |  853 ++++--
 tools/lib/bpf/libbpf.h                                                                             |   40 +-
 tools/lib/bpf/libbpf.map                                                                           |   27 +
 tools/lib/bpf/libbpf_probes.c                                                                      |    3 +
 tools/perf/arch/powerpc/entry/syscalls/syscall.tbl                                                 |    4 +-
 tools/perf/arch/s390/entry/syscalls/syscall.tbl                                                    |    4 +-
 tools/perf/arch/x86/entry/syscalls/syscall_64.tbl                                                  |    4 +-
 tools/testing/selftests/Makefile                                                                   |    1 +
 tools/testing/selftests/bpf/Makefile                                                               |   24 +-
 tools/testing/selftests/bpf/bpf_legacy.h                                                           |   14 -
 tools/testing/selftests/bpf/cgroup_helpers.c                                                       |   23 +
 tools/testing/selftests/bpf/cgroup_helpers.h                                                       |    1 +
 tools/testing/selftests/bpf/get_cgroup_id_user.c                                                   |   14 +-
 tools/testing/selftests/bpf/network_helpers.c                                                      |  187 +-
 tools/testing/selftests/bpf/network_helpers.h                                                      |   11 +-
 tools/testing/selftests/bpf/prog_tests/autoload.c                                                  |   41 +
 tools/testing/selftests/bpf/prog_tests/bpf_iter.c                                                  |  540 ++++
 tools/testing/selftests/bpf/prog_tests/cg_storage_multi.c                                          |  417 +++
 tools/testing/selftests/bpf/prog_tests/cgroup_link.c                                               |   20 +-
 tools/testing/selftests/bpf/prog_tests/cgroup_skb_sk_lookup.c                                      |   12 +-
 tools/testing/selftests/bpf/prog_tests/connect_force_port.c                                        |   10 +-
 tools/testing/selftests/bpf/prog_tests/core_retro.c                                                |   37 +
 tools/testing/selftests/bpf/prog_tests/endian.c                                                    |   53 +
 tools/testing/selftests/bpf/prog_tests/get_stackid_cannot_attach.c                                 |   91 +
 tools/testing/selftests/bpf/prog_tests/ksyms.c                                                     |   71 +
 tools/testing/selftests/bpf/prog_tests/load_bytes_relative.c                                       |    4 +-
 tools/testing/selftests/bpf/prog_tests/map_ptr.c                                                   |   32 +
 tools/testing/selftests/bpf/prog_tests/perf_buffer.c                                               |   42 +-
 tools/testing/selftests/bpf/prog_tests/perf_event_stackmap.c                                       |  116 +
 tools/testing/selftests/bpf/prog_tests/resolve_btfids.c                                            |  129 +
 tools/testing/selftests/bpf/prog_tests/section_names.c                                             |    2 +-
 tools/testing/selftests/bpf/prog_tests/sk_lookup.c                                                 | 1329 ++++++++++
 tools/testing/selftests/bpf/prog_tests/skb_ctx.c                                                   |    5 +
 tools/testing/selftests/bpf/prog_tests/skeleton.c                                                  |    6 +-
 tools/testing/selftests/bpf/prog_tests/sockopt_inherit.c                                           |    3 +-
 tools/testing/selftests/bpf/prog_tests/tcp_rtt.c                                                   |    4 +-
 tools/testing/selftests/bpf/prog_tests/trace_printk.c                                              |   75 +
 tools/testing/selftests/bpf/prog_tests/udp_limit.c                                                 |   75 +
 tools/testing/selftests/bpf/prog_tests/varlen.c                                                    |   68 +
 tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c                                         |   70 +
 tools/testing/selftests/bpf/prog_tests/xdp_link.c                                                  |  151 ++
 tools/testing/selftests/bpf/progs/bpf_iter.h                                                       |   98 +
 tools/testing/selftests/bpf/progs/bpf_iter_bpf_array_map.c                                         |   40 +
 tools/testing/selftests/bpf/progs/bpf_iter_bpf_hash_map.c                                          |  100 +
 tools/testing/selftests/bpf/progs/bpf_iter_bpf_map.c                                               |   18 +-
 tools/testing/selftests/bpf/progs/bpf_iter_bpf_percpu_array_map.c                                  |   46 +
 tools/testing/selftests/bpf/progs/bpf_iter_bpf_percpu_hash_map.c                                   |   50 +
 tools/testing/selftests/bpf/progs/bpf_iter_bpf_sk_storage_map.c                                    |   34 +
 tools/testing/selftests/bpf/progs/bpf_iter_ipv6_route.c                                            |   25 +-
 tools/testing/selftests/bpf/progs/bpf_iter_netlink.c                                               |   28 +-
 tools/testing/selftests/bpf/progs/bpf_iter_task.c                                                  |   18 +-
 tools/testing/selftests/bpf/progs/bpf_iter_task_file.c                                             |   20 +-
 tools/testing/selftests/bpf/progs/bpf_iter_task_stack.c                                            |   37 +
 tools/testing/selftests/bpf/progs/bpf_iter_tcp4.c                                                  |  234 ++
 tools/testing/selftests/bpf/progs/bpf_iter_tcp6.c                                                  |  250 ++
 tools/testing/selftests/bpf/progs/bpf_iter_test_kern3.c                                            |   17 +-
 tools/testing/selftests/bpf/progs/bpf_iter_test_kern4.c                                            |   17 +-
 tools/testing/selftests/bpf/progs/bpf_iter_test_kern5.c                                            |   35 +
 tools/testing/selftests/bpf/progs/bpf_iter_test_kern6.c                                            |   21 +
 tools/testing/selftests/bpf/progs/bpf_iter_test_kern_common.h                                      |   18 +-
 tools/testing/selftests/bpf/progs/bpf_iter_udp4.c                                                  |   71 +
 tools/testing/selftests/bpf/progs/bpf_iter_udp6.c                                                  |   79 +
 tools/testing/selftests/bpf/progs/bpf_tracing_net.h                                                |   51 +
 tools/testing/selftests/bpf/progs/btf_data.c                                                       |   50 +
 tools/testing/selftests/bpf/progs/cg_storage_multi.h                                               |   13 +
 tools/testing/selftests/bpf/progs/cg_storage_multi_egress_only.c                                   |   33 +
 tools/testing/selftests/bpf/progs/cg_storage_multi_isolated.c                                      |   57 +
 tools/testing/selftests/bpf/progs/cg_storage_multi_shared.c                                        |   57 +
 tools/testing/selftests/bpf/progs/connect4_prog.c                                                  |   27 +
 tools/testing/selftests/bpf/progs/map_ptr_kern.c                                                   |  686 +++++
 tools/testing/selftests/bpf/progs/perf_event_stackmap.c                                            |   59 +
 tools/testing/selftests/bpf/progs/test_autoload.c                                                  |   40 +
 tools/testing/selftests/bpf/progs/test_core_retro.c                                                |   43 +
 tools/testing/selftests/bpf/progs/test_endian.c                                                    |   37 +
 tools/testing/selftests/bpf/progs/test_get_stack_rawtp.c                                           |    3 +-
 tools/testing/selftests/bpf/progs/test_ksyms.c                                                     |   32 +
 tools/testing/selftests/bpf/progs/test_perf_buffer.c                                               |    4 +-
 tools/testing/selftests/bpf/progs/test_sk_lookup.c                                                 |  641 +++++
 tools/testing/selftests/bpf/progs/test_skeleton.c                                                  |    6 +-
 tools/testing/selftests/bpf/progs/test_varlen.c                                                    |  158 ++
 tools/testing/selftests/bpf/progs/test_vmlinux.c                                                   |   16 +-
 tools/testing/selftests/bpf/progs/test_xdp_link.c                                                  |   12 +
 tools/testing/selftests/bpf/progs/test_xdp_with_cpumap_helpers.c                                   |   36 +
 tools/testing/selftests/bpf/progs/trace_printk.c                                                   |   21 +
 tools/testing/selftests/bpf/progs/udp_limit.c                                                      |   61 +
 tools/testing/selftests/bpf/tcp_client.py                                                          |    2 +-
 tools/testing/selftests/bpf/tcp_server.py                                                          |    2 +-
 tools/testing/selftests/bpf/test_cgroup_storage.c                                                  |   17 +-
 tools/testing/selftests/bpf/test_dev_cgroup.c                                                      |   15 +-
 tools/testing/selftests/bpf/test_kmod.sh                                                           |   12 +-
 tools/testing/selftests/bpf/test_lwt_seg6local.sh                                                  |    2 +-
 tools/testing/selftests/bpf/test_netcnt.c                                                          |   21 +-
 tools/testing/selftests/bpf/test_progs.c                                                           |   66 +-
 tools/testing/selftests/bpf/test_progs.h                                                           |    4 +
 tools/testing/selftests/bpf/test_skb_cgroup_id_user.c                                              |    8 +-
 tools/testing/selftests/bpf/test_sock.c                                                            |    8 +-
 tools/testing/selftests/bpf/test_sock_addr.c                                                       |    8 +-
 tools/testing/selftests/bpf/test_sock_fields.c                                                     |   14 +-
 tools/testing/selftests/bpf/test_socket_cookie.c                                                   |    8 +-
 tools/testing/selftests/bpf/test_sockmap.c                                                         |   18 +-
 tools/testing/selftests/bpf/test_sysctl.c                                                          |    8 +-
 tools/testing/selftests/bpf/test_tcpbpf_user.c                                                     |    8 +-
 tools/testing/selftests/bpf/test_tcpnotify_user.c                                                  |    8 +-
 tools/testing/selftests/bpf/test_xdp_redirect.sh                                                   |   84 +-
 tools/testing/selftests/bpf/testing_helpers.c                                                      |   14 +
 tools/testing/selftests/bpf/testing_helpers.h                                                      |    3 +
 tools/testing/selftests/bpf/verifier/ctx_sk_lookup.c                                               |  492 ++++
 tools/testing/selftests/bpf/verifier/map_ptr.c                                                     |   62 +
 tools/testing/selftests/bpf/verifier/map_ptr_mixing.c                                              |    2 +-
 tools/testing/selftests/bpf/verifier/value_ptr_arith.c                                             |   38 +
 tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh                                          |  129 +-
 tools/testing/selftests/drivers/net/mlxsw/sch_red_ets.sh                                           |   22 +
 tools/testing/selftests/drivers/net/mlxsw/sch_red_root.sh                                          |    8 +
 tools/testing/selftests/drivers/net/mlxsw/spectrum-2/resource_scale.sh                             |    2 +-
 tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_police_scale.sh                            |   16 +
 tools/testing/selftests/drivers/net/mlxsw/spectrum/resource_scale.sh                               |    2 +-
 tools/testing/selftests/drivers/net/mlxsw/spectrum/tc_police_scale.sh                              |   16 +
 tools/testing/selftests/drivers/net/mlxsw/tc_police_occ.sh                                         |  108 +
 tools/testing/selftests/drivers/net/mlxsw/tc_police_scale.sh                                       |   92 +
 tools/testing/selftests/drivers/net/mlxsw/tc_restrictions.sh                                       |   76 +
 tools/testing/selftests/drivers/net/netdevsim/udp_tunnel_nic.sh                                    |  786 ++++++
 tools/testing/selftests/net/Makefile                                                               |    2 +
 tools/testing/selftests/net/devlink_port_split.py                                                  |  277 ++
 tools/testing/selftests/net/forwarding/devlink_lib.sh                                              |    5 +
 tools/testing/selftests/net/forwarding/ethtool.sh                                                  |   17 -
 tools/testing/selftests/net/forwarding/ethtool_extended_state.sh                                   |  102 +
 tools/testing/selftests/net/forwarding/ethtool_lib.sh                                              |   17 +
 tools/testing/selftests/net/forwarding/forwarding.config.sample                                    |    3 +
 tools/testing/selftests/net/forwarding/pedit_l4port.sh                                             |  198 ++
 tools/testing/selftests/net/forwarding/sch_red.sh                                                  |  492 ++++
 tools/testing/selftests/net/forwarding/tc_police.sh                                                |  333 +++
 tools/testing/selftests/net/mptcp/Makefile                                                         |    2 +-
 tools/testing/selftests/net/mptcp/diag.sh                                                          |  121 +
 tools/testing/selftests/net/mptcp/mptcp_connect.c                                                  |   22 +-
 tools/testing/selftests/net/mptcp/mptcp_connect.sh                                                 |  112 +-
 tools/testing/selftests/net/mptcp/mptcp_join.sh                                                    |   66 +-
 tools/testing/selftests/net/msg_zerocopy.c                                                         |    5 +-
 tools/testing/selftests/net/pmtu.sh                                                                |  346 ++-
 tools/testing/selftests/net/rtnetlink.sh                                                           |   68 +-
 tools/testing/selftests/net/rxtimestamp.c                                                          |  122 +-
 tools/testing/selftests/net/rxtimestamp.sh                                                         |    4 +
 tools/testing/selftests/net/txtimestamp.c                                                          |   10 +-
 tools/testing/selftests/net/vrf_strict_mode_test.sh                                                |  396 +++
 tools/testing/selftests/netfilter/Makefile                                                         |    2 +-
 tools/testing/selftests/netfilter/nft_meta.sh                                                      |  124 +
 tools/testing/selftests/ptp/testptp.c                                                              |   51 +-
 tools/testing/selftests/tc-testing/{bpf => }/Makefile                                              |    9 +-
 tools/testing/selftests/tc-testing/{bpf => }/action.c                                              |    0
 tools/testing/selftests/tc-testing/tdc.sh                                                          |    5 +
 tools/testing/selftests/tc-testing/tdc_config.py                                                   |    2 +-
 2101 files changed, 117811 insertions(+), 41304 deletions(-)
 create mode 100644 Documentation/bpf/map_cgroup_storage.rst
 create mode 100644 Documentation/devicetree/bindings/net/dsa/dsa.yaml
 rename {drivers/staging/wilc1000 => Documentation/devicetree/bindings/net/wireless}/microchip,wilc1000.yaml (100%)
 create mode 100644 Documentation/driver-api/pldmfw/driver-ops.rst
 create mode 100644 Documentation/driver-api/pldmfw/file-format.rst
 create mode 100644 Documentation/driver-api/pldmfw/index.rst
 rename Documentation/networking/{ => device_drivers/appletalk}/cops.rst (100%)
 create mode 100644 Documentation/networking/device_drivers/appletalk/index.rst
 rename Documentation/networking/{ => device_drivers/appletalk}/ltpc.rst (100%)
 rename Documentation/networking/{ => device_drivers/atm}/cxacru-cf.py (100%)
 rename Documentation/networking/{ => device_drivers/atm}/cxacru.rst (100%)
 rename Documentation/networking/{ => device_drivers/atm}/fore200e.rst (100%)
 create mode 100644 Documentation/networking/device_drivers/atm/index.rst
 rename Documentation/networking/{ => device_drivers/atm}/iphase.rst (100%)
 create mode 100644 Documentation/networking/device_drivers/cable/index.rst
 rename Documentation/networking/device_drivers/{ => cable}/sb1000.rst (100%)
 create mode 100644 Documentation/networking/device_drivers/cellular/index.rst
 rename Documentation/networking/device_drivers/{ => cellular}/qualcomm/rmnet.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/3com/3c509.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/3com/vortex.rst (99%)
 rename Documentation/networking/{ => device_drivers/ethernet/altera}/altera_tse.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/amazon/ena.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/aquantia/atlantic.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/chelsio/cxgb.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/cirrus/cs89x0.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/davicom/dm9000.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/dec/de4x5.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/dec/dmfe.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/dlink/dl2k.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/freescale/dpaa.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/freescale/dpaa2/dpio-driver.rst (97%)
 rename Documentation/networking/device_drivers/{ => ethernet}/freescale/dpaa2/ethernet-driver.rst (98%)
 rename Documentation/networking/device_drivers/{ => ethernet}/freescale/dpaa2/index.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/freescale/dpaa2/mac-phy-support.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/freescale/dpaa2/overview.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/freescale/gianfar.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/google/gve.rst (100%)
 rename Documentation/networking/{ => device_drivers/ethernet/huawei}/hinic.rst (100%)
 create mode 100644 Documentation/networking/device_drivers/ethernet/index.rst
 rename Documentation/networking/device_drivers/{ => ethernet}/intel/e100.rst (99%)
 rename Documentation/networking/device_drivers/{ => ethernet}/intel/e1000.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/intel/e1000e.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/intel/fm10k.rst (99%)
 rename Documentation/networking/device_drivers/{ => ethernet}/intel/i40e.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/intel/iavf.rst (99%)
 rename Documentation/networking/device_drivers/{ => ethernet}/intel/ice.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/intel/igb.rst (99%)
 rename Documentation/networking/device_drivers/{ => ethernet}/intel/igbvf.rst (98%)
 rename Documentation/networking/device_drivers/{ => ethernet}/intel/ixgb.rst (99%)
 rename Documentation/networking/device_drivers/{ => ethernet}/intel/ixgbe.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/intel/ixgbevf.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/marvell/octeontx2.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/mellanox/mlx5.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/microsoft/netvsc.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/neterion/s2io.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/neterion/vxge.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/netronome/nfp.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/pensando/ionic.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/smsc/smc9.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/stmicro/stmmac.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/ti/cpsw.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/ti/cpsw_switchdev.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/ti/tlan.rst (100%)
 rename Documentation/networking/device_drivers/{ => ethernet}/toshiba/spider_net.rst (100%)
 rename Documentation/networking/{ => device_drivers/fddi}/defza.rst (100%)
 create mode 100644 Documentation/networking/device_drivers/fddi/index.rst
 rename Documentation/networking/{ => device_drivers/fddi}/skfp.rst (100%)
 rename Documentation/networking/{ => device_drivers/hamradio}/baycom.rst (100%)
 create mode 100644 Documentation/networking/device_drivers/hamradio/index.rst
 rename Documentation/networking/{ => device_drivers/hamradio}/z8530drv.rst (100%)
 create mode 100644 Documentation/networking/device_drivers/wan/index.rst
 rename Documentation/networking/{ => device_drivers/wan}/z8530book.rst (100%)
 create mode 100644 Documentation/networking/device_drivers/wifi/index.rst
 rename Documentation/networking/device_drivers/{ => wifi}/intel/ipw2100.rst (99%)
 rename Documentation/networking/device_drivers/{ => wifi}/intel/ipw2200.rst (100%)
 rename Documentation/networking/{ => device_drivers/wifi}/ray_cs.rst (100%)
 create mode 100644 drivers/net/dsa/ocelot/seville_vsc9953.c
 create mode 100644 drivers/net/ethernet/broadcom/bnx2x/bnx2x_self_test.c
 create mode 100644 drivers/net/ethernet/huawei/hinic/hinic_devlink.c
 create mode 100644 drivers/net/ethernet/huawei/hinic/hinic_devlink.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_fw_update.c
 create mode 100644 drivers/net/ethernet/intel/ice/ice_fw_update.h
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/accel/ipsec_offload.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/accel/ipsec_offload.h
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.h
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.h
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.h
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_txrx.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_txrx.h
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_utils.h
 create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
 create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c
 delete mode 100644 drivers/net/ethernet/mscc/ocelot_board.c
 create mode 100644 drivers/net/ethernet/mscc/ocelot_net.c
 delete mode 100644 drivers/net/ethernet/mscc/ocelot_regs.c
 delete mode 100644 drivers/net/ethernet/mscc/ocelot_tc.c
 delete mode 100644 drivers/net/ethernet/mscc/ocelot_tc.h
 rename drivers/net/ethernet/mscc/{ocelot_ace.c => ocelot_vcap.c} (77%)
 rename drivers/net/ethernet/mscc/{ocelot_ace.h => ocelot_vcap.h} (75%)
 create mode 100644 drivers/net/ethernet/mscc/ocelot_vsc7514.c
 create mode 100644 drivers/net/ethernet/qlogic/qed/qed_chain.c
 create mode 100644 drivers/net/ethernet/qlogic/qed/qed_ptp.h
 create mode 100644 drivers/net/ethernet/sfc/ef100.c
 create mode 100644 drivers/net/ethernet/sfc/ef100.h
 create mode 100644 drivers/net/ethernet/sfc/ef100_ethtool.c
 create mode 100644 drivers/net/ethernet/sfc/ef100_ethtool.h
 create mode 100644 drivers/net/ethernet/sfc/ef100_netdev.c
 create mode 100644 drivers/net/ethernet/sfc/ef100_netdev.h
 create mode 100644 drivers/net/ethernet/sfc/ef100_nic.c
 create mode 100644 drivers/net/ethernet/sfc/ef100_nic.h
 create mode 100644 drivers/net/ethernet/sfc/ef100_regs.h
 create mode 100644 drivers/net/ethernet/sfc/ef100_rx.c
 create mode 100644 drivers/net/ethernet/sfc/ef100_rx.h
 create mode 100644 drivers/net/ethernet/sfc/ef100_tx.c
 create mode 100644 drivers/net/ethernet/sfc/ef100_tx.h
 create mode 100644 drivers/net/ethernet/sfc/mcdi_port.h
 create mode 100644 drivers/net/ethernet/sfc/nic_common.h
 create mode 100644 drivers/net/ethernet/sfc/ptp.h
 create mode 100644 drivers/net/netdevsim/udp_tunnels.c
 create mode 100644 drivers/net/phy/mdio_devres.c
 create mode 100644 drivers/net/phy/mscc/mscc_ptp.c
 create mode 100644 drivers/net/phy/mscc/mscc_ptp.h
 create mode 100644 drivers/net/wireless/ath/ath11k/dbring.c
 create mode 100644 drivers/net/wireless/ath/ath11k/dbring.h
 create mode 100644 drivers/net/wireless/ath/ath11k/spectral.c
 create mode 100644 drivers/net/wireless/ath/ath11k/spectral.h
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/sdio.c
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/sdio.h
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/sdio_mcu.c
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/sdio_txrx.c
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/testmode.c
 delete mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/usb_init.c
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c
 create mode 100644 drivers/net/wireless/mediatek/mt76/sdio.c
 create mode 100644 drivers/net/wireless/mediatek/mt76/testmode.c
 create mode 100644 drivers/net/wireless/mediatek/mt76/testmode.h
 create mode 100644 drivers/net/wireless/microchip/Kconfig
 create mode 100644 drivers/net/wireless/microchip/Makefile
 rename drivers/{staging => net/wireless/microchip}/wilc1000/Kconfig (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/Makefile (72%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/cfg80211.c (99%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/cfg80211.h (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/fw.h (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/hif.c (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/hif.h (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/mon.c (98%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/netdev.c (96%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/netdev.h (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/sdio.c (99%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/spi.c (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/wlan.c (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/wlan.h (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/wlan_cfg.c (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/wlan_cfg.h (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/wlan_if.h (100%)
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8821c.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8821c.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8821c_table.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8821c_table.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8821ce.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8821ce.h
 create mode 100644 include/linux/btf_ids.h
 create mode 100644 include/linux/dsa/loop.h
 create mode 100644 include/linux/mlx5/rsc_dump.h
 rename {drivers/net/ethernet/intel/i40e => include/linux/net/intel}/i40e_client.h (93%)
 create mode 100644 include/linux/pldmfw.h
 create mode 100644 include/linux/sockptr.h
 create mode 100644 include/linux/usermode_driver.h
 create mode 100644 kernel/bpf/prog_iter.c
 create mode 100644 kernel/trace/bpf_trace.h
 create mode 100644 kernel/usermode_driver.c
 create mode 100644 lib/pldmfw/Makefile
 create mode 100644 lib/pldmfw/pldmfw.c
 create mode 100644 lib/pldmfw/pldmfw_private.h
 create mode 100644 net/bluetooth/mgmt_config.c
 create mode 100644 net/bluetooth/mgmt_config.h
 create mode 100644 net/dsa/tag_rtl4_a.c
 create mode 100644 net/ethtool/tunnels.c
 rename net/ipv4/{udp_tunnel.c => udp_tunnel_core.c} (100%)
 create mode 100644 net/ipv4/udp_tunnel_nic.c
 create mode 100644 net/ipv4/udp_tunnel_stub.c
 create mode 100644 net/mptcp/crypto_test.c
 create mode 100644 net/mptcp/mptcp_diag.c
 create mode 100644 net/mptcp/syncookies.c
 create mode 100644 net/mptcp/token_test.c
 create mode 100644 tools/bpf/bpftool/pids.c
 create mode 100644 tools/bpf/bpftool/skeleton/pid_iter.bpf.c
 create mode 100644 tools/bpf/bpftool/skeleton/pid_iter.h
 delete mode 100644 tools/bpf/bpftool/skeleton/profiler.h
 create mode 100644 tools/bpf/resolve_btfids/.gitignore
 create mode 100644 tools/bpf/resolve_btfids/Build
 create mode 100644 tools/bpf/resolve_btfids/Makefile
 create mode 100644 tools/bpf/resolve_btfids/main.c
 create mode 100644 tools/build/feature/test-clang-bpf-co-re.c
 delete mode 100644 tools/build/feature/test-clang-bpf-global-var.c
 create mode 100644 tools/include/linux/btf_ids.h
 create mode 100644 tools/testing/selftests/bpf/prog_tests/autoload.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/cg_storage_multi.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/core_retro.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/endian.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/get_stackid_cannot_attach.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/ksyms.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/map_ptr.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/perf_event_stackmap.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/resolve_btfids.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/sk_lookup.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/trace_printk.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/udp_limit.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/varlen.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/xdp_link.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter.h
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_bpf_array_map.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_bpf_hash_map.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_bpf_percpu_array_map.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_bpf_percpu_hash_map.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_bpf_sk_storage_map.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_task_stack.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_tcp4.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_tcp6.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_test_kern5.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_test_kern6.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_udp4.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_udp6.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_tracing_net.h
 create mode 100644 tools/testing/selftests/bpf/progs/btf_data.c
 create mode 100644 tools/testing/selftests/bpf/progs/cg_storage_multi.h
 create mode 100644 tools/testing/selftests/bpf/progs/cg_storage_multi_egress_only.c
 create mode 100644 tools/testing/selftests/bpf/progs/cg_storage_multi_isolated.c
 create mode 100644 tools/testing/selftests/bpf/progs/cg_storage_multi_shared.c
 create mode 100644 tools/testing/selftests/bpf/progs/map_ptr_kern.c
 create mode 100644 tools/testing/selftests/bpf/progs/perf_event_stackmap.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_autoload.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_core_retro.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_endian.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_sk_lookup.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_varlen.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_link.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_with_cpumap_helpers.c
 create mode 100644 tools/testing/selftests/bpf/progs/trace_printk.c
 create mode 100644 tools/testing/selftests/bpf/progs/udp_limit.c
 create mode 100644 tools/testing/selftests/bpf/verifier/ctx_sk_lookup.c
 create mode 100644 tools/testing/selftests/bpf/verifier/map_ptr.c
 create mode 100644 tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_police_scale.sh
 create mode 100644 tools/testing/selftests/drivers/net/mlxsw/spectrum/tc_police_scale.sh
 create mode 100755 tools/testing/selftests/drivers/net/mlxsw/tc_police_occ.sh
 create mode 100644 tools/testing/selftests/drivers/net/mlxsw/tc_police_scale.sh
 create mode 100644 tools/testing/selftests/drivers/net/netdevsim/udp_tunnel_nic.sh
 create mode 100755 tools/testing/selftests/net/devlink_port_split.py
 create mode 100755 tools/testing/selftests/net/forwarding/ethtool_extended_state.sh
 create mode 100755 tools/testing/selftests/net/forwarding/pedit_l4port.sh
 create mode 100755 tools/testing/selftests/net/forwarding/sch_red.sh
 create mode 100755 tools/testing/selftests/net/forwarding/tc_police.sh
 create mode 100755 tools/testing/selftests/net/mptcp/diag.sh
 create mode 100755 tools/testing/selftests/net/rxtimestamp.sh
 create mode 100755 tools/testing/selftests/net/vrf_strict_mode_test.sh
 create mode 100755 tools/testing/selftests/netfilter/nft_meta.sh
 rename tools/testing/selftests/tc-testing/{bpf => }/Makefile (79%)
 rename tools/testing/selftests/tc-testing/{bpf => }/action.c (100%)
 create mode 100755 tools/testing/selftests/tc-testing/tdc.sh

^ permalink raw reply	[relevance 1%]

* Re: [PATCH net-next 0/2] r8169: add support for RTL8125B
  2020-07-14 15:43 12% [PATCH net-next 0/2] r8169: add support " Heiner Kallweit
  2020-07-14 15:45 16% ` [PATCH net-next 1/2] net: phy: realtek: add support for RTL8125B-internal PHY Heiner Kallweit
  2020-07-14 15:46 11% ` [PATCH net-next 2/2] r8169: add support for RTL8125B Heiner Kallweit
@ 2020-07-14 22:10  5% ` David Miller
  2 siblings, 0 replies; 107+ results
From: David Miller @ 2020-07-14 22:10 UTC (permalink / raw)
  To: hkallweit1; +Cc: nic_swsd, kuba, netdev

From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Tue, 14 Jul 2020 17:43:20 +0200

> This series adds support for RTL8125B rev.b.
> Tested with a Delock 89564 PCIe card.

Series applied, thanks Heiner.

^ permalink raw reply	[relevance 5%]

* RE: [PATCH] rtl_nic: update firmware for RTL8125B
  2020-07-14 15:25 28% [PATCH] rtl_nic: update " Heiner Kallweit
@ 2020-07-14 16:30  5% ` Hau
  0 siblings, 0 replies; 107+ results
From: Hau @ 2020-07-14 16:30 UTC (permalink / raw)
  To: Heiner Kallweit, Linux Firmware, nic_swsd; +Cc: netdev

> 
> Realtek provided updated versions of RTL8125B rev.a and rev.b firmware.
> 
> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

Signed-off-by: Chunhao Lin <hau@realtek.com>

> ---
>  WHENCE                |   4 ++--
>  rtl_nic/rtl8125b-1.fw | Bin 9952 -> 10128 bytes  rtl_nic/rtl8125b-2.fw | Bin
> 3264 -> 3328 bytes
>  3 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/WHENCE b/WHENCE
> index 75d3d5e..1a3324d 100644
> --- a/WHENCE
> +++ b/WHENCE
> @@ -3066,10 +3066,10 @@ File: rtl_nic/rtl8125a-3.fw
>  Version: 0.0.1
> 
>  File: rtl_nic/rtl8125b-1.fw
> -Version: 0.0.1
> +Version: 0.0.2
> 
>  File: rtl_nic/rtl8125b-2.fw
> -Version: 0.0.1
> +Version: 0.0.2
> 
>  Licence:
>   * Copyright © 2011-2013, Realtek Semiconductor Corporation diff --git
> a/rtl_nic/rtl8125b-1.fw b/rtl_nic/rtl8125b-1.fw index
> 577e1bb61eb95dcea7ab91d3c20b4b6c2adbe3c1..90191ab9c9f6eb4144c68d8
> be711b7c601b4d637 100644 GIT binary patch delta 256
> zcmaFhJHcO<0SJmpax4suOp|mC;|=r-^o$e?%=HaT^o<Nal0Z-Z#78+97-
> T2vns6AJ
> zTA7+y85vB>%&z~zE#JT}LAb$z2S_srGBB_(2mt8=Aol;?3<@Cj4WJqU0bw8(X}A
> JX
> z&maz!69=jjXJFs}=@CEh1uQ4b@c%nVpD<8Pn1O*EBqw~J2`nc7;(*YB1~8vNv
> Vf6+
> s;Q>g@fq_B6fq`j33IoFg1_oAxjaOLI6kxjE{|A{UaKM2JWIF-?0Hvfct^fc4
> 
> delta 79
> zcmbQ>|G-z50SJmpax4suOp|mC;|=r-^b8dY%=8US^^FWbl0Z-
> Z#IrdW7}O`~ns68y
> aTbY_!nOIEB%-)>C$fCyKz$M=RQUw5^#t)eQ
> 
> diff --git a/rtl_nic/rtl8125b-2.fw b/rtl_nic/rtl8125b-2.fw index
> 45b04434263d6d69a8e70e27ccf4843bd5f939a4..dc753b587c38b04478213e8
> 3b5d723809248ab11 100644 GIT binary patch delta 157
> zcmX>g*&wCM00c!PITnUSrb)U+@dkPZdPWKc=K6-
> l`bGvINgyZyVg+Uf2AzqzCLD$q
> zRt82^hK3t6nVAflxaAud7zBV2j1Dw_`3wb&3=9uILJmNU4h&2SQWzK}FfgzhY|
> deF
> W;8KC<djFq60jTPL0~g2?Q~&^+bQ#$I
> 
> delta 92
> zcmZpWIv}ab00c!PITnUSrb)U+@dkPZdWH%HX8MMv`bGvINgyZyVgY6bhV+TL
> CLBh_
> cR;FfFrj{EsnVB}vVRGOSap00~04YNT04914$p8QV
> 
> --
> 2.27.0
> 
> 
> ------Please consider the environment before printing this e-mail.

^ permalink raw reply	[relevance 5%]

* [PATCH net-next 2/2] r8169: add support for RTL8125B
  2020-07-14 15:43 12% [PATCH net-next 0/2] r8169: add support " Heiner Kallweit
  2020-07-14 15:45 16% ` [PATCH net-next 1/2] net: phy: realtek: add support for RTL8125B-internal PHY Heiner Kallweit
@ 2020-07-14 15:46 11% ` Heiner Kallweit
  2020-07-14 22:10  5% ` [PATCH net-next 0/2] " David Miller
  2 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2020-07-14 15:46 UTC (permalink / raw)
  To: Realtek linux nic maintainers, David Miller, Jakub Kicinski; +Cc: netdev

Add support for RTL8125B rev.b. In my tests 2.5Gbps worked well
w/o firmware, however for a stable link at 1Gbps firmware revision
0.0.2 is needed.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169.h          |   1 +
 drivers/net/ethernet/realtek/r8169_main.c     | 110 ++++++++++++++----
 .../net/ethernet/realtek/r8169_phy_config.c   |  53 +++++++++
 3 files changed, 141 insertions(+), 23 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
index 422a8e5a8..7be86ef5a 100644
--- a/drivers/net/ethernet/realtek/r8169.h
+++ b/drivers/net/ethernet/realtek/r8169.h
@@ -65,6 +65,7 @@ enum mac_version {
 	RTL_GIGA_MAC_VER_52,
 	RTL_GIGA_MAC_VER_60,
 	RTL_GIGA_MAC_VER_61,
+	RTL_GIGA_MAC_VER_63,
 	RTL_GIGA_MAC_NONE
 };
 
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 745e1739e..975f5c10b 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -56,6 +56,7 @@
 #define FIRMWARE_8107E_1	"rtl_nic/rtl8107e-1.fw"
 #define FIRMWARE_8107E_2	"rtl_nic/rtl8107e-2.fw"
 #define FIRMWARE_8125A_3	"rtl_nic/rtl8125a-3.fw"
+#define FIRMWARE_8125B_2	"rtl_nic/rtl8125b-2.fw"
 
 /* Maximum number of multicast addresses to filter (vs. Rx-all-multicast).
    The RTL chips use a 64 element hash table based on the Ethernet CRC. */
@@ -146,6 +147,8 @@ static const struct {
 	[RTL_GIGA_MAC_VER_52] = {"RTL8168fp/RTL8117",  FIRMWARE_8168FP_3},
 	[RTL_GIGA_MAC_VER_60] = {"RTL8125A"				},
 	[RTL_GIGA_MAC_VER_61] = {"RTL8125A",		FIRMWARE_8125A_3},
+	/* reserve 62 for CFG_METHOD_4 in the vendor driver */
+	[RTL_GIGA_MAC_VER_63] = {"RTL8125B",		FIRMWARE_8125B_2},
 };
 
 static const struct pci_device_id rtl8169_pci_tbl[] = {
@@ -335,6 +338,7 @@ enum rtl8125_registers {
 	IntrStatus_8125		= 0x3c,
 	TxPoll_8125		= 0x90,
 	MAC0_BKP		= 0x19e0,
+	EEE_TXIDLE_TIMER_8125	= 0x6048,
 };
 
 #define RX_VLAN_INNER_8125	BIT(22)
@@ -655,6 +659,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3);
 MODULE_FIRMWARE(FIRMWARE_8107E_1);
 MODULE_FIRMWARE(FIRMWARE_8107E_2);
 MODULE_FIRMWARE(FIRMWARE_8125A_3);
+MODULE_FIRMWARE(FIRMWARE_8125B_2);
 
 static inline struct device *tp_to_dev(struct rtl8169_private *tp)
 {
@@ -966,7 +971,7 @@ static void rtl_writephy(struct rtl8169_private *tp, int location, int val)
 	case RTL_GIGA_MAC_VER_31:
 		r8168dp_2_mdio_write(tp, location, val);
 		break;
-	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
 		r8168g_mdio_write(tp, location, val);
 		break;
 	default:
@@ -983,7 +988,7 @@ static int rtl_readphy(struct rtl8169_private *tp, int location)
 	case RTL_GIGA_MAC_VER_28:
 	case RTL_GIGA_MAC_VER_31:
 		return r8168dp_2_mdio_read(tp, location);
-	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
 		return r8168g_mdio_read(tp, location);
 	default:
 		return r8169_mdio_read(tp, location);
@@ -1389,7 +1394,7 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
 		break;
 	case RTL_GIGA_MAC_VER_34:
 	case RTL_GIGA_MAC_VER_37:
-	case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
 		options = RTL_R8(tp, Config2) & ~PME_SIGNAL;
 		if (wolopts)
 			options |= PME_SIGNAL;
@@ -1935,7 +1940,10 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
 		u16 val;
 		enum mac_version ver;
 	} mac_info[] = {
-		/* 8125 family. */
+		/* 8125B family. */
+		{ 0x7cf, 0x641,	RTL_GIGA_MAC_VER_63 },
+
+		/* 8125A family. */
 		{ 0x7cf, 0x608,	RTL_GIGA_MAC_VER_60 },
 		{ 0x7c8, 0x608,	RTL_GIGA_MAC_VER_61 },
 
@@ -2073,6 +2081,17 @@ static void rtl8125a_config_eee_mac(struct rtl8169_private *tp)
 	r8168_mac_ocp_modify(tp, 0xeb62, 0, BIT(2) | BIT(1));
 }
 
+static void rtl8125_set_eee_txidle_timer(struct rtl8169_private *tp)
+{
+	RTL_W16(tp, EEE_TXIDLE_TIMER_8125, tp->dev->mtu + ETH_HLEN + 0x20);
+}
+
+static void rtl8125b_config_eee_mac(struct rtl8169_private *tp)
+{
+	rtl8125_set_eee_txidle_timer(tp);
+	r8168_mac_ocp_modify(tp, 0xe040, 0, BIT(1) | BIT(0));
+}
+
 static void rtl_rar_exgmac_set(struct rtl8169_private *tp, u8 *addr)
 {
 	const u16 w[] = {
@@ -2174,7 +2193,7 @@ static void rtl_wol_suspend_quirk(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_32:
 	case RTL_GIGA_MAC_VER_33:
 	case RTL_GIGA_MAC_VER_34:
-	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_63:
 		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
 			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
 		break;
@@ -2208,11 +2227,7 @@ static void rtl_pll_power_down(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_46:
 	case RTL_GIGA_MAC_VER_47:
 	case RTL_GIGA_MAC_VER_48:
-	case RTL_GIGA_MAC_VER_50:
-	case RTL_GIGA_MAC_VER_51:
-	case RTL_GIGA_MAC_VER_52:
-	case RTL_GIGA_MAC_VER_60:
-	case RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_50 ... RTL_GIGA_MAC_VER_63:
 		RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) & ~0x80);
 		break;
 	case RTL_GIGA_MAC_VER_40:
@@ -2244,11 +2259,7 @@ static void rtl_pll_power_up(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_46:
 	case RTL_GIGA_MAC_VER_47:
 	case RTL_GIGA_MAC_VER_48:
-	case RTL_GIGA_MAC_VER_50:
-	case RTL_GIGA_MAC_VER_51:
-	case RTL_GIGA_MAC_VER_52:
-	case RTL_GIGA_MAC_VER_60:
-	case RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_50 ... RTL_GIGA_MAC_VER_63:
 		RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) | 0xc0);
 		break;
 	case RTL_GIGA_MAC_VER_40:
@@ -2279,7 +2290,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_52:
 		RTL_W32(tp, RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST | RX_EARLY_OFF);
 		break;
-	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
 		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
 		break;
 	default:
@@ -2442,6 +2453,12 @@ DECLARE_RTL_COND(rtl_rxtx_empty_cond)
 	return (RTL_R8(tp, MCU) & RXTX_EMPTY) == RXTX_EMPTY;
 }
 
+DECLARE_RTL_COND(rtl_rxtx_empty_cond_2)
+{
+	/* IntrMitigate has new functionality on RTL8125 */
+	return (RTL_R16(tp, IntrMitigate) & 0x0103) == 0x0103;
+}
+
 static void rtl_wait_txrx_fifo_empty(struct rtl8169_private *tp)
 {
 	switch (tp->mac_version) {
@@ -2452,6 +2469,11 @@ static void rtl_wait_txrx_fifo_empty(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_61:
 		rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42);
 		break;
+	case RTL_GIGA_MAC_VER_63:
+		RTL_W8(tp, ChipCmd, RTL_R8(tp, ChipCmd) | StopReq);
+		rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42);
+		rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond_2, 100, 42);
+		break;
 	default:
 		break;
 	}
@@ -3523,18 +3545,27 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 	/* disable new tx descriptor format */
 	r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
 
-	r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
-	r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0020);
+	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
+		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
+	else
+		r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
+
+	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
+		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
+	else
+		r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0020);
+
 	r8168_mac_ocp_modify(tp, 0xc0b4, 0x0000, 0x000c);
 	r8168_mac_ocp_modify(tp, 0xeb6a, 0x00ff, 0x0033);
 	r8168_mac_ocp_modify(tp, 0xeb50, 0x03e0, 0x0040);
 	r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
 	r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
+	r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
 	r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
-	r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0067);
+	r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
 	r8168_mac_ocp_modify(tp, 0xc0ac, 0x0080, 0x1f00);
 	r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
-	r8168_mac_ocp_modify(tp, 0xe84c, 0x0000, 0x00c0);
+
 	r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
 	r8168_mac_ocp_modify(tp, 0xeb54, 0x0000, 0x0001);
 	udelay(1);
@@ -3545,7 +3576,10 @@ static void rtl_hw_start_8125_common(struct rtl8169_private *tp)
 
 	rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
 
-	rtl8125a_config_eee_mac(tp);
+	if (tp->mac_version == RTL_GIGA_MAC_VER_63)
+		rtl8125b_config_eee_mac(tp);
+	else
+		rtl8125a_config_eee_mac(tp);
 
 	RTL_W32(tp, MISC, RTL_R32(tp, MISC) & ~RXDV_GATED_EN);
 	udelay(10);
@@ -3617,6 +3651,26 @@ static void rtl_hw_start_8125a_2(struct rtl8169_private *tp)
 	rtl_hw_start_8125_common(tp);
 }
 
+static void rtl_hw_start_8125b(struct rtl8169_private *tp)
+{
+	static const struct ephy_info e_info_8125b[] = {
+		{ 0x0b, 0xffff, 0xa908 },
+		{ 0x1e, 0xffff, 0x20eb },
+		{ 0x4b, 0xffff, 0xa908 },
+		{ 0x5e, 0xffff, 0x20eb },
+		{ 0x22, 0x0030, 0x0020 },
+		{ 0x62, 0x0030, 0x0020 },
+	};
+
+	rtl_set_def_aspm_entry_latency(tp);
+	rtl_hw_aspm_clkreq_enable(tp, false);
+
+	rtl_ephy_init(tp, e_info_8125b);
+	rtl_hw_start_8125_common(tp);
+
+	rtl_hw_aspm_clkreq_enable(tp, true);
+}
+
 static void rtl_hw_config(struct rtl8169_private *tp)
 {
 	static const rtl_generic_fct hw_configs[] = {
@@ -3667,6 +3721,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
 		[RTL_GIGA_MAC_VER_52] = rtl_hw_start_8117,
 		[RTL_GIGA_MAC_VER_60] = rtl_hw_start_8125a_1,
 		[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
+		[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
 	};
 
 	if (hw_configs[tp->mac_version])
@@ -3753,6 +3808,15 @@ static int rtl8169_change_mtu(struct net_device *dev, int new_mtu)
 	netdev_update_features(dev);
 	rtl_jumbo_config(tp);
 
+	switch (tp->mac_version) {
+	case RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_63:
+		rtl8125_set_eee_txidle_timer(tp);
+		break;
+	default:
+		break;
+	}
+
 	return 0;
 }
 
@@ -3899,7 +3963,7 @@ static void rtl8169_cleanup(struct rtl8169_private *tp, bool going_down)
 		RTL_W8(tp, ChipCmd, RTL_R8(tp, ChipCmd) | StopReq);
 		rtl_loop_wait_high(tp, &rtl_txcfg_empty_cond, 100, 666);
 		break;
-	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
 		rtl_enable_rxdvgate(tp);
 		fsleep(2000);
 		break;
@@ -5075,7 +5139,7 @@ static void rtl_hw_initialize(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
 		rtl_hw_init_8168g(tp);
 		break;
-	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_60 ... RTL_GIGA_MAC_VER_63:
 		rtl_hw_init_8125(tp);
 		break;
 	default:
diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
index bc8bf48bd..913d030d7 100644
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
@@ -97,6 +97,14 @@ static void rtl8125a_config_eee_phy(struct phy_device *phydev)
 	phy_modify_paged(phydev, 0xa6d, 0x14, 0x0010, 0x0000);
 }
 
+static void rtl8125b_config_eee_phy(struct phy_device *phydev)
+{
+	phy_modify_paged(phydev, 0xa6d, 0x12, 0x0001, 0x0000);
+	phy_modify_paged(phydev, 0xa6d, 0x14, 0x0010, 0x0000);
+	phy_modify_paged(phydev, 0xa42, 0x14, 0x0080, 0x0000);
+	phy_modify_paged(phydev, 0xa4a, 0x11, 0x0200, 0x0000);
+}
+
 static void rtl8169s_hw_phy_config(struct rtl8169_private *tp,
 				   struct phy_device *phydev)
 {
@@ -1147,6 +1155,11 @@ static void rtl8106e_hw_phy_config(struct rtl8169_private *tp,
 	rtl_writephy_batch(phydev, phy_reg_init);
 }
 
+static void rtl8125_legacy_force_mode(struct phy_device *phydev)
+{
+	phy_modify_paged(phydev, 0xa5b, 0x12, BIT(15), 0);
+}
+
 static void rtl8125a_1_hw_phy_config(struct rtl8169_private *tp,
 				     struct phy_device *phydev)
 {
@@ -1250,6 +1263,45 @@ static void rtl8125a_2_hw_phy_config(struct rtl8169_private *tp,
 	rtl8125a_config_eee_phy(phydev);
 }
 
+static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
+				   struct phy_device *phydev)
+{
+	r8169_apply_firmware(tp);
+
+	phy_modify_paged(phydev, 0xa44, 0x11, 0x0000, 0x0800);
+	phy_modify_paged(phydev, 0xac4, 0x13, 0x00f0, 0x0090);
+	phy_modify_paged(phydev, 0xad3, 0x10, 0x0003, 0x0001);
+
+	phy_write(phydev, 0x1f, 0x0b87);
+	phy_write(phydev, 0x16, 0x80f5);
+	phy_write(phydev, 0x17, 0x760e);
+	phy_write(phydev, 0x16, 0x8107);
+	phy_write(phydev, 0x17, 0x360e);
+	phy_write(phydev, 0x16, 0x8551);
+	phy_modify(phydev, 0x17, 0xff00, 0x0800);
+	phy_write(phydev, 0x1f, 0x0000);
+
+	phy_modify_paged(phydev, 0xbf0, 0x10, 0xe000, 0xa000);
+	phy_modify_paged(phydev, 0xbf4, 0x13, 0x0f00, 0x0300);
+
+	r8168g_phy_param(phydev, 0x8044, 0xffff, 0x2417);
+	r8168g_phy_param(phydev, 0x804a, 0xffff, 0x2417);
+	r8168g_phy_param(phydev, 0x8050, 0xffff, 0x2417);
+	r8168g_phy_param(phydev, 0x8056, 0xffff, 0x2417);
+	r8168g_phy_param(phydev, 0x805c, 0xffff, 0x2417);
+	r8168g_phy_param(phydev, 0x8062, 0xffff, 0x2417);
+	r8168g_phy_param(phydev, 0x8068, 0xffff, 0x2417);
+	r8168g_phy_param(phydev, 0x806e, 0xffff, 0x2417);
+	r8168g_phy_param(phydev, 0x8074, 0xffff, 0x2417);
+	r8168g_phy_param(phydev, 0x807a, 0xffff, 0x2417);
+
+	phy_modify_paged(phydev, 0xa4c, 0x15, 0x0000, 0x0040);
+	phy_modify_paged(phydev, 0xbf8, 0x12, 0xe000, 0xa000);
+
+	rtl8125_legacy_force_mode(phydev);
+	rtl8125b_config_eee_phy(phydev);
+}
+
 void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
 			 enum mac_version ver)
 {
@@ -1308,6 +1360,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
 		[RTL_GIGA_MAC_VER_52] = rtl8117_hw_phy_config,
 		[RTL_GIGA_MAC_VER_60] = rtl8125a_1_hw_phy_config,
 		[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
+		[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
 	};
 
 	if (phy_configs[ver])
-- 
2.27.0



^ permalink raw reply related	[relevance 11%]

* [PATCH net-next 1/2] net: phy: realtek: add support for RTL8125B-internal PHY
  2020-07-14 15:43 12% [PATCH net-next 0/2] r8169: add support " Heiner Kallweit
@ 2020-07-14 15:45 16% ` Heiner Kallweit
  2020-07-14 15:46 11% ` [PATCH net-next 2/2] r8169: add support for RTL8125B Heiner Kallweit
  2020-07-14 22:10  5% ` [PATCH net-next 0/2] " David Miller
  2 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2020-07-14 15:45 UTC (permalink / raw)
  To: Realtek linux nic maintainers, David Miller, Jakub Kicinski,
	Florian Fainelli, Andrew Lunn, Russell King - ARM Linux
  Cc: netdev

Realtek assigned a new PHY ID for the RTL8125B-internal PHY.
It's however compatible with the RTL8125A-internal PHY.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/phy/realtek.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
index c7229d022..95dbe5e8e 100644
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -637,6 +637,18 @@ static struct phy_driver realtek_drvs[] = {
 		.write_page	= rtl821x_write_page,
 		.read_mmd	= rtl8125_read_mmd,
 		.write_mmd	= rtl8125_write_mmd,
+	}, {
+		PHY_ID_MATCH_EXACT(0x001cc840),
+		.name		= "RTL8125B 2.5Gbps internal",
+		.get_features	= rtl8125_get_features,
+		.config_aneg	= rtl8125_config_aneg,
+		.read_status	= rtl8125_read_status,
+		.suspend	= genphy_suspend,
+		.resume		= rtlgen_resume,
+		.read_page	= rtl821x_read_page,
+		.write_page	= rtl821x_write_page,
+		.read_mmd	= rtl8125_read_mmd,
+		.write_mmd	= rtl8125_write_mmd,
 	}, {
 		PHY_ID_MATCH_EXACT(0x001cc961),
 		.name		= "RTL8366RB Gigabit Ethernet",
-- 
2.27.0



^ permalink raw reply related	[relevance 16%]

* [PATCH net-next 0/2] r8169: add support for RTL8125B
@ 2020-07-14 15:43 12% Heiner Kallweit
  2020-07-14 15:45 16% ` [PATCH net-next 1/2] net: phy: realtek: add support for RTL8125B-internal PHY Heiner Kallweit
                   ` (2 more replies)
  0 siblings, 3 replies; 107+ results
From: Heiner Kallweit @ 2020-07-14 15:43 UTC (permalink / raw)
  To: Realtek linux nic maintainers, David Miller, Jakub Kicinski; +Cc: netdev

This series adds support for RTL8125B rev.b.
Tested with a Delock 89564 PCIe card.

Heiner Kallweit (2):
  net: phy: realtek: add support for RTL8125B-internal PHY
  r8169: add support for RTL8125B

 drivers/net/ethernet/realtek/r8169.h          |   1 +
 drivers/net/ethernet/realtek/r8169_main.c     | 110 ++++++++++++++----
 .../net/ethernet/realtek/r8169_phy_config.c   |  53 +++++++++
 drivers/net/phy/realtek.c                     |  12 ++
 4 files changed, 153 insertions(+), 23 deletions(-)

-- 
2.27.0


^ permalink raw reply	[relevance 12%]

* [PATCH] rtl_nic: update firmware for RTL8125B
@ 2020-07-14 15:25 28% Heiner Kallweit
  2020-07-14 16:30  5% ` Hau
  0 siblings, 1 reply; 107+ results
From: Heiner Kallweit @ 2020-07-14 15:25 UTC (permalink / raw)
  To: Linux Firmware, Chun-Hao Lin, Realtek linux nic maintainers; +Cc: netdev

Realtek provided updated versions of RTL8125B rev.a and rev.b firmware.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 WHENCE                |   4 ++--
 rtl_nic/rtl8125b-1.fw | Bin 9952 -> 10128 bytes
 rtl_nic/rtl8125b-2.fw | Bin 3264 -> 3328 bytes
 3 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/WHENCE b/WHENCE
index 75d3d5e..1a3324d 100644
--- a/WHENCE
+++ b/WHENCE
@@ -3066,10 +3066,10 @@ File: rtl_nic/rtl8125a-3.fw
 Version: 0.0.1
 
 File: rtl_nic/rtl8125b-1.fw
-Version: 0.0.1
+Version: 0.0.2
 
 File: rtl_nic/rtl8125b-2.fw
-Version: 0.0.1
+Version: 0.0.2
 
 Licence:
  * Copyright © 2011-2013, Realtek Semiconductor Corporation
diff --git a/rtl_nic/rtl8125b-1.fw b/rtl_nic/rtl8125b-1.fw
index 577e1bb61eb95dcea7ab91d3c20b4b6c2adbe3c1..90191ab9c9f6eb4144c68d8be711b7c601b4d637 100644
GIT binary patch
delta 256
zcmaFhJHcO<0SJmpax4suOp|mC;|=r-^o$e?%=HaT^o<Nal0Z-Z#78+97-T2vns6AJ
zTA7+y85vB>%&z~zE#JT}LAb$z2S_srGBB_(2mt8=Aol;?3<@Cj4WJqU0bw8(X}AJX
z&maz!69=jjXJFs}=@CEh1uQ4b@c%nVpD<8Pn1O*EBqw~J2`nc7;(*YB1~8vNvVf6+
s;Q>g@fq_B6fq`j33IoFg1_oAxjaOLI6kxjE{|A{UaKM2JWIF-?0Hvfct^fc4

delta 79
zcmbQ>|G-z50SJmpax4suOp|mC;|=r-^b8dY%=8US^^FWbl0Z-Z#IrdW7}O`~ns68y
aTbY_!nOIEB%-)>C$fCyKz$M=RQUw5^#t)eQ

diff --git a/rtl_nic/rtl8125b-2.fw b/rtl_nic/rtl8125b-2.fw
index 45b04434263d6d69a8e70e27ccf4843bd5f939a4..dc753b587c38b04478213e83b5d723809248ab11 100644
GIT binary patch
delta 157
zcmX>g*&wCM00c!PITnUSrb)U+@dkPZdPWKc=K6-l`bGvINgyZyVg+Uf2AzqzCLD$q
zRt82^hK3t6nVAflxaAud7zBV2j1Dw_`3wb&3=9uILJmNU4h&2SQWzK}FfgzhY|deF
W;8KC<djFq60jTPL0~g2?Q~&^+bQ#$I

delta 92
zcmZpWIv}ab00c!PITnUSrb)U+@dkPZdWH%HX8MMv`bGvINgyZyVgY6bhV+TLCLBh_
cR;FfFrj{EsnVB}vVRGOSap00~04YNT04914$p8QV

-- 
2.27.0


^ permalink raw reply related	[relevance 28%]

* [PATCH] rtl_nic: add firmware for RTL8125B
@ 2020-06-15 18:57 28% Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2020-06-15 18:57 UTC (permalink / raw)
  To: Linux Firmware, Chun-Hao Lin, Realtek linux nic maintainers; +Cc: netdev

This adds firmware for RTL8125B rev.a and RTL8125B rev.b.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Chunhao Lin <hau@realtek.com>
---
 WHENCE                |   6 ++++++
 rtl_nic/rtl8125b-1.fw | Bin 0 -> 9952 bytes
 rtl_nic/rtl8125b-2.fw | Bin 0 -> 3264 bytes
 3 files changed, 6 insertions(+)
 create mode 100644 rtl_nic/rtl8125b-1.fw
 create mode 100644 rtl_nic/rtl8125b-2.fw

diff --git a/WHENCE b/WHENCE
index f8e1585..4a336c9 100644
--- a/WHENCE
+++ b/WHENCE
@@ -3060,6 +3060,12 @@ Version: 0.0.2
 File: rtl_nic/rtl8125a-3.fw
 Version: 0.0.1
 
+File: rtl_nic/rtl8125b-1.fw
+Version: 0.0.1
+
+File: rtl_nic/rtl8125b-2.fw
+Version: 0.0.1
+
 Licence:
  * Copyright © 2011-2013, Realtek Semiconductor Corporation
  *
diff --git a/rtl_nic/rtl8125b-1.fw b/rtl_nic/rtl8125b-1.fw
new file mode 100644
index 0000000000000000000000000000000000000000..577e1bb61eb95dcea7ab91d3c20b4b6c2adbe3c1
GIT binary patch
literal 9952
zcmd^_dvH|M8Nlx@OIRR4NDc@A$?^t82;t384G^A!phXd<$|DH^1*ALz_~HOb06}3C
zQM9835h@0Pl`5#X6lv>BsTJ!3wN9ahX?2_|^}$=x-*?Zw<gncZ)Ia)1GjrxU_k7>^
z-rsl5y&K1IoY`}y_wJh0W72h9$7grW?%Xw!-Lp&A9$j*>!O7n&#?!SOr~L)W$n3(R
z&J!auCgw*b&Mb(`nzAr5BY$3G^3>Tg=1-hm7@0M3ZvK=={yhbSk(_RQd-Uwvy|?r5
z)50s@IJx^8WNF9gzz8$yFj5)y8EK4khGH~kG+|^inloB3B8*myHjH+<hT|M|oD{9$
zSIyJO9atwzx6v8e>7{h%T^Tw6za@3E^cwgJuJHzNtfhNU32dTtnno_Ltq1#hFwcWa
zJ@{|}nEsK{^K+GM0UX!g!1WW9&Rb-7s!XMG*C-u$)I4W4Gc;}6C@r`w_8se|^jYSj
zg9APh&)x8B$)2m4U(8qbbYe~9$MbC9(PjXH-~%5hJsUoOVxEr!H^D1S>6yy#oL^Vz
z8qnQ2S?TKw(XD`Wp7&2ux@4l#li4fs?r6;3-!lIrgZ+b=8oJG%%@1h!C%{i_tMu*Q
zgon_C63}e2ctqmxqFdC$=O)0vY2kGO{2sx3>tXmcv1}4sPT&jmuG0TFXl%PJL+P5(
zy*b|KJ+6_`?Z}&|Dy7?au$2cRz_H*{fb;QD2sjU)27zwefFa@=20B^F&But7JRcV=
zHZosaV&JKz2Idhz@!=Q`j`Lt4upu!?eV&|#Hh|tmxx_S;QJXzHFU8(0o}GHE9j~5?
z?GMyp9XJx0?#1>l=8~hu*dN3vx%ftCWL@~}WL@NZ4d0CS4XzisG;5v#uW*^c4FDI$
zt~wi_c|mEtMd{)29cu9vez%fy!hbIO+vOvhc`fF3wD`4}SBU3;^&H??><wb?->VFr
zZ^Mi155IQt+R8<&J!SZcj2`5DJxh0m?w6A%wj{E{_fHD82=5`^Q-6tZ0rrT^^(~zu
zyDzq(9KMnD7q6|tF7e}>2?jPEaCti-N#YwSq4(g2z;o3y#I|RV8z9d@%n#=(y^j4O
ztvLGjxAJmn2C;WzLyhEaX8t%iumate!51EWZU(H}l)0aqlDDdX(yigQcePn>3(wq&
z>iJ%1G&HhDaC<GBpSR+d$~&oF_+)u}Bu8X@CVp#3t~T1p^CoPgrXu8MTWBxnUTSm~
zego?oS*0EnK35u_cJTCdk{VlrKO0gTHJ2E<?ZJnvxZ6GoT0WAw@R9mWL)Va1Ya#f>
z*GB|=gRRhlE5^<cc1jLEM*IdRh+hZvNb`95b^j}Lb@z*|vY#AHBaWe6aW>)4(347c
zjI*^w_M>Ygj=m832=v!LzXqAMem_CK;c@!qbys>Ac0{maLxTJj{LSE{{%%HQ7x)IP
zJeD&cpY?{8pM&IdZR`0;<7vn8Ie4x??j|pm;-7Gwt<Pa=7+a;zyM@R(bPLnF?Kmf^
z1(79v`f@ed2%n6K^O^K)yH_{%Vw0#or8e({#|U`%^>-EYKeqnfnP}|XNgXzUUwmyz
z&54bEeM#PZSoPoa`UpPkT4wV319G4ixhQ+({0kH3FtBL?{x<I)QoEU+&qOb~c7Ny9
zL$Ek`Ei{YUd%0R@F7)K7-yf6KK7R1)MdbVWD0`(|uZE9?CWw#XaZ*3u66axYxgzz`
z5}W+``JuHCip%R{_Ydhqe%-h}MAu|>b1n9Ciu0x1Q~djcoXOW&c=5wp@Zm|up7zYY
z&wWC4`@D*G3*mVM@$masN)mr3>sJq0{{CO|s}yqQO8Qkce$docSIfsz3#H=Y$H@O*
z)1O|h&NVq-H-ZbY7UF#<hkaqI&-N$(2FB%|^eVYu92jAIz8EOE_{;>}o1mBbhTLQQ
zxt-Ut*N#)NUMlBS{Qa~B^$=N1UwO#f2SUUom)a5ja)-?YCw=k8MEbJV)?*8LTxs3>
zkn=u(E&=q5Kld+n&JRhTccL?1`bDC1SA5$Bzsni!*R1$RW4qi3;_Vk7U#Sly_oN3D
z!%uQiV%V}jHUi~6BU!9PMj~CVRBpGpJic6C?hd^x4<Gq`*S7lwd?Y&mbc(UT@88LK
zpKo&y_|~%OA`M^oz7=^=4~+%@Ip1t~yO8%*vKpdJ#gDb|V+-Qe6B+523>TMgYU>a1
zmKbQ{YGNRF;LE)Ox#u_UT%w=fe{J33YcbgwcIyG9ds%+nv=P~oPw3vC*vr|KEFW!o
z;(O^6zX0}zUmNUL4ll7u^4!0(Uf_$3jVym8lhMc0Z9@Xxq$eb*ExF@OsA+nM<6w_9
zzWob#l=n<5yYl`bchcw4Ti!wHgUgJ=eNLQ&rVtu|Jr`BSrw98(n!MX!_{p=p6ARsw
zx%dSA0&7jrtReHAhOWKH#V_JR*(2}hl6PzITM#`&|4-{G{Y&&oi_=GRO|~xle4BpL
z5qt2n=rWu=?tK!xPg9%qP1usP#>i`p9s}{W+=-=**7sx|`{gbnXRGgj$vHQFTPpnp
zK6dXn=qvLz>^}~l4Gh<Y6s4=M`<8bN-zI*~u=ol6XpcTdPWyQ!bvLWC(x1RX<lTx5
zsV^A5gIKFymZ9^2sld;r7Jxz<1|C6|6yQ;O7y|YPp(n6^fc?N3LCH(LD>+Kv&$r9-
zB}zXCEam;Rf^SLdOF36%eoX1p%$LdhUZwjkC$D9GyVBEFD!q~%4&KlAM`)Z*O7|OW
z?#=DXl|F(`&J)iL+mwDE`--72MQ*1&=#VQkmFT-3n(gRSiH<U_0Qc9{N}oB+ct`2j
zS-w{;<XhZ+zAwRJIy}l}U{?q7irffpCtkoqdzAjTDLE7~Gz*}K)lmAO0%+iw3?H1U
z^q*!E1N4c(yD#+5qEGCo(hCM73m(CUkyAw+V^zfT38jC3Ug_@`Ss})JrJJ|nTh1Wn
zL)nA85V^IM@2p|;6SxTeAHmCk_h57!D(}%*e9z>2=~SM_GUhU7qr;YeAp<#?&@`id
zo<ZJqwanfEcojkS1mj8JK@6@ITIl|~Lg{(n=T_h^{I}5aR~f#jiB9?mzTQA=(4$QA
ztqZ#Hr?}VP%hiXCZF|$qJPq5zd_Q!ce;XU+yT{vi6Z0s(Sf%t$(@jiPdop6kIE*h-
zmvZ)Qg9aJpJjV`T1Nv_(Vr@L{g7`!1&1U4lKek`#qxkvkYUGk{|2&6ZnWwRDdqbrU
z?m}0GSZ5g>qN9{v<;mQClcx{#Gtfu;w-h_Jr9vO!8DAbKH@+%D)_C;V&RPt6VpHjl
zUEz;D%UG+>e3NKJzMn#uGkjl%mlj?byvMgC@5OHXBytMC<)P1N{Ml?bGzG+96f_?a
z<7>IIFE_Hc&B2G%gu546_w!uClNTkIu7z$6vJbO9VhQ(-6MUCBieE=4-QB~*sIMx%
zT}iHm@QttELUeHXqKEKp1<b+L7;>WNJhNYF<wJb*+G^hU!S@q<3-B47dmcUp{?Iy8
zJ1#$LmDt+z#*OhCd(!`gKhfWpI|sRvhv%!5KKC8p?D6YzWR#Dg55oT;nLn!ZXRo1)
z%qy`4-a+C}zMdR#4E<a0lV|wJKBp4RcS2wJC3%mpq)((PY$0BEdiiiWIVick3wr|{
zO+IZPe}+Lj1U;AH+hh2o206MfO3jQ{`Xs)stf};S*l-BCn#7=C7Uw7QZmwq=f4K8*
zCjK2xdN`iNR~^{n<K?*^)zrAVHo?%WKyDD5BYl)!QNbC3&xg?qF6f2tYW_&QI>zbM
z@ltx_UqUZ*y`UF8y4H`>>zX*duDO(6lN0L|!(T^-P*3Qxls*yV%p1Q?>Bs4JHQ`@H
zZaJI-Cl1kriD!)75ykh}UT#Fm^KRb!BzY30PW|T-;OysAo?`{9(U+!rdxEU3r@!{W
zHx&`SKg*mro}!-QtdjoOn_Sx_ac*zwd?olSXk*wEEo6?q>*DqO1RVNyNrd~9z2LIo
zSx@X4Kn;8PNZmGLJ*!4FuBU~|jKlTuaN>s>_9fS2R3cmgJqB5_;`O+}!o}+`z{0(I
zoAFN++itS-8*0sO^yWv<dqD|)r7r6XCFUKdCFTM8dVBgw)(!O0Jn9yj68ds<BHv)W
zy@%O5*<a@j8)L0c_t(jZvDW%*f1Mt8hoyt`7H1qaPtM7CRYA-<fft$0783uK{GQp%
zoDU`B#F0sS^M#k&3vM>K?XFKDxBPYbrSuJVeWud)`0Hb>^|_qw{`wteUCy6z$Uo`O
z*YJnvHhjA!n;b6m_t>(hDgASQ-IhIzcNl-&mR-c}&i?u(WTzrqbn1gn<@B>q7oIEe
z7tj9rReqea;t|g9a%h+zKSK@qbNYfqEZud^yL0~fH%foy&)KuXpChl_pKqm)Gv6UR
z+i<tvq4Z1s{H1C=<h~?lM-hFvoVtAd3wp#R?te3RcV^ti7{~Y-V?1LLqmWVlF??q!
zJq;OmaaVq|HMs`-l(<X+u4+f$2Oc92OM#<Xakc^LE6zdSx}Mk!oP*rnK)HL%{|lsf
z|1VHboS};=(2euHq?jS|4BnsdyF1^_9lF%JiwDU2W$;0l3hMv$-prv7zQy<L!O%yU
z^WEsxG2T3lZ|Ka$_Gkn8IXp)NnNvsddz;M1Q5R+SE1d1^sb}`2Y_ER4z>nD8J&HbD
zX6{pE{Kgi9Pa3qx$8m3BJ=z!@J>F&TZibF^!ApKbtGF{@qsZNk4$-U3^BB?TRqkKl
zWWJqw8GSxwG`5RPXN^uFY;}fkM<Q3YaqpOw!f$o(-i-dc@M{k50(-DyE2ERl55T7r
zJ);)7eQEBI6({)yor{hKJ^MCsC&wn&cUz2{20o7565L49ZyGXv|6$k3)vSF+-dSs>
zytS9DwbS0(E7sZ>)()~aiq2cT^&tM3Hqz4r`^3+yvHde_cXiugt#Kc8*Iu^PzVp^z
zvDT<1->wTWBt|mtS3z%#m>S(fomTojW1c&UTo(Vm&79m@?#+YC`Hih9@z`kMzmXj5
z%!v1w8*BXR`|Aj{iEn&6#HTLJX{CK%361#0rNIWF=|pUuxLCOR@QKa)oWBnrUEqyB
zY~JU68jp9W<kf@5SB{_0ZMn~r<F1T<(|565a#eKuiv8}M1(uAjmA=oTk$f)eNUoD>
zZP44LU2OQvyYLatt8aWB^DG|Ua=uw|PWUwU8JgM^oOjek&KpX<LA;8tr&gJ7#y%&L
z^8kDPA9LBkFV1rM9zAszJth;FN9>vdE2-}mz|4O1ci>`r$t}PV>TLl~-m!~4m;=0l
lb;mLPw<Z76CGQ~a|9AnVS36#>ZlN=DOV)DvKQD*B{{TD%^0fc}

literal 0
HcmV?d00001

diff --git a/rtl_nic/rtl8125b-2.fw b/rtl_nic/rtl8125b-2.fw
new file mode 100644
index 0000000000000000000000000000000000000000..45b04434263d6d69a8e70e27ccf4843bd5f939a4
GIT binary patch
literal 3264
zcmb7GZBUd|6n<G2SXP1+u7s%Yiil{$0*WG05~-|Kew1lLs32fyii8{Xq4wk`p`wzS
znQo?zqh=^p+L$^?j^ao*qs=%@)=Wz}&eV^DKFqJQ=k9yoW|zrk+?g}axz9cKoO91T
z_wK7{npWeUlara1J>%i5=^5!6>6v=QP-kYgGb@90@>fl91Z&!h|61xb6}9Oz^tq*F
zdTCX;US0W`KDX=@edes1xeH2bD)j17cUh%gHm|%w&l;SYJv29axVCDu^cAFO`NyLY
zp=qfU8^unEphQv}lxT{e#8ToY@s!?_1d2{cq9jvNz?8h277Eax&8s2CYe9n73a2*|
z*<KsQd+m7E8-eG%k+8cR810Hip-aH-iA7jz99rD*Xm#~Qizfk=R{H)j2^}%XnB+}C
zTTLobT!S#cm4>!W>9o&4OHCGbx`v=-(@@&y&^{NvZF#hR3{kE5IN>h9nK2^~-Z>f(
ztuC~=$KsUhDYSXUA-r`0<2}P1CNbV*u795Ei?BYq7;C-L(BdtjpBd2I<!Euugzl-t
zNcU{o&7oZteu%C{?)(}Y?CZwS{<W~iyo&CfuOqtGLJaD&7?qj8#oQ(MICCkq_&VlT
z4=rW|Zgn<5uU(C*evOznU@h|E*JE4K1{{2RBYxVl372a<nCIGp%UiZG)^^6)ft0a3
z8EZF=jM+o3iQGPHFWgW4Q|bp;`_HK#qJEhAQTWaip|}!bL$u9~hU5rbjE;mp)`6{s
z(HP-7Yc2l?dm@q%gP>so>4%6s=Ox_|(a3X`bFo`v=uaS8p^z9S-~ju97_Tr{p;O^R
zg;NxkDXb)}J1cPF9M?Mpiem(<7X*$@C!QDRJZ<<r9VIZ~h(HKA%XVWfs)2JH%XK|_
z7<MjVwNqda{mv)OR(vthT<crITqlzIszsoMQp6k%Glw9?9@wAjEdsm9eL>E~crr$$
z&6r=AZ;UJK0>K@I{t|V$R@&*|2KG=GPF#~Dki(pUHVP!ru5_xhXC5+Eh|b#4?z>00
z7rBmntXh9kFb>zemC1GVvA4wVFKZ?F!>pCGKNTUcfjNJ~oP*CB+<I~;JfpjJ1(J#D
zI8Gv-B<e(&V<^$i9IV6_SQ87efT$5qvF<ja_9pWoI<$MAeIMo~^GLfNWd4mM0_P~j
zrv<`T&rhfqQMXc`OtcWk5vA{MG~)fNaTxWLYqNp`R&x)s77YqlD6Cglr*NslB}6CJ
zfp~_o8;QXj%Ub9h-|HUeF!GgsC}U?U%=;e<<GB@_<-T`t4fFmn+}P^@o-dXddPRvq
zf7;2KJVeZ=z4ZTPm_P^5bOOa{^7OHreJSfDeMq}>jyHeJ`|4-&MmNrNi6?D)vENNz
z-pNDkfw*0UpK**Axy`6$ghIPQo5E1y)3mb^<LJvmOq2N#7n64oqcnkqd}sRC2`nbo
zH48L9DzKd6da2J6c)MQd9sy4mz3!O6g)yuH{VZS)H!l(xFn}>Q4yiHFrttTdjqx>w
z0~Md9@Ii&~3i~MRu25Gf6gn05Q<$YNg?Qt-fcK`rXUn+n9OkrFV4ut{SRjLYn3*V0
zaaG_r^N*+g*9L)KLj=CPD{xWfeof6e1LwY1a~7`c&UFP3ur~BzDG*pxMI;~GtIOOd
zzq$A>b1q}fm&b^}SOIyA51hMa9#8tk>YB$mzqzh?Of=>uGk={uE%)Zz*Cd1Y=~Mjl
zB12!+E^u|LfQxlaWp7<&4SVT)BY8)&*#{%(XPH-^oi$(1v+()h+be73<5%--Hu(}i
ze!alECST^qZ{qzi`I!bU`}A0zzzD{u;u-H{pJt~TvDe7h?1dX^0%QC5n*z5?Ud8tD
zw*~$-c@^8o-x0WL@_w<~8G9RZ>dSf$W1l4sVegF;SV2zK=h#YtsVX-w??<D_zavoM
z$8RwC_XNuPc#p|{z`j-dKKe<_H{vvy^Q!{mtTp*{fpIpP{QH4%wwU~ffpOaTrpbF`
z9WLN(;ytk%<7SQjm*kp~`1buGaE)_K9n@LZ>!!|HYOINmXZ<=%{ttoQOnpD^rl}M6
zP_%74w+QyUS?{IBS*J9U|CzD=gV+BQsN-5+kMS;f*kh@TE$@8tVE+Fr{Yn=9i|9wY
zWxRdTmwfv|_$JD?@VXkG>1m8_s_~^%V|-hU3;AYC`#Wkpiv2&0;{^7732`*vof*U{
zDFWrhON?7bl>dMA3Rfs>P?$rMZ?gR6bEt1VO*6jv<oBR_SLOGiL}{Zbn*?&P<nsBA
IsCD`M1JTHBJpcdz

literal 0
HcmV?d00001

-- 
2.27.0


^ permalink raw reply related	[relevance 28%]

* Re: Unrecognized RTL8125 in r8169
       [not found]     <CAM-O=1A6og-E9YBLa59tvz+iZcTs5Qa2yX7kUC0O2VZbtNpNMA@mail.gmail.com>
@ 2020-06-03 19:43  5% ` Heiner Kallweit
  0 siblings, 0 replies; 107+ results
From: Heiner Kallweit @ 2020-06-03 19:43 UTC (permalink / raw)
  To: Eivind Uggedal; +Cc: netdev

On 03.06.2020 20:57, Eivind Uggedal wrote:
> Hi,
> 
> I saw you added the initial RTL8125 support in r8169.
> 
> I have a recent x570 motherboard (MSI x570 Tomahawk) with onboard RTL8125. With r8169 from 5.4 and 5.7 I get:
> 
>> unknown chip XID 641
> 
> from the r8169 driver since XID==641 does not match any of the mask/val in rtl8169_get_mac_version().
> 
> I did not see any relevant unmerged changes in the netdev-next tree.
> 
> I have a hard time following these "magic" masks/values and could not correlate them to anything in the Realtek oot r8125 driver. I have some C experience, but zero driver/low level experience.
> 
Thanks for the report. XID 641 is CFG_METHOD_5 = RTL8125B in the r8125 vendor driver.
This new chip version isn't supported yet by the r8169 driver. Typically I wait for
reports like yours because:
- Not every chip version in the vendor driver makes it to the market.
  Adding support for it would be wasted effort.
- I don't have hardware for testing. I need users like you for it ..

> I could try to just fallback to RTL_GIGIA_MAC_VER_60 or RTL_GIGIA_MAC_VER_61 locally, but ideally I'd like a proper patch that can be mainlined.
> 
This may or may not work, partially also depending on the link partner. Typically each
chip version needs it own quirks, therefore they are treated differently by the vendor driver.

> At least one other poor soul has the same issue: 
> https://forums.unraid.net/topic/92998-dhcp-networking-issue-v-683/
> 
> Seeing as this board had a world wide release just days ago maybe this is a new revision of the RTL8125 chipset?
> 
> Appreciate any pointers and help to debug it further!
> 
There is not really something to debug. I have to port all chip quirks from
the vendor driver and ask Realtek for a firmware file.
I'll put it on my roadmap, maybe it makes it into 5.9 or 5.10. Until then
you would have to use vendor driver r8125.

> Regards,
> Eivind Uggedal

Heiner

^ permalink raw reply	[relevance 5%]

Results 1-107 of 107 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
     [not found]     <CAM-O=1A6og-E9YBLa59tvz+iZcTs5Qa2yX7kUC0O2VZbtNpNMA@mail.gmail.com>
2020-06-03 19:43  5% ` Unrecognized RTL8125 in r8169 Heiner Kallweit
2020-06-15 18:57 28% [PATCH] rtl_nic: add firmware for RTL8125B Heiner Kallweit
2020-07-14 15:25 28% [PATCH] rtl_nic: update " Heiner Kallweit
2020-07-14 16:30  5% ` Hau
2020-07-14 15:43 12% [PATCH net-next 0/2] r8169: add support " Heiner Kallweit
2020-07-14 15:45 16% ` [PATCH net-next 1/2] net: phy: realtek: add support for RTL8125B-internal PHY Heiner Kallweit
2020-07-14 15:46 11% ` [PATCH net-next 2/2] r8169: add support for RTL8125B Heiner Kallweit
2020-07-14 22:10  5% ` [PATCH net-next 0/2] " David Miller
2020-08-06  1:55  1% [GIT] Networking David Miller
2020-08-22  7:27     missing support for certain realtek 8125-chip netdev
2020-08-22 14:52  5% ` Heiner Kallweit
2020-09-17  1:39  5% [PATCH] net: phy: realtek: Replace 2.5Gbps name from RTL8125 to RTL8226 Willy Liu
2020-09-30  6:48  5% [PATCH net v1] net: phy: realtek: Modify 2.5G PHY name " Willy Liu
2020-10-29 12:07     [PATCH net-next 1/2] net: phy: realtek: Add phy ids for RTL8226-CG/RTL8226B-CG Willy Liu
2020-10-29 13:37     ` Andrew Lunn
2020-10-29 13:48  5%   ` Heiner Kallweit
2020-10-30  2:45  0%     ` Willy Liu
     [not found]     <CAOKSTBtcsqFZTzvgF-HQGRmvcd=Qanq7r2PREB2qGmnSQZJ_-A@mail.gmail.com>
2020-11-02  3:36     ` Fwd: Problem with r8169 module Gilberto Nunes
2020-11-02  8:14       ` Heiner Kallweit
2020-11-02 13:20         ` Gilberto Nunes
2020-11-02 13:39           ` Heiner Kallweit
2020-11-02 16:29  4%         ` Gilberto Nunes
2020-11-02 16:50  0%           ` Heiner Kallweit
2020-11-03 17:52  6% [PATCH net] r8169: work around short packet hw bug on RTL8125 Heiner Kallweit
2020-11-05  1:45  0% ` Jakub Kicinski
2020-11-05 10:31  0%   ` Heiner Kallweit
2020-11-05 13:58  6% [PATCH net] r8169: disable hw csum for short packets and chip versions with hw padding bug Heiner Kallweit
2020-11-05 14:20  0% ` David Laight
2020-11-05 14:35  0%   ` Heiner Kallweit
2020-11-05 17:14  6% [PATCH v2 net] r8169: disable hw csum for short packets on all chip versions Heiner Kallweit
2020-11-07 20:16  0% ` Jakub Kicinski
2020-11-07 20:20  0% ` patchwork-bot+netdevbpf
2021-10-25 20:27     [PATCH] r8169: Add device 10ec:8162 to driver r8169 Heiner Kallweit
2021-10-26  6:47  5% ` Janghyub Seo
2022-01-24 18:19     [PATCH net-next 1/1] r8169: enable RTL8125 ASPM L1.2 Chunhao Lin
2022-01-25 21:53     ` Heiner Kallweit
2022-01-26 13:00  5%   ` Hau
2022-01-26 13:46  0%     ` Heiner Kallweit
2022-01-26 15:03  0%       ` Hau
2022-01-26 16:54  0%         ` Heiner Kallweit
2022-01-26 18:30  0%           ` Hau
2022-01-26 19:58  0%         ` Heiner Kallweit
2022-01-27  9:44  0%           ` Hau
2022-08-20 13:50     [PATCH net-next 0/5] r8169: remove support for few unused chip versions Heiner Kallweit
2022-08-20 13:52  4% ` [PATCH net-next 2/5] r8169: remove support for chip versions 45 and 47 Heiner Kallweit
2022-08-20 13:54  4% ` [PATCH net-next 5/5] r8169: remove support for chip version 60 Heiner Kallweit
2022-08-23 11:01     [PATCH net-next v2 0/5] r8169: remove support for few unused chip versions Heiner Kallweit
2022-08-23 11:03  4% ` [PATCH net-next v2 2/5] r8169: remove support for chip versions 45 and 47 Heiner Kallweit
2022-08-23 11:07  4% ` [PATCH net-next v2 5/5] r8169: remove support for chip version 60 Heiner Kallweit
2022-08-23 18:33     [PATCH net-next v3 0/5] r8169: remove support for few unused chip versions Heiner Kallweit
2022-08-23 18:35  4% ` [PATCH net-next v3 2/5] r8169: remove support for chip versions 45 and 47 Heiner Kallweit
2022-08-23 18:38  4% ` [PATCH net-next v3 5/5] r8169: remove support for chip version 60 Heiner Kallweit
2022-10-03  6:46  4% [PATCH net-next] r8169: fix rtl8125b dmar pte write access not set error Chunhao Lin
2022-10-04  0:05  5% ` Jakub Kicinski
2022-10-04  5:52  5%   ` Hau
2022-10-03  7:03  4% [PATCH net-next v2] " Chunhao Lin
2022-10-04  0:06  5% ` Jakub Kicinski
2022-10-04  8:10  4% [PATCH net] " Chunhao Lin
2022-10-04 20:14 11% ` Heiner Kallweit
2022-10-05  5:44  5%   ` Hau
2022-10-05 16:29  5% ` Heiner Kallweit
2022-10-06 14:23  5%   ` Hau
2022-10-08 21:53  5% ` Heiner Kallweit
2022-10-09  7:45  5% ` Heiner Kallweit
2022-10-12  7:59  5%   ` Hau
2022-10-12 19:33  5%     ` Heiner Kallweit
2022-10-13  6:04  5%       ` Hau
2022-10-15  8:18  5%         ` Heiner Kallweit
2022-10-17 17:23  5%           ` Hau
2022-10-17 19:38  5%             ` Heiner Kallweit
2022-10-20 18:01  5%               ` Hau
2022-10-24 18:02  5%               ` Hau
2022-12-23  7:43  4% [PATCH net v2] " Chunhao Lin
2022-12-23 10:39 11% ` Heiner Kallweit
2022-12-26 12:13  5%   ` Hau
2023-01-20 12:58  4% issue with ethernet gigabit ethernet card both on stable and rc kernels vmxevilstar
2023-01-20 21:09  0% ` Heiner Kallweit
2023-02-24 14:37  1% 4-port ASMedia/RealTek RTL8125 2.5Gbps NIC freezes whole system fk1xdcio
2023-04-24  2:36  5% Fw: [Bug 217362] New: Low performance on Realtek RTL8125 2.5Gb NIC using r8169 driver Stephen Hemminger
     [not found]     <533870578.436621.1683243397555.ref@mail.yahoo.com>
2023-05-04 23:36     ` r8125b ethernet hardware Richard Schneiderman
2023-05-05  5:30  5%   ` Heiner Kallweit
2023-05-10 22:53     [PATCH net-next 0/8] Improvements for RealTek 2.5G Ethernet PHYs Daniel Golle
2023-05-11  5:29     ` Heiner Kallweit
2023-05-11 11:44  4%   ` Daniel Golle
2023-09-18  6:14  1% BUG: KCSAN: data-race in rtl8169_poll Mirsad Todorovac
2023-10-29 11:04     [PATCH v4 1/5] r8169: Coalesce r8169_mac_ocp_write/modify calls to reduce spinlock stalls Mirsad Goran Todorovac
2023-10-29 11:04  4% ` [PATCH v4 4/5] r8169: Coalesce mac ocp commands for 8125 and 8125B start to reduce spinlock contention Mirsad Goran Todorovac
2023-10-30 21:53  0%   ` Jacob Keller
2023-10-29 18:35     [PATCH v5 1/7] r8169: Add r8169_mac_ocp_(write|modify)_seq helpers " Mirsad Goran Todorovac
2023-10-29 18:36  3% ` [PATCH v5 6/7] r8169: Coalesce mac ocp write and modify for 8125 and 8125B start to reduce spinlocks Mirsad Goran Todorovac
2023-10-30 14:02  0%   ` Heiner Kallweit
2023-10-30 15:02  0%     ` Mirsad Todorovac
2023-10-30 15:53  0%       ` Heiner Kallweit
2023-11-04 22:15     [PATCH net-next v6 0/5] Coalesce mac ocp write/modify calls to reduce spinlock contention Mirsad Goran Todorovac
2023-11-04 22:15  4% ` [PATCH net-next v6 4/5] r8169: Coalesce mac ocp commands for 8125 and 8125B start " Mirsad Goran Todorovac
2023-11-25 13:55  2% [BUG] r8169: deadlock when NetworkManager brings link up Ian Chen
2023-11-25 14:58  0% ` Heiner Kallweit
2023-11-25 17:36  0% ` Heiner Kallweit
     [not found]     <CANy-wRkkBwjGoBhKFDYhw7K_=xH853PTsv-oU0d8jXtmf7PcDQ@mail.gmail.com>
2023-11-26 10:35  0% ` Linux kernel 6.6.2: Dragon RTL8125BG network card stopped working Heiner Kallweit
2023-11-27 17:57  5% [PATCH net 0/2] r8169: fix PAUSE frames blasting issue ChunHao Lin
2023-11-27 17:57  4% ` [PATCH net 1/2] r8169: enable rtl8125b pause slot ChunHao Lin
2023-11-27 20:03 10%   ` Heiner Kallweit
2023-11-27 20:28  5%     ` Grant Grundler
2023-11-29 15:08  5%     ` Hau
2023-11-27 20:16  5% [PATCH net-next] r8169: remove multicast filter limit Heiner Kallweit
2023-11-29 15:53  4% [PATCH net v2] r8169: fix rtl8125b PAUSE frames blasting when suspended ChunHao Lin
2023-11-29 23:04  5% ` Jacob Keller
2023-11-29 23:40 10%   ` Grant Grundler
2023-11-30 22:25  5%     ` Jacob Keller
2023-12-02  4:14  5% ` Jakub Kicinski
2023-12-02  8:19  5% ` Heiner Kallweit
2023-12-02 19:30 10% ` patchwork-bot+netdevbpf
2023-12-07 19:28  4% [GIT PULL] Networking for v6.7-rc5 Jakub Kicinski
2023-12-20 15:55     [PATCH net-next 00/15] Realtek RTL822x PHY rework to c45 and SerDes interface switching Marek Behún
2023-12-20 16:20     ` Heiner Kallweit
2023-12-20 16:25       ` Marek Behún
2023-12-23 19:09         ` Heiner Kallweit
2023-12-25 10:28           ` Marek Behún
2023-12-26 12:46  6%         ` Heiner Kallweit
2024-01-02  7:44     [PATCH RFC net-next] net: pcs: pcs-mtk-lynxi fix mtk_pcs_lynxi_get_state() for 2500base-x Eric Woudstra
2024-01-02 12:10     ` Russell King (Oracle)
2024-01-02 12:55  5%   ` Eric Woudstra
2024-01-02 19:33  0%     ` Eric Woudstra
     [not found]     <ab516cfd-24e8-4761-93a3-49f96a4e6b8f@gmail.com>
2024-01-29 22:19  5% ` Kernel Module r8169 and the Realtek 8126 PCIe 5 G/bps WIRED ethernet adapter Heiner Kallweit
     [not found]     <edabbc1f-5440-4170-83a4-f436a6d04f76@gmail.com>
2024-01-30 16:34  0% ` Joe Salmeri
2024-01-30 19:59  0%   ` Heiner Kallweit
2024-01-31 16:14  0%     ` Joe Salmeri
2024-01-31 20:40  0%       ` Heiner Kallweit
2024-01-31 23:36  0%         ` Joe Salmeri
2024-02-01  7:09  0%           ` Heiner Kallweit
2024-02-01 21:38  5% [PATCH net-next] r8169: add support for RTL8126A Heiner Kallweit
2024-05-06 21:28  2% r8169: transmit queue timeouts and IRQ masking Ken Milmore
2024-05-08 21:14  0% ` Heiner Kallweit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).