nt9856x/code/driver/source/net/18211_nvtfmac/include/nvt_cfg80211.h
2023-03-28 15:07:53 +08:00

713 lines
24 KiB
C
Executable File

#ifndef _NVT_CFG80211_H_
#define _NVT_CFG80211_H_
#include <linux/types.h>
#include "nvt_wlan_linux.h"
/* define the vendor command macro when kernel version > 3.14 */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)
#define VENDOR_CMD_SUPPORT 1
#endif
#define ETH_P_WAPI 0x88b4
#define WLAN_EID_SSID 0
#define SCAN_BUF_SIZE 0x10000
/*AT add for the Recover buffer len*/
#define RECOVER_BUF_LEN 12
#define MAX_KEY_INDEX 4
#define IEEE80211_NUM_ACS 4
#define MAX_SCAN_COUNT 128
#define IE_MAX_LEN 512
#define MAX_PROBED_SSIDS 5
#define WAPI_REPLAY_CTR_LEN 16
#define DOT_80211_BEACON_HEADER 24
#define DOT_80211_WIRELESS_MGMT_FIX_HEADER 12
#define NVT_MAX_TRIPLET_802_11D 83
#define IE_HDR_LEN 2
/* AT: Add Novatek vendor ID */
#define OUI_NVT 0x38ec11
/* AT: define the vendor subcmd id for ptk offload */
#define NVT_PTK_OFFLOAD 0
/* AT: define BIT7 for the PTK offload capability */
#define WLAN_EXT_PTK_OFFLOAD_CAP (1<<7)
/* mgmt header(24 bytes) */
#define IEEE80211_MGMT_HDR_LEN \
offsetof(struct ieee80211_mgmt, u.beacon.timestamp)
/* mgmt header(24 bytes) + 12 bytes */
#define IEEE80211_BCN_PRB_FIXED_LEN \
offsetof(struct ieee80211_mgmt, u.beacon.variable)
/* char WID */
#define WID_BSS_TYPE 0x0000
#define WID_CURRENT_TX_RATE 0x0001
#define WID_PRIMARY_CHANNEL 0x0002
#define WID_PREAMBLE 0x0003
#define WID_11G_OPERATING_MODE 0x0004
#define WID_STATUS 0x0005
#define WID_SCAN_TYPE 0x0007
#define WID_PRIVACY_INVOKED 0x0008
#define WID_KEY_ID 0x0009
#define WID_QOS_ENABLE 0x000a
#define WID_POWER_MANAGEMENT 0x000b
#define WID_11I_MODE 0x000C
#define WID_AUTH_TYPE 0x000D
#define WID_SITE_SURVEY 0x000e
#define WID_DTIM_PERIOD 0x0010
#define WID_START_OP 0x0012
#define WID_BCAST_SSID 0x0015
#define WID_DISCONNECT 0x0016
#define WID_TX_POWER_LEVEL_11A 0x0018
#define WID_SHORT_SLOT_ALLOWED 0x001a
#define WID_TX_POWER_LEVEL_11B 0x001d
#define WID_START_SCAN_REQ 0x001e
#define WID_JOIN_REQ 0x0020
#define WID_GET_CURRENT_MAC_STATUS 0x0031
#define WID_SCAN_FILTER 0x0036
#define WID_ENABLE_INT_SUPP 0x0047
#define WID_11N_ENABLE 0x0082
#define WID_11N_SHORT_GI_ENABLE 0x008d
#define WID_11N_IMMEDIATE_BA_ENABLED 0X00af
#define WID_VSIE_FRAME 0x00b4
#define WID_2040_COEXISTENCE 0x00c1
#define WID_2040_ENABLE 0x00c5
#define WID_11N_CURRENT_TX_BW 0x00C8
#define WID_ENABLE_STBC 0x00CD
#define WID_SLEEP_NOW 0x00CB
#define WID_ENABLE_GREENFIELD 0x00CE
#define WID_P2P_ENABLE 0x0201
#define WID_P2P_LISTEN_MODE 0x020A
#define WID_FC_ENALBE 0x0401
#define WID_WPS_REGISTRATION_START 0x0403
#define WID_AP_ENABLE 0x0402
#define WID_SCAN_ABORT 0x0404
#define WID_11N_CURRENT_TX_MCS 0x0088
#define WID_RSSI 0x001F
#define WID_FC_ENABLE 0x0401
#define WID_RATE_0 0x020E
#define WID_TP_MONITOR 0x020F
#define WID_WOW_CONFIG 0x0407
#define WID_WOW_ENABLE 0x0408
#define WID_WOW_HOST_SUSPEND 0x0409
#define WID_WOW_HOST_RESUME 0x040A
#define WID_EXT_MODE_11I 0x04FF
#define WID_PMF_ENABLE 0x0410
#define WID_FC_BORROW 0x0411
#define WID_MONITOR_ENABLE 0x0412
#define WID_ACS_RXRDY_THRESH 0x0413
#define WID_IGNORE_BCN_BITMAP 0x0414
#define WID_DATA_MODE 0x0418
/* short WID */
#define WID_RTS_THRESHOLD 0x1000
#define WID_FRAG_THRESHOLD 0x1001
#define WID_SHORT_RETRY_LIMIT 0x1002
#define WID_LONG_RETRY_LIMIT 0x1003
#define WID_BEACON_INTERVAL 0x1006
#define WID_ACTIVE_SCAN_TIME 0x100c
#define WID_PASSIVE_SCAN_TIME 0x100d
#define WID_SITE_SURVEY_SCAN_TIME 0x100E
#define WID_USER_PREF_CHANNEL 0x1020
#define WID_CURR_OPER_CHANNEL 0x1021
#define WID_P2P_LISTEN_EXTEND 0x1305
#define WID_AP_RESUME_STAY_CH_TIME 0x1306
#define WID_AP_SCAN_STAY_CH_TIME 0x1307
#define WID_11N_SIG_QUAL_VAL 0x1085
/* string WID */
#define WID_SSID 0x3000
#define WID_MAC_ADDR 0x300C
#define WID_SITE_SURVEY_RESULTS 0x3012
#define WID_ADD_PTK 0x301B
#define WID_ADD_RX_GTK 0x301C
#define WID_ADD_TX_GTK 0x301D
#define WID_ADD_WEP_KEY 0x3019
#define WID_REMOVE_KEY 0x301E
#define WID_REMOVE_WEP_KEY 0x301A
#define WID_ASSOC_REQ_INFO 0x301f
#define WID_ASSOC_RES_INFO 0x3020
#define WID_11I_PSK_VALUE 0x302a
#define WID_11N_P_ACTION_REQ 0x3080
#define WID_PMKID_INFO 0x3082
#define WID_FIRMWARE_INFO 0x3083
#define WID_MIC_FAILURE_INFO 0x3400
#define WID_EXT_DISCONNECT 0x3401
#define WID_ADD_RX_IGTK 0x3402
#define WID_ADD_TX_IGTK 0x3403
#define WID_ADD_WAPI_PTK 0x3404
#define WID_ADD_WAPI_GTK 0x3405
#define WID_WPA_REKEY_OFFLOAD 0x3406
#define WID_WAPI_REKEY_OFFLOAD 0x3409
#define WID_AR_PARAMETER 0x3408
/*int WID*/
#define WID_RECEIVED_FRAGMENT_COUNT 0x2005
#define WID_TX_FRAGMENT_COUNT 0x200B
#define WID_SUCCESS_FRAME_COUNT 0x2008
//20150821 nash:
/* control firmware UART mode */
#define WID_UART_MODE 0x2026
/* control firmware debug level */
#define WID_DBG_LEVEL 0x2027
#if 1 /* CONFIG_WIFI_TUNING_PHASE_II == 1 */
#define WID_TP_REPORT_INTERVAL 0x2028
#define WID_TP_MIN_INTERVAL 0x2029
#endif
#define WID_ACS_MASK 0x2089
#define WID_SET_DTIM_SCALAR 0x208a
#define WID_SET_DTIM_TIME 0x208b
/* binary WID */
#define WID_UAPSD_CONFIG 0x4001
#define WID_WMM_AP_AC_PARAMS 0x4003
#define WID_WMM_STA_AC_PARAMS 0x4004
#define WID_STA_JOIN_INFO 0x4008
#define WID_CONNECTED_STA_LIST 0x4009
#define WID_VSIE_TX_DATA 0x4085
#define WID_VSIE_TX_PROBERSP 0x4087
#define WID_VSIE_TX_ASSOCRSP 0x4088
#define WID_SCAN_MULTISSID 0x4089
#define WID_SCAN_MULTICH 0x408A
#define WID_JOIN_REQ_BSSTBL 0x408B
#define WID_VSIE_TX_PROBEREQ 0x4400
#define WID_VSIE_TX_ASSOCREQ 0x4401
#define WID_MGMT_TX 0x4402
#define WID_SET_RXMCS 0x4404
#define WID_GET_UMAC_STATS 0x4407
#define WID_GET_LMAC_STATS 0x4408
#define WID_ARP_NS_OFFLOAD 0x4409
#define WID_WOW_PATTERN 0x440A
#define WID_SET_REGFLAGS 0x440C
#define WID_SET_ACS_WEIGHT 0x440D
#define WID_TX_POWER_ADAPTION 0x440E
#define WID_AP_RECOVER 0x440F
#define WID_DHCP_RENEW_OFFLOAD 0x4410
#define WID_KEEP_ALIVE_FAIL_OFFLOAD 0x4411
/* WID_11I_MODE */
#define WID_11I_SECURITY_ON 0x01
#define WID_11I_WEP40 0x02
#define WID_11I_WEP104 0x06
#define WID_11I_WPA 0x08
#define WID_11I_RSN 0x10
#define WID_11I_CCMP 0x20
#define WID_11I_TKIP 0x40
#define WID_11I_TSN 0x80
/* WID_EXT_11I_MODE */
#define WID_EXT_11I_WAPI 0x80
#define WID_EXT_11I_SMS4 0x40
/* WID_AUTH */
#define WID_AUTH_OPEN_PSK 0x01
#define WID_AUTH_SHARED_KEY 0x02
#define WID_AUTH_802_1X 0x05
/* scan filter definition */
#define SCAN_ALL 0
#define SCAN_NO_ADHOC 1
#define SCAN_NO_INFRA 2
#define SCAN_SAVE_BYHIGHRSSI (0 << 2)
#define SCAN_SAVE_BYLOWRSSI (1 << 2)
#define SCAN_SAVE_WITHOUTRSSI (2 << 2)
#define SCAN_CURRENTCH (1 << 4)
#define SCAN_SSID (1 << 5)
/* scan type */
#define ACTIVE_SCAN 1
#define PASSIVE_SCAN 0
/* scan time */
#define DEFAULT_ACTIVE_TIME 200
#define DEFAULT_AP_SCAN_TIME 50
#define DEFAULT_PASSIVE_TIME 300
#define DEFAULT_P2P_ACTIVE_TIME 500
/* event reason code */
#define SUCCESS 0
#define INVALID 1
#define TIMEOUT 2
/* time value */
#define ADDKEY_WAIT_EAPOL_TIME 500
#define DISCONNECT_WAIT__TIME 5000
/* mac status */
#define MAC_CONNECTED 1
#define MAC_DISCONNECTED 0
/* P2P Related Parameters */
#define P2P_NEGO_DWELL_TIME 500
/* P2P Public Action Frame/P2P Action Frame/P2P GAS Frame */
#define P2P_PUBLIC_ACTION_CATEGORY 0x04
#define P2P_ACTION_CATEGORY 0x7f
#define P2P_PUBLIC_ACTION_FIELD 0x09
#define P2P_OUI "\x50\x6F\x9A"
#define P2P_OUI_LEN 3
#define P2P_OUI_TYPE 9
/* P2P Public Action Frame OUI Subtypes */
#define P2P_GO_NEGO_REQ 0x00
#define P2P_GO_NEGO_RSP 0x01
#define P2P_GO_NEGO_CONF 0x02
#define P2P_INVITE_REQ 0x03
#define P2P_INVITE_RSP 0x04
#define P2P_DEVICE_DISC_REQ 0x05
#define P2P_DEVICE_DISC_RSP 0x06
#define P2P_PROV_DISC_REQ 0x07
#define P2P_PROV_DISC_RSP 0x08
/* P2P Action Frame OUI Subtypes */
#define P2P_NOA 0x00
#define P2P_PRESENCE_REQ 0x01
#define P2P_PRESENCE_RSP 0x02
#define P2P_GO_DISC_REQ 0x03
/* P2P GAS Frame */
#define P2P_GAS_INITIAL_REQ 0x0a
#define P2P_GAS_INITIAL_RSP 0x0b
#define P2P_GAS_COMEBACK_REQ 0x0c
#define P2P_GAS_COMEBACK_RSP 0x0d
/* WID_11I_MODE */
#define WID_11I_MODE_Security_ON 0x01
#define WID_11I_MODE_WEP40 0x02
#define WID_11I_MODE_WEP104 0x06
#define WID_11I_MODE_WPA 0x08
#define WID_11I_MODE_RSN 0x10
#define WID_11I_MODE_CCMP 0x20
#define WID_11I_MODE_TKIP 0x40
#define WID_11I_MODE_TSN 0x80
//BSS type definition
#define BSS_STA 0
#define IBSS_STA 1
#define AP 2
//STBC enable definition
#define TX_STBC 1
#define RX_STBC_1 1
#define RX_STBC_2 2
#define RX_STBC_3 3
#define NVT_RX_STBC1 0x100
#define NVT_RX_STBC12 0x200
#define NVT_RX_STBC123 (NVT_RX_STBC1 | NVT_RX_STBC12)
//SGI enable definition
#define SGI_40 2
#define SGI_20 1
#define LGI 0
//channel definition
#define SCN (0 << 8)
#define SCA (1 << 8)
#define SCB (3 << 8)
#define BAND_2G (0 << 15)
#define BAND_5G (1 << 15)
//preamble definition
#define PREAMBLE_SHORT 0
#define PREAMBLE_LONG 1
#define PREAMBLE_AUTO 2
//11g operating mode definition
#define OP_11B_ONLY_MODE 0
#define OP_11G_HP_MODE 1
#define OP_11G_COMP_MODE_1 2
#define OP_11G_COMP_MODE_2 3
//security definition
#define PROTO_WPA1 1
#define PROTO_WPA2 2
#define CIPHER_WEP40 1
#define CIPHER_WEP104 2
#define CIPHER_TKIP 3
#define CIPHER_CCMP 4
#define CIPHER_SMS4 5
//pmf parameters
#define PMF_CAPABLE 0x01
#define PMF_REQUIRED 0x02
#define PMF_SHA256 0x04
extern u32 nvt_txmq;
/* IE TLV processing */
#define TLV_LEN_OFF 1 /* length offset */
#define TLV_HDR_LEN 2 /* header length */
#define TLV_BODY_OFF 2 /* body offset */
#define TLV_OUI_LEN 3 /* oui id length */
enum nvt_scan_sts {
SCAN_PROCESS,
};
enum WID_EVENT_ID {
WID_EVENT_FW_READY = 0x5000,
WID_EVENT_BA_INFO = 0x5001,
WID_EVENT_FC_CREDIT_INIT,
WID_EVENT_FC_INFO,
WID_EVENT_BSS_INFO,
WID_EVENT_SCAN_DONE,
WID_EVENT_RX_PROBEREQ_FRAME,
WID_EVENT_RX_ACTION_FRAME,
WID_EVENT_LISTEN_DONE,
WID_EVENT_DEBUG_MESSAGE_INFO,
WID_EVENT_ADDBA_REQ,
WID_EVENT_DELBA_REQ,
WID_EVENT_BAR,
WID_EVENT_RESUME,
WID_EVENT_REKEY_OFFLOAD,
WID_EVENT_TP_MONITOR,
WID_EVENT_SETKEY_INFO,
WID_EVENT_ASSOC_REQ = 0x5080,
WID_EVENT_ASSOC_RSP,
WID_EVENT_CONNECT_INFO,
WID_EVENT_DHCP_RENEW_FIRST_TIME,
WID_EVENT_NUM
};
enum nvt_if_status {
NVT_IF_ENABLED,
NVT_IF_CONNECTING,
NVT_IF_CONNECTED,
NVT_IF_REDOWNLOAD
};
enum nvt_p2p_status {
NVT_P2P_ROC_MODE,
};
enum nvt_p2p_action {
NVT_P2P_START_ROC,
NVT_P2P_CANCEL_ROC,
};
enum nvt_reset_req_flags {
DONT_RESET = 0,
DO_RESET = 1,
DO_START = 2,
DO_RESTART = 3,
NO_REQUEST = 4,
NUM_RESET_REQ
};
enum nvt_if_mode {
NVT_STA_MODE = 0,
NVT_AP_MODE = 1,
};
/* Element ID of various Information Elements */
enum nvt_element_id {
ICOUNTRY = 7, /* Country element */
};
struct _nvt_802_11d_reg {
u8 country_code[IEEE80211_COUNTRY_STRING_LEN];
u8 no_of_triplet;
struct ieee80211_country_ie_triplet
triplet[NVT_MAX_TRIPLET_802_11D];
};
struct _nvt_bss_dscr {
u32 bss_type;
u8 num_failures;
u8 channel;
u8 dtim_period;
s8 rssi;
u16 beacon_period;
u16 cap_info;
u8 time[4];
u8 bssid[ETH_ALEN];
u8 sa[ETH_ALEN];
u8 ssid[IEEE80211_MAX_SSID_LEN+1];
u8 dot11i_info;
};
struct _nvt_bss_info {
struct list_head list;
u32 length;
u8 bssid[ETH_ALEN];
u8 ssid_len;
u8 ssid[IEEE80211_MAX_SSID_LEN];
u8 channel;
u8 dot11i_info;
s8 rssi;
u16 beacon_period;
u16 cap_info;
u32 ie_offset;
u32 ie_length;
};
struct _nvt_p2p_public_action {
u8 category;
u8 action;
u8 oui[3];
u8 oui_type;
u8 subtype;
u8 dialog_token;
u8 data[1];
};
struct _nvt_p2p_action {
u8 category;
u8 oui[3];
u8 oui_type;
u8 subtype;
u8 dialog_token;
u8 data[1];
};
struct _nvt_p2p_gas_public_action {
u8 category;
u8 action;
u8 dialog_token;
u8 data[1];
};
struct _nvt_p2p {
ulong status;
u8 listen_channel;
struct ieee80211_channel remain_on_channel;
u32 roc_cookie;
};
struct _nvt_cfg80211 {
struct wiphy *wiphy;
struct _nvt_adapter *nvt_adapter;
/* scan parameters */
struct timer_list scan_timer;
struct cfg80211_scan_request *scan_request;
struct _nvt_if *scan_if;
struct work_struct scan_timeout_work;
struct mutex scan_lock;
unsigned long scan_sts;
/*add for cfg_ops get_station*/
struct semaphore sem;
/*add for cfg_ops set txpower*/
u32 tx_pwr;
u8 bss_count;
struct list_head bss_list;
spinlock_t bss_list_lock;
struct _nvt_p2p nvt_p2p;
u8 wow_enable;
struct _nvt_802_11d_reg domain_reg;
};
struct _nvt_probe_ssid {
u8 index;
u8 ssid_len;
u8 ssid[32];
};
struct _ssid_le {
u8 SSID_len;
u8 SSID[32];
};
struct ieee_types_wmm_ac_parameters {
u8 aci_aifsn_bitmap;
u8 ecw_bitmap;
__le16 tx_op_limit;
} __packed;
struct wmm_info {
u8 oui[4];
u8 subtype;
u8 version;
u8 qos_info;
u8 reserved;
struct ieee_types_wmm_ac_parameters ac_params[IEEE80211_NUM_ACS];
} __packed;
struct _BSS_CONFIG_INFO {
u16 channel;
u8 bss_mode;
u8 op_11g_mode;
u8 channel_type;
u8 bw40_enable;
u8 preamble;
u8 slot;
u8 sgi;
u8 stbc;
u8 qos_enable;
struct wmm_info wmm_info;
u8 op_11n_enable;
u8 hidden_ssid;
struct _ssid_le ssid_le;
u8 auth_mode;
u8 security_mode;
u8 ext_security_mode;
u8 vsie_enable;
u8 wpa_proto;
u8 pairwise_cipher;
u8 group_cipher;
u8 wps_enable;
u8 p2p_enable;
u8 greenfield;
u8 pmf_enable;
};
struct ieee_types_header {
u8 element_id;
u8 len;
} __packed;
struct Nova_AC_XX_PARA {
u16 TXOP;
u8 CWmax;
u8 CWmin;
u8 AIFSN;
u8 ACM;
};
struct Nova_WID_WMM_STA_AC_PARAMS {
struct Nova_AC_XX_PARA AC_VO;
struct Nova_AC_XX_PARA AC_VI;
struct Nova_AC_XX_PARA AC_BE;
struct Nova_AC_XX_PARA AC_BK;
};
struct wow_pattern {
u32 mask;
u16 crc16;
u8 offset;
u8 filter_enable;
} __packed;
struct nvt_tlv {
u8 id;
u8 len;
u8 data[1];
};
struct nvt_vs_tlv {
u8 id;
u8 len;
u8 oui[3];
u8 oui_type;
};
struct dhcp_ip {
//fixed 0x45
u8 ip_v_and_hl;
u8 ip_tos;
u8 ip_len[2];
u8 ip_id[2];
u8 ip_off[2];
u8 ip_ttl;
u8 ip_p;
u8 ip_checksum[2];
u8 ip_src[4];
u8 ip_dst[4];
};
struct dhcp_udp {
//0x00 0x44
u8 src_port[2];
//0x00 0x43
u8 dst_port[2];
//0x01 0x02
u8 length[2];
u8 checksum[2];
};
struct dhcp_packet {
u8 op;
u8 htype;
u8 hlen;
u8 hops;
u8 xid[4];
u8 secs[2];
u8 flags[2];
u8 ciaddr[4];
u8 yiaddr[4];
u8 siaddr[4];
u8 giaddr[4];
u8 chaddr[16];
u8 sname[64];
u8 file[128];
/*DHCP COOKIE*/
//0x63 0x82 0x53 0x63
u8 dhcp_cookie[4];
/*DHCP REQUSET OPTION*/
//0x35 --> dhcp request
u8 dhcp_req_type;
//0x01 --> dhcp req len
u8 dhcp_req_len;
//0x03 --> request code
u8 request_code;
/*DHCP Client ID*/
u8 dhcp_ci_type;
u8 dhcp_ci_len;
u8 dhcp_ci_hw_type;
u8 dhcp_ci_hw_mac[6];
/*DHCP request IP*/
u8 dhcp_rIP_type;
u8 dhcp_rIP_len;
u8 dhcp_rIP[4];
/*DHCP SERVER IDENTIFIER OPTION*/
//0x36 --> server identifier option
//u8 dhcp_server_type;
//0x04 --> dhcp server len
//u8 dhcp_s_len;
//server ip addr
//u8 server_ip[4];
//end --> 0xff
u8 end;
};
extern int nvt_cfg80211_init(struct _nvt_adapter *);
extern int nvt_cfg80211_deinit(struct _nvt_adapter *);
extern s32 nvt_p2p_roc_done(struct _nvt_if *nvt_if,
u16 msg_len, u8 *data, bool direction);
extern s32 nvt_scan_result(struct _nvt_if *nvt_if, u16 msg_len, u8 *data);
extern s32 nvt_connect_status_station(struct _nvt_if *nvt_if, u16 msg_len,
u8 *data);
extern s32 nvt_enable_status_ap(struct _nvt_if *nvt_if, u16 msg_len,
u8 *data);
extern s32 nvt_connect_status_ap(struct _nvt_if *nvt_if,
u16 msg_len, u8 *data);
extern s32 nvt_micfail_status(struct _nvt_if *nvt_if, u16 msg_len, u8 *data);
extern s32 nvt_connect_result(struct _nvt_if *nvt_if, u16 msg_len, u8 *data);
extern s32 nvt_rx_mgmt_probereq(struct _nvt_if *nvt_if,
u16 msg_len, u8 *data);
extern s32 nvt_rx_action_frame(struct _nvt_if *nvt_if,
u16 msg_len, u8 *data);
extern void nvt_abort_scanning(struct _nvt_cfg80211 *cfg);
#ifdef CONFIG_PM
extern s32 nvt_setup_wowlan(struct _nvt_if *nvt_if,
struct _nvt_cfg80211 *nvt_cfg, struct cfg80211_wowlan *wow);
extern s32 nvt_set_wowlan_on(struct cfg80211_wowlan *, struct _nvt_if *);
#endif
extern s32 nvt_resume_result(struct _nvt_if *nvt_if, u16 msg_len, u8 *data);
extern s32 nvt_set_arp_ns_offload(struct _nvt_if *nvt_if);
extern s32 nvt_rekeyoffload_info(struct _nvt_if *nvt_if,
u16 msg_len, u8 *data);
extern s32 nvt_setkey_info(struct _nvt_if *nvt_if, u16 msg_len, u8 *data);
extern u16 dhcp_checksum(u8 *buf, u32 nbytes, u32 sum);
extern void build_dhcp_renew_pat(u8 *buf, u8 *src_addr, u8 *dst,
u8 *mac_addr);
extern void build_ip_header(u8 *buf, u8 *checksum, u8 *src_addr,
u8 *dst_addr);
extern void build_udp_header(u8 *buf, u8 *checksum);
extern void build_dhcp_request(u8 *buf, u8 *chaddr, u8 *ciaddr, u8 *s_addr);
extern struct nvt_tlv *nvt_parse_tlvs(void *buf, int buflen, uint key);
extern s32 nvt_configure_wpaie(struct nvt_vs_tlv *wpa_ie, bool is_rsn_ie,
u8 *Nova_11I, u8 *Nova_AUTH);
#endif