summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr/src/uts/sun4v/io/vnet_rxdring.c16
-rw-r--r--usr/src/uts/sun4v/io/vsw_rxdring.c16
2 files changed, 26 insertions, 6 deletions
diff --git a/usr/src/uts/sun4v/io/vnet_rxdring.c b/usr/src/uts/sun4v/io/vnet_rxdring.c
index 085a79492e..3e893c1829 100644
--- a/usr/src/uts/sun4v/io/vnet_rxdring.c
+++ b/usr/src/uts/sun4v/io/vnet_rxdring.c
@@ -20,9 +20,9 @@
*/
/*
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
*/
+
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/sysmacros.h>
@@ -113,7 +113,7 @@ extern boolean_t vgen_inject_error(vgen_ldc_t *ldcp, int error);
int
vgen_create_rx_dring(vgen_ldc_t *ldcp)
{
- int i;
+ int i, j;
int rv;
uint32_t ncookies;
ldc_mem_info_t minfo;
@@ -207,6 +207,16 @@ vgen_create_rx_dring(vgen_ldc_t *ldcp)
}
ldcp->rx_data_ncookies = ncookies;
+ for (j = 1; j < ncookies; j++) {
+ rv = ldc_mem_nextcookie(ldcp->rx_data_handle,
+ &(ldcp->rx_data_cookie[j]));
+ if (rv != 0) {
+ DERR(vgenp, ldcp, "ldc_mem_nextcookie "
+ "failed rv (%d)", rv);
+ goto fail;
+ }
+ }
+
/*
* Successful in binding the handle to rx data area. Now setup mblks
* around each data buffer and setup the descriptors to point to these
diff --git a/usr/src/uts/sun4v/io/vsw_rxdring.c b/usr/src/uts/sun4v/io/vsw_rxdring.c
index 8ddc7743dc..0e3867e194 100644
--- a/usr/src/uts/sun4v/io/vsw_rxdring.c
+++ b/usr/src/uts/sun4v/io/vsw_rxdring.c
@@ -20,9 +20,9 @@
*/
/*
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
*/
+
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/sysmacros.h>
@@ -247,7 +247,7 @@ fail:
static int
vsw_setup_rx_dring(vsw_ldc_t *ldcp, dring_info_t *dp)
{
- int i;
+ int i, j;
int rv;
size_t data_sz;
vio_mblk_t *vmp;
@@ -315,6 +315,16 @@ vsw_setup_rx_dring(vsw_ldc_t *ldcp, dring_info_t *dp)
}
dp->data_ncookies = ncookies;
+ for (j = 1; j < ncookies; j++) {
+ rv = ldc_mem_nextcookie(dp->data_handle,
+ &(dp->data_cookie[j]));
+ if (rv != 0) {
+ DERR(vswp, "%s: ldc_mem_nextcookie "
+ "failed rv (%d)", name, rv);
+ goto fail;
+ }
+ }
+
/*
* Successful in binding the handle to rx data area. Now setup mblks
* around each data buffer and setup the descriptors to point to these