Re: [PATCH net-next 0/7] Polling be gone on LAN95xx

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi,
Op 27-04-2022 om 07:48 schreef Lukas Wunner:
Do away with link status polling on LAN95XX USB Ethernet
and rely on interrupts instead, thereby reducing bus traffic,
CPU overhead and improving interface bringup latency.

The meat of the series is in patch [5/7].  The preceding and
following patches are various cleanups to prepare for and
adjust to interrupt-driven link state detection.

Please review and test.  Thanks!

Lukas Wunner (7):
   usbnet: Run unregister_netdev() before unbind() again
   usbnet: smsc95xx: Don't clear read-only PHY interrupt
   usbnet: smsc95xx: Don't reset PHY behind PHY driver's back
   usbnet: smsc95xx: Avoid link settings race on interrupt reception
   usbnet: smsc95xx: Forward PHY interrupts to PHY driver to avoid
     polling
   net: phy: smsc: Cache interrupt mask
   net: phy: smsc: Cope with hot-removal in interrupt handler

  drivers/net/phy/smsc.c         |  28 +++---
  drivers/net/usb/asix_devices.c |   6 +-
  drivers/net/usb/smsc95xx.c     | 155 ++++++++++++++++-----------------
  drivers/net/usb/usbnet.c       |   6 +-
  4 files changed, 91 insertions(+), 104 deletions(-)


Tested-by: Ferry Toth <fntoth@xxxxxxxxx> (Intel Edison-Arduino)

(linux v5.17 + the series + usbnet: smsc95xx: Fix deadlock on runtime resume)

While testing I noted another problem. I have "DMA-API: debugging enabled by kernel config" and this (I guess) shows me before and after the patches:

------------[ cut here ]------------
DMA-API: xhci-hcd xhci-hcd.1.auto: cacheline tracking EEXIST, overlapping mappings aren't supported
WARNING: CPU: 0 PID: 24 at kernel/dma/debug.c:570 add_dma_entry+0x1d9/0x270
Modules linked in: mmc_block extcon_intel_mrfld sdhci_pci cqhci sdhci led_class mmc_core intel_soc_pmic_mrfld btrfs libcrc32c xor zlib_deflate raid6_pq zstd_c>
CPU: 0 PID: 24 Comm: kworker/0:1 Not tainted 5.17.0-edison-acpi-standard #1
Hardware name: Intel Corporation Merrifield/BODEGA BAY, BIOS 542 2015.01.21:18.19.48
Workqueue: usb_hub_wq hub_event
RIP: 0010:add_dma_entry+0x1d9/0x270
Code: ff 0f 84 97 00 00 00 4c 8b 67 50 4d 85 e4 75 03 4c 8b 27 e8 29 a4 52 00 48 89 c6 4c 89 e2 48 c7 c7 78 9d 7e 98 e8 b3 f7 b6 00 <0f> 0b 48 85 ed 0f 85 d3 >
RSP: 0018:ffffb2ce000d7ad0 EFLAGS: 00010286
RAX: 0000000000000000 RBX: 00000000ffffffff RCX: 0000000000000000
RDX: 0000000000000001 RSI: 00000000ffffffea RDI: 00000000ffffffff
RBP: ffff9dea81239a00 R08: ffffffff98b356c8 R09: 00000000ffffdfff
R10: ffffffff98a556e0 R11: ffffffff98a556e0 R12: ffff9dea87397180
R13: 0000000000000001 R14: 0000000000000206 R15: 0000000000046c59
FS:  0000000000000000(0000) GS:ffff9deabe200000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00005595807522e0 CR3: 0000000006be2000 CR4: 00000000001006f0
Call Trace:
 <TASK>
 dma_map_page_attrs+0xfc/0x240
 ? usb_hcd_link_urb_to_ep+0x6e/0xa0
 ? preempt_count_add+0x63/0x90
 usb_hcd_map_urb_for_dma+0x3f3/0x580
 usb_hcd_submit_urb+0x93/0xb90
 ? _raw_spin_lock+0xe/0x30
 ? _raw_spin_unlock+0xd/0x20
 ? usb_hcd_link_urb_to_ep+0x6e/0xa0
 ? prepare_transfer+0xff/0x140
 usb_start_wait_urb+0x60/0x160
 usb_control_msg+0xdc/0x140
 hub_ext_port_status+0x82/0x100
 hub_event+0x1b2/0x1880
 ? hub_activate+0x59c/0x880
 process_one_work+0x1d3/0x3a0
 worker_thread+0x48/0x3c0
 ? rescuer_thread+0x380/0x380
 kthread+0xe2/0x110
 ? kthread_complete_and_exit+0x20/0x20
 ret_from_fork+0x22/0x30
 </TASK>
---[ end trace 0000000000000000 ]---
DMA-API: Mapped at:
 debug_dma_map_page+0x60/0xf0
 dma_map_page_attrs+0xfc/0x240
 usb_hcd_map_urb_for_dma+0x3f3/0x580
 usb_hcd_submit_urb+0x93/0xb90
 usb_start_wait_urb+0x60/0x160
usb 1-1.1: new high-speed USB device number 3 using xhci-hcd
usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00, bcdDevice= 2.00
usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.1: Product: LAN9514
usb 1-1.1: Manufacturer: SMSC
usb 1-1.1: SerialNumber: 00951d0d

Any ideas on this?



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux