summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Bruning <max@joyent.com>2012-09-28 16:21:00 +0000
committerRobert Mustacchi <rm@joyent.com>2012-10-01 20:49:13 +0000
commitb45ea0f774fd2d959ff7024d756c804582252958 (patch)
treee77dbc25c7ad18955fb398a855495ef69691ccae
parent76d2bf954a30eb07b168c2c72b57cc685579c3d5 (diff)
downloadillumos-joyent-b45ea0f774fd2d959ff7024d756c804582252958.tar.gz
OS-883 Panic in i_mac_notify
-rw-r--r--usr/src/uts/common/io/vnic/vnic_dev.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/usr/src/uts/common/io/vnic/vnic_dev.c b/usr/src/uts/common/io/vnic/vnic_dev.c
index 722e41f2a5..065d7f2cbc 100644
--- a/usr/src/uts/common/io/vnic/vnic_dev.c
+++ b/usr/src/uts/common/io/vnic/vnic_dev.c
@@ -408,15 +408,6 @@ vnic_dev_create(datalink_id_t vnic_id, datalink_id_t linkid,
if (err != 0)
goto bail;
- if (mrp != NULL) {
- if ((mrp->mrp_mask & MRP_RX_RINGS) != 0 ||
- (mrp->mrp_mask & MRP_TX_RINGS) != 0) {
- req_hwgrp_flag = B_TRUE;
- }
- err = mac_client_set_resources(vnic->vn_mch, mrp);
- if (err != 0)
- goto bail;
- }
/* assign a MAC address to the VNIC */
err = vnic_unicast_add(vnic, *vnic_addr_type, mac_slot,
@@ -520,9 +511,22 @@ vnic_dev_create(datalink_id_t vnic_id, datalink_id_t linkid,
}
/* Set the VNIC's MAC in the client */
- if (!is_anchor)
+ if (!is_anchor) {
mac_set_upper_mac(vnic->vn_mch, vnic->vn_mh, mrp);
+ if (mrp != NULL) {
+ if ((mrp->mrp_mask & MRP_RX_RINGS) != 0 ||
+ (mrp->mrp_mask & MRP_TX_RINGS) != 0) {
+ req_hwgrp_flag = B_TRUE;
+ }
+ err = mac_client_set_resources(vnic->vn_mch, mrp);
+ if (err != 0) {
+ (void) mac_unregister(vnic->vn_mh);
+ goto bail;
+ }
+ }
+ }
+
err = dls_devnet_create(vnic->vn_mh, vnic->vn_id, crgetzoneid(credp));
if (err != 0) {
VERIFY(is_anchor || mac_margin_remove(vnic->vn_lower_mh,