Kernel  |  3.3

下载     查看原文件
C++程序  |  97行  |  3.57 KB
/*
 * RWL definitions  of
 * Broadcom 802.11bang Networking Device Driver
 *
 * Copyright (C) 2012, Broadcom Corporation
 * All Rights Reserved.
 * 
 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
 * the contents of this file may not be disclosed to third parties, copied
 * or duplicated in any form, in whole or in part, without the prior
 * written permission of Broadcom Corporation.
 *
 * $Id: rwl_wifi.h 281527 2011-09-02 17:12:53Z $
 *
 */

#ifndef _rwl_wifi_h_
#define _rwl_wifi_h_

#if defined(RWL_WIFI) || defined(WIFI_REFLECTOR) || defined(RFAWARE)

#define RWL_ACTION_WIFI_CATEGORY	127  /* Vendor-specific category value for WiFi */
#define RWL_WIFI_OUI_BYTE0		0x00 /* BRCM-specific public OUI */
#define RWL_WIFI_OUI_BYTE1		0x90
#define RWL_WIFI_OUI_BYTE2		0x4c
#define RWL_WIFI_ACTION_FRAME_SIZE	sizeof(struct dot11_action_wifi_vendor_specific)
#define RWL_WIFI_FIND_MY_PEER		0x09 /* Used while finding server */
#define RWL_WIFI_FOUND_PEER		0x0A /* Server response to the client  */
#define RWL_WIFI_DEFAULT		0x00
#define RWL_ACTION_WIFI_FRAG_TYPE	0x55 /* Fragment indicator for receiver */

/*
 * Information about the action frame data fields in the dot11_action_wifi_vendor_specific
 * cdc structure (1 to 16). This does not include the status flag. Since this
 * is not directly visible to the driver code, we can't use sizeof(struct cdc_ioctl).
 * Hence Ref MAC address offset starts from byte 17.
 * REF MAC ADDR (6 bytes (MAC Address len) from byte 17 to 22)
 * DUT MAC ADDR (6 bytes after the REF MAC Address byte 23 to 28)
 * unused (byte 29 to 49)
 * REF/Client Channel offset (50)
 * DUT/Server channel offset (51)
 * ---------------------------------------------------------------------------------------
 * cdc struct|REF MAC ADDR|DUT_MAC_ADDR|un used|REF Channel|DUT channel|Action frame Data|
 * 1---------17-----------23-------------------50----------51----------52----------------1040
 * REF MAC addr after CDC struct without status flag (status flag not used by wifi)
 */

#define RWL_REF_MAC_ADDRESS_OFFSET	17
#define RWL_DUT_MAC_ADDRESS_OFFSET	23
#define RWL_WIFI_CLIENT_CHANNEL_OFFSET	50
#define RWL_WIFI_SERVER_CHANNEL_OFFSET	51

#ifdef WIFI_REFLECTOR
#include <bcmcdc.h>
#define REMOTE_FINDSERVER_CMD 	16
#define RWL_WIFI_ACTION_CMD		"wifiaction"
#define RWL_WIFI_ACTION_CMD_LEN		11	/* With the NULL terminator */
#define REMOTE_SET_CMD 		1
#define REMOTE_GET_CMD 		2
#define REMOTE_REPLY 			4
#define RWL_WIFI_DEFAULT_TYPE           0x00
#define RWL_WIFI_DEFAULT_SUBTYPE        0x00
#define RWL_ACTION_FRAME_DATA_SIZE      1024	/* fixed size for the wifi frame data */
#define RWL_WIFI_CDC_HEADER_OFFSET      0
#define RWL_WIFI_FRAG_DATA_SIZE         960	/* max size of the frag data */
#define RWL_DEFAULT_WIFI_FRAG_COUNT 	127 	/* maximum fragment count */
#define RWL_WIFI_RETRY			5       /* CMD retry count for wifi */
#define RWL_WIFI_SEND			5	/* WIFI frame sent count */
#define RWL_WIFI_SEND_DELAY		100	/* delay between two frames */
#define MICROSEC_CONVERTOR_VAL		1000
#ifndef IFNAMSIZ
#define IFNAMSIZ			16
#endif

typedef struct rem_packet {
	rem_ioctl_t rem_cdc;
	uchar message [RWL_ACTION_FRAME_DATA_SIZE];
} rem_packet_t;

struct send_packet {
	char command [RWL_WIFI_ACTION_CMD_LEN];
	dot11_action_wifi_vendor_specific_t response;
} PACKED;
typedef struct send_packet send_packet_t;

#define REMOTE_SIZE     sizeof(rem_ioctl_t)
#endif /* WIFI_REFLECTOR */

typedef struct rwl_request {
	struct rwl_request* next_request;
	struct dot11_action_wifi_vendor_specific action_frame;
} rwl_request_t;


#endif /* defined(RWL_WIFI) || defined(WIFI_REFLECTOR) */
#endif	/* _rwl_wifi_h_ */