openvswitch: Use dev_queue_xmit for vport send.

With use of lwtunnel, we can directly call dev_queue_xmit()
rather than calling netdev vport send operation.
Following change make tunnel vport code bit cleaner.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Thomas Graf <tgraf@suug.ch>
Acked-by: Jiri Benc <jbenc@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Pravin B Shelar
2015-10-20 23:00:10 -07:00
committed by David S. Miller
parent 99e28f18e3
commit aec1592474
8 changed files with 40 additions and 45 deletions

View File

@@ -202,22 +202,21 @@ static void internal_dev_destroy(struct vport *vport)
rtnl_unlock();
}
static void internal_dev_recv(struct vport *vport, struct sk_buff *skb)
static netdev_tx_t internal_dev_recv(struct sk_buff *skb)
{
struct net_device *netdev = vport->dev;
struct net_device *netdev = skb->dev;
struct pcpu_sw_netstats *stats;
if (unlikely(!(netdev->flags & IFF_UP))) {
kfree_skb(skb);
netdev->stats.rx_dropped++;
return;
return NETDEV_TX_OK;
}
skb_dst_drop(skb);
nf_reset(skb);
secpath_reset(skb);
skb->dev = netdev;
skb->pkt_type = PACKET_HOST;
skb->protocol = eth_type_trans(skb, netdev);
skb_postpull_rcsum(skb, eth_hdr(skb), ETH_HLEN);
@@ -229,6 +228,7 @@ static void internal_dev_recv(struct vport *vport, struct sk_buff *skb)
u64_stats_update_end(&stats->syncp);
netif_rx(skb);
return NETDEV_TX_OK;
}
static struct vport_ops ovs_internal_vport_ops = {