qfe.c revision da14cebe459d3275048785f25bd869cb09b5307f
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh/*
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * CDDL HEADER START
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh *
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * The contents of this file are subject to the terms of the
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * Common Development and Distribution License (the "License").
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * You may not use this file except in compliance with the License.
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh *
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * or http://www.opensolaris.org/os/licensing.
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * See the License for the specific language governing permissions
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * and limitations under the License.
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh *
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * When distributing Covered Code, include this CDDL HEADER in each
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * If applicable, add the following below this CDDL HEADER, with the
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * fields enclosed by brackets "[]" replaced with your own identifying
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * information: Portions Copyright [yyyy] [name of copyright owner]
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh *
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * CDDL HEADER END
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh */
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh/*
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * Use is subject to license terms.
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh */
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh/*
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * SunOS MT QFE Device Driver (layered above FEPS/Cheerio)
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh */
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include <sys/types.h>
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include <sys/debug.h>
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include <sys/stream.h>
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include <sys/cmn_err.h>
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include <sys/kmem.h>
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include <sys/modctl.h>
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include <sys/conf.h>
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include <sys/mac_provider.h>
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include <sys/mac_ether.h>
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include <sys/ddi.h>
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include <sys/sunddi.h>
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh/*
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * Function prototypes.
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh */
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhextern int hmeattach(dev_info_t *, ddi_attach_cmd_t);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhextern int hmedetach(dev_info_t *, ddi_detach_cmd_t);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhDDI_DEFINE_STREAM_OPS(qfe_dev_ops, nulldev, nulldev, hmeattach, hmedetach,
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh nodev, NULL, D_MP, NULL, ddi_quiesce_not_supported);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh/*
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * Module linkage information for the kernel.
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh */
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhstatic struct modldrv modldrv = {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh &mod_driverops, /* Type of module. This one is a driver */
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh "Sun QFE 10/100 Mb Ethernet",
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh &qfe_dev_ops, /* driver ops */
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh};
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhstatic struct modlinkage modlinkage = {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh MODREV_1, &modldrv, NULL
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh};
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh/* <<<<<<<<<<<<<<<<<<<<<<<<<<< LOADABLE ENTRIES >>>>>>>>>>>>>>>>>>>>>>> */
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhint
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh_init(void)
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh{
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh int status;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh mac_init_ops(&qfe_dev_ops, "qfe");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh if ((status = mod_install(&modlinkage)) != 0) {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh mac_fini_ops(&qfe_dev_ops);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh }
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh return (status);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh}
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhint
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh_fini(void)
{
int status;
if ((status = mod_remove(&modlinkage)) == 0) {
mac_fini_ops(&qfe_dev_ops);
}
return (status);
}
int
_info(struct modinfo *modinfop)
{
return (mod_info(&modlinkage, modinfop));
}