Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / usb / gadget / rndis.h
index 150ec8e..95b4c63 100644 (file)
@@ -38,6 +38,7 @@
  */
 
 /* Message Set for Connectionless (802.3) Devices */
+#define REMOTE_NDIS_PACKET_MSG         0x00000001U
 #define REMOTE_NDIS_INITIALIZE_MSG     0x00000002U     /* Initialize device */
 #define REMOTE_NDIS_HALT_MSG           0x00000003U
 #define REMOTE_NDIS_QUERY_MSG          0x00000004U
 
 #define RNDIS_MEDIUM_802_3             0x00000000U
 
-/* supported OIDs */
-static const u32 oid_supported_list [] = 
-{
-       /* mandatory general */
-       /* the general stuff */
-       OID_GEN_SUPPORTED_LIST,
-       OID_GEN_HARDWARE_STATUS,
-       OID_GEN_MEDIA_SUPPORTED,
-       OID_GEN_MEDIA_IN_USE,
-       OID_GEN_MAXIMUM_FRAME_SIZE,
-       OID_GEN_LINK_SPEED,
-       OID_GEN_TRANSMIT_BUFFER_SPACE,
-       OID_GEN_TRANSMIT_BLOCK_SIZE,
-       OID_GEN_RECEIVE_BLOCK_SIZE,
-       OID_GEN_VENDOR_ID,
-       OID_GEN_VENDOR_DESCRIPTION,
-       OID_GEN_VENDOR_DRIVER_VERSION,
-       OID_GEN_CURRENT_PACKET_FILTER,
-       OID_GEN_MAXIMUM_TOTAL_SIZE,
-       OID_GEN_MAC_OPTIONS,
-       OID_GEN_MEDIA_CONNECT_STATUS,
-       OID_GEN_PHYSICAL_MEDIUM,
-       OID_GEN_RNDIS_CONFIG_PARAMETER,
-       
-       /* the statistical stuff */
-       OID_GEN_XMIT_OK,
-       OID_GEN_RCV_OK,
-       OID_GEN_XMIT_ERROR,
-       OID_GEN_RCV_ERROR,
-       OID_GEN_RCV_NO_BUFFER,
-       OID_GEN_DIRECTED_BYTES_XMIT,
-       OID_GEN_DIRECTED_FRAMES_XMIT,
-       OID_GEN_MULTICAST_BYTES_XMIT,
-       OID_GEN_MULTICAST_FRAMES_XMIT,
-       OID_GEN_BROADCAST_BYTES_XMIT,
-       OID_GEN_BROADCAST_FRAMES_XMIT,
-       OID_GEN_DIRECTED_BYTES_RCV,
-       OID_GEN_DIRECTED_FRAMES_RCV,
-       OID_GEN_MULTICAST_BYTES_RCV,
-       OID_GEN_MULTICAST_FRAMES_RCV,
-       OID_GEN_BROADCAST_BYTES_RCV,
-       OID_GEN_BROADCAST_FRAMES_RCV,
-       OID_GEN_RCV_CRC_ERROR,
-       OID_GEN_TRANSMIT_QUEUE_LENGTH,
-
-       /* mandatory 802.3 */
-       /* the general stuff */
-       OID_802_3_PERMANENT_ADDRESS,
-       OID_802_3_CURRENT_ADDRESS,
-       OID_802_3_MULTICAST_LIST,
-       OID_802_3_MAC_OPTIONS,
-       OID_802_3_MAXIMUM_LIST_SIZE,
-       
-       /* the statistical stuff */
-       OID_802_3_RCV_ERROR_ALIGNMENT,
-       OID_802_3_XMIT_ONE_COLLISION,
-       OID_802_3_XMIT_MORE_COLLISIONS
-};
+/* from drivers/net/sk98lin/h/skgepnmi.h */
+#define OID_PNP_CAPABILITIES                   0xFD010100
+#define OID_PNP_SET_POWER                      0xFD010101
+#define OID_PNP_QUERY_POWER                    0xFD010102
+#define OID_PNP_ADD_WAKE_UP_PATTERN            0xFD010103
+#define OID_PNP_REMOVE_WAKE_UP_PATTERN         0xFD010104
+#define OID_PNP_ENABLE_WAKE_UP                 0xFD010106
 
 
 typedef struct rndis_init_msg_type 
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     RequestID;
-       u32     MajorVersion;
-       u32     MinorVersion;
-       u32     MaxTransferSize;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  RequestID;
+       __le32  MajorVersion;
+       __le32  MinorVersion;
+       __le32  MaxTransferSize;
 } rndis_init_msg_type;
 
 typedef struct rndis_init_cmplt_type
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     RequestID;
-       u32     Status;
-       u32     MajorVersion;
-       u32     MinorVersion;
-       u32     DeviceFlags;
-       u32     Medium;
-       u32     MaxPacketsPerTransfer;
-       u32     MaxTransferSize;
-       u32     PacketAlignmentFactor;
-       u32     AFListOffset;
-       u32     AFListSize;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  RequestID;
+       __le32  Status;
+       __le32  MajorVersion;
+       __le32  MinorVersion;
+       __le32  DeviceFlags;
+       __le32  Medium;
+       __le32  MaxPacketsPerTransfer;
+       __le32  MaxTransferSize;
+       __le32  PacketAlignmentFactor;
+       __le32  AFListOffset;
+       __le32  AFListSize;
 } rndis_init_cmplt_type;
 
 typedef struct rndis_halt_msg_type
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     RequestID;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  RequestID;
 } rndis_halt_msg_type;
 
 typedef struct rndis_query_msg_type
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     RequestID;
-       u32     OID;
-       u32     InformationBufferLength;
-       u32     InformationBufferOffset;
-       u32     DeviceVcHandle;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  RequestID;
+       __le32  OID;
+       __le32  InformationBufferLength;
+       __le32  InformationBufferOffset;
+       __le32  DeviceVcHandle;
 } rndis_query_msg_type;
 
 typedef struct rndis_query_cmplt_type
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     RequestID;
-       u32     Status;
-       u32     InformationBufferLength;
-       u32     InformationBufferOffset;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  RequestID;
+       __le32  Status;
+       __le32  InformationBufferLength;
+       __le32  InformationBufferOffset;
 } rndis_query_cmplt_type;
 
 typedef struct rndis_set_msg_type
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     RequestID;
-       u32     OID;
-       u32     InformationBufferLength;
-       u32     InformationBufferOffset;
-       u32     DeviceVcHandle;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  RequestID;
+       __le32  OID;
+       __le32  InformationBufferLength;
+       __le32  InformationBufferOffset;
+       __le32  DeviceVcHandle;
 } rndis_set_msg_type;
 
 typedef struct rndis_set_cmplt_type
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     RequestID;
-       u32     Status;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  RequestID;
+       __le32  Status;
 } rndis_set_cmplt_type;
 
 typedef struct rndis_reset_msg_type
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     Reserved;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  Reserved;
 } rndis_reset_msg_type;
 
 typedef struct rndis_reset_cmplt_type
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     Status;
-       u32     AddressingReset;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  Status;
+       __le32  AddressingReset;
 } rndis_reset_cmplt_type;
 
 typedef struct rndis_indicate_status_msg_type
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     Status;
-       u32     StatusBufferLength;
-       u32     StatusBufferOffset;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  Status;
+       __le32  StatusBufferLength;
+       __le32  StatusBufferOffset;
 } rndis_indicate_status_msg_type;
 
 typedef struct rndis_keepalive_msg_type
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     RequestID;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  RequestID;
 } rndis_keepalive_msg_type;
 
 typedef struct rndis_keepalive_cmplt_type
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     RequestID;
-       u32     Status;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  RequestID;
+       __le32  Status;
 } rndis_keepalive_cmplt_type;
 
 struct rndis_packet_msg_type
 {
-       u32     MessageType;
-       u32     MessageLength;
-       u32     DataOffset;
-       u32     DataLength;
-       u32     OOBDataOffset;
-       u32     OOBDataLength;
-       u32     NumOOBDataElements;
-       u32     PerPacketInfoOffset;
-       u32     PerPacketInfoLength;
-       u32     VcHandle;
-       u32     Reserved;
+       __le32  MessageType;
+       __le32  MessageLength;
+       __le32  DataOffset;
+       __le32  DataLength;
+       __le32  OOBDataOffset;
+       __le32  OOBDataLength;
+       __le32  NumOOBDataElements;
+       __le32  PerPacketInfoOffset;
+       __le32  PerPacketInfoLength;
+       __le32  VcHandle;
+       __le32  Reserved;
 };
 
 struct rndis_config_parameter
 {
-       u32     ParameterNameOffset;
-       u32     ParameterNameLength;
-       u32     ParameterType;
-       u32     ParameterValueOffset;
-       u32     ParameterValueLength;
+       __le32  ParameterNameOffset;
+       __le32  ParameterNameLength;
+       __le32  ParameterType;
+       __le32  ParameterValueOffset;
+       __le32  ParameterValueLength;
 };
 
 /* implementation specific */
@@ -275,15 +225,18 @@ typedef struct rndis_resp_t
 typedef struct rndis_params
 {
        u8                      confignr;
-       int                     used;
+       u8                      used;
+       u16                     saved_filter;
        enum rndis_state        state;
-       u32                     filter;
        u32                     medium;
        u32                     speed;
        u32                     media_state;
+
        const u8                *host_mac;
+       u16                     *filter;
        struct net_device       *dev;
        struct net_device_stats *stats;
+
        u32                     vendorID;
        const char              *vendorDescr;
        int                     (*ack) (struct net_device *);
@@ -295,15 +248,17 @@ int  rndis_msg_parser (u8 configNr, u8 *buf);
 int  rndis_register (int (*rndis_control_ack) (struct net_device *));
 void rndis_deregister (int configNr);
 int  rndis_set_param_dev (u8 configNr, struct net_device *dev,
-                        struct net_device_stats *stats);
+                        struct net_device_stats *stats,
+                        u16 *cdc_filter);
 int  rndis_set_param_vendor (u8 configNr, u32 vendorID, 
                            const char *vendorDescr);
 int  rndis_set_param_medium (u8 configNr, u32 medium, u32 speed);
 void rndis_add_hdr (struct sk_buff *skb);
-int  rndis_rm_hdr (u8 *buf, u32 *length);
+int rndis_rm_hdr (struct sk_buff *skb);
 u8   *rndis_get_next_response (int configNr, u32 *length);
 void rndis_free_response (int configNr, u8 *buf);
 
+void rndis_uninit (int configNr);
 int  rndis_signal_connect (int configNr);
 int  rndis_signal_disconnect (int configNr);
 int  rndis_state (int configNr);