mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-23 11:04:44 +08:00
24ceb9c669
Now that the SPDX tag is in all USB files, that identifies the license in a specific and legally-defined manner. So the extra GPL text wording can be removed as it is no longer needed at all. This is done on a quest to remove the 700+ different ways that files in the kernel describe the GPL license text. And there's unneeded stuff like the address (sometimes incorrect) for the FSF which is never needed. No copyright headers or other non-license-description text was removed. Cc: Oliver Neukum <oneukum@suse.com> Cc: Johan Hovold <johan@kernel.org> Cc: Jerry Zhang <zhangjerry@google.com> Cc: John Keeping <john@metanate.com> Cc: Krzysztof Opasiak <k.opasiak@samsung.com> Cc: Abdulhadi Mohamed <abdulahhadi2@gmail.com> Cc: Matthew Wilcox <willy@linux.intel.com> Cc: Janusz Dziedzic <januszx.dziedzic@linux.intel.com> Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com> Acked-by: Michal Nazarewicz <mina86@mina86.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Vincent Pelletier <plr.vincent@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
202 lines
4.8 KiB
C
202 lines
4.8 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* RNDIS Definitions for Remote NDIS
|
|
*
|
|
* Authors: Benedikt Spranger, Pengutronix
|
|
* Robert Schwebel, Pengutronix
|
|
*
|
|
* This software was originally developed in conformance with
|
|
* Microsoft's Remote NDIS Specification License Agreement.
|
|
*/
|
|
|
|
#ifndef _LINUX_RNDIS_H
|
|
#define _LINUX_RNDIS_H
|
|
|
|
#include <linux/rndis.h>
|
|
#include "u_ether.h"
|
|
#include "ndis.h"
|
|
|
|
#define RNDIS_MAXIMUM_FRAME_SIZE 1518
|
|
#define RNDIS_MAX_TOTAL_SIZE 1558
|
|
|
|
typedef struct rndis_init_msg_type {
|
|
__le32 MessageType;
|
|
__le32 MessageLength;
|
|
__le32 RequestID;
|
|
__le32 MajorVersion;
|
|
__le32 MinorVersion;
|
|
__le32 MaxTransferSize;
|
|
} rndis_init_msg_type;
|
|
|
|
typedef struct rndis_init_cmplt_type {
|
|
__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 {
|
|
__le32 MessageType;
|
|
__le32 MessageLength;
|
|
__le32 RequestID;
|
|
} rndis_halt_msg_type;
|
|
|
|
typedef struct rndis_query_msg_type {
|
|
__le32 MessageType;
|
|
__le32 MessageLength;
|
|
__le32 RequestID;
|
|
__le32 OID;
|
|
__le32 InformationBufferLength;
|
|
__le32 InformationBufferOffset;
|
|
__le32 DeviceVcHandle;
|
|
} rndis_query_msg_type;
|
|
|
|
typedef struct rndis_query_cmplt_type {
|
|
__le32 MessageType;
|
|
__le32 MessageLength;
|
|
__le32 RequestID;
|
|
__le32 Status;
|
|
__le32 InformationBufferLength;
|
|
__le32 InformationBufferOffset;
|
|
} rndis_query_cmplt_type;
|
|
|
|
typedef struct rndis_set_msg_type {
|
|
__le32 MessageType;
|
|
__le32 MessageLength;
|
|
__le32 RequestID;
|
|
__le32 OID;
|
|
__le32 InformationBufferLength;
|
|
__le32 InformationBufferOffset;
|
|
__le32 DeviceVcHandle;
|
|
} rndis_set_msg_type;
|
|
|
|
typedef struct rndis_set_cmplt_type {
|
|
__le32 MessageType;
|
|
__le32 MessageLength;
|
|
__le32 RequestID;
|
|
__le32 Status;
|
|
} rndis_set_cmplt_type;
|
|
|
|
typedef struct rndis_reset_msg_type {
|
|
__le32 MessageType;
|
|
__le32 MessageLength;
|
|
__le32 Reserved;
|
|
} rndis_reset_msg_type;
|
|
|
|
typedef struct rndis_reset_cmplt_type {
|
|
__le32 MessageType;
|
|
__le32 MessageLength;
|
|
__le32 Status;
|
|
__le32 AddressingReset;
|
|
} rndis_reset_cmplt_type;
|
|
|
|
typedef struct rndis_indicate_status_msg_type {
|
|
__le32 MessageType;
|
|
__le32 MessageLength;
|
|
__le32 Status;
|
|
__le32 StatusBufferLength;
|
|
__le32 StatusBufferOffset;
|
|
} rndis_indicate_status_msg_type;
|
|
|
|
typedef struct rndis_keepalive_msg_type {
|
|
__le32 MessageType;
|
|
__le32 MessageLength;
|
|
__le32 RequestID;
|
|
} rndis_keepalive_msg_type;
|
|
|
|
typedef struct rndis_keepalive_cmplt_type {
|
|
__le32 MessageType;
|
|
__le32 MessageLength;
|
|
__le32 RequestID;
|
|
__le32 Status;
|
|
} rndis_keepalive_cmplt_type;
|
|
|
|
struct rndis_packet_msg_type {
|
|
__le32 MessageType;
|
|
__le32 MessageLength;
|
|
__le32 DataOffset;
|
|
__le32 DataLength;
|
|
__le32 OOBDataOffset;
|
|
__le32 OOBDataLength;
|
|
__le32 NumOOBDataElements;
|
|
__le32 PerPacketInfoOffset;
|
|
__le32 PerPacketInfoLength;
|
|
__le32 VcHandle;
|
|
__le32 Reserved;
|
|
} __attribute__ ((packed));
|
|
|
|
struct rndis_config_parameter {
|
|
__le32 ParameterNameOffset;
|
|
__le32 ParameterNameLength;
|
|
__le32 ParameterType;
|
|
__le32 ParameterValueOffset;
|
|
__le32 ParameterValueLength;
|
|
};
|
|
|
|
/* implementation specific */
|
|
enum rndis_state {
|
|
RNDIS_UNINITIALIZED,
|
|
RNDIS_INITIALIZED,
|
|
RNDIS_DATA_INITIALIZED,
|
|
};
|
|
|
|
typedef struct rndis_resp_t {
|
|
struct list_head list;
|
|
u8 *buf;
|
|
u32 length;
|
|
int send;
|
|
} rndis_resp_t;
|
|
|
|
typedef struct rndis_params {
|
|
int confignr;
|
|
u8 used;
|
|
u16 saved_filter;
|
|
enum rndis_state state;
|
|
u32 medium;
|
|
u32 speed;
|
|
u32 media_state;
|
|
|
|
const u8 *host_mac;
|
|
u16 *filter;
|
|
struct net_device *dev;
|
|
|
|
u32 vendorID;
|
|
const char *vendorDescr;
|
|
void (*resp_avail)(void *v);
|
|
void *v;
|
|
struct list_head resp_queue;
|
|
} rndis_params;
|
|
|
|
/* RNDIS Message parser and other useless functions */
|
|
int rndis_msg_parser(struct rndis_params *params, u8 *buf);
|
|
struct rndis_params *rndis_register(void (*resp_avail)(void *v), void *v);
|
|
void rndis_deregister(struct rndis_params *params);
|
|
int rndis_set_param_dev(struct rndis_params *params, struct net_device *dev,
|
|
u16 *cdc_filter);
|
|
int rndis_set_param_vendor(struct rndis_params *params, u32 vendorID,
|
|
const char *vendorDescr);
|
|
int rndis_set_param_medium(struct rndis_params *params, u32 medium,
|
|
u32 speed);
|
|
void rndis_add_hdr(struct sk_buff *skb);
|
|
int rndis_rm_hdr(struct gether *port, struct sk_buff *skb,
|
|
struct sk_buff_head *list);
|
|
u8 *rndis_get_next_response(struct rndis_params *params, u32 *length);
|
|
void rndis_free_response(struct rndis_params *params, u8 *buf);
|
|
|
|
void rndis_uninit(struct rndis_params *params);
|
|
int rndis_signal_connect(struct rndis_params *params);
|
|
int rndis_signal_disconnect(struct rndis_params *params);
|
|
int rndis_state(struct rndis_params *params);
|
|
extern void rndis_set_host_mac(struct rndis_params *params, const u8 *addr);
|
|
|
|
#endif /* _LINUX_RNDIS_H */
|