Commit bb23ffa1 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by David S. Miller

macvlan: Use 'hash' iterators to simplify code

Use 'hash_for_each_rcu' and 'hash_for_each_safe' instead of hand writing
them. This saves some lines of code, reduce indentation and improve
readability.
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 99014088
......@@ -272,25 +272,22 @@ static void macvlan_broadcast(struct sk_buff *skb,
if (skb->protocol == htons(ETH_P_PAUSE))
return;
for (i = 0; i < MACVLAN_HASH_SIZE; i++) {
hlist_for_each_entry_rcu(vlan, &port->vlan_hash[i], hlist) {
if (vlan->dev == src || !(vlan->mode & mode))
continue;
hash_for_each_rcu(port->vlan_hash, i, vlan, hlist) {
if (vlan->dev == src || !(vlan->mode & mode))
continue;
hash = mc_hash(vlan, eth->h_dest);
if (!test_bit(hash, vlan->mc_filter))
continue;
hash = mc_hash(vlan, eth->h_dest);
if (!test_bit(hash, vlan->mc_filter))
continue;
err = NET_RX_DROP;
nskb = skb_clone(skb, GFP_ATOMIC);
if (likely(nskb))
err = macvlan_broadcast_one(
nskb, vlan, eth,
err = NET_RX_DROP;
nskb = skb_clone(skb, GFP_ATOMIC);
if (likely(nskb))
err = macvlan_broadcast_one(nskb, vlan, eth,
mode == MACVLAN_MODE_BRIDGE) ?:
netif_rx_ni(nskb);
macvlan_count_rx(vlan, skb->len + ETH_HLEN,
err == NET_RX_SUCCESS, true);
}
netif_rx_ni(nskb);
macvlan_count_rx(vlan, skb->len + ETH_HLEN,
err == NET_RX_SUCCESS, true);
}
}
......@@ -380,20 +377,14 @@ static void macvlan_broadcast_enqueue(struct macvlan_port *port,
static void macvlan_flush_sources(struct macvlan_port *port,
struct macvlan_dev *vlan)
{
struct macvlan_source_entry *entry;
struct hlist_node *next;
int i;
for (i = 0; i < MACVLAN_HASH_SIZE; i++) {
struct hlist_node *h, *n;
hlist_for_each_safe(h, n, &port->vlan_source_hash[i]) {
struct macvlan_source_entry *entry;
hash_for_each_safe(port->vlan_source_hash, i, next, entry, hlist)
if (entry->vlan == vlan)
macvlan_hash_del_source(entry);
entry = hlist_entry(h, struct macvlan_source_entry,
hlist);
if (entry->vlan == vlan)
macvlan_hash_del_source(entry);
}
}
vlan->macaddr_count = 0;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment