summaryrefslogtreecommitdiffstats
path: root/target/linux/realtek/files/drivers/net/wireless/rtl8192e/8192cd_p2p.h
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/realtek/files/drivers/net/wireless/rtl8192e/8192cd_p2p.h')
-rw-r--r--target/linux/realtek/files/drivers/net/wireless/rtl8192e/8192cd_p2p.h647
1 files changed, 647 insertions, 0 deletions
diff --git a/target/linux/realtek/files/drivers/net/wireless/rtl8192e/8192cd_p2p.h b/target/linux/realtek/files/drivers/net/wireless/rtl8192e/8192cd_p2p.h
new file mode 100644
index 000000000..fecbee7fd
--- /dev/null
+++ b/target/linux/realtek/files/drivers/net/wireless/rtl8192e/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
+