On 5/24/17 8:40 AM, Andrew Lunn wrote:
You need to prove this, that the link is not up. Any by link, we mean
both the copper and the SGMII link.
I can post the log of my iperf run showing that the, when
at803x_aneg_done() returns zero, no packets can go through. And then
after I change at803x_aneg_done() so that it returns BMSR_ANEGCOMPLETE,
then packets do go through. Is that the proof you're looking for?
The current work-around that we're using internally is to blacklist the
at803x driver. This forces the kernel to use the genphy driver instead.
Everything works when we do this.
at803x_aneg_done() is never called again, and so I think
the kernel is disabling the interface is some secret way.
Well, the driver has told the core that the link is not up. So the
kernel is waiting for another interrupt indicating the link has gone
up. And probably, this second interrupt never happens.
Exxactly. That's because the link IS up, and so there is no opportunity
to receive another interrupt.
And it is not disabling the interface. Since the PHY is still down,
the core has not called netif_carrier_on().
Ok, I should have said "not enabled" instead of "disabled". Thanks.
--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the
Code Aurora Forum, hosted by The Linux Foundation.