[Click] 7.x e1000 on click 1.6.0 w/ 2.6.19.2 kernel

Paine, Thomas Asa PAINETA at uwec.edu
Tue Oct 2 12:09:31 EDT 2007


Joonwoo,
        I'm not calling up and down from the OS after click is installed.  I'm simply disconnecting the network cables.  It appears to only be affecting the first link event.  Other polling nics continue to work (even if I pull and reconnect their cables).
        I added some debugging to the watchdog handlers, and the watchdog callback continues to get called for all nics after the first one goes down, but there is no more watchdog events for the first one (the first one can be any of the polling nics).  So, whatever nic goes down first doesn't ever get a chance to have its link detected, in the e1000_watchdog_1() function.

        Example (output below), I have eth0, eth1, and eth2 polling.  I pull the cable on eth2, you see it drop, but also see the watchdog events stop for eth2.  I then pull eth1 and you see it drop, however you can see the watchdog callbacks continue for eth1, thus its able to sense a link coming back up.  Why does the first link down event cause that Nic's watchdogs to stop?

e1000_poll_on
e1000_poll_on
e1000_poll_on
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog_1: NIC Link is Down
e1000: eth2: e1000_watchdog: called on polling adapter.
e1000: eth2: e1000_watchdog_1: NIC Link is Down
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth2: e1000_watchdog: called on polling adapter.
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog_1: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
e1000: eth2: e1000_watchdog: called on polling adapter.
e1000: eth2: e1000_watchdog_1: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
ToDevice eth0 rejected a packet!
chatter: sniffQueue :: Queue: overflow
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth2: e1000_watchdog: called on polling adapter.
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth2: e1000_watchdog: called on polling adapter.
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth2: e1000_watchdog: called on polling adapter.
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth2: e1000_watchdog: called on polling adapter.
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth2: e1000_watchdog: called on polling adapter.
ToDevice eth2 rejected a packet!
chatter: outFlows/outputQueue :: Queue: overflow
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth2: e1000_watchdog: called on polling adapter.
e1000: eth2: e1000_watchdog_1: NIC Link is Down

  < !!!! no more eth2 watchdog callbacks getting called !!!! >

e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog_1: NIC Link is Down

  < eth1 goes down, but the watchdogs continue, which is good >

e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog_1: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None

  < eth1 comes up, and processing continues >

e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.
e1000: eth0: e1000_watchdog: called on polling adapter.
e1000: eth1: e1000_watchdog: called on polling adapter.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
   Thomas Paine {paineta at uwec.edu)}
   University of Wisconsin - Eau Claire
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

From: Joonwoo Park [mailto:joonwpark81 at gmail.com]
Sent: Monday, October 01, 2007 9:12 PM
To: Paine, Thomas Asa
Cc: click at amsterdam.lcs.mit.edu
Subject: Re: [Click] 7.x e1000 on click 1.6.0 w/ 2.6.19.2 kernel

Hi Thomas,
It's seems you are using PollDevice, am I right?
I couldn't find that problem, which e1000 nic are you using? (eg 82546GB)
While looking for a problem that you posted, I've just found that ifconfig down & up doesn't work on a interface which is running PollDevice.
Maybe I think It can be related to your problem.

Thanks.
Joonwoo Park (Jason Park)
2007/10/2, Paine, Thomas Asa < PAINETA at uwec.edu>:
        In updating one of my click packages to run under Click 1.6.0 (git pulled this morning), and after swimming through the Changelogs for the last year, I got things up and running.  However I noticed that the Nic driver, if the link drops, will not recover unless the click module is removed.  My unit will be handling traffic, but when I pull a network cable, I'll see the watchdog message for the link going down, but it will not come back up until I remove the click kernel module.
        My production units are running under a ~12/2006 CVS release of 1.5.0 on a 2.6.16.13 kernel, and I *think a 6.x version of the e1000 driver, but they do not have the problem I described.  So, I'm not sure what changes prompted the problem I'm seeing.

  < disconnect network cable cable >
e1000: eth1: e1000_watchdog_1: NIC Link is Down
  < restore cable connection, but no further dmesg occurs >
  < run click-uninstall >
e1000_poll_off
e1000: eth1: e1000_watchdog_1: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
e1000_poll_off
e1000_poll_off
click: stopping router thread pid 1307
poll e0f7b360: 3684/920934 freed, 1437/460660 allocated
poll e0f7b580: 8779/5325393 freed, 8329/2658970 allocated
click module exiting
click error: 683 outstanding news

        Just thought I would post this in case there are some open issues that I'm not aware of and to get a thread started.  I'll be doing some more digging as well.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Thomas Paine {paineta at uwec.edu)}
   University of Wisconsin - Eau Claire
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



_______________________________________________
click mailing list
click at amsterdam.lcs.mit.edu
https://amsterdam.lcs.mit.edu/mailman/listinfo/click




More information about the click mailing list