diff options
Diffstat (limited to 'drivers/net/xen-netback/netback.c')
-rw-r--r-- | drivers/net/xen-netback/netback.c | 12 |
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); |