From 691cc9529efe8ea7abaab170c452ae4470bf3ac2 Mon Sep 17 00:00:00 2001 From: Roman Yeryomin Date: Wed, 6 Feb 2013 02:59:31 +0200 Subject: Rebase files to rsdk 3.2 and refresh patches. Compilable (not by humans). Signed-off-by: Roman Yeryomin --- .../drivers/net/wireless/rtl8192cd/8192cd_p2p.h | 647 +++++++++++++++++++++ 1 file changed, 647 insertions(+) create mode 100644 target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_p2p.h (limited to 'target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_p2p.h') diff --git a/target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_p2p.h b/target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_p2p.h new file mode 100644 index 000000000..fecbee7fd --- /dev/null +++ b/target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_p2p.h @@ -0,0 +1,647 @@ +/* + * Header file define some p2p struct define inline functions + * + * $Id: 8192cd_p2p.h,v 1.2 2010/12/21 + * + * Copyright (c) 2010 Realtek Semiconductor Corp. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef _8192CD_P2P_H_ +#define _8192CD_P2P_H_ + +#include "./8192cd_cfg.h" +#include "./8192cd.h" +//#include "./wps/wsc.h" +/*============== will redeclare with wsc.h ==================*/ + + +#define P2P_WILDCARD_SSID_LEN 7 +#define P2P_IE_ID 221 + +#define MAC_LEN 6 +#define UUID_LEN 16 +#define MAX_MANUFACT_LEN 64 +#define MAX_MODEL_NAME_LEN 32 +#define MAX_MODEL_NUM_LEN 32 +#define MAX_SERIAL_NUM_LEN 32 +#define MAX_DEVICE_NAME_LEN 32 + +#define WSC_IE_ID 221 +#define WSC_VER 0x10 +#define TAG_SIMPLE_CONFIG_STATE 0x1044 +#define TAG_RESPONSE_TYPE2 0x103B +#define TAG_UUID_E 0x1047 +#define TAG_MANUFACTURER 0x1021 +#define TAG_MODEL_NAME 0x1023 +#define TAG_MODEL_NUMBER 0x1024 +#define TAG_SERIAL_NUM 0x1042 +#define TAG_PRIMARY_DEVICE_TYPE 0x1054 +#define TAG_DEVICE_NAME 0x1011 +#define TAG_CONFIG_METHODS 0x1008 +#define TAG_VERSION 0x104A +#define TAG_DEVICE_PASSWORD_ID 0x1012 +#define TAG_SEC_DEVICE_TYPE_LIST 0x1055 + +#define WFA_OUI_LEN 3 +#define WFA_OUI_PLUS_TYPE_LEN 4 + +#define MAX_NOA_DESC_MUN 6 +#define MAX_P2P_CLIENT_MUN 5 +#define CLIENT_MODE_WAIT_TIME 30 +#define WSC_MODE_WAIT_TIME 60 + +#define P2P_CLIENT_ASSOC_EXPIRE 120 + +#define P2P_device_category_id_AP 6 +#define P2P_device_category_id_STA 1 +#define P2P_device_sub_category_id 1 + + + +/*for P2P IE attribute ID0 use*/ +enum p2p_status_code { + P2P_SC_SUCCESS = 0, + P2P_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE = 1, + P2P_SC_FAIL_INCOMPATIBLE_PARAMS = 2, + P2P_SC_FAIL_LIMIT_REACHED = 3, + P2P_SC_FAIL_INVALID_PARAMS = 4, + P2P_SC_FAIL_UNABLE_TO_ACCOMMODATE = 5, + P2P_SC_FAIL_PREV_PROTOCOL_ERROR = 6, + P2P_SC_FAIL_NO_COMMON_CHANNELS = 7, + P2P_SC_FAIL_UNKNOWN_GROUP = 8, + P2P_SC_FAIL_BOTH_GO_INTENT_15 = 9, + P2P_SC_FAIL_INCOMPATIBLE_PROV_METHOD = 10, + P2P_SC_FAIL_REJECTED_BY_USER = 11, +}; + +/*for P2P IE attribute ID1 use*/ +enum p2p_minor_reason{ + minor_case1 =1, + minor_case2 =2, + minor_case3 =3, + minor_case4 =4 +}; + + +/* P2P public action frames ; + these type frames no need assoc we must process*/ +enum p2p_public_action_frame { + P2P_GO_NEG_REQ = 0, + P2P_GO_NEG_RESP = 1, + P2P_GO_NEG_CONF = 2, + P2P_INVITATION_REQ = 3, + P2P_INVITATION_RESP = 4, + P2P_DEV_DISC_REQ = 5, + P2P_DEV_DISC_RESP = 6, + P2P_PROV_DISC_REQ = 7, + P2P_PROV_DISC_RSP = 8 +}; + +/* P2P action frames ,we process these type frames after assoc*/ +enum p2p_action_frame{ + P2P_NOA = 0, + P2P_PRESENCE_REQ = 1, + P2P_PRESENCE_RSP = 2, + P2P_GO_DISCOVERY = 3 + /*4-255 reserved*/ +}; + +enum { + RSP_TYPE_ENR, + RSP_TYPE_ENR_1X, + RSP_TYPE_REG, + RSP_TYPE_AP +}; + +// wsc passwd ID +enum { + PASS_ID_DEFAULT, // 0 + PASS_ID_USER, // 1 + PASS_ID_MACHINE, // 2 + PASS_ID_REKEY, // 3 + PASS_ID_PB, // 4 + PASS_ID_REG, // 5 + PASS_ID_RESERVED // 6 +}; + + // need sync with wscd +enum { + GO_WPS_SUCCESS = 1, + GO_WPS_FAIL = 2 +}; + + + +enum { + CONFIG_METHOD_ETH=0x2, + CONFIG_METHOD_PIN=0x4, // label(PIN) + CONFIG_METHOD_DISPLAY=0x8 ,// (PISPLAY) + CONFIG_METHOD_PBC=0x80, + CONFIG_METHOD_KEYPAD=0x100, + /*add for wps2.x*/ + CONFIG_METHOD_VIRTUAL_PBC=0x280 , + CONFIG_METHOD_PHYSICAL_PBC=0x480, + CONFIG_METHOD_VIRTUAL_PIN=0x2008, + CONFIG_METHOD_PHYSICAL_PIN=0x4008 +}; + +enum p2p_role_s { + R_P2P_GO =1 , + R_P2P_DEVICE = 2, + R_P2P_CLIENT =3 +}; + +enum p2p_role_more{ + P2P_DEVICE=1, + P2P_PRE_CLIENT=2, + P2P_CLIENT=3, + P2P_PRE_GO=4, // after GO nego , we are GO and proceed WSC exchange + P2P_TMP_GO=5 // after GO nego , we are GO and proceed WSC exchange is done +}; + +// need sync with web server utility.h +enum { + P2P_S_IDLE = 0, /* between state and state */ + + P2P_S_LISTEN , /*1 listen state */ + + P2P_S_SCAN , /*2 Scan state */ + + P2P_S_SEARCH , /*3 Search state*/ + + // 4~14 ; show status 4 in web page + P2P_S_PROVI_TX_REQ , /*4 send provision req*/ + P2P_S_PROVI_WAIT_RSP , /*5 wait provision rsp*/ + P2P_S_PROVI_RX_RSP , /*6 rx provision rsp*/ + + P2P_S_PROVI_RX_REQ , /*7 received provision req*/ + P2P_S_PROVI_TX_RSP , /*8 send provision rsp*/ + + + P2P_S_NEGO_TX_REQ , /*9 send NEGO req*/ + P2P_S_NEGO_WAIT_RSP , /*10 waiting for NEGO rsp*/ + P2P_S_NEGO_TX_CONF , /*11 send NEGO confirm*/ + + + P2P_S_NEGO_RX_REQ , /*12 rx NEGO req */ + P2P_S_NEGO_TX_RSP , /*13 send NEGO rsp */ + P2P_S_NEGO_WAIT_CONF , /*14 wait NEGO conf */ + + // 15~16 ; show status 5 in web page + P2P_S_CLIENT_CONNECTED_DHCPC , /*15 p2p client Rdy connected */ + P2P_S_CLIENT_CONNECTED_DHCPC_done, /*16 p2p client Rdy connected */ + + // 17~18 ; show status 6 in web page + P2P_S_preGO2GO_DHCPD , /*17 GO not start dhcpd yet */ + P2P_S_preGO2GO_DHCPD_done, /*18 GO rdy start dhcpd*/ + + P2P_S_back2dev /*exceed 20 seconds p2p client can't connected*/ +}; + + + +enum { + P2P_EVENT_RX_PROVI_REQ = 1 /* received provision req*/ +}; + + +enum { + WPS_MODE_NO_CHANGE=0, + MODE_AP_UNCONFIG=1, // AP unconfigured (enrollee) + MODE_CLIENT_UNCONFIG=2, // client unconfigured (enrollee) + MODE_CLIENT_CONFIG=3, // client configured (registrar) + MODE_AP_PROXY=4, // AP configured (proxy) + MODE_AP_PROXY_REGISTRAR=5, // AP configured (proxy and registrar) + MODE_CLIENT_UNCONFIG_REGISTRAR=6 // client unconfigured (registrar) +}; + +enum { + P2P_PIN_METHOD = 1, + P2P_PBC_METHOD = 2 +}; + +enum { + USE_TARGET_PIN = 1, + USE_MY_PIN = 2 +}; + +enum { + P2P_GO_PS_NONE, + P2P_GO_PS_OPPPS, + P2P_GO_PS_NP_NOA, + P2P_GO_PS_CONT_NOA, + P2P_GO_PS_NOA +}; + + +/*==================================================================*/ + +/*=====================commu with web UI start===========================*/ + +/* Any changed here MUST sync with web server utility.h */ +struct p2p_state_event{ + unsigned char p2p_status; + unsigned char p2p_event; + unsigned short p2p_wsc_method; + unsigned char p2p_role; +}; + +struct __p2p_wsc_confirm +{ + unsigned char dev_address[MAC_LEN]; + unsigned short wsc_config_method; + unsigned char pincode[9]; + +}; +/*=====================commu with web UI end===========================*/ + + + + +/*reg_class - Regulatory class (IEEE 802.11-2007, Annex J) + P2P_MAX_REG_CLASSES - Maximum number of regulatory classes */ + +#define P2P_MAX_REG_CLASSES 10 + +/*P2P_MAX_REG_CLASS_CHANNELS - + Maximum number of channels per regulatory class */ +#define P2P_MAX_REG_CLASS_CHANNELS 20 + + +struct p2p_reg_class { + + /*reg_class - Regulatory class (IEEE 802.11-2007, Annex J)*/ + unsigned char reg_class; + + /* channels - Number of channel entries in use */ + unsigned char channel_mun; + + /* channel - Supported channels */ + unsigned char channel[P2P_MAX_REG_CLASS_CHANNELS]; + +}; + +/* struct p2p_channels - List of supported channels */ +struct p2p_channels { + unsigned short Id11_len; + char country[3]; + + /* reg_classes - Number of reg_class entries in use + corresponding to table 25(page 89) number of channels*/ + unsigned char reg_class_mun; + + /* struct p2p_reg_class - Supported regulatory class*/ + struct p2p_reg_class reg_class[P2P_MAX_REG_CLASSES]; + +}; + +/*============== will redeclare with wsc.h ==================*/ + + + + +/*P2P TAG*/ +#define TAG_STATUE 0 +#define TAG_MINOR_RES_CODE 1 +#define TAG_P2P_CAPABILITY 2 +#define TAG_DEVICE_ID 3 +#define TAG_GROUP_OWNER_INTENT 4 +#define TAG_CONFIG_TIMEOUT 5 +#define TAG_LISTEN_CHANNEL 6 +#define TAG_P2P_GROUP_BSSID 7 +#define TAG_EXT_LISTEN_TIMING 8 +#define TAG_INTEN_P2P_INTERFACE_ADDR 9 +#define TAG_P2P_MANAGEABILITY 10 +#define TAG_CHANNEL_LIST 11 +#define TAG_NOTICE_OF_ABSENCE 12 +#define TAG_P2P_DEVICE_INFO 13 +#define TAG_P2P_GROUP_INFO 14 +#define TAG_P2P_GROUP_ID 15 +#define TAG_P2P_INTERFACE 16 +#define TAG_OPERATION_CHANNEL 17 +#define TAG_INVITATION_FLAGS 18 + + + + +/* for P2P Capability attr*/ +/*dev cap*/ +#define SUPPORT_P2P_INVITATION (BIT(5)) +#define CLIENT_DISCOVERY (BIT(1)) + +/*group cap*/ +#define GCAP_GO (BIT(0)) +#define GCAP_PRESISTENT_GO (BIT(1)) +#define GCAP_GROUP_LIMIT (BIT(2)) +#define GCAP_IBSS_DIST (BIT(3)) +#define GCAP_GO_FORMATION (BIT(6)) + +struct provision_comm +{ + unsigned char dev_address[MAC_LEN]; + unsigned short wsc_config_method; + unsigned char channel; + +}; + + +#define MAX_SEC_DEV_TYPE 3 +struct device_info_s +{ + unsigned char dev_address[6] ; // + unsigned short config_method; /*which wsc config method can provided*/ + unsigned char pri_dev_type[8]; /*primary device type*/ + unsigned char sdv_mun; + unsigned char sec_dev_type[MAX_SEC_DEV_TYPE][8]; /*we keep 3 sets (second device type)*/ + char devname[33]; + +}; + + + + + +/* need sync with wsc.h */ +typedef struct _DOT11_P2P_INDICATE_WSC{ + unsigned char EventId; + unsigned char IsMoreEvent; + + unsigned char modeSwitch ; + unsigned char network_key[65] ; + unsigned char gossid[33] ; + + unsigned char trigger_method ; + + unsigned char whosPINuse ; + unsigned char PINCode[9] ; + unsigned char requestor; +}DOT11_P2P_INDICATE_WSC; + + + +typedef struct p2p_device_peer { + unsigned char inuse; + unsigned char dev_addr[6]; + + unsigned char dialog_token; + + int role; /* p2p is which role */ + + /*attribute ID 0 Status*/ + int status; /* enum p2p_status_code */ + + /*attribute ID 2*/ + unsigned char dev_capab; /* device capability*/ + unsigned char group_capab; /* group capability*/ + + /*attribute ID3 device ID*/ + //unsigned char device_address_to_find[6] ; + + /*attribute ID4 GO intent value*/ + unsigned char intent_value; + unsigned char TieBreak; + + /*attribute ID5 configure timeout*/ + unsigned char go_config_timeout; + unsigned char client_config_timeout; + + /*attribute ID6 configure timeout*/ + int operating_class; // frequency band + int listen_channle; // + + /*attribute ID7 group BSSID*/ + unsigned char go_bssid[6]; + + /*attribute ID8 extended listen timing*/ + unsigned short avail_period; + unsigned short avail_interval; + + /*attribute ID9 intented p2p interface address*/ + unsigned char p2p_interface_address[6] ; + + /*attribute ID10 manageability*/ + unsigned char manageability ; // bit(0)|bit(1)|bit(2)| + + /*attribute ID11 channel list*/ + /* Country code to use in P2P operations */ + + struct p2p_channels channels_list; + + + /*attribute ID 12 Notice of Absence*/ + unsigned char noa_index ; /* noa index */ + unsigned char noa_ct_oops ; /* noa ctwindows and oops */ + unsigned char noa_desc_count ; /* noa count of noa descriptor*/ + unsigned char noa_desc[2][13] ; /* noa descriptor ; a go max has two desc simultaneously*/ + + /*attribute ID 13 device info*/ + struct device_info_s peer_device_info; + + /*attribute ID 14 group info ; more Id14's attr can represent at ID13 */ + //unsigned short p2p_interface_address[6] ; // represent at ID9 + + /*attribute ID 15 group ID */ + unsigned char group_bssid[6]; + unsigned char group_ssid[33]; + unsigned char group_ssid_len; + + /*attribute ID 16 group ID */ + unsigned char interface_addr_num; + unsigned char p2p_interface_add_list[2][6] ; + + /*attribute ID 17 operating channel */ + unsigned char op_country[4]; + unsigned char op_class; + unsigned char op_channel; + + /*attribute ID 18 invitation flags*/ + unsigned char invitation_flag; + + + /*wsc IE */ + unsigned short wsc_config_method; + unsigned short device_pass_id; + + +}P2P_DEV_T, *P2P_DEV_Tp; + + +/* + in discovery phase , we can just recored the necessity info +*/ +struct assoc_peer +{ + + unsigned char inuse; + // ID2 + unsigned char dev_cap; + unsigned char group_cap; + + // ID13 + struct device_info_s devInfo; + unsigned char if_addr[6]; +}; + +struct noa_desc +{ + unsigned char count; + unsigned int duration; + unsigned int interval; + unsigned int starttime; +}; + +// ID12 +struct noa_list +{ + unsigned char index; + unsigned char CTWindow_OppPs; /*bit7 OppPS bit(0-6) CTWindows*/ + struct noa_desc noa_descs; + unsigned int go_ps_type; + unsigned int noa_counter; + unsigned int p2p_txpause_flag; +}; + +struct p2p_context { + + unsigned int Status; + + unsigned char wsc_ie_rsp[200]; // full size maybe 32 + 8 + 8 + unsigned char wsc_ie_rsp_mun; // use for action frame (eg nego rsp) + + unsigned char wsc_ie_req[200]; // full size maybe 32 + 8 + 8 + unsigned char wsc_ie_req_mun; // use for action frame (eg nego rsp) + + unsigned char p2p_probe_req_ie[256]; + unsigned int p2p_probe_req_ie_len; + + unsigned char p2p_probe_rsp_ie[256]; + unsigned int p2p_probe_rsp_ie_len; + + unsigned char p2p_beacon_ie[64]; + unsigned int p2p_beacon_ie_len; + + unsigned char p2p_assocReq_ie[128]; + unsigned int p2p_assocReq_ie_len; + + unsigned char p2p_assoc_RspIe[32]; + unsigned int p2p_assoc_RspIe_len; + + + unsigned char p2p_disass_ie[64]; + unsigned int p2p_disass_ie_len; + + + int wait2listenState; + + + unsigned int collect_type; // 1:from beacon ; 2:from probe_rsp + + unsigned int rdyinit; + + /*when i am GO and some p2p client assoc to me ; recored here*/ + struct assoc_peer assocPeers[MAX_P2P_CLIENT_MUN]; + + /*when i am GO and some p2p dev probe_req me */ + unsigned char probe_rps_to_p2p_dev; + + /*when i am client record noa from beacon */ + struct noa_list noa_list_t; + + + int pre_client_timeout; + int pre_go_timeout; + + /*for handle client discovery req/rsp , GO discovery req related */ + unsigned char dev_dis_req_dialog_token; + unsigned char dev_dis_rsp_dialog_token; + // unsigned char provision_rx_dialog_token; + + /*for handle provision discovery related process*/ + unsigned char presence_tx_dialog_token; + unsigned char presence_rx_dialog_token; + + /*for handle provision discovery related process*/ + unsigned char provision_tx_dialog_token; + unsigned char provision_rx_dialog_token; + + /*for handle active send provision req and Nego Req*/ + unsigned char target_device_role; + unsigned char target_device_ssid[33]; + unsigned char target_device_addr[MAC_LEN]; + unsigned char target_device_channel; + unsigned short wsc_method_to_target_dev; + unsigned short dev_passwd_to_tar_dev; + unsigned char target_dev_pin_code[9]; + unsigned char wsc_method_match; + /* when receive provision req , record target dev wsc method*/ + unsigned short wsc_method_from_target_dev; + unsigned char passivemode_pbc_trigger_flag; + + /*for handle action frames*/ + unsigned char provision_req_timeout; + + unsigned char requestor; // i am requestor or not + + + + /*for handle go-nego related process*/ + unsigned char go_nego_tx_dialog_token; // my req token + unsigned char go_nego_rx_dialog_token; // target dev's req token + + unsigned char go_nego_on_going; // for lock this GO nego process + unsigned char go_nego_on_going_timeout; // for lock this GO nego process + + /*for handle action packets ; when receive go-nego req*/ + int wait_nego_conf_timeout; + + /*my GO Negotiation data */ + unsigned char my_GO_ssid[33]; /*should be DRIECT-xy+(0~23 assic)*/ + unsigned char my_GO_ssid_len; + unsigned char ssid_random[3]; // DIRETC-xy ; the xy + unsigned char go_PSK[65]; + + struct p2p_channels my_channel_list; + + /*my P2P capability*/ + + /*device capa 0~5*/ + unsigned char service_discover; + unsigned char p2p_client_discoverability; + unsigned char concurrent_operations; + unsigned char p2p_infrastructure_managed; + unsigned char p2p_device_limit; + unsigned char p2p_invitation; + /*group capa 0~6*/ + unsigned char p2p_go_role; + unsigned char persistent_go; + unsigned char p2p_go_limit; + unsigned char intra_bss_distribution; + unsigned char cross_conect; + unsigned char persistent_reconnect; + unsigned char go_formation; + + + unsigned char wps_is_ongoing; + + /*p2p discovery phase need related data ; no use now*/ + unsigned char spec_find_dev_addr[6]; /*the assigned p2p device address be find in probe_req */ + unsigned char spec_find_primary_dev_type; /*the assigned primary device type be find in probe_req*/ + + struct p2p_device_peer ongoing_nego_peer ; + + /*when i am on going with someone , reject another one*/ + struct p2p_device_peer others_nego_tar_device; + + unsigned char clientmode_try_connect; + +}; + + + + +#endif + -- cgit v1.2.3