i2o_lan.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:5k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *    i2o_lan.h I2O LAN Class definitions
  3.  *
  4.  *      I2O LAN CLASS OSM        May 26th 2000
  5.  *
  6.  *      (C) Copyright 1999, 2000 University of Helsinki,
  7.  * Department of Computer Science
  8.  *
  9.  *      This code is still under development / test.
  10.  *
  11.  * Author: Auvo H鋕kinen <Auvo.Hakkinen@cs.Helsinki.FI>
  12.  * Juha Siev鋘en <Juha.Sievanen@cs.Helsinki.FI>
  13.  * Taneli V鋒鋕angas <Taneli.Vahakangas@cs.Helsinki.FI>
  14.  */
  15. #ifndef _I2O_LAN_H
  16. #define _I2O_LAN_H
  17. /* Default values for tunable parameters first */
  18. #define I2O_LAN_MAX_BUCKETS_OUT 96
  19. #define I2O_LAN_BUCKET_THRESH 18 /* 9 buckets in one message */
  20. #define I2O_LAN_RX_COPYBREAK 200
  21. #define I2O_LAN_TX_TIMEOUT  (1*HZ)
  22. #define I2O_LAN_TX_BATCH_MODE 2 /* 2=automatic, 1=on, 0=off */
  23. #define I2O_LAN_EVENT_MASK 0 /* 0=None, 0xFFC00002=All */
  24. /* LAN types */
  25. #define I2O_LAN_ETHERNET 0x0030
  26. #define I2O_LAN_100VG 0x0040
  27. #define I2O_LAN_TR 0x0050
  28. #define I2O_LAN_FDDI 0x0060
  29. #define I2O_LAN_FIBRE_CHANNEL 0x0070
  30. #define I2O_LAN_UNKNOWN 0x00000000
  31. /* Connector types */
  32. /* Ethernet */
  33. #define I2O_LAN_AUI (I2O_LAN_ETHERNET << 4) + 0x00000001
  34. #define I2O_LAN_10BASE5 (I2O_LAN_ETHERNET << 4) + 0x00000002
  35. #define I2O_LAN_FIORL (I2O_LAN_ETHERNET << 4) + 0x00000003
  36. #define I2O_LAN_10BASE2 (I2O_LAN_ETHERNET << 4) + 0x00000004
  37. #define I2O_LAN_10BROAD36 (I2O_LAN_ETHERNET << 4) + 0x00000005
  38. #define I2O_LAN_10BASE_T (I2O_LAN_ETHERNET << 4) + 0x00000006
  39. #define I2O_LAN_10BASE_FP (I2O_LAN_ETHERNET << 4) + 0x00000007
  40. #define I2O_LAN_10BASE_FB (I2O_LAN_ETHERNET << 4) + 0x00000008
  41. #define I2O_LAN_10BASE_FL (I2O_LAN_ETHERNET << 4) + 0x00000009
  42. #define I2O_LAN_100BASE_TX (I2O_LAN_ETHERNET << 4) + 0x0000000A
  43. #define I2O_LAN_100BASE_FX (I2O_LAN_ETHERNET << 4) + 0x0000000B
  44. #define I2O_LAN_100BASE_T4 (I2O_LAN_ETHERNET << 4) + 0x0000000C
  45. #define I2O_LAN_1000BASE_SX (I2O_LAN_ETHERNET << 4) + 0x0000000D
  46. #define I2O_LAN_1000BASE_LX (I2O_LAN_ETHERNET << 4) + 0x0000000E
  47. #define I2O_LAN_1000BASE_CX (I2O_LAN_ETHERNET << 4) + 0x0000000F
  48. #define I2O_LAN_1000BASE_T (I2O_LAN_ETHERNET << 4) + 0x00000010
  49. /* AnyLAN */
  50. #define I2O_LAN_100VG_ETHERNET (I2O_LAN_100VG << 4) + 0x00000001
  51. #define I2O_LAN_100VG_TR (I2O_LAN_100VG << 4) + 0x00000002
  52. /* Token Ring */
  53. #define I2O_LAN_4MBIT (I2O_LAN_TR << 4) + 0x00000001
  54. #define I2O_LAN_16MBIT (I2O_LAN_TR << 4) + 0x00000002
  55. /* FDDI */
  56. #define I2O_LAN_125MBAUD (I2O_LAN_FDDI << 4) + 0x00000001
  57. /* Fibre Channel */
  58. #define I2O_LAN_POINT_POINT (I2O_LAN_FIBRE_CHANNEL << 4) + 0x00000001
  59. #define I2O_LAN_ARB_LOOP (I2O_LAN_FIBRE_CHANNEL << 4) + 0x00000002
  60. #define I2O_LAN_PUBLIC_LOOP (I2O_LAN_FIBRE_CHANNEL << 4) + 0x00000003
  61. #define I2O_LAN_FABRIC (I2O_LAN_FIBRE_CHANNEL << 4) + 0x00000004
  62. #define I2O_LAN_EMULATION 0x00000F00
  63. #define I2O_LAN_OTHER 0x00000F01
  64. #define I2O_LAN_DEFAULT 0xFFFFFFFF
  65. /* LAN class functions */
  66. #define LAN_PACKET_SEND 0x3B
  67. #define LAN_SDU_SEND 0x3D
  68. #define LAN_RECEIVE_POST 0x3E
  69. #define LAN_RESET 0x35
  70. #define LAN_SUSPEND 0x37
  71. /* LAN DetailedStatusCode defines */
  72. #define I2O_LAN_DSC_SUCCESS 0x00
  73. #define I2O_LAN_DSC_DEVICE_FAILURE 0x01
  74. #define I2O_LAN_DSC_DESTINATION_NOT_FOUND 0x02
  75. #define I2O_LAN_DSC_TRANSMIT_ERROR 0x03
  76. #define I2O_LAN_DSC_TRANSMIT_ABORTED 0x04
  77. #define I2O_LAN_DSC_RECEIVE_ERROR 0x05
  78. #define I2O_LAN_DSC_RECEIVE_ABORTED 0x06
  79. #define I2O_LAN_DSC_DMA_ERROR 0x07
  80. #define I2O_LAN_DSC_BAD_PACKET_DETECTED 0x08
  81. #define I2O_LAN_DSC_OUT_OF_MEMORY 0x09
  82. #define I2O_LAN_DSC_BUCKET_OVERRUN 0x0A
  83. #define I2O_LAN_DSC_IOP_INTERNAL_ERROR 0x0B
  84. #define I2O_LAN_DSC_CANCELED 0x0C
  85. #define I2O_LAN_DSC_INVALID_TRANSACTION_CONTEXT 0x0D
  86. #define I2O_LAN_DSC_DEST_ADDRESS_DETECTED 0x0E
  87. #define I2O_LAN_DSC_DEST_ADDRESS_OMITTED 0x0F
  88. #define I2O_LAN_DSC_PARTIAL_PACKET_RETURNED 0x10
  89. #define I2O_LAN_DSC_SUSPENDED 0x11
  90. struct i2o_packet_info {
  91. u32 offset : 24;
  92. u32 flags  : 8;
  93. u32 len    : 24;
  94. u32 status : 8;
  95. };
  96. struct i2o_bucket_descriptor {
  97. u32 context;  /* FIXME: 64bit support */
  98. struct i2o_packet_info packet_info[1];
  99. };
  100. /* Event Indicator Mask Flags for LAN OSM */
  101. #define I2O_LAN_EVT_LINK_DOWN 0x01
  102. #define I2O_LAN_EVT_LINK_UP 0x02
  103. #define I2O_LAN_EVT_MEDIA_CHANGE  0x04
  104. #include <linux/netdevice.h>
  105. #include <linux/fddidevice.h>
  106. struct i2o_lan_local {
  107. u8 unit;
  108. struct i2o_device *i2o_dev;
  109. struct fddi_statistics stats;   /* see also struct net_device_stats */
  110. unsigned short (*type_trans)(struct sk_buff *, struct net_device *);
  111. atomic_t buckets_out;   /* nbr of unused buckets on DDM */
  112. atomic_t tx_out; /* outstanding TXes */
  113. u8 tx_count;   /* packets in one TX message frame */
  114. u16 tx_max_out;     /* DDM's Tx queue len */
  115. u8 sgl_max; /* max SGLs in one message frame */
  116. u32 m; /* IOP address of the batch msg frame */
  117. struct tq_struct i2o_batch_send_task;
  118. int send_active;
  119. struct sk_buff **i2o_fbl; /* Free bucket list (to reuse skbs) */
  120. int i2o_fbl_tail;
  121. spinlock_t fbl_lock;
  122. spinlock_t tx_lock;
  123. u32 max_size_mc_table; /* max number of multicast addresses */
  124. /* LAN OSM configurable parameters are here: */
  125. u16 max_buckets_out; /* max nbr of buckets to send to DDM */
  126. u16 bucket_thresh; /* send more when this many used */
  127. u16 rx_copybreak;
  128. u8  tx_batch_mode; /* Set when using batch mode sends */
  129. u32 i2o_event_mask; /* To turn on interesting event flags */
  130. };
  131. #endif /* _I2O_LAN_H */