MFC r200798,200801,200803-200804,200808,200810

r200798:
  Use ANSI function definations.

r200801:
   o Remove unnecessary return statement.
   o Remove register keyword.

r200803:
  s/u_intXX_t/uintXX_t/g

r200804:
  Remove trailing white spaces.

r200808:
  style(9)

r200810:
  Sort function prototyes.
This commit is contained in:
Pyun YongHyeon 2010-01-14 20:47:49 +00:00
parent 699df0c4fa
commit 41c95608a0
2 changed files with 219 additions and 301 deletions

View file

@ -91,45 +91,44 @@ static struct ste_type ste_devs[] = {
{ 0, 0, NULL }
};
static int ste_probe(device_t);
static int ste_attach(device_t);
static int ste_detach(device_t);
static void ste_init(void *);
static void ste_init_locked(struct ste_softc *);
static void ste_intr(void *);
static void ste_rxeoc(struct ste_softc *);
static int ste_rxeof(struct ste_softc *);
static void ste_txeoc(struct ste_softc *);
static void ste_txeof(struct ste_softc *);
static void ste_stats_update(void *);
static void ste_stop(struct ste_softc *);
static void ste_reset(struct ste_softc *);
static int ste_ioctl(struct ifnet *, u_long, caddr_t);
static int ste_encap(struct ste_softc *, struct ste_chain *, struct mbuf *);
static void ste_start(struct ifnet *);
static void ste_start_locked(struct ifnet *);
static void ste_watchdog(struct ste_softc *);
static int ste_shutdown(device_t);
static int ste_newbuf(struct ste_softc *, struct ste_chain_onefrag *,
struct mbuf *);
static int ste_ifmedia_upd(struct ifnet *);
static void ste_ifmedia_upd_locked(struct ifnet *);
static void ste_ifmedia_sts(struct ifnet *, struct ifmediareq *);
static int ste_attach(device_t);
static int ste_detach(device_t);
static int ste_probe(device_t);
static int ste_shutdown(device_t);
static void ste_mii_sync(struct ste_softc *);
static void ste_mii_send(struct ste_softc *, u_int32_t, int);
static int ste_mii_readreg(struct ste_softc *, struct ste_mii_frame *);
static int ste_mii_writereg(struct ste_softc *, struct ste_mii_frame *);
static int ste_miibus_readreg(device_t, int, int);
static int ste_miibus_writereg(device_t, int, int, int);
static void ste_miibus_statchg(device_t);
static int ste_eeprom_wait(struct ste_softc *);
static int ste_read_eeprom(struct ste_softc *, caddr_t, int, int, int);
static void ste_wait(struct ste_softc *);
static void ste_setmulti(struct ste_softc *);
static int ste_init_rx_list(struct ste_softc *);
static void ste_init_tx_list(struct ste_softc *);
static int ste_eeprom_wait(struct ste_softc *);
static int ste_encap(struct ste_softc *, struct ste_chain *, struct mbuf *);
static int ste_ifmedia_upd(struct ifnet *);
static void ste_ifmedia_upd_locked(struct ifnet *);
static void ste_ifmedia_sts(struct ifnet *, struct ifmediareq *);
static void ste_init(void *);
static void ste_init_locked(struct ste_softc *);
static int ste_init_rx_list(struct ste_softc *);
static void ste_init_tx_list(struct ste_softc *);
static void ste_intr(void *);
static int ste_ioctl(struct ifnet *, u_long, caddr_t);
static int ste_mii_readreg(struct ste_softc *, struct ste_mii_frame *);
static void ste_mii_send(struct ste_softc *, uint32_t, int);
static void ste_mii_sync(struct ste_softc *);
static int ste_mii_writereg(struct ste_softc *, struct ste_mii_frame *);
static int ste_miibus_readreg(device_t, int, int);
static void ste_miibus_statchg(device_t);
static int ste_miibus_writereg(device_t, int, int, int);
static int ste_newbuf(struct ste_softc *, struct ste_chain_onefrag *,
struct mbuf *);
static int ste_read_eeprom(struct ste_softc *, caddr_t, int, int, int);
static void ste_reset(struct ste_softc *);
static void ste_rxeoc(struct ste_softc *);
static int ste_rxeof(struct ste_softc *);
static void ste_setmulti(struct ste_softc *);
static void ste_start(struct ifnet *);
static void ste_start_locked(struct ifnet *);
static void ste_stats_update(void *);
static void ste_stop(struct ste_softc *);
static void ste_txeoc(struct ste_softc *);
static void ste_txeof(struct ste_softc *);
static void ste_wait(struct ste_softc *);
static void ste_watchdog(struct ste_softc *);
#ifdef STE_USEIOSPACE
#define STE_RES SYS_RES_IOPORT
@ -194,16 +193,15 @@ SYSCTL_INT(_hw_ste, OID_AUTO, rxsyncs, CTLFLAG_RW, &ste_rxsyncs, 0, "");
#define MII_SET(x) STE_SETBIT1(sc, STE_PHYCTL, x)
#define MII_CLR(x) STE_CLRBIT1(sc, STE_PHYCTL, x)
#define MII_CLR(x) STE_CLRBIT1(sc, STE_PHYCTL, x)
/*
* Sync the PHYs by setting data bit and strobing the clock 32 times.
*/
static void
ste_mii_sync(sc)
struct ste_softc *sc;
ste_mii_sync(struct ste_softc *sc)
{
register int i;
int i;
MII_SET(STE_PHYCTL_MDIR|STE_PHYCTL_MDATA);
@ -213,20 +211,15 @@ ste_mii_sync(sc)
MII_CLR(STE_PHYCTL_MCLK);
DELAY(1);
}
return;
}
/*
* Clock a series of bits through the MII.
*/
static void
ste_mii_send(sc, bits, cnt)
struct ste_softc *sc;
u_int32_t bits;
int cnt;
ste_mii_send(struct ste_softc *sc, uint32_t bits, int cnt)
{
int i;
int i;
MII_CLR(STE_PHYCTL_MCLK);
@ -247,12 +240,9 @@ ste_mii_send(sc, bits, cnt)
* Read an PHY register through the MII.
*/
static int
ste_mii_readreg(sc, frame)
struct ste_softc *sc;
struct ste_mii_frame *frame;
ste_mii_readreg(struct ste_softc *sc, struct ste_mii_frame *frame)
{
int i, ack;
int i, ack;
/*
* Set up frame for RX.
@ -261,7 +251,7 @@ ste_mii_readreg(sc, frame)
frame->mii_opcode = STE_MII_READOP;
frame->mii_turnaround = 0;
frame->mii_data = 0;
CSR_WRITE_2(sc, STE_PHYCTL, 0);
/*
* Turn on data xmit.
@ -299,7 +289,7 @@ ste_mii_readreg(sc, frame)
* need to clock through 16 cycles to keep the PHY(s) in sync.
*/
if (ack) {
for(i = 0; i < 16; i++) {
for (i = 0; i < 16; i++) {
MII_CLR(STE_PHYCTL_MCLK);
DELAY(1);
MII_SET(STE_PHYCTL_MCLK);
@ -328,18 +318,15 @@ fail:
DELAY(1);
if (ack)
return(1);
return(0);
return (1);
return (0);
}
/*
* Write to a PHY register through the MII.
*/
static int
ste_mii_writereg(sc, frame)
struct ste_softc *sc;
struct ste_mii_frame *frame;
ste_mii_writereg(struct ste_softc *sc, struct ste_mii_frame *frame)
{
/*
@ -349,7 +336,7 @@ ste_mii_writereg(sc, frame)
frame->mii_stdelim = STE_MII_STARTDELIM;
frame->mii_opcode = STE_MII_WRITEOP;
frame->mii_turnaround = STE_MII_TURNAROUND;
/*
* Turn on data output.
*/
@ -375,16 +362,14 @@ ste_mii_writereg(sc, frame)
*/
MII_CLR(STE_PHYCTL_MDIR);
return(0);
return (0);
}
static int
ste_miibus_readreg(dev, phy, reg)
device_t dev;
int phy, reg;
ste_miibus_readreg(device_t dev, int phy, int reg)
{
struct ste_softc *sc;
struct ste_mii_frame frame;
struct ste_softc *sc;
struct ste_mii_frame frame;
sc = device_get_softc(dev);
@ -397,16 +382,14 @@ ste_miibus_readreg(dev, phy, reg)
frame.mii_regaddr = reg;
ste_mii_readreg(sc, &frame);
return(frame.mii_data);
return (frame.mii_data);
}
static int
ste_miibus_writereg(dev, phy, reg, data)
device_t dev;
int phy, reg, data;
ste_miibus_writereg(device_t dev, int phy, int reg, int data)
{
struct ste_softc *sc;
struct ste_mii_frame frame;
struct ste_softc *sc;
struct ste_mii_frame frame;
sc = device_get_softc(dev);
bzero((char *)&frame, sizeof(frame));
@ -417,15 +400,14 @@ ste_miibus_writereg(dev, phy, reg, data)
ste_mii_writereg(sc, &frame);
return(0);
return (0);
}
static void
ste_miibus_statchg(dev)
device_t dev;
ste_miibus_statchg(device_t dev)
{
struct ste_softc *sc;
struct mii_data *mii;
struct ste_softc *sc;
struct mii_data *mii;
sc = device_get_softc(dev);
@ -436,30 +418,26 @@ ste_miibus_statchg(dev)
} else {
STE_CLRBIT2(sc, STE_MACCTL0, STE_MACCTL0_FULLDUPLEX);
}
return;
}
static int
ste_ifmedia_upd(ifp)
struct ifnet *ifp;
ste_ifmedia_upd(struct ifnet *ifp)
{
struct ste_softc *sc;
struct ste_softc *sc;
sc = ifp->if_softc;
STE_LOCK(sc);
ste_ifmedia_upd_locked(ifp);
STE_UNLOCK(sc);
return(0);
return (0);
}
static void
ste_ifmedia_upd_locked(ifp)
struct ifnet *ifp;
ste_ifmedia_upd_locked(struct ifnet *ifp)
{
struct ste_softc *sc;
struct mii_data *mii;
struct ste_softc *sc;
struct mii_data *mii;
sc = ifp->if_softc;
STE_LOCK_ASSERT(sc);
@ -474,12 +452,10 @@ ste_ifmedia_upd_locked(ifp)
}
static void
ste_ifmedia_sts(ifp, ifmr)
struct ifnet *ifp;
struct ifmediareq *ifmr;
ste_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
{
struct ste_softc *sc;
struct mii_data *mii;
struct ste_softc *sc;
struct mii_data *mii;
sc = ifp->if_softc;
mii = device_get_softc(sc->ste_miibus);
@ -489,15 +465,12 @@ ste_ifmedia_sts(ifp, ifmr)
ifmr->ifm_active = mii->mii_media_active;
ifmr->ifm_status = mii->mii_media_status;
STE_UNLOCK(sc);
return;
}
static void
ste_wait(sc)
struct ste_softc *sc;
ste_wait(struct ste_softc *sc)
{
register int i;
int i;
for (i = 0; i < STE_TIMEOUT; i++) {
if (!(CSR_READ_4(sc, STE_DMACTL) & STE_DMACTL_DMA_HALTINPROG))
@ -506,8 +479,6 @@ ste_wait(sc)
if (i == STE_TIMEOUT)
device_printf(sc->ste_dev, "command never completed!\n");
return;
}
/*
@ -515,10 +486,9 @@ ste_wait(sc)
* it a command.
*/
static int
ste_eeprom_wait(sc)
struct ste_softc *sc;
ste_eeprom_wait(struct ste_softc *sc)
{
int i;
int i;
DELAY(1000);
@ -531,10 +501,10 @@ ste_eeprom_wait(sc)
if (i == 100) {
device_printf(sc->ste_dev, "eeprom failed to come ready\n");
return(1);
return (1);
}
return(0);
return (0);
}
/*
@ -542,18 +512,13 @@ ste_eeprom_wait(sc)
* data is stored in the EEPROM in network byte order.
*/
static int
ste_read_eeprom(sc, dest, off, cnt, swap)
struct ste_softc *sc;
caddr_t dest;
int off;
int cnt;
int swap;
ste_read_eeprom(struct ste_softc *sc, caddr_t dest, int off, int cnt, int swap)
{
int err = 0, i;
u_int16_t word = 0, *ptr;
uint16_t word, *ptr;
int err = 0, i;
if (ste_eeprom_wait(sc))
return(1);
return (1);
for (i = 0; i < cnt; i++) {
CSR_WRITE_2(sc, STE_EEPROM_CTL, STE_EEOPCODE_READ | (off + i));
@ -561,24 +526,23 @@ ste_read_eeprom(sc, dest, off, cnt, swap)
if (err)
break;
word = CSR_READ_2(sc, STE_EEPROM_DATA);
ptr = (u_int16_t *)(dest + (i * 2));
ptr = (uint16_t *)(dest + (i * 2));
if (swap)
*ptr = ntohs(word);
else
*ptr = word;
*ptr = word;
}
return(err ? 1 : 0);
return (err ? 1 : 0);
}
static void
ste_setmulti(sc)
struct ste_softc *sc;
ste_setmulti(struct ste_softc *sc)
{
struct ifnet *ifp;
int h = 0;
u_int32_t hashes[2] = { 0, 0 };
struct ifmultiaddr *ifma;
struct ifnet *ifp;
struct ifmultiaddr *ifma;
uint32_t hashes[2] = { 0, 0 };
int h;
ifp = sc->ste_ifp;
if (ifp->if_flags & IFF_ALLMULTI || ifp->if_flags & IFF_PROMISC) {
@ -613,8 +577,6 @@ ste_setmulti(sc)
CSR_WRITE_2(sc, STE_MAR3, (hashes[1] >> 16) & 0xFFFF);
STE_CLRBIT1(sc, STE_RX_MODE, STE_RXMODE_ALLMULTI);
STE_SETBIT1(sc, STE_RX_MODE, STE_RXMODE_MULTIHASH);
return;
}
#ifdef DEVICE_POLLING
@ -650,7 +612,7 @@ ste_poll_locked(struct ifnet *ifp, enum poll_cmd cmd, int count)
ste_start_locked(ifp);
if (cmd == POLL_AND_CHECK_STATUS) {
u_int16_t status;
uint16_t status;
status = CSR_READ_2(sc, STE_ISR_ACK);
@ -675,12 +637,11 @@ ste_poll_locked(struct ifnet *ifp, enum poll_cmd cmd, int count)
#endif /* DEVICE_POLLING */
static void
ste_intr(xsc)
void *xsc;
ste_intr(void *xsc)
{
struct ste_softc *sc;
struct ifnet *ifp;
u_int16_t status;
struct ste_softc *sc;
struct ifnet *ifp;
uint16_t status;
sc = xsc;
STE_LOCK(sc);
@ -738,8 +699,6 @@ ste_intr(xsc)
ste_start_locked(ifp);
STE_UNLOCK(sc);
return;
}
static void
@ -770,20 +729,19 @@ ste_rxeoc(struct ste_softc *sc)
* the higher level protocols.
*/
static int
ste_rxeof(sc)
struct ste_softc *sc;
ste_rxeof(struct ste_softc *sc)
{
struct mbuf *m;
struct ifnet *ifp;
struct ste_chain_onefrag *cur_rx;
int total_len = 0, count=0, rx_npkts = 0;
u_int32_t rxstat;
struct mbuf *m;
struct ifnet *ifp;
struct ste_chain_onefrag *cur_rx;
uint32_t rxstat;
int total_len = 0, count = 0, rx_npkts = 0;
STE_LOCK_ASSERT(sc);
ifp = sc->ste_ifp;
while((rxstat = sc->ste_cdata.ste_rx_head->ste_ptr->ste_status)
while ((rxstat = sc->ste_cdata.ste_rx_head->ste_ptr->ste_status)
& STE_RXSTAT_DMADONE) {
#ifdef DEVICE_POLLING
if (ifp->if_capenable & IFCAP_POLLING) {
@ -824,7 +782,7 @@ ste_rxeof(sc)
continue;
}
/* No errors; receive the packet. */
/* No errors; receive the packet. */
m = cur_rx->ste_mbuf;
total_len = cur_rx->ste_ptr->ste_status & STE_RXSTAT_FRAMELEN;
@ -858,11 +816,10 @@ ste_rxeof(sc)
}
static void
ste_txeoc(sc)
struct ste_softc *sc;
ste_txeoc(struct ste_softc *sc)
{
u_int8_t txstat;
struct ifnet *ifp;
struct ifnet *ifp;
uint8_t txstat;
ifp = sc->ste_ifp;
@ -893,22 +850,19 @@ ste_txeoc(sc)
ste_init_locked(sc);
CSR_WRITE_2(sc, STE_TX_STATUS, txstat);
}
return;
}
static void
ste_txeof(sc)
struct ste_softc *sc;
ste_txeof(struct ste_softc *sc)
{
struct ste_chain *cur_tx;
struct ifnet *ifp;
int idx;
struct ifnet *ifp;
struct ste_chain *cur_tx;
int idx;
ifp = sc->ste_ifp;
idx = sc->ste_cdata.ste_tx_cons;
while(idx != sc->ste_cdata.ste_tx_prod) {
while (idx != sc->ste_cdata.ste_tx_prod) {
cur_tx = &sc->ste_cdata.ste_tx_chain[idx];
if (!(cur_tx->ste_ptr->ste_ctl & STE_TXCTL_DMADONE))
@ -928,12 +882,11 @@ ste_txeof(sc)
}
static void
ste_stats_update(xsc)
void *xsc;
ste_stats_update(void *xsc)
{
struct ste_softc *sc;
struct ifnet *ifp;
struct mii_data *mii;
struct ste_softc *sc;
struct ifnet *ifp;
struct mii_data *mii;
sc = xsc;
STE_LOCK_ASSERT(sc);
@ -963,8 +916,6 @@ ste_stats_update(xsc)
if (sc->ste_timer > 0 && --sc->ste_timer == 0)
ste_watchdog(sc);
callout_reset(&sc->ste_stat_callout, hz, ste_stats_update, sc);
return;
}
@ -973,14 +924,13 @@ ste_stats_update(xsc)
* IDs against our list and return a device name if we find a match.
*/
static int
ste_probe(dev)
device_t dev;
ste_probe(device_t dev)
{
struct ste_type *t;
struct ste_type *t;
t = ste_devs;
while(t->ste_name != NULL) {
while (t->ste_name != NULL) {
if ((pci_get_vendor(dev) == t->ste_vid) &&
(pci_get_device(dev) == t->ste_did)) {
device_set_desc(dev, t->ste_name);
@ -989,7 +939,7 @@ ste_probe(dev)
t++;
}
return(ENXIO);
return (ENXIO);
}
/*
@ -997,13 +947,12 @@ ste_probe(dev)
* setup and ethernet/BPF attach.
*/
static int
ste_attach(dev)
device_t dev;
ste_attach(device_t dev)
{
struct ste_softc *sc;
struct ifnet *ifp;
int error = 0, rid;
u_char eaddr[6];
struct ste_softc *sc;
struct ifnet *ifp;
u_char eaddr[6];
int error = 0, rid;
sc = device_get_softc(dev);
sc->ste_dev = dev;
@ -1132,7 +1081,7 @@ fail:
if (error)
ste_detach(dev);
return(error);
return (error);
}
/*
@ -1143,11 +1092,10 @@ fail:
* allocated.
*/
static int
ste_detach(dev)
device_t dev;
ste_detach(device_t dev)
{
struct ste_softc *sc;
struct ifnet *ifp;
struct ste_softc *sc;
struct ifnet *ifp;
sc = device_get_softc(dev);
KASSERT(mtx_initialized(&sc->ste_mtx), ("ste mutex not initialized"));
@ -1187,25 +1135,22 @@ ste_detach(dev)
mtx_destroy(&sc->ste_mtx);
return(0);
return (0);
}
static int
ste_newbuf(sc, c, m)
struct ste_softc *sc;
struct ste_chain_onefrag *c;
struct mbuf *m;
ste_newbuf(struct ste_softc *sc, struct ste_chain_onefrag *c, struct mbuf *m)
{
struct mbuf *m_new = NULL;
struct mbuf *m_new = NULL;
if (m == NULL) {
MGETHDR(m_new, M_DONTWAIT, MT_DATA);
if (m_new == NULL)
return(ENOBUFS);
return (ENOBUFS);
MCLGET(m_new, M_DONTWAIT);
if (!(m_new->m_flags & M_EXT)) {
m_freem(m_new);
return(ENOBUFS);
return (ENOBUFS);
}
m_new->m_len = m_new->m_pkthdr.len = MCLBYTES;
} else {
@ -1221,16 +1166,15 @@ ste_newbuf(sc, c, m)
c->ste_ptr->ste_frag.ste_addr = vtophys(mtod(m_new, caddr_t));
c->ste_ptr->ste_frag.ste_len = (1536 + ETHER_VLAN_ENCAP_LEN) | STE_FRAG_LAST;
return(0);
return (0);
}
static int
ste_init_rx_list(sc)
struct ste_softc *sc;
ste_init_rx_list(struct ste_softc *sc)
{
struct ste_chain_data *cd;
struct ste_list_data *ld;
int i;
struct ste_chain_data *cd;
struct ste_list_data *ld;
int i;
cd = &sc->ste_cdata;
ld = sc->ste_ldata;
@ -1238,7 +1182,7 @@ ste_init_rx_list(sc)
for (i = 0; i < STE_RX_LIST_CNT; i++) {
cd->ste_rx_chain[i].ste_ptr = &ld->ste_rx_list[i];
if (ste_newbuf(sc, &cd->ste_rx_chain[i], NULL) == ENOBUFS)
return(ENOBUFS);
return (ENOBUFS);
if (i == (STE_RX_LIST_CNT - 1)) {
cd->ste_rx_chain[i].ste_next =
&cd->ste_rx_chain[0];
@ -1255,16 +1199,15 @@ ste_init_rx_list(sc)
cd->ste_rx_head = &cd->ste_rx_chain[0];
return(0);
return (0);
}
static void
ste_init_tx_list(sc)
struct ste_softc *sc;
ste_init_tx_list(struct ste_softc *sc)
{
struct ste_chain_data *cd;
struct ste_list_data *ld;
int i;
struct ste_chain_data *cd;
struct ste_list_data *ld;
int i;
cd = &sc->ste_cdata;
ld = sc->ste_ldata;
@ -1283,15 +1226,12 @@ ste_init_tx_list(sc)
cd->ste_tx_prod = 0;
cd->ste_tx_cons = 0;
return;
}
static void
ste_init(xsc)
void *xsc;
ste_init(void *xsc)
{
struct ste_softc *sc;
struct ste_softc *sc;
sc = xsc;
STE_LOCK(sc);
@ -1300,11 +1240,10 @@ ste_init(xsc)
}
static void
ste_init_locked(sc)
struct ste_softc *sc;
ste_init_locked(struct ste_softc *sc)
{
int i;
struct ifnet *ifp;
struct ifnet *ifp;
int i;
STE_LOCK_ASSERT(sc);
ifp = sc->ste_ifp;
@ -1394,7 +1333,7 @@ ste_init_locked(sc)
/* Disable interrupts if we are polling. */
if (ifp->if_capenable & IFCAP_POLLING)
CSR_WRITE_2(sc, STE_IMR, 0);
else
else
#endif
/* Enable interrupts. */
CSR_WRITE_2(sc, STE_IMR, STE_INTRS);
@ -1408,16 +1347,13 @@ ste_init_locked(sc)
ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
callout_reset(&sc->ste_stat_callout, hz, ste_stats_update, sc);
return;
}
static void
ste_stop(sc)
struct ste_softc *sc;
ste_stop(struct ste_softc *sc)
{
int i;
struct ifnet *ifp;
struct ifnet *ifp;
int i;
STE_LOCK_ASSERT(sc);
ifp = sc->ste_ifp;
@ -1432,8 +1368,8 @@ ste_stop(sc)
STE_SETBIT2(sc, STE_DMACTL, STE_DMACTL_TXDMA_STALL);
STE_SETBIT2(sc, STE_DMACTL, STE_DMACTL_RXDMA_STALL);
ste_wait(sc);
/*
* Try really hard to stop the RX engine or under heavy RX
/*
* Try really hard to stop the RX engine or under heavy RX
* data chip will write into de-allocated memory.
*/
ste_reset(sc);
@ -1455,15 +1391,12 @@ ste_stop(sc)
}
bzero(sc->ste_ldata, sizeof(struct ste_list_data));
return;
}
static void
ste_reset(sc)
struct ste_softc *sc;
ste_reset(struct ste_softc *sc)
{
int i;
int i;
STE_SETBIT4(sc, STE_ASICCTL,
STE_ASICCTL_GLOBAL_RESET|STE_ASICCTL_RX_RESET|
@ -1481,25 +1414,20 @@ ste_reset(sc)
if (i == STE_TIMEOUT)
device_printf(sc->ste_dev, "global reset never completed\n");
return;
}
static int
ste_ioctl(ifp, command, data)
struct ifnet *ifp;
u_long command;
caddr_t data;
ste_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
{
struct ste_softc *sc;
struct ifreq *ifr;
struct mii_data *mii;
int error = 0;
struct ste_softc *sc;
struct ifreq *ifr;
struct mii_data *mii;
int error = 0;
sc = ifp->if_softc;
ifr = (struct ifreq *)data;
switch(command) {
switch (command) {
case SIOCSIFFLAGS:
STE_LOCK(sc);
if (ifp->if_flags & IFF_UP) {
@ -1513,7 +1441,7 @@ ste_ioctl(ifp, command, data)
sc->ste_if_flags & IFF_PROMISC) {
STE_CLRBIT1(sc, STE_RX_MODE,
STE_RXMODE_PROMISC);
}
}
if (ifp->if_drv_flags & IFF_DRV_RUNNING &&
(ifp->if_flags ^ sc->ste_if_flags) & IFF_ALLMULTI)
ste_setmulti(sc);
@ -1547,14 +1475,14 @@ ste_ioctl(ifp, command, data)
!(ifp->if_capenable & IFCAP_POLLING)) {
error = ether_poll_register(ste_poll, ifp);
if (error)
return(error);
return (error);
STE_LOCK(sc);
/* Disable interrupts */
CSR_WRITE_2(sc, STE_IMR, 0);
ifp->if_capenable |= IFCAP_POLLING;
STE_UNLOCK(sc);
return (error);
}
if (!(ifr->ifr_reqcap & IFCAP_POLLING) &&
ifp->if_capenable & IFCAP_POLLING) {
@ -1573,19 +1501,16 @@ ste_ioctl(ifp, command, data)
break;
}
return(error);
return (error);
}
static int
ste_encap(sc, c, m_head)
struct ste_softc *sc;
struct ste_chain *c;
struct mbuf *m_head;
ste_encap(struct ste_softc *sc, struct ste_chain *c, struct mbuf *m_head)
{
int frag = 0;
struct ste_frag *f = NULL;
struct mbuf *m;
struct ste_desc *d;
struct mbuf *m;
struct ste_desc *d;
struct ste_frag *f = NULL;
int frag = 0;
d = c->ste_ptr;
d->ste_ctl = 0;
@ -1623,14 +1548,13 @@ encap_retry:
d->ste_frags[frag - 1].ste_len |= STE_FRAG_LAST;
d->ste_ctl = 1;
return(0);
return (0);
}
static void
ste_start(ifp)
struct ifnet *ifp;
ste_start(struct ifnet *ifp)
{
struct ste_softc *sc;
struct ste_softc *sc;
sc = ifp->if_softc;
STE_LOCK(sc);
@ -1639,13 +1563,12 @@ ste_start(ifp)
}
static void
ste_start_locked(ifp)
struct ifnet *ifp;
ste_start_locked(struct ifnet *ifp)
{
struct ste_softc *sc;
struct mbuf *m_head = NULL;
struct ste_chain *cur_tx;
int idx;
struct ste_softc *sc;
struct ste_chain *cur_tx;
struct mbuf *m_head = NULL;
int idx;
sc = ifp->if_softc;
STE_LOCK_ASSERT(sc);
@ -1658,7 +1581,7 @@ ste_start_locked(ifp)
idx = sc->ste_cdata.ste_tx_prod;
while(sc->ste_cdata.ste_tx_chain[idx].ste_mbuf == NULL) {
while (sc->ste_cdata.ste_tx_chain[idx].ste_mbuf == NULL) {
/*
* We cannot re-use the last (free) descriptor;
* the chip may not have read its ste_next yet.
@ -1691,7 +1614,7 @@ ste_start_locked(ifp)
/* Set TX polling interval to start TX engine */
CSR_WRITE_1(sc, STE_TX_DMAPOLL_PERIOD, 64);
STE_SETBIT4(sc, STE_DMACTL, STE_DMACTL_TXDMA_UNSTALL);
ste_wait(sc);
}else{
@ -1712,14 +1635,12 @@ ste_start_locked(ifp)
sc->ste_timer = 5;
}
sc->ste_cdata.ste_tx_prod = idx;
return;
}
static void
ste_watchdog(struct ste_softc *sc)
{
struct ifnet *ifp;
struct ifnet *ifp;
ifp = sc->ste_ifp;
STE_LOCK_ASSERT(sc);
@ -1736,15 +1657,12 @@ ste_watchdog(struct ste_softc *sc)
if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
ste_start_locked(ifp);
return;
}
static int
ste_shutdown(dev)
device_t dev;
ste_shutdown(device_t dev)
{
struct ste_softc *sc;
struct ste_softc *sc;
sc = device_get_softc(dev);

View file

@ -96,7 +96,7 @@
#define STE_LATE_COLLS 0x75
#define STE_MULTI_COLLS 0x76
#define STE_SINGLE_COLLS 0x77
#define STE_SINGLE_COLLS 0x77
#define STE_DMACTL_RXDMA_STOPPED 0x00000001
#define STE_DMACTL_TXDMA_CMPREQ 0x00000002
@ -386,27 +386,27 @@
struct ste_stats {
u_int32_t ste_rx_bytes;
u_int32_t ste_tx_bytes;
u_int16_t ste_tx_frames;
u_int16_t ste_rx_frames;
u_int8_t ste_carrsense_errs;
u_int8_t ste_late_colls;
u_int8_t ste_multi_colls;
u_int8_t ste_single_colls;
u_int8_t ste_tx_frames_defered;
u_int8_t ste_rx_lost_frames;
u_int8_t ste_tx_excess_defers;
u_int8_t ste_tx_abort_excess_colls;
u_int8_t ste_tx_bcast_frames;
u_int8_t ste_rx_bcast_frames;
u_int8_t ste_tx_mcast_frames;
u_int8_t ste_rx_mcast_frames;
uint32_t ste_rx_bytes;
uint32_t ste_tx_bytes;
uint16_t ste_tx_frames;
uint16_t ste_rx_frames;
uint8_t ste_carrsense_errs;
uint8_t ste_late_colls;
uint8_t ste_multi_colls;
uint8_t ste_single_colls;
uint8_t ste_tx_frames_defered;
uint8_t ste_rx_lost_frames;
uint8_t ste_tx_excess_defers;
uint8_t ste_tx_abort_excess_colls;
uint8_t ste_tx_bcast_frames;
uint8_t ste_rx_bcast_frames;
uint8_t ste_tx_mcast_frames;
uint8_t ste_rx_mcast_frames;
};
struct ste_frag {
u_int32_t ste_addr;
u_int32_t ste_len;
uint32_t ste_addr;
uint32_t ste_len;
};
#define STE_FRAG_LAST 0x80000000
@ -415,14 +415,14 @@ struct ste_frag {
#define STE_MAXFRAGS 8
struct ste_desc {
u_int32_t ste_next;
u_int32_t ste_ctl;
uint32_t ste_next;
uint32_t ste_ctl;
struct ste_frag ste_frags[STE_MAXFRAGS];
};
struct ste_desc_onefrag {
u_int32_t ste_next;
u_int32_t ste_status;
uint32_t ste_next;
uint32_t ste_status;
struct ste_frag ste_frag;
};
@ -472,8 +472,8 @@ struct ste_desc_onefrag {
#define STE_NEXT(x, y) (x + 1) % y
struct ste_type {
u_int16_t ste_vid;
u_int16_t ste_did;
uint16_t ste_vid;
uint16_t ste_did;
char *ste_name;
};
@ -486,7 +486,7 @@ struct ste_chain {
struct ste_desc *ste_ptr;
struct mbuf *ste_mbuf;
struct ste_chain *ste_next;
u_int32_t ste_phys;
uint32_t ste_phys;
};
struct ste_chain_onefrag {
@ -515,7 +515,7 @@ struct ste_softc {
device_t ste_miibus;
device_t ste_dev;
int ste_tx_thresh;
u_int8_t ste_link;
uint8_t ste_link;
int ste_if_flags;
int ste_timer;
struct ste_chain *ste_tx_prev;
@ -523,7 +523,7 @@ struct ste_softc {
struct ste_chain_data ste_cdata;
struct callout ste_stat_callout;
struct mtx ste_mtx;
u_int8_t ste_one_phy;
uint8_t ste_one_phy;
#ifdef DEVICE_POLLING
int rxcycles;
#endif
@ -534,12 +534,12 @@ struct ste_softc {
#define STE_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->ste_mtx, MA_OWNED)
struct ste_mii_frame {
u_int8_t mii_stdelim;
u_int8_t mii_opcode;
u_int8_t mii_phyaddr;
u_int8_t mii_regaddr;
u_int8_t mii_turnaround;
u_int16_t mii_data;
uint8_t mii_stdelim;
uint8_t mii_opcode;
uint8_t mii_phyaddr;
uint8_t mii_regaddr;
uint8_t mii_turnaround;
uint16_t mii_data;
};
/*