socsvn commit: r307850 - in soc2016/yuanxunzhang/head: sys/net usr.sbin/eaps
yuanxunzhang at FreeBSD.org
yuanxunzhang at FreeBSD.org
Thu Aug 18 04:12:52 UTC 2016
Author: yuanxunzhang
Date: Thu Aug 18 04:12:49 2016
New Revision: 307850
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=307850
Log:
EAPS: query eaps domian status
Modified:
soc2016/yuanxunzhang/head/sys/net/eaps.c
soc2016/yuanxunzhang/head/sys/net/eaps.h
soc2016/yuanxunzhang/head/usr.sbin/eaps/eaps.h
Modified: soc2016/yuanxunzhang/head/sys/net/eaps.c
==============================================================================
--- soc2016/yuanxunzhang/head/sys/net/eaps.c Thu Aug 18 02:14:39 2016 (r307849)
+++ soc2016/yuanxunzhang/head/sys/net/eaps.c Thu Aug 18 04:12:49 2016 (r307850)
@@ -70,13 +70,15 @@
static int eaps_transmit(struct ifnet *, struct mbuf *);
static void eaps_qflush(struct ifnet *);
static void eaps_init(void *);
-static void eaps_domain_init(struct eaps_softc *);
-
+void eaps_attach(struct eaps_state *);
+void eaps_detach(struct eaps_state *);
static VNET_DEFINE(struct if_clone *, eaps_cloner);
#define V_eaps_cloner VNET(eaps_cloner)
static const char eaps_name[] = "eaps";
+static struct mtx es_list_mtx;
+
SYSCTL_DECL(_net_link);
static SYSCTL_NODE(_net_link, IFT_EAPS, eaps, CTLFLAG_RW, 0, "EAPS");
@@ -168,6 +170,7 @@
ifp->if_init = eaps_init;
ifp->if_type = IFT_EAPS;
+ eaps_attach(&sc->sc_eaps);
ether_ifattach(ifp, sc->sc_defaddr);
EAPS_LIST_LOCK();
@@ -232,13 +235,26 @@
{
}
-static void
-eaps_domain_init(struct eaps_softc *sc)
+void
+eaps_attach(struct eaps_state *es)
{
- //set eaps domain default state
- sc->sc_eaps.state = EAPS_S_IDLE;
- sc->sc_eaps.active = EAPS_ACTIVE_DISABLE;
+ //set eaps domain protocol state to default value
+ es->state = EAPS_S_IDLE;
+ es->active = EAPS_ACTIVE_DISABLE;
+
+ mtx_lock(&es_list_mtx);
+ LIST_INSERT_HEAD(&es_list_mtx, es, es_list);
+ mtx_unlock(&es_list_mtx);
}
+
+void
+eaps_detach(struct eaps_state *es)
+{
+ mtx_lock(&es_list_mtx);
+ LIST_REMOVE(es, es_list);
+ mtx_unlock(&es_list_mtx);
+}
+
/*
* eaps_init:
*
Modified: soc2016/yuanxunzhang/head/sys/net/eaps.h
==============================================================================
--- soc2016/yuanxunzhang/head/sys/net/eaps.h Thu Aug 18 02:14:39 2016 (r307849)
+++ soc2016/yuanxunzhang/head/sys/net/eaps.h Thu Aug 18 04:12:49 2016 (r307850)
@@ -36,6 +36,8 @@
*/
struct eaps_state {
char ifname[IFNAMSIZ]; /* name of the eaps */
+ LIST_ENTRY(eaps_state) es_list;
+ struct mtx bs_mtx; /* mutex signal */
uint8_t state; /* state of eaps */
uint8_t active; /* enable or disable eaps */
};
@@ -165,5 +167,11 @@
#define EAPS_RLOCK_ASSERT(_sc) rm_assert(&(_sc)->sc_mtx, RA_RLOCKED)
#define EAPS_WLOCK_ASSERT(_sc) rm_assert(&(_sc)->sc_mtx, RA_WLOCKED)
#define EAPS_UNLOCK_ASSERT(_sc) rm_assert(&(_sc)->sc_mtx, RA_UNLOCKED)
-
+
+#define EAPS_STATE_LOCK_INIT(_bs) mtx_init(&(_bs)->bs_mtx, "eaps state", NULL, MTX_DEF)
+#define EAPS_STATE_LOCK_DESTROY(_bs) mtx_destroy(&(_bs)->bs_mtx)
+#define EAPS_STATE_LOCK(_bs) mtx_lock(&(_bs)->bs_mtx)
+#define EAPS_STATE_UNLOCK(_bs) mtx_unlock(&(_bs)->bs_mtx)
+#define EAPS_STATE_LOCK_ASSERT(_bs) mtx_assert(&(_bs)->bs_mtx, MA_OWNED)
+
#endif /* _NET_EAPS_H */
Modified: soc2016/yuanxunzhang/head/usr.sbin/eaps/eaps.h
==============================================================================
--- soc2016/yuanxunzhang/head/usr.sbin/eaps/eaps.h Thu Aug 18 02:14:39 2016 (r307849)
+++ soc2016/yuanxunzhang/head/usr.sbin/eaps/eaps.h Thu Aug 18 04:12:49 2016 (r307850)
@@ -39,6 +39,8 @@
*/
struct eaps_state {
char ifname[IFNAMSIZ]; /* name of the eaps */
+ LIST_ENTRY(eaps_state) es_list;
+ struct mtx bs_mtx; /* mutex signal */
uint8_t state; /* state of eaps */
uint8_t active; /* enable or disable eaps */
};
More information about the svn-soc-all
mailing list