Add activate routine and check device active flag also in one second
tick handler.
This commit is contained in:
parent
e70542be3a
commit
01868857df
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: if_fxp_cardbus.c,v 1.6 2000/02/09 22:15:59 joda Exp $ */
|
/* $NetBSD: if_fxp_cardbus.c,v 1.7 2000/02/12 04:05:50 enami Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
||||||
|
@ -108,7 +108,7 @@ struct fxp_cardbus_softc {
|
||||||
|
|
||||||
struct cfattach fxp_cardbus_ca = {
|
struct cfattach fxp_cardbus_ca = {
|
||||||
sizeof(struct fxp_cardbus_softc), fxp_cardbus_match, fxp_cardbus_attach,
|
sizeof(struct fxp_cardbus_softc), fxp_cardbus_match, fxp_cardbus_attach,
|
||||||
fxp_cardbus_detach
|
fxp_cardbus_detach, fxp_activate
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CBB_DEBUG
|
#ifdef CBB_DEBUG
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: i82557.c,v 1.19 2000/02/12 03:55:49 enami Exp $ */
|
/* $NetBSD: i82557.c,v 1.20 2000/02/12 04:05:49 enami Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc.
|
* Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc.
|
||||||
|
@ -871,7 +871,7 @@ fxp_intr(arg)
|
||||||
u_int8_t statack;
|
u_int8_t statack;
|
||||||
|
|
||||||
if ((sc->sc_dev.dv_flags & DVF_ACTIVE) == 0)
|
if ((sc->sc_dev.dv_flags & DVF_ACTIVE) == 0)
|
||||||
return 0;
|
return (0);
|
||||||
/*
|
/*
|
||||||
* If the interface isn't running, don't try to
|
* If the interface isn't running, don't try to
|
||||||
* service the interrupt.. just ack it and bail.
|
* service the interrupt.. just ack it and bail.
|
||||||
|
@ -882,7 +882,7 @@ fxp_intr(arg)
|
||||||
claimed = 1;
|
claimed = 1;
|
||||||
CSR_WRITE_1(sc, FXP_CSR_SCB_STATACK, statack);
|
CSR_WRITE_1(sc, FXP_CSR_SCB_STATACK, statack);
|
||||||
}
|
}
|
||||||
return claimed;
|
return (claimed);
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((statack = CSR_READ_1(sc, FXP_CSR_SCB_STATACK)) != 0) {
|
while ((statack = CSR_READ_1(sc, FXP_CSR_SCB_STATACK)) != 0) {
|
||||||
|
@ -1076,6 +1076,9 @@ fxp_tick(arg)
|
||||||
struct fxp_stats *sp = &sc->sc_control_data->fcd_stats;
|
struct fxp_stats *sp = &sc->sc_control_data->fcd_stats;
|
||||||
int s;
|
int s;
|
||||||
|
|
||||||
|
if ((sc->sc_dev.dv_flags & DVF_ACTIVE) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
s = splnet();
|
s = splnet();
|
||||||
|
|
||||||
ifp->if_opackets += le32toh(sp->tx_good);
|
ifp->if_opackets += le32toh(sp->tx_good);
|
||||||
|
@ -1868,6 +1871,42 @@ fxp_disable(sc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fxp_activate:
|
||||||
|
*
|
||||||
|
* Handle device activation/deactivation requests.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
fxp_activate(self, act)
|
||||||
|
struct device *self;
|
||||||
|
enum devact act;
|
||||||
|
{
|
||||||
|
struct fxp_softc *sc = (void *) self;
|
||||||
|
int s, error = 0;
|
||||||
|
|
||||||
|
s = splnet();
|
||||||
|
switch (act) {
|
||||||
|
case DVACT_ACTIVATE:
|
||||||
|
error = EOPNOTSUPP;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DVACT_DEACTIVATE:
|
||||||
|
if (sc->sc_flags & FXPF_MII)
|
||||||
|
mii_activate(&sc->sc_mii, act, MII_PHY_ANY,
|
||||||
|
MII_OFFSET_ANY);
|
||||||
|
if_deactivate(&sc->sc_ethercom.ec_if);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
splx(s);
|
||||||
|
|
||||||
|
return (error);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fxp_detach:
|
||||||
|
*
|
||||||
|
* Detach an i82557 interface.
|
||||||
|
*/
|
||||||
int
|
int
|
||||||
fxp_detach(sc)
|
fxp_detach(sc)
|
||||||
struct fxp_softc *sc;
|
struct fxp_softc *sc;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: i82557var.h,v 1.10 2000/02/09 22:15:58 joda Exp $ */
|
/* $NetBSD: i82557var.h,v 1.11 2000/02/12 04:05:49 enami Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc.
|
* Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc.
|
||||||
|
@ -320,9 +320,9 @@ do { \
|
||||||
bus_space_write_4((sc)->sc_st, (sc)->sc_sh, (reg), (val))
|
bus_space_write_4((sc)->sc_st, (sc)->sc_sh, (reg), (val))
|
||||||
|
|
||||||
void fxp_attach __P((struct fxp_softc *));
|
void fxp_attach __P((struct fxp_softc *));
|
||||||
|
int fxp_activate __P((struct device *, enum devact));
|
||||||
int fxp_detach __P((struct fxp_softc *));
|
int fxp_detach __P((struct fxp_softc *));
|
||||||
int fxp_intr __P((void *));
|
int fxp_intr __P((void *));
|
||||||
|
|
||||||
int fxp_enable __P((struct fxp_softc*));
|
int fxp_enable __P((struct fxp_softc*));
|
||||||
void fxp_disable __P((struct fxp_softc*));
|
void fxp_disable __P((struct fxp_softc*));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue