View | Details | Raw Unified | Return to bug 35178 | Differences between
and this patch

Collapse All | Expand All

(-)a/drivers/net/xen-netback/common.h (+1 lines)
 Lines 66-71   struct xenvif { Link Here 
66
	/* The shared rings and indexes. */
66
	/* The shared rings and indexes. */
67
	struct xen_netif_tx_back_ring tx;
67
	struct xen_netif_tx_back_ring tx;
68
	struct xen_netif_rx_back_ring rx;
68
	struct xen_netif_rx_back_ring rx;
69
	bool mapped;
69
70
70
	/* Frontend feature information. */
71
	/* Frontend feature information. */
71
	u8 can_sg:1;
72
	u8 can_sg:1;
(-)a/drivers/net/xen-netback/interface.c (+1 lines)
 Lines 271-276   struct xenvif *xenvif_alloc(struct device *parent, domid_t domid, Link Here 
271
	vif->dev = dev;
271
	vif->dev = dev;
272
	INIT_LIST_HEAD(&vif->schedule_list);
272
	INIT_LIST_HEAD(&vif->schedule_list);
273
	INIT_LIST_HEAD(&vif->notify_list);
273
	INIT_LIST_HEAD(&vif->notify_list);
274
	vif->mapped = false;
274
275
275
	vif->credit_bytes = vif->remaining_credit = ~0UL;
276
	vif->credit_bytes = vif->remaining_credit = ~0UL;
276
	vif->credit_usec  = 0UL;
277
	vif->credit_usec  = 0UL;
(-)a/drivers/net/xen-netback/netback.c (-1 / +10 lines)
 Lines 720-725   static void xen_netbk_rx_action(struct xen_netbk *netbk) Link Here 
720
		vif = netdev_priv(skb->dev);
720
		vif = netdev_priv(skb->dev);
721
		nr_frags = skb_shinfo(skb)->nr_frags;
721
		nr_frags = skb_shinfo(skb)->nr_frags;
722
722
723
		if (!vif->mapped) {
724
			netdev_err(vif->dev, "Shared ring is unmapped\n");
725
			dev_kfree_skb(skb);
726
			xenvif_put(vif);
727
			continue;
728
		}
729
723
		sco = (struct skb_cb_overlay *)skb->cb;
730
		sco = (struct skb_cb_overlay *)skb->cb;
724
		sco->meta_slots_used = netbk_gop_skb(skb, &npo);
731
		sco->meta_slots_used = netbk_gop_skb(skb, &npo);
725
732
 Lines 1864-1869   static int xen_netbk_kthread(void *data) Link Here 
1864
1871
1865
void xen_netbk_unmap_frontend_rings(struct xenvif *vif)
1872
void xen_netbk_unmap_frontend_rings(struct xenvif *vif)
1866
{
1873
{
1874
	vif->mapped = false;
1875
1867
	if (vif->tx.sring)
1876
	if (vif->tx.sring)
1868
		xenbus_unmap_ring_vfree(xenvif_to_xenbus_device(vif),
1877
		xenbus_unmap_ring_vfree(xenvif_to_xenbus_device(vif),
1869
					vif->tx.sring);
1878
					vif->tx.sring);
 Lines 1899-1904   int xen_netbk_map_frontend_rings(struct xenvif *vif, Link Here 
1899
	BACK_RING_INIT(&vif->rx, rxs, PAGE_SIZE);
1908
	BACK_RING_INIT(&vif->rx, rxs, PAGE_SIZE);
1900
1909
1901
	vif->rx_req_cons_peek = 0;
1910
	vif->rx_req_cons_peek = 0;
1911
	vif->mapped = true;
1902
1912
1903
	return 0;
1913
	return 0;
1904
1914
1905
- 

Return to bug 35178