110 lines
3.4 KiB
C
110 lines
3.4 KiB
C
|
/****************************************************************************
|
||
|
* 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_ */
|