aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/xen-netback/netback.c')
-rw-r--r--drivers/net/xen-netback/netback.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
index b8100298017b..e1d6dbb4b770 100644
--- a/drivers/net/xen-netback/netback.c
+++ b/drivers/net/xen-netback/netback.c
@@ -492,7 +492,7 @@ check_frags:
492 * the header's copy failed, and they are 492 * the header's copy failed, and they are
493 * sharing a slot, send an error 493 * sharing a slot, send an error
494 */ 494 */
495 if (i == 0 && sharedslot) 495 if (i == 0 && !first_shinfo && sharedslot)
496 xenvif_idx_release(queue, pending_idx, 496 xenvif_idx_release(queue, pending_idx,
497 XEN_NETIF_RSP_ERROR); 497 XEN_NETIF_RSP_ERROR);
498 else 498 else
@@ -1333,7 +1333,15 @@ int xenvif_tx_action(struct xenvif_queue *queue, int budget)
1333 NULL, 1333 NULL,
1334 queue->pages_to_map, 1334 queue->pages_to_map,
1335 nr_mops); 1335 nr_mops);
1336 BUG_ON(ret); 1336 if (ret) {
1337 unsigned int i;
1338
1339 netdev_err(queue->vif->dev, "Map fail: nr %u ret %d\n",
1340 nr_mops, ret);
1341 for (i = 0; i < nr_mops; ++i)
1342 WARN_ON_ONCE(queue->tx_map_ops[i].status ==
1343 GNTST_okay);
1344 }
1337 } 1345 }
1338 1346
1339 work_done = xenvif_tx_submit(queue); 1347 work_done = xenvif_tx_submit(queue);