SILI - Fix port re-insertion probe problems when coming out of DET_INIT
authorMatthew Dillon <dillon@apollo.backplane.com>
Thu, 18 Jun 2009 07:52:45 +0000 (00:52 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Thu, 18 Jun 2009 07:52:45 +0000 (00:52 -0700)
commit3c6bae9d0f544ed56e5fce6767e0792cc45a7a17
tree7641668f494502b695cb7f51b38f8c78e0813986
parenta35ddbb40e34b5aead875ab1c7b6ed9f8d9faa25
SILI - Fix port re-insertion probe problems when coming out of DET_INIT

* When a port is pulled we enter into a listen state where we program
  SCTL to the DET_INIT state to send a continuous stream of COMRESETs.

  When a port is plugged back in we clear the DET_INIT state.  However,
  we were not waiting nearly long enough for the PHY to renegotiate!
  It can take up to 4 seconds!

  Add a polling loop to wait for the PHY to renegotiate before we start
  the DEVRESET sequence.  If we start the sequence too early the PHY
  will still be unstable and the DEVRESET sequence or something following
  it will likely fail with a fatal error interrupt (usually error code 4).

* Reduce the physical port insertion delay to 7 seconds.  Leave the
  PM port insertion delay at 10 seconds.
sys/dev/disk/sili/sili.c
sys/dev/disk/sili/sili_pm.c