summaryrefslogtreecommitdiffstats
path: root/sys/dev/hea/eni_if.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/hea/eni_if.c')
-rw-r--r--sys/dev/hea/eni_if.c287
1 files changed, 0 insertions, 287 deletions
diff --git a/sys/dev/hea/eni_if.c b/sys/dev/hea/eni_if.c
deleted file mode 100644
index 6355fe8..0000000
--- a/sys/dev/hea/eni_if.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- *
- * ===================================
- * HARP | Host ATM Research Platform
- * ===================================
- *
- *
- * This Host ATM Research Platform ("HARP") file (the "Software") is
- * made available by Network Computing Services, Inc. ("NetworkCS")
- * "AS IS". NetworkCS does not provide maintenance, improvements or
- * support of any kind.
- *
- * NETWORKCS MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS OR IMPLIED,
- * INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE, AS TO ANY ELEMENT OF THE
- * SOFTWARE OR ANY SUPPORT PROVIDED IN CONNECTION WITH THIS SOFTWARE.
- * In no event shall NetworkCS be responsible for any damages, including
- * but not limited to consequential damages, arising from or relating to
- * any use of the Software or related support.
- *
- * Copyright 1994-1998 Network Computing Services, Inc.
- *
- * Copies of this Software may be made, however, the above copyright
- * notice must be reproduced on all copies.
- *
- * @(#) $FreeBSD$
- *
- */
-
-/*
- * Efficient ENI Adapter Support
- * -----------------------------
- *
- * Network interface layer support
- *
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/socket.h>
-#include <sys/socketvar.h>
-#include <net/if.h>
-#include <netatm/port.h>
-#include <netatm/queue.h>
-#include <netatm/atm.h>
-#include <netatm/atm_sys.h>
-#include <netatm/atm_sap.h>
-#include <netatm/atm_cm.h>
-#include <netatm/atm_if.h>
-#include <netatm/atm_ioctl.h>
-#include <netatm/atm_stack.h>
-#include <netatm/atm_pcb.h>
-#include <netatm/atm_var.h>
-
-#include <dev/hea/eni_stats.h>
-#include <dev/hea/eni.h>
-#include <dev/hea/eni_suni.h>
-#include <dev/hea/eni_var.h>
-
-#ifndef lint
-__RCSID("@(#) $FreeBSD$");
-#endif
-
-static void eni_get_stats(Eni_unit *);
-
-/*
- * SUNI statistics counters take one of three forms:
- * single byte value (0x0 - 0xff)
- * two byte value (0x0 - 0xffff)
- * two + 1/2 (three) byte value
- * (0x0 - 0x0fffff)
- */
-#define READ_ONE(x) ( (eup->eu_suni[(x)] & 0xff) )
-
-#define READ_TWO(x) ( (eup->eu_suni[(x)+1] & 0xff) << 8 | \
- (eup->eu_suni[(x)] & 0xff) )
-
-#define READ_THREE(x) ( (eup->eu_suni[(x)+2] & 0xf) << 16 | \
- (eup->eu_suni[(x)+1] & 0xff) << 8 | \
- (eup->eu_suni[(x)] & 0xff) )
-
-/*
- * Do an initial read of the error counters without saving them.
- * In effect, this will "zero" our idea of the number of errors
- * which have occurred since the driver was loaded.
- *
- * Arguments:
- * eup pointer to per unit structure
- *
- * Returns:
- * none
- *
- */
-void
-eni_zero_stats ( eup )
- Eni_unit *eup;
-{
- int val;
-
- /*
- * Write the SUNI master control register which
- * will cause all the statistics counters to be
- * loaded.
- */
- eup->eu_suni[SUNI_MASTER_REG] = eup->eu_suni[SUNI_MASTER_REG];
-
- /*
- * Delay to allow for counter load time...
- */
- DELAY ( SUNI_DELAY );
-
- /*
- * Statistics counters contain the number of events
- * since the last time the counter was read.
- */
- val = READ_TWO ( SUNI_SECT_BIP_REG ); /* oc3_sect_bip8 */
- val = READ_TWO ( SUNI_PATH_BIP_REG ); /* oc3_path_bip8 */
- val = READ_THREE ( SUNI_LINE_BIP_REG ); /* oc3_line_bip24 */
- val = READ_THREE ( SUNI_LINE_FEBE_REG ); /* oc3_line_febe */
- val = READ_TWO ( SUNI_PATH_FEBE_REG ); /* oc3_path_febe */
- val = READ_ONE ( SUNI_HECS_REG ); /* oc3_hec_corr */
- val = READ_ONE ( SUNI_UHECS_REG ); /* oc3_hec_uncorr */
-}
-
-/*
- * Retrieve SUNI stats
- *
- * Arguments:
- * eup pointer to per unit structure
- *
- * Returns:
- * none
- *
- */
-static void
-eni_get_stats ( eup )
- Eni_unit *eup;
-{
- /*
- * Write the SUNI master control register which
- * will cause all the statistics counters to be
- * loaded.
- */
- eup->eu_suni[SUNI_MASTER_REG] = eup->eu_suni[SUNI_MASTER_REG];
-
- /*
- * Delay to allow for counter load time...
- */
- DELAY ( 10 );
-
- /*
- * Statistics counters contain the number of events
- * since the last time the counter was read.
- */
- eup->eu_stats.eni_st_oc3.oc3_sect_bip8 +=
- READ_TWO ( SUNI_SECT_BIP_REG );
- eup->eu_stats.eni_st_oc3.oc3_path_bip8 +=
- READ_TWO ( SUNI_PATH_BIP_REG );
- eup->eu_stats.eni_st_oc3.oc3_line_bip24 +=
- READ_THREE ( SUNI_LINE_BIP_REG );
- eup->eu_stats.eni_st_oc3.oc3_line_febe +=
- READ_THREE ( SUNI_LINE_FEBE_REG );
- eup->eu_stats.eni_st_oc3.oc3_path_febe +=
- READ_TWO ( SUNI_PATH_FEBE_REG );
- eup->eu_stats.eni_st_oc3.oc3_hec_corr +=
- READ_ONE ( SUNI_HECS_REG );
- eup->eu_stats.eni_st_oc3.oc3_hec_uncorr +=
- READ_ONE ( SUNI_UHECS_REG );
-}
-
-/*
- * Handle netatm core service interface ioctl requests
- *
- * Called at splnet.
- *
- * Arguments:
- * code ioctl function (sub)code
- * data data to/from ioctl
- * arg optional code-specific argument
- *
- * Returns:
- * 0 request processed successfully
- * error request failed - reason code
- *
- */
-int
-eni_atm_ioctl ( code, data, arg )
- int code;
- caddr_t data;
- caddr_t arg;
-{
- struct atminfreq *aip = (struct atminfreq *)data;
- struct atm_pif *pip = (struct atm_pif *)arg;
- Eni_unit *eup = (Eni_unit *)pip;
- caddr_t buf = aip->air_buf_addr;
- struct air_vinfo_rsp *avr;
- size_t len;
- size_t count;
- size_t buf_len = aip->air_buf_len;
- int err = 0;
- char ifname[2*IFNAMSIZ];
-
- ATM_DEBUG2("eni_atm_ioctl: code=%d, opcode=%d\n",
- code, aip->air_opcode );
-
- switch ( aip->air_opcode ) {
-
- case AIOCS_INF_VST:
- /*
- * Get vendor statistics
- */
- if ( eup == NULL )
- return ( ENXIO );
- snprintf ( ifname, sizeof(ifname),
- "%s%d", pip->pif_name, pip->pif_unit );
-
- /*
- * Cast response structure onto user's buffer
- */
- avr = (struct air_vinfo_rsp *)buf;
-
- /*
- * How large is the response structure
- */
- len = sizeof(struct air_vinfo_rsp);
-
- /*
- * Sanity check - enough room for response structure?
- */
- if ( buf_len < len )
- return ( ENOSPC );
-
- /*
- * Copy interface name into response structure
- */
- if ((err = copyout(ifname, avr->avsp_intf, IFNAMSIZ)) != 0)
- break;
-
- /*
- * Advance the buffer address and decrement the size
- */
- buf += len;
- buf_len -= len;
-
- /*
- * Get the vendor stats (SUNI) from the hardware
- */
- eni_get_stats ( eup );
- /*
- * Stick as much of it as we have room for
- * into the response
- */
- count = MIN ( sizeof(Eni_stats), buf_len );
-
- /*
- * Copy stats into user's buffer. Return value is
- * amount of data copied.
- */
- if ((err = copyout((void *)&eup->eu_stats, buf, count)) != 0)
- break;
- buf += count;
- buf_len -= count;
- if ( count < sizeof(Eni_stats) )
- err = ENOSPC;
-
- /*
- * Record amount we're returning as vendor info...
- */
- if ((err = copyout(&count, &avr->avsp_len, sizeof(count))) != 0)
- break;
-
- /*
- * Update the reply pointers and length
- */
- aip->air_buf_addr = buf;
- aip->air_buf_len = buf_len;
- break;
-
- default:
- err = ENOSYS; /* Operation not supported */
- break;
- }
-
- return ( err );
-
-}
-
OpenPOWER on IntegriCloud