3540 }
3541
3542 /*
3543 * Stream information
3544 */
3545 DDI_DEFINE_STREAM_OPS(yge_devops, nulldev, nulldev, yge_ddi_attach,
3546 yge_ddi_detach, nodev, NULL, D_MP, NULL, yge_quiesce);
3547
3548 /*
3549 * Module linkage information.
3550 */
3551
3552 static struct modldrv yge_modldrv = {
3553 &mod_driverops, /* drv_modops */
3554 "Yukon 2 Ethernet", /* drv_linkinfo */
3555 &yge_devops /* drv_dev_ops */
3556 };
3557
3558 static struct modlinkage yge_modlinkage = {
3559 MODREV_1, /* ml_rev */
3560 &yge_modldrv, /* ml_linkage */
3561 NULL
3562 };
3563
3564 /*
3565 * DDI entry points.
3566 */
3567 int
3568 _init(void)
3569 {
3570 int rv;
3571 mac_init_ops(&yge_devops, "yge");
3572 if ((rv = mod_install(&yge_modlinkage)) != DDI_SUCCESS) {
3573 mac_fini_ops(&yge_devops);
3574 }
3575 return (rv);
3576 }
3577
3578 int
3579 _fini(void)
3580 {
3581 int rv;
|
3540 }
3541
3542 /*
3543 * Stream information
3544 */
3545 DDI_DEFINE_STREAM_OPS(yge_devops, nulldev, nulldev, yge_ddi_attach,
3546 yge_ddi_detach, nodev, NULL, D_MP, NULL, yge_quiesce);
3547
3548 /*
3549 * Module linkage information.
3550 */
3551
3552 static struct modldrv yge_modldrv = {
3553 &mod_driverops, /* drv_modops */
3554 "Yukon 2 Ethernet", /* drv_linkinfo */
3555 &yge_devops /* drv_dev_ops */
3556 };
3557
3558 static struct modlinkage yge_modlinkage = {
3559 MODREV_1, /* ml_rev */
3560 { &yge_modldrv, NULL } /* ml_linkage */
3561 };
3562
3563 /*
3564 * DDI entry points.
3565 */
3566 int
3567 _init(void)
3568 {
3569 int rv;
3570 mac_init_ops(&yge_devops, "yge");
3571 if ((rv = mod_install(&yge_modlinkage)) != DDI_SUCCESS) {
3572 mac_fini_ops(&yge_devops);
3573 }
3574 return (rv);
3575 }
3576
3577 int
3578 _fini(void)
3579 {
3580 int rv;
|