213 /*
214 * device operations
215 */
216 static int rt2860_attach(dev_info_t *, ddi_attach_cmd_t);
217 static int rt2860_detach(dev_info_t *, ddi_detach_cmd_t);
218
219 /*
220 * Module Loading Data & Entry Points
221 */
222 DDI_DEFINE_STREAM_OPS(rwn_dev_ops, nulldev, nulldev, rt2860_attach,
223 rt2860_detach, nodev, NULL, D_MP, NULL, rt2860_quiesce);
224
225 static struct modldrv rwn_modldrv = {
226 &mod_driverops, /* Type of module. This one is a driver */
227 "Ralink RT2700/2800 driver v1.2", /* short description */
228 &rwn_dev_ops /* driver specific ops */
229 };
230
231 static struct modlinkage modlinkage = {
232 MODREV_1,
233 (void *)&rwn_modldrv,
234 NULL
235 };
236
237 static int rt2860_m_stat(void *, uint_t, uint64_t *);
238 static int rt2860_m_start(void *);
239 static void rt2860_m_stop(void *);
240 static int rt2860_m_promisc(void *, boolean_t);
241 static int rt2860_m_multicst(void *, boolean_t, const uint8_t *);
242 static int rt2860_m_unicst(void *, const uint8_t *);
243 static mblk_t *rt2860_m_tx(void *, mblk_t *);
244 static void rt2860_m_ioctl(void *, queue_t *, mblk_t *);
245 static int rt2860_m_setprop(void *arg, const char *pr_name,
246 mac_prop_id_t wldp_pr_num,
247 uint_t wldp_length, const void *wldp_buf);
248 static void rt2860_m_propinfo(void *arg, const char *pr_name,
249 mac_prop_id_t wldp_pr_num, mac_prop_info_handle_t prh);
250 static int rt2860_m_getprop(void *arg, const char *pr_name,
251 mac_prop_id_t wldp_pr_num, uint_t wldp_length,
252 void *wldp_buf);
253
254 static mac_callbacks_t rt2860_m_callbacks = {
|
213 /*
214 * device operations
215 */
216 static int rt2860_attach(dev_info_t *, ddi_attach_cmd_t);
217 static int rt2860_detach(dev_info_t *, ddi_detach_cmd_t);
218
219 /*
220 * Module Loading Data & Entry Points
221 */
222 DDI_DEFINE_STREAM_OPS(rwn_dev_ops, nulldev, nulldev, rt2860_attach,
223 rt2860_detach, nodev, NULL, D_MP, NULL, rt2860_quiesce);
224
225 static struct modldrv rwn_modldrv = {
226 &mod_driverops, /* Type of module. This one is a driver */
227 "Ralink RT2700/2800 driver v1.2", /* short description */
228 &rwn_dev_ops /* driver specific ops */
229 };
230
231 static struct modlinkage modlinkage = {
232 MODREV_1,
233 { (void *)&rwn_modldrv, NULL }
234 };
235
236 static int rt2860_m_stat(void *, uint_t, uint64_t *);
237 static int rt2860_m_start(void *);
238 static void rt2860_m_stop(void *);
239 static int rt2860_m_promisc(void *, boolean_t);
240 static int rt2860_m_multicst(void *, boolean_t, const uint8_t *);
241 static int rt2860_m_unicst(void *, const uint8_t *);
242 static mblk_t *rt2860_m_tx(void *, mblk_t *);
243 static void rt2860_m_ioctl(void *, queue_t *, mblk_t *);
244 static int rt2860_m_setprop(void *arg, const char *pr_name,
245 mac_prop_id_t wldp_pr_num,
246 uint_t wldp_length, const void *wldp_buf);
247 static void rt2860_m_propinfo(void *arg, const char *pr_name,
248 mac_prop_id_t wldp_pr_num, mac_prop_info_handle_t prh);
249 static int rt2860_m_getprop(void *arg, const char *pr_name,
250 mac_prop_id_t wldp_pr_num, uint_t wldp_length,
251 void *wldp_buf);
252
253 static mac_callbacks_t rt2860_m_callbacks = {
|