229 /*
230 * device operations
231 */
232 static int rum_attach(dev_info_t *, ddi_attach_cmd_t);
233 static int rum_detach(dev_info_t *, ddi_detach_cmd_t);
234
235 /*
236 * Module Loading Data & Entry Points
237 */
238 DDI_DEFINE_STREAM_OPS(rum_dev_ops, nulldev, nulldev, rum_attach,
239 rum_detach, nodev, NULL, D_MP, NULL, ddi_quiesce_not_needed);
240
241 static struct modldrv rum_modldrv = {
242 &mod_driverops, /* Type of module. This one is a driver */
243 "rum driver v1.2", /* short description */
244 &rum_dev_ops /* driver specific ops */
245 };
246
247 static struct modlinkage modlinkage = {
248 MODREV_1,
249 (void *)&rum_modldrv,
250 NULL
251 };
252
253 static int rum_m_stat(void *, uint_t, uint64_t *);
254 static int rum_m_start(void *);
255 static void rum_m_stop(void *);
256 static int rum_m_promisc(void *, boolean_t);
257 static int rum_m_multicst(void *, boolean_t, const uint8_t *);
258 static int rum_m_unicst(void *, const uint8_t *);
259 static mblk_t *rum_m_tx(void *, mblk_t *);
260 static void rum_m_ioctl(void *, queue_t *, mblk_t *);
261 static int rum_m_setprop(void *, const char *, mac_prop_id_t,
262 uint_t, const void *);
263 static int rum_m_getprop(void *, const char *, mac_prop_id_t,
264 uint_t, void *);
265 static void rum_m_propinfo(void *, const char *, mac_prop_id_t,
266 mac_prop_info_handle_t);
267
268 static mac_callbacks_t rum_m_callbacks = {
269 MC_IOCTL | MC_SETPROP | MC_GETPROP | MC_PROPINFO,
270 rum_m_stat,
|
229 /*
230 * device operations
231 */
232 static int rum_attach(dev_info_t *, ddi_attach_cmd_t);
233 static int rum_detach(dev_info_t *, ddi_detach_cmd_t);
234
235 /*
236 * Module Loading Data & Entry Points
237 */
238 DDI_DEFINE_STREAM_OPS(rum_dev_ops, nulldev, nulldev, rum_attach,
239 rum_detach, nodev, NULL, D_MP, NULL, ddi_quiesce_not_needed);
240
241 static struct modldrv rum_modldrv = {
242 &mod_driverops, /* Type of module. This one is a driver */
243 "rum driver v1.2", /* short description */
244 &rum_dev_ops /* driver specific ops */
245 };
246
247 static struct modlinkage modlinkage = {
248 MODREV_1,
249 { (void *)&rum_modldrv, NULL }
250 };
251
252 static int rum_m_stat(void *, uint_t, uint64_t *);
253 static int rum_m_start(void *);
254 static void rum_m_stop(void *);
255 static int rum_m_promisc(void *, boolean_t);
256 static int rum_m_multicst(void *, boolean_t, const uint8_t *);
257 static int rum_m_unicst(void *, const uint8_t *);
258 static mblk_t *rum_m_tx(void *, mblk_t *);
259 static void rum_m_ioctl(void *, queue_t *, mblk_t *);
260 static int rum_m_setprop(void *, const char *, mac_prop_id_t,
261 uint_t, const void *);
262 static int rum_m_getprop(void *, const char *, mac_prop_id_t,
263 uint_t, void *);
264 static void rum_m_propinfo(void *, const char *, mac_prop_id_t,
265 mac_prop_info_handle_t);
266
267 static mac_callbacks_t rum_m_callbacks = {
268 MC_IOCTL | MC_SETPROP | MC_GETPROP | MC_PROPINFO,
269 rum_m_stat,
|