| /**************************************************************************** | |
| * 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_ */ |