net: wireless: rockchip_wlan: add rtl8188eu support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8188eu / include / rtw_pwrctrl.h
old mode 100755 (executable)
new mode 100644 (file)
index a843e30..8c4fa6b
 #define BTCOEX_ALIVE   BIT(4)
 #endif // CONFIG_BT_COEXIST
 
+#ifdef CONFIG_WOWLAN
+#define MAX_WKFM_NUM 16        /* Frame Mask Cam number for pattern match */
+#define MAX_WKFM_SIZE  16 /* (16 bytes for WKFM bit mask, 16*8 = 128 bits) */
+#define MAX_WKFM_PATTERN_SIZE  128
+#define WKFMCAM_ADDR_NUM 6
+#define WKFMCAM_SIZE 24 /* each entry need 6*4 bytes */
+enum pattern_type {
+       PATTERN_BROADCAST = 0,
+       PATTERN_MULTICAST,
+       PATTERN_UNICAST,
+       PATTERN_VALID,
+       PATTERN_INVALID,
+};
+
+typedef struct rtl_priv_pattern {
+       int len;
+       char content[MAX_WKFM_PATTERN_SIZE];
+       char mask[MAX_WKFM_SIZE];
+} rtl_priv_pattern_t;
+
+struct rtl_wow_pattern {
+       u16     crc;
+       u8      type;
+       u32     mask[4];
+};
+#endif /* CONFIG_WOWLAN */
 
 enum Power_Mgnt
 {
@@ -63,7 +89,8 @@ enum Power_Mgnt
 
 #ifdef CONFIG_PNO_SUPPORT
 #define MAX_PNO_LIST_COUNT 16
-#define MAX_SCAN_LIST_COUNT 14 //2.4G only
+#define MAX_SCAN_LIST_COUNT 14 //2.4G only
+#define MAX_HIDDEN_AP 8                //8 hidden AP
 #endif
 
 /*
@@ -205,13 +232,15 @@ typedef enum _PS_DENY_REASON
 typedef struct pno_nlo_info
 {
        u32 fast_scan_period;                           //Fast scan period
-       u32     ssid_num;                               //number of entry
+       u8      ssid_num;                               //number of entry
+       u8      hidden_ssid_num;
        u32     slow_scan_period;                       //slow scan period
        u32     fast_scan_iterations;                   //Fast scan iterations
        u8      ssid_length[MAX_PNO_LIST_COUNT];        //SSID Length Array
        u8      ssid_cipher_info[MAX_PNO_LIST_COUNT];   //Cipher information for security
        u8      ssid_channel_info[MAX_PNO_LIST_COUNT];  //channel information
-}pno_nlo_info_t;       
+       u8      loc_probe_req[MAX_HIDDEN_AP];           //loc_probeReq
+}pno_nlo_info_t;
 
 typedef struct pno_ssid {
        u32             SSID_len;
@@ -279,6 +308,8 @@ struct pwrctrl_priv
 
        uint    ips_enter_cnts;
        uint    ips_leave_cnts;
+       uint    lps_enter_cnts;
+       uint    lps_leave_cnts;
 
        u8      ips_mode; 
        u8      ips_org_mode; 
@@ -316,21 +347,25 @@ struct pwrctrl_priv
        u8              wowlan_wake_reason;
        u8              wowlan_ap_mode;
        u8              wowlan_mode;
+       u8              wowlan_p2p_mode;
+       u8              wowlan_pno_enable;
+#ifdef CONFIG_GPIO_WAKEUP
+       u8              is_high_active;
+#endif /* CONFIG_GPIO_WAKEUP */
 #ifdef CONFIG_WOWLAN
+       u8              wowlan_txpause_status;
        u8              wowlan_pattern;
-       u8              wowlan_magic;
-       u8              wowlan_unicast;
        u8              wowlan_pattern_idx;
-       u8              wowlan_pno_enable;
+       u64             wowlan_fw_iv;
+       struct rtl_priv_pattern patterns[MAX_WKFM_NUM];
 #ifdef CONFIG_PNO_SUPPORT
        u8              pno_in_resume;
+       u8              pno_inited;
        pno_nlo_info_t  *pnlo_info;
        pno_scan_info_t *pscan_info;
        pno_ssid_list_t *pno_ssid_list;
-#endif
-       u32             wowlan_pattern_context[8][5];
-       u64             wowlan_fw_iv;
-#endif // CONFIG_WOWLAN
+#endif /* CONFIG_PNO_SUPPORT */
+#endif /* CONFIG_WOWLAN */
        _timer  pwr_state_check_timer;
        int             pwr_state_check_interval;
        u8              pwr_state_check_cnts;
@@ -402,8 +437,6 @@ extern void cpwm_int_hdl(PADAPTER padapter, struct reportpwrstate_parm *preportp
 extern void LPS_Leave_check(PADAPTER padapter);
 #endif
 
-extern void rtw_set_ps_mode(PADAPTER padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode, const char *msg);
-extern void rtw_set_rpwm(_adapter * padapter, u8 val8);
 extern void LeaveAllPowerSaveMode(PADAPTER Adapter);
 extern void LeaveAllPowerSaveModeDirect(PADAPTER Adapter);
 #ifdef CONFIG_IPS
@@ -429,7 +462,10 @@ int rtw_fw_ps_state(PADAPTER padapter);
 s32 LPS_RF_ON_check(PADAPTER padapter, u32 delay_ms);
 void LPS_Enter(PADAPTER padapter, const char *msg);
 void LPS_Leave(PADAPTER padapter, const char *msg);
-void   traffic_check_for_leave_lps(PADAPTER padapter, u8 tx, u32 tx_packets);
+void traffic_check_for_leave_lps(PADAPTER padapter, u8 tx, u32 tx_packets);
+void rtw_set_ps_mode(PADAPTER padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode, const char *msg);
+void rtw_set_fw_in_ips_mode(PADAPTER padapter, u8 enable);
+void rtw_set_rpwm(_adapter * padapter, u8 val8);
 #endif
 
 #ifdef CONFIG_RESUME_IN_WORKQUEUE
@@ -462,5 +498,17 @@ void rtw_ps_deny(PADAPTER padapter, PS_DENY_REASON reason);
 void rtw_ps_deny_cancel(PADAPTER padapter, PS_DENY_REASON reason);
 u32 rtw_ps_deny_get(PADAPTER padapter);
 
+#if defined(CONFIG_WOWLAN)
+void rtw_get_current_ip_address(PADAPTER padapter, u8 *pcurrentip);
+void rtw_get_sec_iv(PADAPTER padapter, u8 *pcur_dot11txpn, u8 *StaAddr);
+void rtw_set_sec_pn(_adapter *padapter);
+bool rtw_check_pattern_valid(u8 *input, u8 len);
+bool rtw_write_to_frame_mask(_adapter *adapter, u8 idx,
+               struct rtl_wow_pattern *content);
+
+bool rtw_read_from_frame_mask(_adapter *adapter, u8 idx);
+void rtw_dump_priv_pattern(_adapter *adapter, u8 idx);
+void rtw_clean_pattern(_adapter *adapter);
+#endif /* CONFIG_WOWLAN */
 #endif  //__RTL871X_PWRCTRL_H_