4019                 case MAC_GROUP_TYPE_STATIC:
4020                         /*
4021                          * Note that an empty group is allowed, e.g., an aggr
4022                          * would start with an empty group.
4023                          */
4024                         break;
4025                 default:
4026                         /* unknown group type */
4027                         DTRACE_PROBE2(mac__init__rings__unknown__type,
4028                             char *, mip->mi_name,
4029                             int, cap_rings->mr_group_type);
4030                         err = EINVAL;
4031                         goto bail;
4032                 }
4033 
4034 
4035                 /*
4036                  * Driver must register group->mgi_addmac/remmac() for rx groups
4037                  * to support multiple MAC addresses.
4038                  */
4039                 if (rtype == MAC_RING_TYPE_RX) {
4040                         if ((group_info.mgi_addmac == NULL) ||
4041                             (group_info.mgi_addmac == NULL)) {
4042                                 goto bail;
4043                         }
4044                 }
4045 
4046                 /* Cache driver-supplied information */
4047                 group->mrg_info = group_info;
4048 
4049                 /* Update the group's status and group count. */
4050                 mac_set_group_state(group, MAC_GROUP_STATE_REGISTERED);
4051                 group_free++;
4052 
4053                 group->mrg_rings = NULL;
4054                 group->mrg_cur_count = 0;
4055                 mac_init_group(mip, group, group_info.mgi_count, cap_rings);
4056                 ring_left -= group_info.mgi_count;
4057 
4058                 /* The current group size should be equal to default value */
4059                 ASSERT(group->mrg_cur_count == group_info.mgi_count);
4060         }
4061 
4062         /* Build up a dummy group for free resources as a pool */
4063         group = groups + grpcnt;
4064 
 
 | 
 
 
4019                 case MAC_GROUP_TYPE_STATIC:
4020                         /*
4021                          * Note that an empty group is allowed, e.g., an aggr
4022                          * would start with an empty group.
4023                          */
4024                         break;
4025                 default:
4026                         /* unknown group type */
4027                         DTRACE_PROBE2(mac__init__rings__unknown__type,
4028                             char *, mip->mi_name,
4029                             int, cap_rings->mr_group_type);
4030                         err = EINVAL;
4031                         goto bail;
4032                 }
4033 
4034 
4035                 /*
4036                  * Driver must register group->mgi_addmac/remmac() for rx groups
4037                  * to support multiple MAC addresses.
4038                  */
4039                 if (rtype == MAC_RING_TYPE_RX &&
4040                     ((group_info.mgi_addmac == NULL) ||
4041                     (group_info.mgi_remmac == NULL))) {
4042                         err = EINVAL;
4043                         goto bail;
4044                 }
4045 
4046                 /* Cache driver-supplied information */
4047                 group->mrg_info = group_info;
4048 
4049                 /* Update the group's status and group count. */
4050                 mac_set_group_state(group, MAC_GROUP_STATE_REGISTERED);
4051                 group_free++;
4052 
4053                 group->mrg_rings = NULL;
4054                 group->mrg_cur_count = 0;
4055                 mac_init_group(mip, group, group_info.mgi_count, cap_rings);
4056                 ring_left -= group_info.mgi_count;
4057 
4058                 /* The current group size should be equal to default value */
4059                 ASSERT(group->mrg_cur_count == group_info.mgi_count);
4060         }
4061 
4062         /* Build up a dummy group for free resources as a pool */
4063         group = groups + grpcnt;
4064 
 
 |