Hi,
Stefan Wahren [off-list ref] hat am 1. Januar 2019 um 22:31 geschrieben:
Hi Woojung,
quoted
Woojung.Huh@microchip.com hat am 30. Dezember 2018 um 04:25 geschrieben:
HI Marc & Stephen,
Most of engineers are out until New Year's Day.
thanks. I didn't expect a reply that fast.
quoted
LAN78xx driver uses irq_domain for phy interrupt, but smsc95xx uses polling.
Need to check flow again, you can try that comment out "lan78xx_setup_irq_domain" to
make dev->domain_data.phyirq = 0 which forces PHY polling.
I tested your suggestion with multi_v7_defconfig (32 bit) and arm64/defconfig.
The warning disappeared and Ethernet is still working.
Only the old issue that we can't receive until a first packet has been send out reappear. But this should be manageable.
i got informed that the engineers are busy with other issues and come back later to this :-(
Since i'm getting requests to provide my PHY polling patch, here it is:
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index e96bc0c..a5bb292 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -2982,13 +2982,6 @@ static int lan78xx_bind(struct lan78xx_net *dev, struct usb_interface *intf)
dev->net->hw_features = dev->net->features;
- ret = lan78xx_setup_irq_domain(dev);
- if (ret < 0) {
- netdev_warn(dev->net,
- "lan78xx_setup_irq_domain() failed : %d", ret);
- goto out1;
- }
-
dev->net->hard_header_len += TX_OVERHEAD;
dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
@@ -2996,13 +2989,13 @@ static int lan78xx_bind(struct lan78xx_net *dev, struct usb_interface *intf)
ret = lan78xx_reset(dev);
if (ret) {
netdev_warn(dev->net, "Registers INIT FAILED....");
- goto out2;
+ goto out1;
}
ret = lan78xx_mdio_init(dev);
if (ret) {
netdev_warn(dev->net, "MDIO INIT FAILED.....");
- goto out2;
+ goto out1;
}
dev->net->flags |= IFF_MULTICAST;@@ -3011,9 +3004,6 @@ static int lan78xx_bind(struct lan78xx_net *dev, struct usb_interface *intf)
return ret;
-out2:
- lan78xx_remove_irq_domain(dev);
-
out1:
netdev_warn(dev->net, "Bind routine FAILED");
cancel_work_sync(&pdata->set_multicast);