diff options
Diffstat (limited to 'sys/dev/hfa/fore_load.c')
-rw-r--r-- | sys/dev/hfa/fore_load.c | 951 |
1 files changed, 0 insertions, 951 deletions
diff --git a/sys/dev/hfa/fore_load.c b/sys/dev/hfa/fore_load.c index 5f136c8..4748f58 100644 --- a/sys/dev/hfa/fore_load.c +++ b/sys/dev/hfa/fore_load.c @@ -46,14 +46,6 @@ __RCSID("@(#) $FreeBSD$"); * Local functions */ static int fore_start __P((void)); -#ifdef sun -static int fore_stop __P((void)); -static int fore_doload __P((void)); -static int fore_dounload __P((void)); -static int fore_identify __P((char *)); -static int fore_attach __P((struct devinfo *)); -#endif -#ifdef __FreeBSD__ static const char * fore_pci_probe __P((pcici_t, pcidi_t)); static void fore_pci_attach __P((pcici_t, int)); #if BSD < 199506 @@ -61,7 +53,6 @@ static int fore_pci_shutdown __P((struct kern_devconf *, int)); #else static void fore_pci_shutdown __P((void *, int)); #endif -#endif static void fore_unattach __P((Fore_unit *)); static void fore_reset __P((Fore_unit *)); @@ -74,25 +65,7 @@ static int fore_inited = 0; /* * Driver entry points */ -#ifdef sun -static struct dev_ops fore_ops = { - 1, /* revision */ - fore_identify, /* identify */ - fore_attach, /* attach */ - NULL, /* open */ - NULL, /* close */ - NULL, /* read */ - NULL, /* write */ - NULL, /* strategy */ - NULL, /* dump */ - NULL, /* psize */ - NULL, /* ioctl */ - NULL, /* reset */ - NULL /* mmap */ -}; -#endif -#ifdef __FreeBSD__ static u_long fore_pci_count = 0; static struct pci_device fore_pci_device = { @@ -108,7 +81,6 @@ static struct pci_device fore_pci_device = { }; COMPAT_PCI_DRIVER(fore_pci, fore_pci_device); -#endif /* @@ -156,678 +128,8 @@ fore_start() } -#ifdef sun - -/* - * Halt driver processing - * - * This will be called just prior to unloading the module from memory. - * Everything we've setup since we've been loaded must be undone here. - * - * Arguments: - * none - * - * Returns: - * 0 shutdown was successful - * errno shutdown failed - reason indicated - * - */ -static int -fore_stop() -{ - int err = 0; - int s = splimp(); - int i; - - /* - * Stop the watchdog timer - */ - (void) atm_untimeout(&fore_timer); - - /* - * Clean up each device (if any) - */ - for ( i = 0; i < fore_nunits; i++ ) { - Fore_unit *fup = fore_units[i]; - - if (fup == NULL) - continue; - - /* - * Deregister device from kernel services - */ - if (err = atm_physif_deregister((Cmn_unit *)fup)) { - (void) splx(s); - return (err); - } - - /* - * Unattach the device from the system - */ - fore_unattach(fup); - - /* - * Free any Fore-specific device resources - */ - fore_interface_free(fup); - - /* - * Free the unit structure - */ - atm_dev_free(fup); - fore_units[i] = NULL; - } - - fore_nunits = 0; - - /* - * Now free our global resources - */ - - /* - * Release our storage pools - */ - atm_release_pool(&fore_vcc_pool); - atm_release_pool(&fore_nif_pool); - - /* - * Release all DMA mappings - */ - DMA_RELEASE(); - - fore_inited = 0; - - (void) splx(s); - - return (0); -} - -/* - * Device identify routine - * - * Determine if this driver will support the named device. If we claim to - * support the device, our attach routine will (later) be called for the - * device. - * - * Arguments: - * name pointer to identifier string from device - * - * Returns: - * 1 driver claims support for this device - * 0 device not claimed by this driver - * - */ -static int -fore_identify(name) - char *name; -{ - int ret = 0; - int i = 0; - - /* - * Initialize driver stuff - */ - if (fore_inited == 0) { - if (fore_start()) - return (0); - } - - while (fore_devices[i].fd_name) { - if (strcmp(fore_devices[i].fd_name, name) == 0) { - - /* - * We support this device!! - */ - if (fore_nunits < FORE_MAX_UNITS) { - fore_nunits++; - ret = 1; - } else { - log(LOG_ERR, - "fore_identify: Too many devices\n"); - } - break; - } - i++; - } - return (ret); -} - - -/* - * Device attach routine - * - * Attach a device we've previously claimed to support. Walk through its - * register set and map, as required. Determine what level the device will - * be interrupting at and then register an interrupt handler for it. If we - * succeed, then reset the adapter and read useful info from its PROM. - * Last, register the interface with the kernel ATM services. - * - * Arguments: - * devinfo_p pointer to device information structure - * - * Returns: - * 0 attach was successful - * -1 attach failed - * - */ -static int -fore_attach(devinfo_p) - struct dev_info *devinfo_p; -{ - struct dev_reg *dev_reg_p; - struct dev_intr *dev_intr_p; - Fore_unit *fup; - Atm_config *fcp; - addr_t valp; - int val; - int i; - int err_count = BOOT_LOOPS; - static int unit = 0; - - /* - * Sanity check - */ - if (devinfo_p == NULL) - return (-1); - - /* - * Make sure this isn't a duplicate unit - */ - if (fore_units[unit] != NULL) - return (-1); - - /* - * Allocate a new unit structure - */ - fup = (Fore_unit *) atm_dev_alloc(sizeof(Fore_unit), sizeof(int), 0); - if (fup == NULL) - return (-1); - - /* - * Start initializing it - */ - fup->fu_unit = unit; - fup->fu_mtu = FORE_IFF_MTU; - fup->fu_devinfo = devinfo_p; - fup->fu_vcc_pool = &fore_vcc_pool; - fup->fu_nif_pool = &fore_nif_pool; - fup->fu_ioctl = fore_atm_ioctl; - fup->fu_instvcc = fore_instvcc; - fup->fu_openvcc = fore_openvcc; - fup->fu_closevcc = fore_closevcc; - fup->fu_output = fore_output; - - /* - * Consider this unit assigned - */ - fore_units[unit] = fup; - unit++; - - ATM_DEBUG1("fore_attach: fup=%p\n", fup); - ATM_DEBUG2("\tfu_xmit_q=%p fu_xmit_head=%p\n", - fup->fu_xmit_q, &fup->fu_xmit_head); - ATM_DEBUG2("\tfu_recv_q=%p fu_recv_head=%p\n", - fup->fu_recv_q, &fup->fu_recv_head); - ATM_DEBUG2("\tfu_buf1s_q=%p fu_buf1s_head=%p\n", - fup->fu_buf1s_q, &fup->fu_buf1s_head); - ATM_DEBUG2("\tfu_buf1l_q=%p fu_buf1l_head=%p\n", - fup->fu_buf1l_q, &fup->fu_buf1l_head); - ATM_DEBUG2("\tfu_cmd_q=%p fu_cmd_head=%p\n", - fup->fu_cmd_q, &fup->fu_cmd_head); - ATM_DEBUG1("\tfu_stats=%p\n", - &fup->fu_stats); - - /* - * Tell kernel our unit number - */ - devinfo_p->devi_unit = fup->fu_unit; - - /* - * Figure out what type of device we've got. This should always - * work since we've already done this at identify time! - */ - i = 0; - while (fore_devices[i].fd_name) { - if (strcmp(fore_devices[i].fd_name, devinfo_p->devi_name) == 0) - break; - i++; - } - if (fore_devices[i].fd_name == NULL) - return (-1); - - fup->fu_config.ac_device = fore_devices[i].fd_devtyp; - - /* - * Walk through the OPENPROM register information - * mapping register banks as they are found. - */ - for ( dev_reg_p = devinfo_p->devi_reg, i = 1; - i <= devinfo_p->devi_nreg; i++, ++dev_reg_p ) - { - if ( dev_reg_p == NULL ) - { - /* - * Can't happen... - */ - return ( -1 ); - } - - /* - * Each device type has different register sets - */ - switch (fup->fu_config.ac_device) { - -#ifdef FORE_SBUS - case DEV_FORE_SBA200E: - - switch ( i ) - { - /* - * Host Control Register (HCR) - */ - case 1: - if ( sizeof(Fore_reg) != dev_reg_p->reg_size ) - { - return ( -1 ); - } - fup->fu_ctlreg = (Fore_reg *) - map_regs ( dev_reg_p->reg_addr, - sizeof(Fore_reg), - dev_reg_p->reg_bustype ); - if ( fup->fu_ctlreg == NULL ) - { - return ( -1 ); - } - break; - - /* - * SBus Burst Transfer Configuration Register - */ - case 2: - /* - * Not used - */ - break; - - /* - * SBus Interrupt Level Select Register - */ - case 3: - if ( sizeof (Fore_reg) != dev_reg_p->reg_size ) - { - return ( -1 ); - } - fup->fu_intlvl = (Fore_reg *) - map_regs ( dev_reg_p->reg_addr, - sizeof(Fore_reg), - dev_reg_p->reg_bustype ); - if ( fup->fu_intlvl == NULL ) - { - return ( -1 ); - } - break; - - /* - * i960 RAM - */ - case 4: - fup->fu_ram = (Fore_mem *) - map_regs ( dev_reg_p->reg_addr, - dev_reg_p->reg_size, - dev_reg_p->reg_bustype ); - if ( fup->fu_ram == NULL ) - { - return ( -1 ); - } - fup->fu_ramsize = dev_reg_p->reg_size; - - /* - * Various versions of the Sun PROM mess with - * the reg_addr value in unpredictable (to me, - * at least) ways, so just use the "memoffset" - * property, which should give us the RAM - * offset directly. - */ - val = getprop(devinfo_p->devi_nodeid, - "memoffset", -1); - if (val == -1) { - return (-1); - } - fup->fu_config.ac_ram = val; - fup->fu_config.ac_ramsize = fup->fu_ramsize; - - /* - * Set monitor interface for initializing - */ - fup->fu_mon = (Mon960 *) - (fup->fu_ram + MON960_BASE); - break; - - default: - log(LOG_ERR, - "fore_attach: Too many registers\n"); - return ( -1 ); - } - break; - - case DEV_FORE_SBA200: - - switch ( i ) - { - /* - * Board Control Register (BCR) - */ - case 1: - if ( sizeof(Fore_reg) != dev_reg_p->reg_size ) - { - return ( -1 ); - } - fup->fu_ctlreg = (Fore_reg *) - map_regs ( dev_reg_p->reg_addr, - sizeof(Fore_reg), - dev_reg_p->reg_bustype ); - if ( fup->fu_ctlreg == NULL ) - { - return ( -1 ); - } - break; - - /* - * i960 RAM - */ - case 2: - fup->fu_ram = (Fore_mem *) - map_regs ( dev_reg_p->reg_addr, - dev_reg_p->reg_size, - dev_reg_p->reg_bustype ); - if ( fup->fu_ram == NULL ) - { - return ( -1 ); - } - fup->fu_ramsize = dev_reg_p->reg_size; - - /* - * Various versions of the Sun PROM mess with - * the reg_addr value in unpredictable (to me, - * at least) ways, so just use the "memoffset" - * property, which should give us the RAM - * offset directly. - */ - val = getprop(devinfo_p->devi_nodeid, - "memoffset", -1); - if (val == -1) { - return (-1); - } - fup->fu_config.ac_ram = val; - fup->fu_config.ac_ramsize = fup->fu_ramsize; - - /* - * Set monitor interface for initializing - */ - fup->fu_mon = (Mon960 *) - (fup->fu_ram + MON960_BASE); - break; - - default: - log(LOG_ERR, - "fore_attach: Too many registers\n"); - return ( -1 ); - } - break; -#endif /* FORE_SBUS */ - - default: - log(LOG_ERR, - "fore_attach: Unsupported device type %d\n", - fup->fu_config.ac_device); - return (-1); - } - } - - /* - * Install the device in the interrupt chain. - * - * dev_intr_p may be null IFF devi_nintr is zero. - */ - dev_intr_p = devinfo_p->devi_intr; - for ( i = devinfo_p->devi_nintr; i > 0; --i, ++dev_intr_p ) - { - - if ( dev_intr_p == NULL ) - { - /* - * Can't happen. - */ - return ( -1 ); - } - - /* - * Convert hardware ipl (0-15) into spl level. - */ - if ( ipltospl ( dev_intr_p->int_pri ) > fup->fu_intrpri ) - { - fup->fu_intrpri = ipltospl ( dev_intr_p->int_pri ); - - /* - * If SBA-200E card, set SBus interrupt level - * into board register - */ - if ( fup->fu_intlvl ) { -#if defined(sun4c) - *(fup->fu_intlvl) = dev_intr_p->int_pri; -#elif defined(sun4m) - extern int svimap[]; - - *(fup->fu_intlvl) = - svimap[dev_intr_p->int_pri & 0xf]; -#else - #error PORT ME; -#endif - } - } - - DEVICE_LOCK((Cmn_unit *)fup); - - /* - * Register our interrupt routine. - */ - (void) addintr ( dev_intr_p->int_pri, fore_poll, - devinfo_p->devi_name, devinfo_p->devi_unit ); - - /* - * If we can do DMA (we can), then DVMA routines need - * to know the highest IPL level we will interrupt at. - */ - adddma ( dev_intr_p->int_pri ); - - DEVICE_UNLOCK((Cmn_unit *)fup); - } - - /* - * Poke the hardware...boot the CP and prepare it for downloading - */ - fore_reset(fup); - - switch (fup->fu_config.ac_device) { - -#ifdef FORE_SBUS - case DEV_FORE_SBA200E: - /* - * Enable interrupts - */ - SBA200E_HCR_SET(*fup->fu_ctlreg, SBA200E_SBUS_ENA); - break; -#endif /* FORE_SBUS */ - } - - /* - * Wait for monitor to perform self-test - */ - while (CP_READ(fup->fu_mon->mon_bstat) != BOOT_MONREADY) { - if (CP_READ(fup->fu_mon->mon_bstat) == BOOT_FAILTEST) { - log(LOG_ERR, "fore_attach: Unit %d failed self-test\n", - fup->fu_unit); - return (-1); - } else if ( --err_count == 0 ) { - log(LOG_ERR, "fore_attach: Unit %d unable to boot\n", - fup->fu_unit); - return (-1); - } - DELAY ( BOOT_DELAY ); - } - - /* - * Write a one line message to the console informing - * that we've attached the device. - */ - report_dev ( devinfo_p ); - - /* - * Get the mac address from the card PROM - */ - val = getprop ( devinfo_p->devi_nodeid, "macaddress1", -1 ); - if ( val != -1 ) { - fup->fu_pif.pif_macaddr.ma_data[0] = val & 0xff; - val = getprop ( devinfo_p->devi_nodeid, "macaddress2", -1 ); - fup->fu_pif.pif_macaddr.ma_data[1] = val & 0xff; - val = getprop ( devinfo_p->devi_nodeid, "macaddress3", -1 ); - fup->fu_pif.pif_macaddr.ma_data[2] = val & 0xff; - val = getprop ( devinfo_p->devi_nodeid, "macaddress4", -1 ); - fup->fu_pif.pif_macaddr.ma_data[3] = val & 0xff; - val = getprop ( devinfo_p->devi_nodeid, "macaddress5", -1 ); - fup->fu_pif.pif_macaddr.ma_data[4] = val & 0xff; - val = getprop ( devinfo_p->devi_nodeid, "macaddress6", -1 ); - fup->fu_pif.pif_macaddr.ma_data[5] = val & 0xff; - } else { - /* - * Newer PROM - mac addresses have been combined. Also, - * macaddrlo2 reflects the board serial number. - */ - val = htonl(getprop(devinfo_p->devi_nodeid, "macaddrlo2", -1)); - KM_COPY ( (caddr_t)&val, - (caddr_t)&fup->fu_pif.pif_macaddr.ma_data[2], - sizeof(val) ); - val = htonl(getprop(devinfo_p->devi_nodeid, "macaddrhi4", -1)); - KM_COPY ( (caddr_t)&val, - (caddr_t)fup->fu_pif.pif_macaddr.ma_data, - sizeof(val) ); - } - /* - * Setup the adapter config info - */ - fcp = &fup->fu_config; - fcp->ac_vendor = VENDOR_FORE; - fcp->ac_vendapi = VENDAPI_FORE_1; - fcp->ac_macaddr = fup->fu_pif.pif_macaddr; - val = getprop ( devinfo_p->devi_nodeid, "promversion", -1 ); - if ( val == -1 ) { - val = getprop ( devinfo_p->devi_nodeid, "hw-version", -1 ); - } - if (val != -1) { - snprintf(fcp->ac_hard_vers, - sizeof(fcp->ac_hard_vers), "%d.%d.%d", - (val >> 16) & 0xff, (val >> 8) & 0xff, val & 0xff); - } else - snprintf(fcp->ac_hard_vers, - sizeof(fcp->ac_hard_vers), "Unknown"); - - val = getprop ( devinfo_p->devi_nodeid, "serialnumber", -1 ); - if ( val != -1 ) - fcp->ac_serial = val; - - valp = (addr_t)getlongprop ( devinfo_p->devi_nodeid, "model" ); - if ( valp ) - { - /* - * Media Type - */ - switch (fcp->ac_device) { - -#ifdef FORE_SBUS - case DEV_FORE_SBA200E: - fcp->ac_media = MEDIA_OC3C; - fup->fu_pif.pif_pcr = ATM_PCR_OC3C; - break; - - case DEV_FORE_SBA200: - /* - * Look at the /SSS trailer to determine 4B5B speed - * TAXI-100 = 125; TAXI-140 = 175 - * Assume that OC3 has no /SSS speed identifier. - */ - while (*valp && *valp != '/') - valp++; - if (*valp == NULL) { - fcp->ac_media = MEDIA_OC3C; - fup->fu_pif.pif_pcr = ATM_PCR_OC3C; - } else if (strcmp(valp, "/125") == 0) { - fcp->ac_media = MEDIA_TAXI_100; - fup->fu_pif.pif_pcr = ATM_PCR_TAXI100; - } else { - fcp->ac_media = MEDIA_TAXI_140; - fup->fu_pif.pif_pcr = ATM_PCR_TAXI140; - } - break; -#endif /* FORE_SBUS */ - } - - /* - * Free property space - */ - KM_FREE(valp, getproplen(devinfo_p->devi_nodeid, "model"), 0); - } - - /* - * Bus information - */ - fcp->ac_busslot = -#ifdef SBUS_SIZE - (long)(devinfo_p->devi_reg->reg_addr - SBUS_BASE) / SBUS_SIZE; -#else - sbusslot((u_long)devinfo_p->devi_reg->reg_addr); -#endif - - val = getprop(devinfo_p->devi_parent->devi_nodeid, "burst-sizes", 0); - if (val & SBUS_BURST32) - fcp->ac_bustype = BUS_SBUS_B32; - else - fcp->ac_bustype = BUS_SBUS_B16; - - /* - * Set device capabilities - */ - fup->fu_pif.pif_maxvpi = FORE_MAX_VPI; - fup->fu_pif.pif_maxvci = FORE_MAX_VCI; - - /* - * Register this interface with ATM core services - */ - if ( atm_physif_register - ((Cmn_unit *)fup, FORE_DEV_NAME, fore_services) != 0 ) - { - /* - * Registration failed - back everything out - */ - /* - * Modload calls UNLOAD if it get's a failure - don't - * call fore_unload() here. - */ - return ( -1 ); - } - - /* - * Initialize the CP microcode program. - */ - fore_initialize(fup); - - return (0); -} -#endif /* sun */ - - -#ifdef __FreeBSD__ /* * Device probe routine * @@ -1136,7 +438,6 @@ fore_pci_shutdown(fup, howto) return; } #endif /* BSD < 199506 */ -#endif /* __FreeBSD__ */ /* @@ -1155,12 +456,6 @@ static void fore_unattach(fup) Fore_unit *fup; { -#ifdef sun - struct dev_info *devinfo_p = fup->fu_devinfo; - struct dev_reg *dev_reg_p; - struct dev_intr *dev_intr_p; - int i; -#endif /* @@ -1181,109 +476,7 @@ fore_unattach(fup) (void)untimeout((KTimeout_ret(*) __P((void *)))fore_initialize, (void *)fup, fup->fu_thandle); -#ifdef sun - /* - * Remove any mappings of the device - */ - for ( dev_reg_p = devinfo_p->devi_reg, i = 1; - i <= devinfo_p->devi_nreg; i++, ++dev_reg_p ) - { - if ( dev_reg_p == NULL ) - { - /* - * Can't happen... - */ - break; - } - - /* - * Each device type has different register sets - */ - switch (fup->fu_config.ac_device) { - -#ifdef FORE_SBUS - case DEV_FORE_SBA200E: - - switch ( i ) - { - /* - * Host Control Register (HCR) - */ - case 1: - unmap_regs((addr_t)fup->fu_ctlreg, - sizeof(Fore_reg)); - break; - - /* - * SBus Burst Transfer Configuration Register - */ - case 2: - /* - * Not used - */ - break; - - /* - * SBus Interrupt Level Select Register - */ - case 3: - unmap_regs((addr_t)fup->fu_intlvl, - sizeof(Fore_reg)); - break; - - /* - * i960 RAM - */ - case 4: - unmap_regs((addr_t)fup->fu_ram, - fup->fu_ramsize); - break; - } - break; - - case DEV_FORE_SBA200: - - switch ( i ) - { - /* - * Board Control Register (BCR) - */ - case 1: - unmap_regs((addr_t)fup->fu_ctlreg, - sizeof(Fore_reg)); - break; - - /* - * i960 RAM - */ - case 2: - unmap_regs((addr_t)fup->fu_ram, - fup->fu_ramsize); - break; - } - break; -#endif /* FORE_SBUS */ - } - } - - /* - * Remove the interrupt vector(s) - */ - dev_intr_p = devinfo_p->devi_intr; - for ( i = devinfo_p->devi_nintr; i > 0; --i, ++dev_intr_p ) - { - if ( dev_intr_p == NULL ) - { - /* - * Can't happen... - */ - break; - } - (void) remintr ( dev_intr_p->int_pri, fore_poll ); - } -#endif /* sun */ -#ifdef __FreeBSD__ /* * Unmap the device interrupt */ @@ -1295,7 +488,6 @@ fore_unattach(fup) #ifdef notdef (void) pci_unmap_mem(fup->fu_pcitag, PCA200E_PCI_MEMBASE); #endif -#endif /* __FreeBSD__ */ DEVICE_UNLOCK((Cmn_unit *)fup); } @@ -1375,149 +567,7 @@ fore_reset(fup) ******************************************************************* */ -#ifdef sun -/* - * Generic module load processing - * - * This function is called by an OS-specific function when this - * module is being loaded. - * - * Arguments: - * none - * - * Returns: - * 0 load was successful - * errno load failed - reason indicated - * - */ -static int -fore_doload() -{ - int err = 0; - - /* - * Start us up - */ - err = fore_start(); - if (err) - /* Problems, clean up */ - (void)fore_stop(); - - return (err); -} - - -/* - * Generic module unload processing - * - * This function is called by an OS-specific function when this - * module is being unloaded. - * - * Arguments: - * none - * - * Returns: - * 0 unload was successful - * errno unload failed - reason indicated - * - */ -static int -fore_dounload() -{ - int err = 0; - - /* - * OK, try to clean up our mess - */ - err = fore_stop(); - - return (err); -} - - -/* - * Loadable driver description - */ -static struct vdldrv fore_drv = { - VDMAGIC_DRV, /* Device Driver */ - "fore_mod", /* name */ - &fore_ops, /* dev_ops */ - NULL, /* bdevsw */ - NULL, /* cdevsw */ - 0, /* blockmajor */ - 0 /* charmajor */ -}; - - -/* - * Loadable module support entry point - * - * This is the routine called by the vd driver for all loadable module - * functions for this pseudo driver. This routine name must be specified - * on the modload(1) command. This routine will be called whenever the - * modload(1), modunload(1) or modstat(1) commands are issued for this - * module. - * - * Arguments: - * cmd vd command code - * vdp pointer to vd driver's structure - * vdi pointer to command-specific vdioctl_* structure - * vds pointer to status structure (VDSTAT only) - * - * Returns: - * 0 command was successful - * errno command failed - reason indicated - * - */ -int -fore_mod(cmd, vdp, vdi, vds) - int cmd; - struct vddrv *vdp; - caddr_t vdi; - struct vdstat *vds; -{ - int err = 0; - - switch (cmd) { - - case VDLOAD: - /* - * Module Load - * - * We dont support any user configuration - */ - err = fore_doload(); - if (err == 0) - /* Let vd driver know about us */ - vdp->vdd_vdtab = (struct vdlinkage *)&fore_drv; - break; - - case VDUNLOAD: - /* - * Module Unload - */ - err = fore_dounload(); - break; - - case VDSTAT: - /* - * Module Status - */ - - /* Not much to say at the moment */ - - break; - - default: - log(LOG_ERR, "fore_mod: Unknown vd command 0x%x\n", cmd); - err = EINVAL; - } - - return (err); -} -#endif /* sun */ -#ifdef __FreeBSD__ #ifdef notdef /* @@ -1631,7 +681,6 @@ fore_mod(lkmtp, cmd, ver) #endif } #endif /* notdef */ -#endif /* __FreeBSD__ */ #endif /* ATM_LINKED */ |