124 static struct fmodsw softmac_fmodsw = {
125 SOFTMAC_DEV_NAME,
126 &softmac_tab,
127 D_MP
128 };
129
130 static struct modldrv softmac_modldrv = {
131 &mod_driverops,
132 "softmac driver",
133 &softmac_ops
134 };
135
136 static struct modlstrmod softmac_modlstrmod = {
137 &mod_strmodops,
138 "softmac module",
139 &softmac_fmodsw
140 };
141
142 static struct modlinkage softmac_modlinkage = {
143 MODREV_1,
144 &softmac_modlstrmod,
145 &softmac_modldrv,
146 NULL
147 };
148
149 static void softmac_dedicated_rx(void *, mac_resource_handle_t, mblk_t *,
150 mac_header_info_t *);
151
152 /*ARGSUSED*/
153 static int
154 softmac_upper_constructor(void *buf, void *arg, int kmflag)
155 {
156 softmac_upper_t *sup = buf;
157
158 bzero(buf, sizeof (softmac_upper_t));
159
160 mutex_init(&sup->su_mutex, NULL, MUTEX_DEFAULT, NULL);
161 cv_init(&sup->su_cv, NULL, CV_DEFAULT, NULL);
162 mutex_init(&sup->su_disp_mutex, NULL, MUTEX_DEFAULT, NULL);
163 cv_init(&sup->su_disp_cv, NULL, CV_DEFAULT, NULL);
164 list_create(&sup->su_req_list, sizeof (softmac_switch_req_t),
165 offsetof(softmac_switch_req_t, ssq_req_list_node));
166 return (0);
|
124 static struct fmodsw softmac_fmodsw = {
125 SOFTMAC_DEV_NAME,
126 &softmac_tab,
127 D_MP
128 };
129
130 static struct modldrv softmac_modldrv = {
131 &mod_driverops,
132 "softmac driver",
133 &softmac_ops
134 };
135
136 static struct modlstrmod softmac_modlstrmod = {
137 &mod_strmodops,
138 "softmac module",
139 &softmac_fmodsw
140 };
141
142 static struct modlinkage softmac_modlinkage = {
143 MODREV_1,
144 { &softmac_modlstrmod,
145 &softmac_modldrv,
146 NULL }
147 };
148
149 static void softmac_dedicated_rx(void *, mac_resource_handle_t, mblk_t *,
150 mac_header_info_t *);
151
152 /*ARGSUSED*/
153 static int
154 softmac_upper_constructor(void *buf, void *arg, int kmflag)
155 {
156 softmac_upper_t *sup = buf;
157
158 bzero(buf, sizeof (softmac_upper_t));
159
160 mutex_init(&sup->su_mutex, NULL, MUTEX_DEFAULT, NULL);
161 cv_init(&sup->su_cv, NULL, CV_DEFAULT, NULL);
162 mutex_init(&sup->su_disp_mutex, NULL, MUTEX_DEFAULT, NULL);
163 cv_init(&sup->su_disp_cv, NULL, CV_DEFAULT, NULL);
164 list_create(&sup->su_req_list, sizeof (softmac_switch_req_t),
165 offsetof(softmac_switch_req_t, ssq_req_list_node));
166 return (0);
|