X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fvport-netdev.c;h=18fc5feeaee6751e712117b31ce8527a6edc675a;hb=be6255a8251ae69f8a5d54c5afad9604bf9e907b;hp=2583566b1afd884005e084542122ffc2840fbbbb;hpb=431488e6638d3fbb53d215fa10d2ff2d8f1c2824;p=openvswitch diff --git a/datapath/vport-netdev.c b/datapath/vport-netdev.c index 2583566b..18fc5fee 100644 --- a/datapath/vport-netdev.c +++ b/datapath/vport-netdev.c @@ -38,7 +38,23 @@ MODULE_PARM_DESC(vlan_tso, "Enable TSO for VLAN packets"); static void netdev_port_receive(struct vport *vport, struct sk_buff *skb); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39) +/* Called with rcu_read_lock and bottom-halves disabled. */ +static rx_handler_result_t netdev_frame_hook(struct sk_buff **pskb) +{ + struct sk_buff *skb = *pskb; + struct vport *vport; + + if (unlikely(skb->pkt_type == PACKET_LOOPBACK)) + return RX_HANDLER_PASS; + + vport = netdev_get_vport(skb->dev); + + netdev_port_receive(vport, skb); + + return RX_HANDLER_CONSUMED; +} +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) /* Called with rcu_read_lock and bottom-halves disabled. */ static struct sk_buff *netdev_frame_hook(struct sk_buff *skb) {