Re: [PATCH] 3c59x: read current link status from phy

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

 



On Thu, 8 Sep 2005, Tommy Christensen wrote:

Besides, how long would you like to wait for network connectivity after plugging in the cable? It is now lowered from [60-120] to [0-60] seconds.

I now understood what the problem was, so I'll put it in words for posterity: the Link Status bit of the MII Status register needs to be read twice to first clear the error state (link bit=0) after which the bit reports the actual value of the link. From the manual:

	This bit has a latching function. A link failure causes the
	bit to clear and remain clear until it has been read through
	the management interface.

I tested this on a Tornado chip and it works as advertised (after link is back up, first read gives 0x7829, the second 0x782d).

But I still don't agree with your solution: you are reading the Status register twice in all cases, which is wrong. What you want is to read it a second time only after the link was marked as down: a simple check if bit 2 of the Status register is 0, in which case you issue the second read. This still means that there will be 2 reads if the link remains down, but at least there is only 1 read for the case where the link is up and remains up.

Personally, I'd prefer the delay to be < 10 seconds.

If you sample every 60 seconds ? Teach Shannon how to do it ;-)

If you mean to reduce the sampling period, there is a very good reason not to do it: these MDIO operations are expensive - it's a serial protocol. vortex_timer() might do 2 (and with the discussed change - 3) of them - there are better things to do for the CPU than wait for these I/O operations. Plus, vortex_timer() also disables the interrupt...

The Tornado and at least some Cyclone chips support generating an interrupt whenever the link changes, which can be used instead of polling for link state. This feature is not used in the 3c59x driver and could give you much less than 10 seconds accuracy - but you have to code it. ;-)

--
Bogdan Costescu

IWR - Interdisziplinaeres Zentrum fuer Wissenschaftliches Rechnen
Universitaet Heidelberg, INF 368, D-69120 Heidelberg, GERMANY
Telephone: +49 6221 54 8869, Telefax: +49 6221 54 8868
E-mail: [email protected]
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux