123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /****************************************************************************
- * Copyright(c) 2000-2001 Broadcom Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation.
- *
- * Name: nicext.h
- *
- * Description: Broadcom Network Interface Card Extension (NICE) is an
- * extension to Linux NET device kernel mode drivers.
- * NICE is designed to provide additional functionalities,
- * such as receive packet intercept. To support Broadcom NICE,
- * the network device driver can be modified by adding an
- * device ioctl handler and by indicating receiving packets
- * to the NICE receive handler. Broadcom NICE will only be
- * enabled by a NICE-aware intermediate driver, such as
- * Broadcom Advanced Server Program Driver (BASP). When NICE
- * is not enabled, the modified network device drivers
- * functions exactly as other non-NICE aware drivers.
- *
- * Author: Frankie Fan
- *
- * Created: September 17, 2000
- *
- ****************************************************************************/
- #ifndef _nicext_h_
- #define _nicext_h_
- /*
- * ioctl for NICE
- */
- #define SIOCNICE SIOCDEVPRIVATE+7
- /*
- * SIOCNICE:
- *
- * The following structure needs to be less than IFNAMSIZ (16 bytes) because
- * we're overloading ifreq.ifr_ifru.
- *
- * If 16 bytes is not enough, we should consider relaxing this because
- * this is no field after ifr_ifru in the ifreq structure. But we may
- * run into future compatiability problem in case of changing struct ifreq.
- */
- struct nice_req
- {
- __u32 cmd;
- union
- {
- #ifdef __KERNEL__
- /* cmd = NICE_CMD_SET_RX or NICE_CMD_GET_RX */
- struct
- {
- void (*nrqus1_rx)( struct sk_buff*, void* );
- void* nrqus1_ctx;
- } nrqu_nrqus1;
- /* cmd = NICE_CMD_QUERY_SUPPORT */
- struct
- {
- __u32 nrqus2_magic;
- __u32 nrqus2_support_rx:1;
- __u32 nrqus2_support_vlan:1;
- __u32 nrqus2_support_get_speed:1;
- } nrqu_nrqus2;
- #endif
- /* cmd = NICE_CMD_GET_SPEED */
- struct
- {
- unsigned int nrqus3_speed; /* 0 if link is down, */
- /* otherwise speed in Mbps */
- } nrqu_nrqus3;
- /* cmd = NICE_CMD_BLINK_LED */
- struct
- {
- unsigned int nrqus4_blink_time; /* blink duration in seconds */
- } nrqu_nrqus4;
- } nrq_nrqu;
- };
- #define nrq_rx nrq_nrqu.nrqu_nrqus1.nrqus1_rx
- #define nrq_ctx nrq_nrqu.nrqu_nrqus1.nrqus1_ctx
- #define nrq_support_rx nrq_nrqu.nrqu_nrqus2.nrqus2_support_rx
- #define nrq_magic nrq_nrqu.nrqu_nrqus2.nrqus2_magic
- #define nrq_support_vlan nrq_nrqu.nrqu_nrqus2.nrqus2_support_vlan
- #define nrq_support_get_speed nrq_nrqu.nrqu_nrqus2.nrqus2_support_get_speed
- #define nrq_speed nrq_nrqu.nrqu_nrqus3.nrqus3_speed
- #define nrq_blink_time nrq_nrqu.nrqu_nrqus4.nrqus4_blink_time
- /*
- * magic constants
- */
- #define NICE_REQUESTOR_MAGIC 0x4543494E /* NICE in ascii */
- #define NICE_DEVICE_MAGIC 0x4E494345 /* ECIN in ascii */
- /*
- * command field
- */
- #define NICE_CMD_QUERY_SUPPORT 0x00000001
- #define NICE_CMD_SET_RX 0x00000002
- #define NICE_CMD_GET_RX 0x00000003
- #define NICE_CMD_GET_SPEED 0x00000004
- #define NICE_CMD_BLINK_LED 0x00000005
- #endif /* _nicext_h_ */
|