From 30618594b6c68497b56443de81a7f19e57e3e898 Mon Sep 17 00:00:00 2001 From: Ethan Jackson Date: Thu, 1 Aug 2013 18:04:07 -0700 Subject: mac-learning: Stop using tags. This patch transitions mac learning away from using tags as required by future patches. Signed-off-by: Ethan Jackson Acked-by: Ben Pfaff --- lib/mac-learning.h | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) (limited to 'lib/mac-learning.h') diff --git a/lib/mac-learning.h b/lib/mac-learning.h index ea5ea8a58..ba7f73421 100644 --- a/lib/mac-learning.h +++ b/lib/mac-learning.h @@ -23,7 +23,6 @@ #include "ovs-atomic.h" #include "ovs-thread.h" #include "packets.h" -#include "tag.h" #include "timeval.h" struct mac_learning; @@ -46,7 +45,6 @@ struct mac_entry { time_t grat_arp_lock; /* Gratuitous ARP lock expiration time. */ uint8_t mac[ETH_ADDR_LEN]; /* Known MAC address. */ uint16_t vlan; /* VLAN tag. */ - tag_type tag; /* Tag for this learning entry. */ /* The following are marked guarded to prevent users from iterating over or * accessing a mac_entry without hodling the parent mac_learning rwlock. */ @@ -59,13 +57,6 @@ struct mac_entry { } port OVS_GUARDED; }; -/* Returns true if mac_learning_insert() just created 'mac' and the caller has - * not yet properly initialized it. */ -static inline bool mac_entry_is_new(const struct mac_entry *mac) -{ - return !mac->tag; -} - /* Sets a gratuitous ARP lock on 'mac' that will expire in * MAC_GRAT_ARP_LOCK_TIME seconds. */ static inline void mac_entry_set_grat_arp_lock(struct mac_entry *mac) @@ -89,9 +80,9 @@ struct mac_learning { unsigned long *flood_vlans; /* Bitmap of learning disabled VLANs. */ unsigned int idle_time; /* Max age before deleting an entry. */ size_t max_entries; /* Max number of learned MACs. */ - struct tag_set tags; /* Tags which have changed. */ atomic_int ref_cnt; struct ovs_rwlock rwlock; + bool need_revalidate; }; int mac_entry_age(const struct mac_learning *ml, const struct mac_entry *e) @@ -102,8 +93,7 @@ struct mac_learning *mac_learning_create(unsigned int idle_time); struct mac_learning *mac_learning_ref(const struct mac_learning *); void mac_learning_unref(struct mac_learning *); -void mac_learning_run(struct mac_learning *ml, struct tag_set *) - OVS_REQ_WRLOCK(ml->rwlock); +bool mac_learning_run(struct mac_learning *ml) OVS_REQ_WRLOCK(ml->rwlock); void mac_learning_wait(struct mac_learning *ml) OVS_REQ_RDLOCK(ml->rwlock); @@ -126,19 +116,17 @@ struct mac_entry *mac_learning_insert(struct mac_learning *ml, const uint8_t src[ETH_ADDR_LEN], uint16_t vlan) OVS_REQ_WRLOCK(ml->rwlock); -void mac_learning_changed(struct mac_learning *ml, struct mac_entry *e) - OVS_REQ_WRLOCK(ml->rwlock); +void mac_learning_changed(struct mac_learning *ml) OVS_REQ_WRLOCK(ml->rwlock); /* Lookup. */ struct mac_entry *mac_learning_lookup(const struct mac_learning *ml, const uint8_t dst[ETH_ADDR_LEN], - uint16_t vlan, tag_type *) + uint16_t vlan) OVS_REQ_RDLOCK(ml->rwlock); /* Flushing. */ void mac_learning_expire(struct mac_learning *ml, struct mac_entry *e) OVS_REQ_WRLOCK(ml->rwlock); -void mac_learning_flush(struct mac_learning *ml, struct tag_set *) - OVS_REQ_WRLOCK(ml->rwlock); +void mac_learning_flush(struct mac_learning *ml) OVS_REQ_WRLOCK(ml->rwlock); #endif /* mac-learning.h */ -- cgit v1.2.1