summaryrefslogtreecommitdiffstats
path: root/sys/pci/if_pcn.c
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2000-10-06 22:54:41 +0000
committerwpaul <wpaul@FreeBSD.org>2000-10-06 22:54:41 +0000
commit3ecf4cf9c09890bd8fa59178d69a1d2b5b63dbc7 (patch)
treeec57a8f0b9ae02f79ace0b8f82fcb546c2a51e09 /sys/pci/if_pcn.c
parentcdfbe64542a0b3e83f9d3b59e099f27fdb103b6d (diff)
downloadFreeBSD-src-3ecf4cf9c09890bd8fa59178d69a1d2b5b63dbc7.zip
FreeBSD-src-3ecf4cf9c09890bd8fa59178d69a1d2b5b63dbc7.tar.gz
When leaving suspend mode after enabling/disabling the promisc mode bit,
make sure the chip is restarted by issuing a start command to the command register. Sometimes the receiver doesn't restart after leaving suspend mode.
Diffstat (limited to 'sys/pci/if_pcn.c')
-rw-r--r--sys/pci/if_pcn.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/pci/if_pcn.c b/sys/pci/if_pcn.c
index 89f612a..49241bd 100644
--- a/sys/pci/if_pcn.c
+++ b/sys/pci/if_pcn.c
@@ -1228,6 +1228,8 @@ static int pcn_ioctl(ifp, command, data)
PCN_MODE_PROMISC);
PCN_CSR_CLRBIT(sc, PCN_CSR_EXTCTL1,
PCN_EXTCTL1_SPND);
+ pcn_csr_write(sc, PCN_CSR_CSR,
+ PCN_CSR_INTEN|PCN_CSR_START);
} else if (ifp->if_flags & IFF_RUNNING &&
!(ifp->if_flags & IFF_PROMISC) &&
sc->pcn_if_flags & IFF_PROMISC) {
@@ -1237,6 +1239,8 @@ static int pcn_ioctl(ifp, command, data)
PCN_MODE_PROMISC);
PCN_CSR_CLRBIT(sc, PCN_CSR_EXTCTL1,
PCN_EXTCTL1_SPND);
+ pcn_csr_write(sc, PCN_CSR_CSR,
+ PCN_CSR_INTEN|PCN_CSR_START);
} else if (!(ifp->if_flags & IFF_RUNNING))
pcn_init(sc);
} else {
OpenPOWER on IntegriCloud