aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/xen-netfront.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/xen-netfront.c')
-rw-r--r--drivers/net/xen-netfront.c6
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;