linux-old/drivers/usb/CDCEther.h
<<
>>
Prefs
   1// Portions of this file taken from
   2// Petko Manolov - Petkan (petkan@dce.bg)
   3// from his driver pegasus.h
   4
   5/*
   6 * This program is free software; you can redistribute it and/or modify
   7 * it under the terms of the GNU General Public License as published by
   8 * the Free Software Foundation; either version 2 of the License, or
   9 * (at your option) any later version.
  10 *
  11 * This program is distributed in the hope that it will be useful,
  12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14 * GNU General Public License for more details.
  15 *
  16 * You should have received a copy of the GNU General Public License
  17 * along with this program; if not, write to the Free Software
  18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  19 */
  20
  21/* From CDC Spec Table 24 */
  22#define CS_INTERFACE                    0x24
  23
  24#define CDC_ETHER_MAX_MTU               1536
  25
  26/* These definitions are used with the ether_dev_t flags element */
  27#define CDC_ETHER_PRESENT               0x00000001
  28#define CDC_ETHER_RUNNING               0x00000002
  29#define CDC_ETHER_TX_BUSY               0x00000004
  30#define CDC_ETHER_RX_BUSY               0x00000008
  31#define CDC_ETHER_UNPLUG                0x00000040
  32
  33#define CDC_ETHER_TX_TIMEOUT    (HZ*10)
  34
  35#define TX_UNDERRUN                     0x80
  36#define EXCESSIVE_COL                   0x40
  37#define LATE_COL                        0x20
  38#define NO_CARRIER                      0x10
  39#define LOSS_CARRIER                    0x08
  40#define JABBER_TIMEOUT                  0x04
  41
  42#define CDC_ETHER_REQT_READ             0xc0
  43#define CDC_ETHER_REQT_WRITE    0x40
  44#define CDC_ETHER_REQ_GET_REGS  0xf0
  45#define CDC_ETHER_REQ_SET_REGS  0xf1
  46#define CDC_ETHER_REQ_SET_REG   PIPERIDER_REQ_SET_REGS
  47
  48typedef struct _ether_dev_t {
  49        struct usb_device       *usb;
  50        struct net_device       *net;
  51        struct net_device_stats stats;
  52        unsigned                flags;
  53        unsigned                properties;
  54        int                     configuration_num;
  55        int                     bConfigurationValue;
  56        int                     comm_interface;
  57        int                     comm_bInterfaceNumber;
  58        int                     comm_interface_altset_num;
  59        int                     comm_bAlternateSetting;
  60        int                     comm_ep_in;
  61        int                     data_interface;
  62        int                     data_bInterfaceNumber;
  63        int                     data_interface_altset_num_with_traffic;
  64        int                     data_bAlternateSetting_with_traffic;
  65        int                     data_interface_altset_num_without_traffic;
  66        int                     data_bAlternateSetting_without_traffic;
  67        int                     data_ep_in;
  68        int                     data_ep_out;
  69        int                     data_ep_out_size;
  70        __u16                   bcdCDC;
  71        __u8                    iMACAddress;
  72        __u32                   bmEthernetStatistics;
  73        __u16                   wMaxSegmentSize;
  74        __u16                   wNumberMCFilters;
  75        __u8                    bNumberPowerFilters;
  76        __u16                   mode_flags;
  77        int                     intr_interval;
  78        struct usb_ctrlrequest  ctrl_dr;
  79        struct urb              rx_urb, tx_urb, intr_urb, ctrl_urb;
  80        unsigned char           rx_buff[CDC_ETHER_MAX_MTU] __attribute__((aligned(L1_CACHE_BYTES)));
  81        unsigned char           tx_buff[CDC_ETHER_MAX_MTU] __attribute__((aligned(L1_CACHE_BYTES)));
  82        unsigned char           intr_buff[16]
  83                                __attribute__((aligned(L1_CACHE_BYTES))) ;
  84} ether_dev_t;
  85
  86/* These definitions used in the Ethernet Packet Filtering requests */
  87/* See CDC Spec Table 62 */
  88#define MODE_FLAG_PROMISCUOUS   (1<<0)
  89#define MODE_FLAG_ALL_MULTICAST (1<<1)
  90#define MODE_FLAG_DIRECTED      (1<<2)
  91#define MODE_FLAG_BROADCAST     (1<<3)
  92#define MODE_FLAG_MULTICAST     (1<<4)
  93
  94/* CDC Spec class requests - CDC Spec Table 46 */
  95#define SET_ETHERNET_MULTICAST_FILTER    0x40
  96#define SET_ETHERNET_PACKET_FILTER       0x43
  97
  98
  99/* These definitions are used with the ether_dev_t properties field */
 100#define HAVE_NOTIFICATION_ELEMENT       0x0001
 101#define PERFECT_FILTERING               0x0002
 102#define NO_SET_MULTICAST                0x0004
 103
 104/* These definitions are used in the requirements parser */
 105#define REQ_HDR_FUNC_DESCR      0x0001
 106#define REQ_UNION_FUNC_DESCR    0x0002
 107#define REQ_ETH_FUNC_DESCR      0x0004
 108#define REQUIREMENTS_TOTAL      REQ_ETH_FUNC_DESCR | REQ_UNION_FUNC_DESCR | REQ_HDR_FUNC_DESCR
 109
 110/* Some useful lengths */
 111#define HEADER_FUNC_DESC_LEN    0x5
 112#define UNION_FUNC_DESC_LEN     0x5
 113#define ETHERNET_FUNC_DESC_LEN  0xD /* 13 for all you decimal weenies */
 114
 115
 116
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.