Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/xen/xen fix gref offset when setting up copy of mul...



details:   https://anonhg.NetBSD.org/src/rev/7b28fac6b7d2
branches:  trunk
changeset: 971716:7b28fac6b7d2
user:      jdolecek <jdolecek%NetBSD.org@localhost>
date:      Sat May 02 11:28:02 2020 +0000

description:
fix gref offset when setting up copy of multi-fragment packet so data
for second and further fragments gets copied into correct place

diffstat:

 sys/arch/xen/xen/xennetback_xenbus.c |  7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diffs (42 lines):

diff -r 64105b1901f4 -r 7b28fac6b7d2 sys/arch/xen/xen/xennetback_xenbus.c
--- a/sys/arch/xen/xen/xennetback_xenbus.c      Sat May 02 11:12:49 2020 +0000
+++ b/sys/arch/xen/xen/xennetback_xenbus.c      Sat May 02 11:28:02 2020 +0000
@@ -1,4 +1,4 @@
-/*      $NetBSD: xennetback_xenbus.c,v 1.101 2020/05/01 19:59:47 jdolecek Exp $      */
+/*      $NetBSD: xennetback_xenbus.c,v 1.102 2020/05/02 11:28:02 jdolecek Exp $      */
 
 /*
  * Copyright (c) 2006 Manuel Bouyer.
@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xennetback_xenbus.c,v 1.101 2020/05/01 19:59:47 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xennetback_xenbus.c,v 1.102 2020/05/02 11:28:02 jdolecek Exp $");
 
 #include "opt_xen.h"
 
@@ -749,6 +749,7 @@
                }
 
                gsize = xst->xs_tx_size;
+               goff = 0;
                for (; seg < dm->dm_nsegs && gsize > 0; seg++) {
                        bus_dma_segment_t *ds = &dm->dm_segs[seg];
                        ma = ds->ds_addr;
@@ -787,6 +788,7 @@
                        segoff = 0;
                }
                KASSERT(gsize == 0);
+               KASSERT(goff == xst->xs_tx_size);
        }
        if (copycnt > 0) {
                if (xennetback_copy(ifp, xneti->xni_gop_copy, copycnt) != 0)
@@ -931,6 +933,7 @@
                                 * Flush queue if too full to fit this
                                 * new packet whole.
                                 */
+                               KASSERT(m0 == NULL);
                                xennetback_tx_copy_process(ifp, xneti, queued);
                                queued = 0;
                        }



Home | Main Index | Thread Index | Old Index