Skip to content

Commit

Permalink
macvlan: Remove custom recieve and forward handlers
Browse files Browse the repository at this point in the history
Since now macvlan and macvtap use the same receive and
forward handlers, we can remove them completely and use
netif_rx and dev_forward_skb() directly.

Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Vlad Yasevich authored and David S. Miller committed Dec 12, 2013
1 parent 6acf54f commit 2f6a1b6
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 20 deletions.
17 changes: 5 additions & 12 deletions drivers/net/macvlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,15 @@ static int macvlan_broadcast_one(struct sk_buff *skb,
struct net_device *dev = vlan->dev;

if (local)
return vlan->forward(dev, skb);
return dev_forward_skb(dev, skb);

skb->dev = dev;
if (ether_addr_equal_64bits(eth->h_dest, dev->broadcast))
skb->pkt_type = PACKET_BROADCAST;
else
skb->pkt_type = PACKET_MULTICAST;

return vlan->receive(skb);
return netif_rx(skb);
}

static u32 macvlan_hash_mix(const struct macvlan_dev *vlan)
Expand Down Expand Up @@ -251,7 +251,7 @@ static rx_handler_result_t macvlan_handle_frame(struct sk_buff **pskb)
skb->dev = dev;
skb->pkt_type = PACKET_HOST;

ret = vlan->receive(skb);
ret = netif_rx(skb);

out:
macvlan_count_rx(vlan, len, ret == NET_RX_SUCCESS, 0);
Expand Down Expand Up @@ -803,10 +803,7 @@ static int macvlan_validate(struct nlattr *tb[], struct nlattr *data[])
}

int macvlan_common_newlink(struct net *src_net, struct net_device *dev,
struct nlattr *tb[], struct nlattr *data[],
int (*receive)(struct sk_buff *skb),
int (*forward)(struct net_device *dev,
struct sk_buff *skb))
struct nlattr *tb[], struct nlattr *data[])
{
struct macvlan_dev *vlan = netdev_priv(dev);
struct macvlan_port *port;
Expand Down Expand Up @@ -848,8 +845,6 @@ int macvlan_common_newlink(struct net *src_net, struct net_device *dev,
vlan->lowerdev = lowerdev;
vlan->dev = dev;
vlan->port = port;
vlan->receive = receive;
vlan->forward = forward;
vlan->set_features = MACVLAN_FEATURES;

vlan->mode = MACVLAN_MODE_VEPA;
Expand Down Expand Up @@ -894,9 +889,7 @@ EXPORT_SYMBOL_GPL(macvlan_common_newlink);
static int macvlan_newlink(struct net *src_net, struct net_device *dev,
struct nlattr *tb[], struct nlattr *data[])
{
return macvlan_common_newlink(src_net, dev, tb, data,
netif_rx,
dev_forward_skb);
return macvlan_common_newlink(src_net, dev, tb, data);
}

void macvlan_dellink(struct net_device *dev, struct list_head *head)
Expand Down
3 changes: 1 addition & 2 deletions drivers/net/macvtap.c
Original file line number Diff line number Diff line change
Expand Up @@ -400,8 +400,7 @@ static int macvtap_newlink(struct net *src_net,
/* Don't put anything that may fail after macvlan_common_newlink
* because we can't undo what it does.
*/
return macvlan_common_newlink(src_net, dev, tb, data,
netif_rx, dev_forward_skb);
return macvlan_common_newlink(src_net, dev, tb, data);
}

static void macvtap_dellink(struct net_device *dev,
Expand Down
7 changes: 1 addition & 6 deletions include/linux/if_macvlan.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,6 @@ struct macvlan_dev {
netdev_features_t set_features;
enum macvlan_mode mode;
u16 flags;
int (*receive)(struct sk_buff *skb);
int (*forward)(struct net_device *dev, struct sk_buff *skb);
/* This array tracks active taps. */
struct macvtap_queue __rcu *taps[MAX_MACVTAP_QUEUES];
/* This list tracks all taps (both enabled and disabled) */
Expand Down Expand Up @@ -103,10 +101,7 @@ static inline void macvlan_count_rx(const struct macvlan_dev *vlan,
extern void macvlan_common_setup(struct net_device *dev);

extern int macvlan_common_newlink(struct net *src_net, struct net_device *dev,
struct nlattr *tb[], struct nlattr *data[],
int (*receive)(struct sk_buff *skb),
int (*forward)(struct net_device *dev,
struct sk_buff *skb));
struct nlattr *tb[], struct nlattr *data[]);

extern void macvlan_count_rx(const struct macvlan_dev *vlan,
unsigned int len, bool success,
Expand Down

0 comments on commit 2f6a1b6

Please sign in to comment.