[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] Re-factor net_tx_action_dealloc() slightly.



There is no need for processing of the pending_inuse list to be within the 
dealloc_prod/cons
loop.

Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
---
 drivers/xen/netback/netback.c |   26 ++++++++++++++------------
 1 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/drivers/xen/netback/netback.c b/drivers/xen/netback/netback.c
index eca61a9..25adbf4 100644
--- a/drivers/xen/netback/netback.c
+++ b/drivers/xen/netback/netback.c
@@ -913,11 +913,20 @@ static inline void net_tx_action_dealloc(struct xen_netbk 
*netbk)
                        gop++;
                }
 
-               if (netbk_copy_skb_mode != NETBK_DELAYED_COPY_SKB ||
-                   list_empty(&netbk->pending_inuse_head))
-                       break;
+       } while (dp != netbk->dealloc_prod);
+
+       netbk->dealloc_cons = dc;
 
-               /* Copy any entries that have been pending for too long. */
+       ret = HYPERVISOR_grant_table_op(
+               GNTTABOP_unmap_grant_ref, netbk->tx_unmap_ops,
+               gop - netbk->tx_unmap_ops);
+       BUG_ON(ret);
+
+       /*
+        * Copy any entries that have been pending for too long
+        */
+       if (netbk_copy_skb_mode == NETBK_DELAYED_COPY_SKB &&
+           !list_empty(&netbk->pending_inuse_head)) {
                list_for_each_entry_safe(inuse, n,
                                &netbk->pending_inuse_head, list) {
                        struct pending_tx_info *pending_tx_info;
@@ -943,14 +952,7 @@ static inline void net_tx_action_dealloc(struct xen_netbk 
*netbk)
 
                        break;
                }
-       } while (dp != netbk->dealloc_prod);
-
-       netbk->dealloc_cons = dc;
-
-       ret = HYPERVISOR_grant_table_op(
-               GNTTABOP_unmap_grant_ref, netbk->tx_unmap_ops,
-               gop - netbk->tx_unmap_ops);
-       BUG_ON(ret);
+       }
 
        list_for_each_entry_safe(inuse, n, &list, list) {
                struct pending_tx_info *pending_tx_info;
-- 
1.5.6.5


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.