diff options
Diffstat (limited to 'drivers/net/xen-netfront.c')
-rw-r--r-- | drivers/net/xen-netfront.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index ff04d4f95baa..e30d80033cbc 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c | |||
@@ -907,6 +907,7 @@ static int handle_incoming_queue(struct net_device *dev, | |||
907 | 907 | ||
908 | /* Ethernet work: Delayed to here as it peeks the header. */ | 908 | /* Ethernet work: Delayed to here as it peeks the header. */ |
909 | skb->protocol = eth_type_trans(skb, dev); | 909 | skb->protocol = eth_type_trans(skb, dev); |
910 | skb_reset_network_header(skb); | ||
910 | 911 | ||
911 | if (checksum_setup(dev, skb)) { | 912 | if (checksum_setup(dev, skb)) { |
912 | kfree_skb(skb); | 913 | kfree_skb(skb); |
@@ -1832,7 +1833,6 @@ static void netback_changed(struct xenbus_device *dev, | |||
1832 | case XenbusStateReconfiguring: | 1833 | case XenbusStateReconfiguring: |
1833 | case XenbusStateReconfigured: | 1834 | case XenbusStateReconfigured: |
1834 | case XenbusStateUnknown: | 1835 | case XenbusStateUnknown: |
1835 | case XenbusStateClosed: | ||
1836 | break; | 1836 | break; |
1837 | 1837 | ||
1838 | case XenbusStateInitWait: | 1838 | case XenbusStateInitWait: |
@@ -1847,6 +1847,10 @@ static void netback_changed(struct xenbus_device *dev, | |||
1847 | netdev_notify_peers(netdev); | 1847 | netdev_notify_peers(netdev); |
1848 | break; | 1848 | break; |
1849 | 1849 | ||
1850 | case XenbusStateClosed: | ||
1851 | if (dev->state == XenbusStateClosed) | ||
1852 | break; | ||
1853 | /* Missed the backend's CLOSING state -- fallthrough */ | ||
1850 | case XenbusStateClosing: | 1854 | case XenbusStateClosing: |
1851 | xenbus_frontend_closed(dev); | 1855 | xenbus_frontend_closed(dev); |
1852 | break; | 1856 | break; |