summaryrefslogtreecommitdiffstats
path: root/sys/net/if_lagg.h
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2007-05-07 00:35:15 +0000
committerthompsa <thompsa@FreeBSD.org>2007-05-07 00:35:15 +0000
commite52d185c9e35bf348185a8f1bc19b9991cb99b7d (patch)
tree84a9a701611ca5a74493f390ecb29d7a52bfa774 /sys/net/if_lagg.h
parent46904da6708bef5c82473bee8fa21f4e0d2a8730 (diff)
downloadFreeBSD-src-e52d185c9e35bf348185a8f1bc19b9991cb99b7d.zip
FreeBSD-src-e52d185c9e35bf348185a8f1bc19b9991cb99b7d.tar.gz
Call if_setlladdr() on the aggregation port from a taskqueue so the softc lock
is not held. The short delay between aggregating the port and setting the MAC address is fine.
Diffstat (limited to 'sys/net/if_lagg.h')
-rw-r--r--sys/net/if_lagg.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/net/if_lagg.h b/sys/net/if_lagg.h
index 968568a..e85fe68 100644
--- a/sys/net/if_lagg.h
+++ b/sys/net/if_lagg.h
@@ -140,6 +140,13 @@ struct lagg_mc {
SLIST_ENTRY(lagg_mc) mc_entries;
};
+/* List of interfaces to have the MAC address modified */
+struct lagg_llq {
+ struct ifnet *llq_ifp;
+ uint8_t llq_lladdr[ETHER_ADDR_LEN];
+ SLIST_ENTRY(lagg_llq) llq_entries;
+};
+
struct lagg_softc {
struct ifnet *sc_ifp; /* virtual interface */
struct mtx sc_mtx;
@@ -152,6 +159,10 @@ struct lagg_softc {
SLIST_HEAD(__tplhd, lagg_port) sc_ports; /* list of interfaces */
SLIST_ENTRY(lagg_softc) sc_entries;
+ struct task sc_lladdr_task;
+ SLIST_HEAD(__llqhd, lagg_llq) sc_llq_head; /* interfaces to program
+ the lladdr on */
+
/* lagg protocol callbacks */
int (*sc_detach)(struct lagg_softc *);
int (*sc_start)(struct lagg_softc *, struct mbuf *);
OpenPOWER on IntegriCloud