diff options
| author | Jiri Benc <[email protected]> | 2016-11-10 15:28:24 +0000 |
|---|---|---|
| committer | David S. Miller <[email protected]> | 2016-11-13 05:51:02 +0000 |
| commit | 217ac77a3c2524d999730b2a80b61fcc2d0f734a (patch) | |
| tree | 4223e36f63fb87bb4bdc5767dffef1fcbadcf34f /net/openvswitch/vport-netdev.c | |
| parent | openvswitch: add Ethernet push and pop actions (diff) | |
| download | kernel-217ac77a3c2524d999730b2a80b61fcc2d0f734a.tar.gz kernel-217ac77a3c2524d999730b2a80b61fcc2d0f734a.zip | |
openvswitch: allow L3 netdev ports
Allow ARPHRD_NONE interfaces to be added to ovs bridge.
Based on previous versions by Lorand Jakab and Simon Horman.
Signed-off-by: Lorand Jakab <[email protected]>
Signed-off-by: Simon Horman <[email protected]>
Signed-off-by: Jiri Benc <[email protected]>
Acked-by: Pravin B Shelar <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Diffstat (limited to 'net/openvswitch/vport-netdev.c')
| -rw-r--r-- | net/openvswitch/vport-netdev.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/net/openvswitch/vport-netdev.c b/net/openvswitch/vport-netdev.c index e825753de1e0..0389398fa4ab 100644 --- a/net/openvswitch/vport-netdev.c +++ b/net/openvswitch/vport-netdev.c @@ -57,8 +57,10 @@ static void netdev_port_receive(struct sk_buff *skb) if (unlikely(!skb)) return; - skb_push(skb, ETH_HLEN); - skb_postpush_rcsum(skb, skb->data, ETH_HLEN); + if (skb->dev->type == ARPHRD_ETHER) { + skb_push(skb, ETH_HLEN); + skb_postpush_rcsum(skb, skb->data, ETH_HLEN); + } ovs_vport_receive(vport, skb, skb_tunnel_info(skb)); return; error: @@ -97,7 +99,8 @@ struct vport *ovs_netdev_link(struct vport *vport, const char *name) } if (vport->dev->flags & IFF_LOOPBACK || - vport->dev->type != ARPHRD_ETHER || + (vport->dev->type != ARPHRD_ETHER && + vport->dev->type != ARPHRD_NONE) || ovs_is_internal_dev(vport->dev)) { err = -EINVAL; goto error_put; |
