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