From 57a67f2aaad630d704828b1380a398f2472e8f68 Mon Sep 17 00:00:00 2001 From: Himani Gupta Date: Wed, 20 Mar 2019 11:38:27 +0530 Subject: [PATCH] [NEUS7920-477] [9610]wlbt: Driver changes for Fapi updates. Driver changes to handle latest fapi(7) changes & FTM changes to add two new field in rtt results. Change-Id: I6695a498beb2f448e6f6151ddca49eca740670ee SCSC-Bug-Id: SSB-46474 Signed-off-by: Himani Gupta --- drivers/net/wireless/scsc/cfg80211_ops.c | 5 +- drivers/net/wireless/scsc/fapi.h | 1304 +++++++++++++---- drivers/net/wireless/scsc/mgt.c | 2 +- drivers/net/wireless/scsc/mlme.c | 255 +--- drivers/net/wireless/scsc/mlme.h | 3 +- drivers/net/wireless/scsc/mlme_nan.c | 22 +- drivers/net/wireless/scsc/nl80211_vendor.c | 622 +------- drivers/net/wireless/scsc/nl80211_vendor.h | 59 +- .../net/wireless/scsc/nl80211_vendor_nan.c | 4 +- drivers/net/wireless/scsc/rx.c | 2 +- drivers/net/wireless/scsc/sap_mlme.c | 13 +- 11 files changed, 1117 insertions(+), 1174 deletions(-) diff --git a/drivers/net/wireless/scsc/cfg80211_ops.c b/drivers/net/wireless/scsc/cfg80211_ops.c index e4771fd4644b..51128af07c4c 100755 --- a/drivers/net/wireless/scsc/cfg80211_ops.c +++ b/drivers/net/wireless/scsc/cfg80211_ops.c @@ -504,7 +504,7 @@ int slsi_scan(struct wiphy *wiphy, struct net_device *dev, if (!ndev_vif->drv_in_p2p_procedure) { if (delayed_work_pending(&ndev_vif->unsync.unset_channel_expiry_work)) { cancel_delayed_work(&ndev_vif->unsync.unset_channel_expiry_work); - slsi_mlme_spare_signal_1(sdev, dev); + slsi_mlme_unset_channel_req(sdev, dev); ndev_vif->driver_channel = 0; } } @@ -2728,7 +2728,8 @@ static int slsi_wlan_mgmt_tx(struct slsi_dev *sdev, struct net_device *dev, /* vif is active*/ if (ieee80211_is_auth(mgmt->frame_control)) { SLSI_NET_DBG1(dev, SLSI_CFG80211, "Transmit on the current frequency\n"); - r = slsi_mlme_send_frame_mgmt(sdev, dev, buf, len, FAPI_DATAUNITDESCRIPTOR_IEEE802_11_FRAME, FAPI_MESSAGETYPE_IEEE80211_MGMT_NOT_ACTION, host_tag, 0, wait * 1000, 0); + r = slsi_mlme_send_frame_mgmt(sdev, dev, buf, len, FAPI_DATAUNITDESCRIPTOR_IEEE802_11_FRAME, + FAPI_MESSAGETYPE_IEEE80211_MGMT, host_tag, 0, wait * 1000, 0); if (r) return r; } else if (ndev_vif->vif_type == FAPI_VIFTYPE_UNSYNCHRONISED) { diff --git a/drivers/net/wireless/scsc/fapi.h b/drivers/net/wireless/scsc/fapi.h index e167d8d70fa0..ffc57d9c0784 100644 --- a/drivers/net/wireless/scsc/fapi.h +++ b/drivers/net/wireless/scsc/fapi.h @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2014 - 2018 Samsung Electronics Co., Ltd. All rights reserved + * Copyright (c) 2014 - 2019 Samsung Electronics Co., Ltd. All rights reserved * ****************************************************************************/ @@ -51,10 +51,10 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_SAP_TYPE_DEBUG 0x8000 #define FAPI_SAP_TYPE_TEST 0x9000 -#define FAPI_DEBUG_SAP_ENG_VERSION 0x0000 -#define FAPI_CONTROL_SAP_ENG_VERSION 0x0000 -#define FAPI_DATA_SAP_ENG_VERSION 0x0000 -#define FAPI_TEST_SAP_ENG_VERSION 0x0006 +#define FAPI_DEBUG_SAP_ENG_VERSION 0x0001 +#define FAPI_DATA_SAP_ENG_VERSION 0x0001 +#define FAPI_CONTROL_SAP_ENG_VERSION 0x0006 +#define FAPI_TEST_SAP_ENG_VERSION 0x000e #define FAPI_DEBUG_SAP_VERSION 0x0d03 #define FAPI_CONTROL_SAP_VERSION 0x0e00 #define FAPI_TEST_SAP_VERSION 0x0e00 @@ -63,8 +63,15 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_ACLPOLICY_BLACKLIST 0x0000 #define FAPI_ACLPOLICY_WHITELIST 0x0001 +#define FAPI_ACTION_STOP 0x0000 +#define FAPI_ACTION_START 0x0001 + +#define FAPI_APFFILTERMODE_SUSPEND 0x0001 +#define FAPI_APFFILTERMODE_ACTIVE 0x0002 + #define FAPI_AUTHENTICATIONTYPE_OPEN_SYSTEM 0x0000 #define FAPI_AUTHENTICATIONTYPE_SHARED_KEY 0x0001 +#define FAPI_AUTHENTICATIONTYPE_SAE 0x0003 #define FAPI_AUTHENTICATIONTYPE_LEAP 0x0080 #define FAPI_BANDWIDTH_20_MHZ 0x0 @@ -298,6 +305,7 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_DATARATE_CTR_DUPLICATE 0xe005 #define FAPI_DATARATE_CTR_ERROR 0xe006 #define FAPI_DATARATE_CTR_LDPC 0xe007 +#define FAPI_DATARATE_CTR_BEAMFORMED 0xe008 #define FAPI_DATAUNITDESCRIPTOR_IEEE802_11_FRAME 0x0000 #define FAPI_DATAUNITDESCRIPTOR_IEEE802_3_FRAME 0x0001 @@ -316,9 +324,15 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_DEVICESTATE_CW_RUNNING 3 #define FAPI_DEVICESTATE_BIST_RUNNING 4 +#define FAPI_DFSREGULATORY_UNKNOWN 0x0000 +#define FAPI_DFSREGULATORY_FCC 0x0001 +#define FAPI_DFSREGULATORY_ETSI 0x0002 +#define FAPI_DFSREGULATORY_JAPAN 0x0003 +#define FAPI_DFSREGULATORY_GLOBAL 0x0004 +#define FAPI_DFSREGULATORY_CHINA 0x0006 + #define FAPI_DIRECTION_TRANSMIT 0x0000 #define FAPI_DIRECTION_RECEIVE 0x0001 -#define FAPI_DIRECTION_ANY 0x0003 #define FAPI_ENDPOINT_HOSTIO 0x0001 #define FAPI_ENDPOINT_DPLP 0x0002 @@ -400,10 +414,11 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_HIDDENSSID_HIDDEN_ZERO_LENGTH 0x0001 #define FAPI_HIDDENSSID_HIDDEN_ZERO_DATA 0x0002 -#define FAPI_HOSTSTATE_LCD_ACTIVE 0x0001 -#define FAPI_HOSTSTATE_CELLULAR_ACTIVE 0x0002 -#define FAPI_HOSTSTATE_SAR_ACTIVE 0x0004 -#define FAPI_HOSTSTATE_GRIP_ACTIVE 0x0008 +#define FAPI_HOSTSTATE_LCD_ACTIVE 0x0001 +#define FAPI_HOSTSTATE_CELLULAR_ACTIVE 0x0002 +#define FAPI_HOSTSTATE_SAR_ACTIVE 0x0004 +#define FAPI_HOSTSTATE_GRIP_ACTIVE 0x0040 +#define FAPI_HOSTSTATE_LOW_LATENCY_ACTIVE 0x0080 #define FAPI_HT_NON_HT_RATE 0x1 #define FAPI_HT_HT_RATE 0x2 @@ -413,7 +428,8 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_KEYTYPE_PAIRWISE 0x0001 #define FAPI_KEYTYPE_WEP 0x0002 #define FAPI_KEYTYPE_IGTK 0x0003 -#define FAPI_KEYTYPE_FIRST_ILLEGAL 0x0004 +#define FAPI_KEYTYPE_PMK 0x0004 +#define FAPI_KEYTYPE_FIRST_ILLEGAL 0x0005 #define FAPI_MESSAGETYPE_EAP_MESSAGE 0x0001 #define FAPI_MESSAGETYPE_EAPOL_KEY_M123 0x0002 @@ -422,10 +438,9 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_MESSAGETYPE_DHCP 0x0005 #define FAPI_MESSAGETYPE_NEIGHBOR_DISCOVERY 0x0006 #define FAPI_MESSAGETYPE_WAI_MESSAGE 0x0007 -#define FAPI_MESSAGETYPE_PERIODIC_OFFLOAD 0x0008 +#define FAPI_MESSAGETYPE_ANY_OTHER 0x0008 #define FAPI_MESSAGETYPE_IEEE80211_ACTION 0x0010 -/* TBD: Auto generate to add this */ -#define FAPI_MESSAGETYPE_IEEE80211_MGMT_NOT_ACTION 0x0011 +#define FAPI_MESSAGETYPE_IEEE80211_MGMT 0x0011 #define FAPI_MODE_SOURCE 0x0001 #define FAPI_MODE_SINK 0x0002 @@ -435,7 +450,6 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_NANAVAILABILITYDURATION_32MS 0x01 #define FAPI_NANAVAILABILITYDURATION_64MS 0x02 -#define FAPI_NANOPERATIONCONTROL_CLUSTER_SDF 0x0001 #define FAPI_NANOPERATIONCONTROL_MAC_ADDRESS_EVENT 0x0002 #define FAPI_NANOPERATIONCONTROL_START_CLUSTER_EVENT 0x0004 #define FAPI_NANOPERATIONCONTROL_JOINED_CLUSTER_EVENT 0x0008 @@ -444,7 +458,16 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_NANSDFCONTROL_SUBSCRIBE_END_EVENT 0x0002 #define FAPI_NANSDFCONTROL_MATCH_EXPIRED_EVENT 0x0004 #define FAPI_NANSDFCONTROL_RECEIVED_FOLLOWUP_EVENT 0x0008 -#define FAPI_NANSDFCONTROL_DISABLE_RESPONSES_AFTER_FOLLOWUP 0x0010 +#define FAPI_NANSDFCONTROL_DISABLE_FOLLOWUP_TRANSMIT_STATUS 0x0010 + +#define FAPI_NSSTYPE_NSS_ONE_STREAM 0x0000 +#define FAPI_NSSTYPE_NSS_TWO_STREAMS 0x0001 +#define FAPI_NSSTYPE_NSS_THREE_STREAMS 0x0002 +#define FAPI_NSSTYPE_NSS_FOUR_STREAMS 0x0003 +#define FAPI_NSSTYPE_NSS_FIVE_STREAMS 0x0004 +#define FAPI_NSSTYPE_NSS_SIX_STREAMS 0x0005 +#define FAPI_NSSTYPE_NSS_SEVEN_STREAMS 0x0006 +#define FAPI_NSSTYPE_NSS_EIGHT_STREAMS 0x0007 #define FAPI_PACKETFILTERMODE_OPT_OUT 0x01 #define FAPI_PACKETFILTERMODE_OPT_IN 0x02 @@ -500,50 +523,53 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_RADIOBITMAP_RADIO_0 0x0001 #define FAPI_RADIOBITMAP_RADIO_1 0x0002 -#define FAPI_REASONCODE_RESERVED 0x0000 -#define FAPI_REASONCODE_UNSPECIFIED_REASON 0x0001 -#define FAPI_REASONCODE_DEAUTHENTICATED_INVALID_AUTHENTICATION 0x0002 -#define FAPI_REASONCODE_DEAUTHENTICATED_LEAVING_ESS 0x0003 -#define FAPI_REASONCODE_DEAUTHENTICATED_INACTIVITY 0x0004 -#define FAPI_REASONCODE_DEAUTHENTICATED_NO_MORE_STATIONS 0x0005 -#define FAPI_REASONCODE_DEAUTHENTICATED_INVALID_CLASS_2_FRAME 0x0006 -#define FAPI_REASONCODE_DEAUTHENTICATED_INVALID_CLASS_3_FRAME 0x0007 -#define FAPI_REASONCODE_DEAUTHENTICATED_UNACCEPTABLE_POWER_CAPABILITY 0x000a -#define FAPI_REASONCODE_DEAUTHENTICATED_4_WAY_HANDSHAKE_TIMEOUT 0x000f -#define FAPI_REASONCODE_DEAUTHENTICATED_GROUP_HANDSHAKE_TIMEOUT 0x0010 -#define FAPI_REASONCODE_DEAUTHENTICATED_HANDSHAKE_ELEMENT_MISMATCH 0x0011 -#define FAPI_REASONCODE_DEAUTHENTICATED_REASON_INVALID_RSNE 0x0014 -#define FAPI_REASONCODE_DEAUTHENTICATED_802_1_X_AUTH_FAILED 0x0017 -#define FAPI_REASONCODE_TDLS_PEER_UNREACHABLE 0x0019 -#define FAPI_REASONCODE_TDLS_TEARDOWN_UNSPECIFIED_REASON 0x001a -#define FAPI_REASONCODE_QOS_UNSPECIFIED_REASON 0x0020 -#define FAPI_REASONCODE_QOS_EXCESSIVE_NOT_ACK 0x0022 -#define FAPI_REASONCODE_QOS_TXOP_LIMIT_EXCEEDED 0x0023 -#define FAPI_REASONCODE_QSTA_LEAVING 0x0024 -#define FAPI_REASONCODE_END 0x0025 -#define FAPI_REASONCODE_UNKNOWN 0x0026 -#define FAPI_REASONCODE_TIMEOUT 0x0027 -#define FAPI_REASONCODE_KEEP_ALIVE_FAILURE 0x0028 -#define FAPI_REASONCODE_START 0x0029 -#define FAPI_REASONCODE_SYNCHRONISATION_LOSS 0x8003 -#define FAPI_REASONCODE_SECURITY_REQUIRED 0x8004 -#define FAPI_REASONCODE_ROAMING_FAILURE_LINK_LOSS_NO_CANDIDATE 0x8005 -#define FAPI_REASONCODE_HOTSPOT_MAX_CLIENT_REACHED 0x8006 -#define FAPI_REASONCODE_NAN_SERVICE_TERMINATED_TIMEOUT 0x9001 -#define FAPI_REASONCODE_NAN_SERVICE_TERMINATED_USER_REQUEST 0x9002 -#define FAPI_REASONCODE_NAN_SERVICE_TERMINATED_COUNT_REACHED 0x9003 -#define FAPI_REASONCODE_NAN_SERVICE_TERMINATED_DISCOVERY_SHUTDOWN 0x9004 -#define FAPI_REASONCODE_NAN_SERVICE_TERMINATED_POST_DISCOVERY_EXPIRED 0x9005 -#define FAPI_REASONCODE_NAN_TRANSMIT_FOLLOWUP_SUCCESS 0x9006 -#define FAPI_REASONCODE_NAN_TRANSMIT_FOLLOWUP_FAILURE 0x9007 - -#define FAPI_REPORTMODE_BUFFER_FULL 0x0001 +#define FAPI_REASONCODE_RESERVED 0x0000 +#define FAPI_REASONCODE_UNSPECIFIED_REASON 0x0001 +#define FAPI_REASONCODE_DEAUTHENTICATED_INVALID_AUTHENTICATION 0x0002 +#define FAPI_REASONCODE_DEAUTHENTICATED_LEAVING 0x0003 +#define FAPI_REASONCODE_DEAUTHENTICATED_NO_MORE_STATIONS 0x0005 +#define FAPI_REASONCODE_DEAUTHENTICATED_INVALID_CLASS_2_FRAME 0x0006 +#define FAPI_REASONCODE_DEAUTHENTICATED_INVALID_CLASS_3_FRAME 0x0007 +#define FAPI_REASONCODE_DEAUTHENTICATED_REASON_INVALID_IE 0x000d +#define FAPI_REASONCODE_DEAUTHENTICATED_4_WAY_HANDSHAKE_TIMEOUT 0x000f +#define FAPI_REASONCODE_DEAUTHENTICATED_GROUP_HANDSHAKE_TIMEOUT 0x0010 +#define FAPI_REASONCODE_DEAUTHENTICATED_HANDSHAKE_ELEMENT_MISMATCH 0x0011 +#define FAPI_REASONCODE_DEAUTHENTICATED_REASON_INVALID_RSNE 0x0014 +#define FAPI_REASONCODE_DEAUTHENTICATED_802_1_X_AUTH_FAILED 0x0017 +#define FAPI_REASONCODE_TDLS_PEER_UNREACHABLE 0x0019 +#define FAPI_REASONCODE_TDLS_TEARDOWN_UNSPECIFIED_REASON 0x001a +#define FAPI_REASONCODE_QOS_UNSPECIFIED_REASON 0x0020 +#define FAPI_REASONCODE_QOS_EXCESSIVE_NOT_ACK 0x0022 +#define FAPI_REASONCODE_QOS_TXOP_LIMIT_EXCEEDED 0x0023 +#define FAPI_REASONCODE_QSTA_LEAVING 0x0024 +#define FAPI_REASONCODE_END 0x0025 +#define FAPI_REASONCODE_UNKNOWN 0x0026 +#define FAPI_REASONCODE_TIMEOUT 0x0027 +#define FAPI_REASONCODE_KEEP_ALIVE_FAILURE 0x0028 +#define FAPI_REASONCODE_START 0x0029 +#define FAPI_REASONCODE_DEAUTHENTICATED_REASON_INVALID_PMKID 0x0031 +#define FAPI_REASONCODE_INVALID_PMKID 0x0049 +#define FAPI_REASONCODE_SYNCHRONISATION_LOSS 0x8003 +#define FAPI_REASONCODE_SECURITY_REQUIRED 0x8004 +#define FAPI_REASONCODE_ROAMING_FAILURE_LINK_LOSS_NO_CANDIDATE 0x8005 +#define FAPI_REASONCODE_HOTSPOT_MAX_CLIENT_REACHED 0x8006 +#define FAPI_REASONCODE_CHANNEL_SWITCH_FAILURE 0x8007 +#define FAPI_REASONCODE_REPORTING_ABORTED_SCANNING 0x8008 +#define FAPI_REASONCODE_REPORTING_ABORTED_ROAMING 0x8009 +#define FAPI_REASONCODE_NAN_SERVICE_TERMINATED_TIMEOUT 0x9001 +#define FAPI_REASONCODE_NAN_SERVICE_TERMINATED_USER_REQUEST 0x9002 +#define FAPI_REASONCODE_NAN_SERVICE_TERMINATED_COUNT_REACHED 0x9003 +#define FAPI_REASONCODE_NAN_SERVICE_TERMINATED_DISCOVERY_SHUTDOWN 0x9004 +#define FAPI_REASONCODE_NAN_TRANSMIT_FOLLOWUP_SUCCESS 0x9006 +#define FAPI_REASONCODE_NAN_TRANSMIT_FOLLOWUP_FAILURE 0x9007 +#define FAPI_REASONCODE_NDP_ACCEPTED 0x9008 +#define FAPI_REASONCODE_NDP_REJECTED 0x9009 + +#define FAPI_REPORTMODE_RESERVED 0x0001 #define FAPI_REPORTMODE_END_OF_SCAN_CYCLE 0x0002 #define FAPI_REPORTMODE_REAL_TIME 0x0004 #define FAPI_REPORTMODE_NO_BATCH 0x0008 -#define FAPI_REQUESTTYPE_SMAPPER_RX_CONFIG 0x0000 - #define FAPI_RESULTCODE_SUCCESS 0x0000 #define FAPI_RESULTCODE_UNSPECIFIED_FAILURE 0x0001 #define FAPI_RESULTCODE_INVALID_PARAMETERS 0x0026 @@ -551,43 +577,43 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_RESULTCODE_NOT_ALLOWED 0x0030 #define FAPI_RESULTCODE_NOT_PRESENT 0x0031 #define FAPI_RESULTCODE_TRANSMISSION_FAILURE 0x004f -#define FAPI_RESULTCODE_TIMEOUT 0x8000 #define FAPI_RESULTCODE_TOO_MANY_SIMULTANEOUS_REQUESTS 0x8001 #define FAPI_RESULTCODE_BSS_ALREADY_STARTED_OR_JOINED 0x8002 #define FAPI_RESULTCODE_NOT_SUPPORTED 0x8003 #define FAPI_RESULTCODE_INVALID_STATE 0x8004 #define FAPI_RESULTCODE_INSUFFICIENT_RESOURCE 0x8006 -#define FAPI_RESULTCODE_MISSING_INFORMATION_ELEMENT 0x8007 #define FAPI_RESULTCODE_INVALID_VIRTUAL_INTERFACE_INDEX 0x800a #define FAPI_RESULTCODE_HOST_REQUEST_SUCCESS 0x800b #define FAPI_RESULTCODE_HOST_REQUEST_FAILED 0x800c -#define FAPI_RESULTCODE_COMEBACK_TIME_RUNNING 0x800d #define FAPI_RESULTCODE_INVALID_FREQUENCY 0x800e #define FAPI_RESULTCODE_PROBE_TIMEOUT 0x800f #define FAPI_RESULTCODE_AUTH_TIMEOUT 0x8010 #define FAPI_RESULTCODE_ASSOC_TIMEOUT 0x8011 #define FAPI_RESULTCODE_ASSOC_ABORT 0x8012 -/*Will remove it once we get latest fapi.xml */ -#define FAPI_RESULTCODE_AUTH_NO_ACK 0x8013 -#define FAPI_RESULTCODE_ASSOC_NO_ACK 0x8014 -/*--------------------------------------------------*/ +#define FAPI_RESULTCODE_AUTH_NO_ACK 0x8013 +#define FAPI_RESULTCODE_ASSOC_NO_ACK 0x8014 +#define FAPI_RESULTCODE_AUTH_FAILED_CODE 0x8100 +#define FAPI_RESULTCODE_ASSOC_FAILED_CODE 0x8200 #define FAPI_RESULTCODE_INVALID_TLV_VALUE 0x9000 #define FAPI_RESULTCODE_NAN_PROTOCOL_FAILURE 0x9001 #define FAPI_RESULTCODE_NAN_INVALID_PUBLISH_SUBSCRIBE_ID 0x9002 #define FAPI_RESULTCODE_NAN_INVALID_REQUESTOR_INSTANCE_ID 0x9003 +#define FAPI_RESULTCODE_UNSUPPORTED_CONCURRENCY 0x9004 +#define FAPI_RESULTCODE_NAN_INVALID_NDP_ID 0x9005 +#define FAPI_RESULTCODE_NAN_INVALID_PEER_ID 0x9006 +#define FAPI_RESULTCODE_NAN_NO_OTA_ACK 0x9007 +#define FAPI_RESULTCODE_NAN_INVALID_AVAILABILITY 0x9008 +#define FAPI_RESULTCODE_NAN_IMMUTABLE_UNACCEPTABLE 0x9009 +#define FAPI_RESULTCODE_NAN_REJECTED_SECURITY_POLICY 0x900a +#define FAPI_RESULTCODE_NDP_REJECTED 0x900b +#define FAPI_RESULTCODE_NDL_UNACCEPTABLE 0x900c +#define FAPI_RESULTCODE_NDL_FAILED_SCHEDULE 0x900d #define FAPI_RTTBANDWIDTH_20MHZ 0x0004 #define FAPI_RTTBANDWIDTH_40MHZ 0x0008 #define FAPI_RTTBANDWIDTH_80MHZ 0x0010 #define FAPI_RTTBANDWIDTH_160MHZ 0x0020 -#define FAPI_RTTPEERTYPE_UNKNOWN 0x0000 -#define FAPI_RTTPEERTYPE_AP 0x0001 -#define FAPI_RTTPEERTYPE_STA 0x0002 -#define FAPI_RTTPEERTYPE_P2P_GO 0x0003 -#define FAPI_RTTPEERTYPE_P2P_CLIENT 0x0004 -#define FAPI_RTTPEERTYPE_NAN_DEVICE 0x0005 - #define FAPI_RTTPREAMBLE_LEGACY 0x0001 #define FAPI_RTTPREAMBLE_HT 0x0002 #define FAPI_RTTPREAMBLE_VHT 0x0004 @@ -600,7 +626,7 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_RTTSTATUS_FAIL_TIMEOUT 0x0005 #define FAPI_RTTSTATUS_FAIL_INCORRECT_CHANNEL 0x0006 #define FAPI_RTTSTATUS_FAIL_FTM_NOT_SUPPORTED 0x0007 -#define FAPI_RTTSTATUS_MEASUREMENT_ABORTED 0x0008 +#define FAPI_RTTSTATUS_FAIL_MEASUREMENT_ABORTED 0x0008 #define FAPI_RTTSTATUS_FAIL_INVALID_TIME_STAMP 0x0009 #define FAPI_RTTSTATUS_FAIL_NO_FTM_RECEIVED 0x000a #define FAPI_RTTSTATUS_FAIL_BURST_NOT_SCHEDULED 0x000b @@ -611,11 +637,20 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_RTTTYPE_ONE_SIDED 0x0001 #define FAPI_RTTTYPE_TWO_SIDED 0x0002 -#define FAPI_RXSTARTFLAGS_NONE 0x0000 -#define FAPI_RXSTARTFLAGS_SCAN_CHANNEL 0x0001 -#define FAPI_RXSTARTFLAGS_FILTERING 0x0002 -#define FAPI_RXSTARTFLAGS_ACK 0x0008 -#define FAPI_RXSTARTFLAGS_LP_MODE 0x0010 +#define FAPI_RULEFLAG_NO_IR 0x0001 +#define FAPI_RULEFLAG_DFS 0x0002 +#define FAPI_RULEFLAG_NO_OFDM 0x0004 +#define FAPI_RULEFLAG_NO_INDOOR 0x0008 +#define FAPI_RULEFLAG_NO_OUTDOOR 0x0010 + +#define FAPI_RXSTARTFLAGS_NONE 0x0000 +#define FAPI_RXSTARTFLAGS_SCAN_CHANNEL 0x0001 +#define FAPI_RXSTARTFLAGS_FILTERING 0x0002 +#define FAPI_RXSTARTFLAGS_BEAMFORMING 0x0004 +#define FAPI_RXSTARTFLAGS_ACK 0x0008 +#define FAPI_RXSTARTFLAGS_LP_MODE 0x0010 +#define FAPI_RXSTARTFLAGS_CHAN_RSSI 0x0020 +#define FAPI_RXSTARTFLAGS_DISABLE_EXTERNAL_LNA 0x0040 #define FAPI_SCANPOLICY_PASSIVE 0x01 #define FAPI_SCANPOLICY_TEST_MODE 0x02 @@ -643,7 +678,8 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_SCANTYPE_HARD_ALL_ROAMING_SCAN 0x0010 #define FAPI_SCANTYPE_OBSS_SCAN_INTERNAL 0x0011 #define FAPI_SCANTYPE_NAN_SCAN 0x0012 -#define FAPI_SCANTYPE_FIRST_ILLEGAL 0x0013 +#define FAPI_SCANTYPE_FTM_NEIGHBOUR_SCAN 0x0013 +#define FAPI_SCANTYPE_FIRST_ILLEGAL 0x0014 #define FAPI_STATSSTOPBITMAP_STATS_RADIO 0x0001 #define FAPI_STATSSTOPBITMAP_STATS_RADIO_CCA 0x0002 @@ -654,9 +690,10 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_STATSSTOPBITMAP_STATS_IFACE_AC 0x0040 #define FAPI_STATSSTOPBITMAP_STATS_IFACE_CONTENSION 0x0080 -#define FAPI_TDLSACTION_DISCOVERY 0x0000 -#define FAPI_TDLSACTION_SETUP 0x0001 -#define FAPI_TDLSACTION_TEARDOWN 0x0002 +#define FAPI_TDLSACTION_DISCOVERY 0x0000 +#define FAPI_TDLSACTION_SETUP 0x0001 +#define FAPI_TDLSACTION_TEARDOWN 0x0002 +/*todo*/ #define FAPI_TDLSACTION_CHANNEL_SWITCH 0x0003 #define FAPI_TDLSEVENT_CONNECTED 0x0001 @@ -678,20 +715,23 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_TXREADFLAGS_FRAME_COUNTING 0x0001 #define FAPI_TXREADFLAGS_THERMAL_CUTOUT 0x0002 -#define FAPI_TXSETPARAMSFLAGS_NONE 0x0000 -#define FAPI_TXSETPARAMSFLAGS_ACK 0x0001 -#define FAPI_TXSETPARAMSFLAGS_DUPLICATE_80 0x0002 -#define FAPI_TXSETPARAMSFLAGS_DUPLICATE_40 0x0004 -#define FAPI_TXSETPARAMSFLAGS_DEAFEN_RX 0x0008 -#define FAPI_TXSETPARAMSFLAGS_CS 0x0010 -#define FAPI_TXSETPARAMSFLAGS_SCAN_CHANNEL 0x0020 -#define FAPI_TXSETPARAMSFLAGS_SHORT_PREAMBLE 0x0040 -#define FAPI_TXSETPARAMSFLAGS_DISABLE_SCRAMBLER 0x0080 -#define FAPI_TXSETPARAMSFLAGS_LDPC 0x0100 -#define FAPI_TXSETPARAMSFLAGS_STBC 0x0200 -#define FAPI_TXSETPARAMSFLAGS_DISABLE_SPREADER 0x0400 -#define FAPI_TXSETPARAMSFLAGS_GREENFIELD_PREAMBLE 0x0800 -#define FAPI_TXSETPARAMSFLAGS_IBSS_FRAMES 0x2000 +#define FAPI_TXSETPARAMSFLAGS_NONE 0x0000 +#define FAPI_TXSETPARAMSFLAGS_ACK 0x0001 +#define FAPI_TXSETPARAMSFLAGS_DUPLICATE_80 0x0002 +#define FAPI_TXSETPARAMSFLAGS_DUPLICATE_40 0x0004 +#define FAPI_TXSETPARAMSFLAGS_DEAFEN_RX 0x0008 +#define FAPI_TXSETPARAMSFLAGS_CS 0x0010 +#define FAPI_TXSETPARAMSFLAGS_SCAN_CHANNEL 0x0020 +#define FAPI_TXSETPARAMSFLAGS_SHORT_PREAMBLE 0x0040 +#define FAPI_TXSETPARAMSFLAGS_DISABLE_SCRAMBLER 0x0080 +#define FAPI_TXSETPARAMSFLAGS_LDPC 0x0100 +#define FAPI_TXSETPARAMSFLAGS_STBC 0x0200 +#define FAPI_TXSETPARAMSFLAGS_DISABLE_SPREADER 0x0400 +#define FAPI_TXSETPARAMSFLAGS_GREENFIELD_PREAMBLE 0x0800 +#define FAPI_TXSETPARAMSFLAGS_RX_LOW_POWER 0x1000 +#define FAPI_TXSETPARAMSFLAGS_IBSS_FRAMES 0x2000 +#define FAPI_TXSETPARAMSFLAGS_BEAMFORMING 0x4000 +#define FAPI_TXSETPARAMSFLAGS_DISABLE_EXTERNAL_LNA 0x8000 #define FAPI_TYPEOFAIRPOWER_EIRP 0x00 #define FAPI_TYPEOFAIRPOWER_TPO 0x01 @@ -704,15 +744,38 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_VIFRANGE_VIF_INDEX_MAX 0x0008 #define FAPI_VIFTYPE_UNSYNCHRONISED 0x0000 -#define FAPI_VIFTYPE_SCAN 0x0001 #define FAPI_VIFTYPE_STATION 0x0002 #define FAPI_VIFTYPE_AP 0x0003 #define FAPI_VIFTYPE_WLANLITE 0x0004 #define FAPI_VIFTYPE_NAN 0x0005 #define FAPI_VIFTYPE_DISCOVERY 0x0006 -#define FAPI_VIFTYPE_OFFCHANNEL 0x0007 -#define FAPI_VIFTYPE_RANGE 0x0008 +#define FAPI_VIFTYPE_PRECONNECT 0x0007 +#define FAPI_VIFTYPE_NANDATAPATH 0x0008 #define FAPI_VIFTYPE_MONITOR 0x0010 +#define FAPI_VIFTYPE_SCAN 0x0020 +#define FAPI_VIFTYPE_OFFCHANNEL 0x0021 +#define FAPI_VIFTYPE_RANGE 0x0022 + +#define FAPI_WIFILOGGINGPARAMS_BEACON_PERIOD 0xf000 +#define FAPI_WIFILOGGINGPARAMS_BLACKOUT_ID 0xf001 +#define FAPI_WIFILOGGINGPARAMS_BLACKOUT_SOURCE 0xf002 +#define FAPI_WIFILOGGINGPARAMS_BLACKOUT_TYPE 0xf003 +#define FAPI_WIFILOGGINGPARAMS_BLOCKACK_PARAMETER_SET 0xf004 +#define FAPI_WIFILOGGINGPARAMS_DIRECTION 0xf005 +#define FAPI_WIFILOGGINGPARAMS_DUTY_CYCLE 0xf006 +#define FAPI_WIFILOGGINGPARAMS_EAPOL_KEY_TYPE 0xf007 +#define FAPI_WIFILOGGINGPARAMS_FRAME 0xf008 +#define FAPI_WIFILOGGINGPARAMS_LOCAL_DURATION 0xf009 +#define FAPI_WIFILOGGINGPARAMS_PERIOD 0xf00a +#define FAPI_WIFILOGGINGPARAMS_REASON 0xf00b +#define FAPI_WIFILOGGINGPARAMS_REPORT_MODE 0xf00c +#define FAPI_WIFILOGGINGPARAMS_RETRY_COUNT 0xf00d +#define FAPI_WIFILOGGINGPARAMS_SCAN_TYPE 0xf00e +#define FAPI_WIFILOGGINGPARAMS_SECONDARY_CHANNEL_OFFSET 0xf00f +#define FAPI_WIFILOGGINGPARAMS_SEQUENCE_NUMBER 0xf010 +#define FAPI_WIFILOGGINGPARAMS_SNIFF_ACL 0xf011 +#define FAPI_WIFILOGGINGPARAMS_TEMPORAL_KEYS_REQUIRED 0xf012 +#define FAPI_WIFILOGGINGPARAMS_VIF_ID 0xf013 #define FAPI_CHANNELBANDWIDTH_BANDWIDTH_20MHZ_PRIMARYCHANNELPOSITION_P0 0x0000 #define FAPI_CHANNELBANDWIDTH_BANDWIDTH_20MHZ_PRIMARYCHANNELPOSITION_P1 0x0001 @@ -743,23 +806,33 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define FAPI_CHANNELBANDWIDTH_BANDWIDTH_80MHZ_PRIMARYCHANNELPOSITION_NOT_APPLICABLE 0x0208 #define MA_UNITDATA_REQ 0x1000 -#define MA_CONTROL_REQ 0x1001 -#define MA_SPARE_SIGNAL_1_REQ 0x1002 -#define MA_SPARE_SIGNAL_2_REQ 0x1003 -#define MA_SPARE_SIGNAL_3_REQ 0x1004 +#define MA_SPARE_1_REQ 0x1002 +#define MA_SPARE_2_REQ 0x1003 +#define MA_SPARE_3_REQ 0x1004 +#define MA_SPARE_SIGNAL_1_REQ 0x1005 +#define MA_SPARE_SIGNAL_2_REQ 0x1006 +#define MA_SPARE_SIGNAL_3_REQ 0x1007 #define MA_UNITDATA_CFM 0x1100 -#define MA_CONTROL_CFM 0x1101 -#define MA_SPARE_SIGNAL_1_CFM 0x1102 -#define MA_SPARE_SIGNAL_2_CFM 0x1103 -#define MA_SPARE_SIGNAL_3_CFM 0x1104 -#define MA_SPARE_SIGNAL_1_RES 0x1200 -#define MA_SPARE_SIGNAL_2_RES 0x1201 -#define MA_SPARE_SIGNAL_3_RES 0x1202 +#define MA_SPARE_1_CFM 0x1102 +#define MA_SPARE_2_CFM 0x1103 +#define MA_SPARE_3_CFM 0x1104 +#define MA_SPARE_SIGNAL_1_CFM 0x1105 +#define MA_SPARE_SIGNAL_2_CFM 0x1106 +#define MA_SPARE_SIGNAL_3_CFM 0x1107 +#define MA_SPARE_1_RES 0x1200 +#define MA_SPARE_2_RES 0x1201 +#define MA_SPARE_3_RES 0x1202 +#define MA_SPARE_SIGNAL_1_RES 0x1203 +#define MA_SPARE_SIGNAL_2_RES 0x1204 +#define MA_SPARE_SIGNAL_3_RES 0x1205 #define MA_UNITDATA_IND 0x1300 #define MA_BLOCKACK_IND 0x1301 -#define MA_SPARE_SIGNAL_1_IND 0x1302 -#define MA_SPARE_SIGNAL_2_IND 0x1303 -#define MA_SPARE_SIGNAL_3_IND 0x1304 +#define MA_SPARE_1_IND 0x1302 +#define MA_SPARE_2_IND 0x1303 +#define MA_SPARE_3_IND 0x1304 +#define MA_SPARE_SIGNAL_1_IND 0x1305 +#define MA_SPARE_SIGNAL_2_IND 0x1306 +#define MA_SPARE_SIGNAL_3_IND 0x1307 #define MLME_GET_REQ 0x2001 #define MLME_SET_REQ 0x2002 #define MLME_POWERMGT_REQ 0x2003 @@ -792,7 +865,6 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define MLME_MONITOR_RSSI_REQ 0x2023 #define MLME_START_LINK_STATISTICS_REQ 0x2024 #define MLME_STOP_LINK_STATISTICS_REQ 0x2025 -#define MLME_SET_BSSID_HOTLIST_REQ 0x2026 #define MLME_SET_PNO_LIST_REQ 0x2027 #define MLME_HOST_STATE_REQ 0x2028 #define MLME_ADD_RANGE_REQ 0x2029 @@ -804,9 +876,24 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define MLME_NAN_PUBLISH_REQ 0x202f #define MLME_NAN_SUBSCRIBE_REQ 0x2030 #define MLME_NAN_FOLLOWUP_REQ 0x2031 -#define MLME_SPARE_SIGNAL_1_REQ 0x2032 -#define MLME_SPARE_SIGNAL_2_REQ 0x2033 -#define MLME_SPARE_SIGNAL_3_REQ 0x2034 +#define MLME_UNSET_CHANNEL_REQ 0x2032 +#define MLME_SET_COUNTRY_REQ 0x2033 +#define MLME_FORWARD_BEACON_REQ 0x2034 +#define MLME_NDP_SETUP_REQ 0x2035 +#define MLME_NDP_SETUP_RESPONSE_REQ 0x2036 +#define MLME_NDP_TERMINATE_REQ 0x2037 +#define MLME_NAN_ADD_RANGE_REQ 0x2038 +#define MLME_NAN_DEL_RANGE_REQ 0x2039 +#define MLME_SPARE_4_REQ 0x203a +#define MLME_SPARE_5_REQ 0x203b +#define MLME_SPARE_6_REQ 0x203c +#define MLME_INSTALL_APF_REQ 0x203d +#define MLME_READ_APF_REQ 0x203e +#define MLME_SET_NSS_REQ 0x203f +#define MLME_ARP_DETECT_REQ 0x2040 +#define MLME_SPARE_SIGNAL_1_REQ 0x2041 +#define MLME_SPARE_SIGNAL_2_REQ 0x2042 +#define MLME_SPARE_SIGNAL_3_REQ 0x2043 #define MLME_GET_CFM 0x2101 #define MLME_SET_CFM 0x2102 #define MLME_POWERMGT_CFM 0x2103 @@ -839,7 +926,6 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define MLME_MONITOR_RSSI_CFM 0x2123 #define MLME_START_LINK_STATISTICS_CFM 0x2124 #define MLME_STOP_LINK_STATISTICS_CFM 0x2125 -#define MLME_SET_BSSID_HOTLIST_CFM 0x2126 #define MLME_SET_PNO_LIST_CFM 0x2127 #define MLME_HOST_STATE_CFM 0x2128 #define MLME_ADD_RANGE_CFM 0x2129 @@ -851,17 +937,36 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define MLME_NAN_PUBLISH_CFM 0x212f #define MLME_NAN_SUBSCRIBE_CFM 0x2130 #define MLME_NAN_FOLLOWUP_CFM 0x2131 -#define MLME_SPARE_SIGNAL_1_CFM 0x2132 -#define MLME_SPARE_SIGNAL_2_CFM 0x2133 -#define MLME_SPARE_SIGNAL_3_CFM 0x2134 +#define MLME_UNSET_CHANNEL_CFM 0x2132 +#define MLME_SET_COUNTRY_CFM 0x2133 +#define MLME_FORWARD_BEACON_CFM 0x2134 +#define MLME_NDP_SETUP_CFM 0x2135 +#define MLME_NDP_SETUP_RESPONSE_CFM 0x2136 +#define MLME_NDP_TERMINATE_CFM 0x2137 +#define MLME_NAN_ADD_RANGE_CFM 0x2138 +#define MLME_NAN_DEL_RANGE_CFM 0x2139 +#define MLME_SPARE_4_CFM 0x213a +#define MLME_SPARE_5_CFM 0x213b +#define MLME_SPARE_6_CFM 0x213c +#define MLME_INSTALL_APF_CFM 0x213d +#define MLME_READ_APF_CFM 0x213e +#define MLME_SET_NSS_CFM 0x213f +#define MLME_ARP_DETECT_CFM 0x2140 +#define MLME_SPARE_SIGNAL_1_CFM 0x2141 +#define MLME_SPARE_SIGNAL_2_CFM 0x2142 +#define MLME_SPARE_SIGNAL_3_CFM 0x2143 #define MLME_CONNECT_RES 0x2200 #define MLME_CONNECTED_RES 0x2201 #define MLME_REASSOCIATE_RES 0x2202 #define MLME_ROAMED_RES 0x2203 #define MLME_TDLS_PEER_RES 0x2204 -#define MLME_SPARE_SIGNAL_1_RES 0x2205 -#define MLME_SPARE_SIGNAL_2_RES 0x2206 -#define MLME_SPARE_SIGNAL_3_RES 0x2207 +#define MLME_SYNCHRONISED_RES 0x2205 +#define MLME_SPARE_2_RES 0x2206 +#define MLME_SPARE_3_RES 0x2207 +#define MLME_SPARE_4_RES 0x2208 +#define MLME_SPARE_SIGNAL_1_RES 0x2209 +#define MLME_SPARE_SIGNAL_2_RES 0x220a +#define MLME_SPARE_SIGNAL_3_RES 0x220b #define MLME_SCAN_IND 0x2300 #define MLME_SCAN_DONE_IND 0x2301 #define MLME_LISTEN_END_IND 0x2302 @@ -877,8 +982,6 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define MLME_FRAME_TRANSMISSION_IND 0x230c #define MLME_RECEIVED_FRAME_IND 0x230d #define MLME_TDLS_PEER_IND 0x230f -#define MLME_AP_LOSS_IND 0x2310 -#define MLME_SIGNIFICANT_CHANGE_IND 0x2311 #define MLME_RSSI_REPORT_IND 0x2312 #define MLME_AC_PRIORITY_UPDATE_IND 0x2313 #define MLME_RANGE_IND 0x2314 @@ -888,23 +991,46 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define MLME_NAN_SERVICE_IND 0x2318 #define MLME_NAN_FOLLOWUP_IND 0x2319 #define MLME_CHANNEL_SWITCHED_IND 0x231a -#define MLME_SPARE_SIGNAL_1_IND 0x231b -#define MLME_SPARE_SIGNAL_2_IND 0x231c -#define MLME_SPARE_SIGNAL_3_IND 0x231d -#define DEBUG_SPARE_SIGNAL_1_REQ 0x8000 -#define DEBUG_SPARE_SIGNAL_2_REQ 0x8001 -#define DEBUG_SPARE_SIGNAL_3_REQ 0x8002 -#define DEBUG_SPARE_SIGNAL_1_CFM 0x8100 -#define DEBUG_SPARE_SIGNAL_2_CFM 0x8101 -#define DEBUG_SPARE_SIGNAL_3_CFM 0x8102 -#define DEBUG_SPARE_SIGNAL_1_RES 0x8200 -#define DEBUG_SPARE_SIGNAL_2_RES 0x8201 -#define DEBUG_SPARE_SIGNAL_3_RES 0x8202 +#define MLME_SYNCHRONISED_IND 0x231b +#define MLME_BEACON_REPORTING_EVENT_IND 0x231c +#define MLME_SPARE_3_IND 0x231d +#define MLME_SPARE_4_IND 0x231e +#define MLME_NDP_SETUP_IND 0x231f +#define MLME_NDP_REQUESTED_IND 0x2320 +#define MLME_NDP_SETUP_RESPONSE_IND 0x2321 +#define MLME_NDP_TERMINATED_IND 0x2322 +#define MLME_NAN_ADD_RANGE_IND 0x2323 +#define MLME_SPARE_5_IND 0x2324 +#define MLME_SPARE_SIGNAL_1_IND 0x2325 +#define MLME_SPARE_SIGNAL_2_IND 0x2326 +#define MLME_SPARE_SIGNAL_3_IND 0x2327 +#define DEBUG_SPARE_1_REQ 0x8000 +#define DEBUG_SPARE_2_REQ 0x8001 +#define DEBUG_SPARE_3_REQ 0x8002 +#define DEBUG_SPARE_SIGNAL_1_REQ 0x8003 +#define DEBUG_SPARE_SIGNAL_2_REQ 0x8004 +#define DEBUG_SPARE_SIGNAL_3_REQ 0x8005 +#define DEBUG_SPARE_1_CFM 0x8100 +#define DEBUG_SPARE_2_CFM 0x8101 +#define DEBUG_SPARE_3_CFM 0x8102 +#define DEBUG_SPARE_SIGNAL_1_CFM 0x8103 +#define DEBUG_SPARE_SIGNAL_2_CFM 0x8104 +#define DEBUG_SPARE_SIGNAL_3_CFM 0x8105 +#define DEBUG_SPARE_1_RES 0x8200 +#define DEBUG_SPARE_2_RES 0x8201 +#define DEBUG_SPARE_3_RES 0x8202 +#define DEBUG_SPARE_SIGNAL_1_RES 0x8203 +#define DEBUG_SPARE_SIGNAL_2_RES 0x8204 +#define DEBUG_SPARE_SIGNAL_3_RES 0x8205 #define DEBUG_WORD12IND 0x8301 #define DEBUG_FAULT_IND 0x8302 -#define DEBUG_SPARE_SIGNAL_1_IND 0x8303 -#define DEBUG_SPARE_SIGNAL_2_IND 0x8304 -#define DEBUG_SPARE_SIGNAL_3_IND 0x8305 +#define DEBUG_WORDS_IND 0x8303 +#define DEBUG_SPARE_2_IND 0x8304 +#define DEBUG_SPARE_3_IND 0x8305 +#define DEBUG_SPARE_4_IND 0x8306 +#define DEBUG_SPARE_SIGNAL_1_IND 0x8307 +#define DEBUG_SPARE_SIGNAL_2_IND 0x8308 +#define DEBUG_SPARE_SIGNAL_3_IND 0x8309 #define TEST_BLOCK_REQUESTS_REQ 0x9000 #define TEST_PANIC_REQ 0x9001 #define TEST_SUSPEND_REQ 0x9002 @@ -936,9 +1062,12 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define TEST_HIP_TESTER_SET_PARAMS_REQ 0x901d #define TEST_HIP_TESTER_REPORT_REQ 0x901e #define TEST_BIST_GET_TX_GAIN_REQ 0x901f -#define TEST_SPARE_SIGNAL_1_REQ 0x9020 -#define TEST_SPARE_SIGNAL_2_REQ 0x9021 -#define TEST_SPARE_SIGNAL_3_REQ 0x9022 +#define TEST_SPARE_1_REQ 0x9020 +#define TEST_SPARE_2_REQ 0x9021 +#define TEST_SPARE_3_REQ 0x9022 +#define TEST_SPARE_SIGNAL_1_REQ 0x9023 +#define TEST_SPARE_SIGNAL_2_REQ 0x9024 +#define TEST_SPARE_SIGNAL_3_REQ 0x9025 #define RADIO_LOGGING_CFM 0x9100 #define WLANLITE_CW_START_CFM 0x9101 #define WLANLITE_TX_SET_PARAMS_CFM 0x9102 @@ -961,20 +1090,29 @@ static inline struct slsi_skb_cb *slsi_skb_cb_init(struct sk_buff *skb) #define TEST_HIP_TESTER_STOP_CFM 0x9114 #define TEST_HIP_TESTER_SET_PARAMS_CFM 0x9115 #define TEST_BIST_GET_TX_GAIN_CFM 0x9116 -#define TEST_SPARE_SIGNAL_1_CFM 0x9117 -#define TEST_SPARE_SIGNAL_2_CFM 0x9118 -#define TEST_SPARE_SIGNAL_3_CFM 0x9119 -#define TEST_SPARE_SIGNAL_1_RES 0x9200 -#define TEST_SPARE_SIGNAL_2_RES 0x9201 -#define TEST_SPARE_SIGNAL_3_RES 0x9202 +#define TEST_SPARE_1_CFM 0x9117 +#define TEST_SPARE_2_CFM 0x9118 +#define TEST_SPARE_3_CFM 0x9119 +#define TEST_SPARE_SIGNAL_1_CFM 0x911a +#define TEST_SPARE_SIGNAL_2_CFM 0x911b +#define TEST_SPARE_SIGNAL_3_CFM 0x911c +#define TEST_SPARE_1_RES 0x9200 +#define TEST_SPARE_2_RES 0x9201 +#define TEST_SPARE_3_RES 0x9202 +#define TEST_SPARE_SIGNAL_1_RES 0x9203 +#define TEST_SPARE_SIGNAL_2_RES 0x9204 +#define TEST_SPARE_SIGNAL_3_RES 0x9205 #define RADIO_LOGGING_IND 0x9300 #define DEBUG_GENERIC_IND 0x9301 #define DEBUG_PKT_SINK_REPORT_IND 0x9302 #define DEBUG_PKT_GEN_REPORT_IND 0x9303 #define TEST_HIP_TESTER_REPORT_IND 0x9304 -#define TEST_SPARE_SIGNAL_1_IND 0x9305 -#define TEST_SPARE_SIGNAL_2_IND 0x9306 -#define TEST_SPARE_SIGNAL_3_IND 0x9307 +#define TEST_SPARE_1_IND 0x9305 +#define TEST_SPARE_2_IND 0x9306 +#define TEST_SPARE_3_IND 0x9307 +#define TEST_SPARE_SIGNAL_1_IND 0x9308 +#define TEST_SPARE_SIGNAL_2_IND 0x9309 +#define TEST_SPARE_SIGNAL_3_IND 0x930a struct fapi_signal_header { __le16 id; @@ -1012,12 +1150,25 @@ struct fapi_signal { } __packed ma_unitdata_req; struct { __le16 vif; - __le16 control_request_type; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed ma_control_req; + } __packed ma_spare_1_req; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed ma_spare_2_req; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed ma_spare_3_req; struct { __le16 vif; __le32 spare_1; @@ -1057,7 +1208,23 @@ struct fapi_signal { __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed ma_control_cfm; + } __packed ma_spare_1_cfm; + struct { + __le16 vif; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed ma_spare_2_cfm; + struct { + __le16 vif; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed ma_spare_3_cfm; struct { __le16 vif; __le16 result_code; @@ -1082,6 +1249,27 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed ma_spare_signal_3_cfm; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed ma_spare_1_res; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed ma_spare_2_res; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed ma_spare_3_res; struct { __le16 vif; __le32 spare_1; @@ -1128,6 +1316,27 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed ma_blockack_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed ma_spare_1_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed ma_spare_2_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed ma_spare_3_ind; struct { __le16 vif; __le32 spare_1; @@ -1439,13 +1648,6 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed mlme_stop_link_statistics_req; - struct { - __le16 vif; - __le32 spare_1; - __le32 spare_2; - __le32 spare_3; - u8 dr[0]; - } __packed mlme_set_bssid_hotlist_req; struct { __le16 vif; __le32 spare_1; @@ -1464,6 +1666,7 @@ struct fapi_signal { struct { __le16 vif; __le16 rtt_id; + u8 device_address[ETH_ALEN]; __le32 spare_1; __le32 spare_2; __le32 spare_3; @@ -1499,8 +1702,8 @@ struct fapi_signal { } __packed mlme_set_ctwindow_req; struct { __le16 vif; - __le16 cluster_low; - __le16 cluster_high; + __le16 operatein5gband; + __le16 hopcountmax; __le16 nan_operation_control_flags; __le32 spare_1; __le32 spare_2; @@ -1536,13 +1739,132 @@ struct fapi_signal { struct { __le16 vif; __le16 publish_subscribe_id; - __le16 requestor_instance_id; + __le16 peer_id; __le16 nan_sdf_flags; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; } __packed mlme_nan_followup_req; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_unset_channel_req; + struct { + __le16 vif; + __le16 country_code; + __le16 dfs_regulatory_domain; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_set_country_req; + struct { + __le16 vif; + __le16 wips_action; + __le16 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_forward_beacon_req; + struct { + __le16 vif; + __le16 instance_id; + __le16 peer_id; + u8 local_ndp_interface_address[ETH_ALEN]; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_ndp_setup_req; + struct { + __le16 vif; + __le16 instance_id; + __le16 reason_code; + u8 local_ndp_interface_address[ETH_ALEN]; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_ndp_setup_response_req; + struct { + __le16 vif; + __le16 instance_id; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_ndp_terminate_req; + struct { + __le16 vif; + __le16 rtt_id; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_nan_add_range_req; + struct { + __le16 vif; + __le16 rtt_id; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_nan_del_range_req; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_spare_4_req; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_spare_5_req; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_spare_6_req; + struct { + __le16 vif; + __le16 filter_mode; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_install_apf_req; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_read_apf_req; + struct { + __le16 vif; + __le16 rx_nss; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_set_nss_req; + struct { + __le16 vif; + __le16 arp_detect_action; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_arp_detect_req; struct { __le16 vif; __le32 spare_1; @@ -1822,14 +2144,6 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed mlme_stop_link_statistics_cfm; - struct { - __le16 vif; - __le16 result_code; - __le32 spare_1; - __le32 spare_2; - __le32 spare_3; - u8 dr[0]; - } __packed mlme_set_bssid_hotlist_cfm; struct { __le16 vif; __le16 result_code; @@ -1927,7 +2241,7 @@ struct fapi_signal { __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_spare_signal_1_cfm; + } __packed mlme_unset_channel_cfm; struct { __le16 vif; __le16 result_code; @@ -1935,7 +2249,7 @@ struct fapi_signal { __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_spare_signal_2_cfm; + } __packed mlme_set_country_cfm; struct { __le16 vif; __le16 result_code; @@ -1943,95 +2257,97 @@ struct fapi_signal { __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_spare_signal_3_cfm; + } __packed mlme_forward_beacon_cfm; struct { __le16 vif; + __le16 result_code; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_connect_res; + } __packed mlme_ndp_setup_cfm; struct { __le16 vif; - __le16 peer_index; + __le16 result_code; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_connected_res; + } __packed mlme_ndp_setup_response_cfm; struct { __le16 vif; + __le16 result_code; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_reassociate_res; + } __packed mlme_ndp_terminate_cfm; struct { __le16 vif; + __le16 result_code; + __le16 rtt_id; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_roamed_res; + } __packed mlme_nan_add_range_cfm; struct { __le16 vif; - __le16 peer_index; - __le16 tdls_event; + __le16 result_code; + __le16 rtt_id; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_tdls_peer_res; + } __packed mlme_nan_del_range_cfm; struct { __le16 vif; + __le16 result_code; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_spare_signal_1_res; + } __packed mlme_spare_4_cfm; struct { + __le16 result_code; __le16 vif; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_spare_signal_2_res; + } __packed mlme_spare_5_cfm; struct { + __le16 result_code; __le16 vif; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_spare_signal_3_res; + } __packed mlme_spare_6_cfm; struct { __le16 vif; - __le16 channel_frequency; - __le16 rssi; - __le16 scan_id; - __le16 hotlisted_ap; - __le16 preferrednetwork_ap; - __le16 anqp_elements_length; - __le16 network_block_id; + __le16 result_code; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_scan_ind; + } __packed mlme_install_apf_cfm; struct { __le16 vif; - __le16 scan_id; + __le16 result_code; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_scan_done_ind; + } __packed mlme_read_apf_cfm; struct { __le16 vif; + __le16 result_code; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_listen_end_ind; + } __packed mlme_set_nss_cfm; struct { __le16 vif; __le16 result_code; @@ -2039,15 +2355,15 @@ struct fapi_signal { __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_connect_ind; + } __packed mlme_arp_detect_cfm; struct { __le16 vif; - __le16 peer_index; + __le16 result_code; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_connected_ind; + } __packed mlme_spare_signal_1_cfm; struct { __le16 vif; __le16 result_code; @@ -2055,7 +2371,7 @@ struct fapi_signal { __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_reassociate_ind; + } __packed mlme_spare_signal_2_cfm; struct { __le16 vif; __le16 result_code; @@ -2063,98 +2379,229 @@ struct fapi_signal { __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_roam_ind; + } __packed mlme_spare_signal_3_cfm; struct { __le16 vif; - __le16 temporal_keys_required; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_roamed_ind; + } __packed mlme_connect_res; struct { __le16 vif; - u8 peer_sta_address[ETH_ALEN]; + __le16 peer_index; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_disconnect_ind; + } __packed mlme_connected_res; struct { __le16 vif; - u8 peer_sta_address[ETH_ALEN]; - __le16 reason_code; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_disconnected_ind; + } __packed mlme_reassociate_res; struct { __le16 vif; - __le16 procedure_type; - __le16 peer_index; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_procedure_started_ind; + } __packed mlme_roamed_res; struct { __le16 vif; - u8 peer_sta_address[ETH_ALEN]; - __le16 key_type; - __le16 key_id; - __le16 key_sequence_number[8]; + __le16 peer_index; + __le16 tdls_event; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_mic_failure_ind; + } __packed mlme_tdls_peer_res; struct { __le16 vif; - __le16 host_tag; - __le16 transmission_status; - __le32 spare_1; - __le32 spare_2; + __le16 result_code; + u8 bssid[ETH_ALEN]; __le32 spare_3; u8 dr[0]; - } __packed mlme_frame_transmission_ind; + } __packed mlme_synchronised_res; struct { __le16 vif; - __le16 data_unit_descriptor; - __le16 channel_frequency; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_received_frame_ind; + } __packed mlme_spare_2_res; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_spare_3_res; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_spare_4_res; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_spare_signal_1_res; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_spare_signal_2_res; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_spare_signal_3_res; + struct { + __le16 vif; + __le16 channel_frequency; + __le16 rssi; + __le16 scan_id; + __le16 hotlisted_ap; + __le16 preferrednetwork_ap; + __le16 anqp_elements_length; + __le16 network_block_id; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_scan_ind; + struct { + __le16 vif; + __le16 scan_id; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_scan_done_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_listen_end_ind; + struct { + __le16 vif; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_connect_ind; struct { __le16 vif; - u8 peer_sta_address[ETH_ALEN]; __le16 peer_index; - __le16 tdls_event; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_connected_ind; + struct { + __le16 vif; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_reassociate_ind; + struct { + __le16 vif; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_roam_ind; + struct { + __le16 vif; + __le16 temporal_keys_required; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_roamed_ind; + struct { + __le16 vif; + u8 peer_sta_address[ETH_ALEN]; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_disconnect_ind; + struct { + __le16 vif; + u8 peer_sta_address[ETH_ALEN]; __le16 reason_code; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_tdls_peer_ind; + } __packed mlme_disconnected_ind; struct { __le16 vif; - __le16 entries; + __le16 procedure_type; + __le16 peer_index; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_procedure_started_ind; + struct { + __le16 vif; + u8 peer_sta_address[ETH_ALEN]; + __le16 key_type; + __le16 key_id; + __le16 key_sequence_number[8]; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_mic_failure_ind; + struct { + __le16 vif; + __le16 host_tag; + __le16 transmission_status; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_ap_loss_ind; + } __packed mlme_frame_transmission_ind; struct { __le16 vif; - __le16 number_of_results; - __le16 number_of_rssi_entries; + __le16 data_unit_descriptor; + __le16 channel_frequency; __le32 spare_1; __le32 spare_2; __le32 spare_3; u8 dr[0]; - } __packed mlme_significant_change_ind; + } __packed mlme_received_frame_ind; + struct { + __le16 vif; + u8 peer_sta_address[ETH_ALEN]; + __le16 peer_index; + __le16 tdls_event; + __le16 reason_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_tdls_peer_ind; struct { __le16 vif; u8 bssid[ETH_ALEN]; @@ -2212,7 +2659,7 @@ struct fapi_signal { struct { __le16 vif; __le16 publish_subscribe_id; - __le16 requestor_instance_id; + __le16 peer_id; __le32 spare_1; __le32 spare_2; __le32 spare_3; @@ -2221,7 +2668,7 @@ struct fapi_signal { struct { __le16 vif; __le16 publish_subscribe_id; - __le16 requestor_instance_id; + __le16 peer_id; __le32 spare_1; __le32 spare_2; __le32 spare_3; @@ -2236,6 +2683,90 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed mlme_channel_switched_ind; + struct { + __le16 vif; + __le16 rssi; + __le16 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_synchronised_ind; + struct { + __le16 vif; + __le16 abort_reason; + __le16 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_beacon_reporting_event_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_spare_3_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_spare_4_ind; + struct { + __le16 vif; + __le16 instance_id; + u8 peer_ndp_interface_address[ETH_ALEN]; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_ndp_setup_ind; + struct { + __le16 vif; + __le16 instance_id; + __le16 publish_subscribe_id; + u8 peer_ndp_interface_address[ETH_ALEN]; + __le16 security_required; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_ndp_requested_ind; + struct { + __le16 vif; + __le16 instance_id; + u8 peer_ndp_interface_address[ETH_ALEN]; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_ndp_setup_response_ind; + struct { + __le16 vif; + __le16 instance_id; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_ndp_terminated_ind; + struct { + __le16 vif; + __le16 rtt_id; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_nan_add_range_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed mlme_spare_5_ind; struct { __le16 vif; __le32 spare_1; @@ -2257,6 +2788,27 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed mlme_spare_signal_3_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_spare_1_req; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_spare_2_req; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_spare_3_req; struct { __le16 vif; __le32 spare_1; @@ -2278,6 +2830,30 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed debug_spare_signal_3_req; + struct { + __le16 vif; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_spare_1_cfm; + struct { + __le16 vif; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_spare_2_cfm; + struct { + __le16 vif; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_spare_3_cfm; struct { __le16 vif; __le16 result_code; @@ -2302,6 +2878,27 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed debug_spare_signal_3_cfm; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_spare_1_res; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_spare_2_res; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_spare_3_res; struct { __le16 vif; __le32 spare_1; @@ -2348,6 +2945,38 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed debug_fault_ind; + struct { + __le16 vif; + __le16 module_id; + __le16 module_sub_id; + __le32 timestamp; + __le16 sequence_number; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_words_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_spare_2_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_spare_3_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed debug_spare_4_ind; struct { __le16 vif; __le32 spare_1; @@ -2437,10 +3066,10 @@ struct fapi_signal { __le16 length; __le32 interval; __le16 flags; - __le16 channel_description_index; + __le16 aid; __le16 distance_to_band_edge_half_mhz; - __le16 band_oob_rule_selector; - __le16 pa_voltage; + __le16 regulatory_domain; + __le16 spare_0; __le32 spare_1; __le32 spare_2; __le32 spare_3; @@ -2476,8 +3105,8 @@ struct fapi_signal { __le16 channel_information; __le16 flags; u8 mac_addr[ETH_ALEN]; - __le32 reserved1; - __le32 reserved2; + u8 bssid[ETH_ALEN]; + __le16 aid; __le16 num_mpdus_per_ampdu; __le32 spare_1; __le32 spare_2; @@ -2648,6 +3277,27 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed test_bist_get_tx_gain_req; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed test_spare_1_req; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed test_spare_2_req; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed test_spare_3_req; struct { __le16 vif; __le32 spare_1; @@ -2741,10 +3391,14 @@ struct fapi_signal { __le16 result_code; __le32 freq_offset_cur; __le32 freq_offset_avg; - __le32 rssi_cur; - __le32 rssi_avg; - __le32 snr_cur; - __le32 snr_avg; + __le16 rssi_cur; + __le16 rssi_avg; + __le16 rssi_min; + __le16 rssi_max; + __le16 snr_cur; + __le16 snr_avg; + __le16 snr_min; + __le16 snr_max; __le32 interval; __le32 spare_1; __le32 spare_2; @@ -2857,6 +3511,30 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed test_bist_get_tx_gain_cfm; + struct { + __le16 vif; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed test_spare_1_cfm; + struct { + __le16 vif; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed test_spare_2_cfm; + struct { + __le16 vif; + __le16 result_code; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed test_spare_3_cfm; struct { __le16 vif; __le16 result_code; @@ -2881,6 +3559,27 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed test_spare_signal_3_cfm; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed test_spare_1_res; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed test_spare_2_res; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed test_spare_3_res; struct { __le16 vif; __le32 spare_1; @@ -2968,6 +3667,27 @@ struct fapi_signal { __le32 spare_3; u8 dr[0]; } __packed test_hip_tester_report_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed test_spare_1_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed test_spare_2_ind; + struct { + __le16 vif; + __le32 spare_1; + __le32 spare_2; + __le32 spare_3; + u8 dr[0]; + } __packed test_spare_3_ind; struct { __le16 vif; __le32 spare_1; @@ -2994,7 +3714,7 @@ struct fapi_signal { static inline struct sk_buff *fapi_alloc_f(size_t sig_size, size_t data_size, u16 id, u16 vif, const char *file, int line) { - struct sk_buff *skb = slsi_alloc_skb_headroom_f(sig_size + data_size, GFP_ATOMIC, file, line); + struct sk_buff *skb = slsi_alloc_skb_f(sig_size + data_size, GFP_ATOMIC, file, line); struct fapi_vif_signal_header *header; WARN_ON(sig_size < sizeof(struct fapi_signal_header)); @@ -3018,6 +3738,7 @@ static inline struct sk_buff *fapi_alloc_f(size_t sig_size, size_t data_size, u1 #define fapi_get_buff(mp_skb, mp_name) (((struct fapi_signal *)(mp_skb)->data)->mp_name) #define fapi_get_u16(mp_skb, mp_name) le16_to_cpu(((struct fapi_signal *)(mp_skb)->data)->mp_name) #define fapi_get_u32(mp_skb, mp_name) le32_to_cpu(((struct fapi_signal *)(mp_skb)->data)->mp_name) +/*todo*/ #define fapi_get_u64(mp_skb, mp_name) le64_to_cpu(((struct fapi_signal *)(mp_skb)->data)->mp_name) #define fapi_set_u16(mp_skb, mp_name, mp_value) (((struct fapi_signal *)(mp_skb)->data)->mp_name = cpu_to_le16(mp_value)) #define fapi_set_u32(mp_skb, mp_name, mp_value) (((struct fapi_signal *)(mp_skb)->data)->mp_name = cpu_to_le32(mp_value)) @@ -3116,7 +3837,10 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) { static const u16 fapi_ma_req_size_table[] = { fapi_sig_size(ma_unitdata_req), - fapi_sig_size(ma_control_req), + 0, + fapi_sig_size(ma_spare_1_req), + fapi_sig_size(ma_spare_2_req), + fapi_sig_size(ma_spare_3_req), fapi_sig_size(ma_spare_signal_1_req), fapi_sig_size(ma_spare_signal_2_req), fapi_sig_size(ma_spare_signal_3_req), @@ -3160,7 +3884,7 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) fapi_sig_size(mlme_monitor_rssi_req), fapi_sig_size(mlme_start_link_statistics_req), fapi_sig_size(mlme_stop_link_statistics_req), - fapi_sig_size(mlme_set_bssid_hotlist_req), + 0, fapi_sig_size(mlme_set_pno_list_req), fapi_sig_size(mlme_host_state_req), fapi_sig_size(mlme_add_range_req), @@ -3172,12 +3896,30 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) fapi_sig_size(mlme_nan_publish_req), fapi_sig_size(mlme_nan_subscribe_req), fapi_sig_size(mlme_nan_followup_req), + fapi_sig_size(mlme_unset_channel_req), + fapi_sig_size(mlme_set_country_req), + fapi_sig_size(mlme_forward_beacon_req), + fapi_sig_size(mlme_ndp_setup_req), + fapi_sig_size(mlme_ndp_setup_response_req), + fapi_sig_size(mlme_ndp_terminate_req), + fapi_sig_size(mlme_nan_add_range_req), + fapi_sig_size(mlme_nan_del_range_req), + fapi_sig_size(mlme_spare_4_req), + fapi_sig_size(mlme_spare_5_req), + fapi_sig_size(mlme_spare_6_req), + fapi_sig_size(mlme_install_apf_req), + fapi_sig_size(mlme_read_apf_req), + fapi_sig_size(mlme_set_nss_req), + fapi_sig_size(mlme_arp_detect_req), fapi_sig_size(mlme_spare_signal_1_req), fapi_sig_size(mlme_spare_signal_2_req), fapi_sig_size(mlme_spare_signal_3_req), }; static const u16 fapi_debug_req_size_table[] = { + fapi_sig_size(debug_spare_1_req), + fapi_sig_size(debug_spare_2_req), + fapi_sig_size(debug_spare_3_req), fapi_sig_size(debug_spare_signal_1_req), fapi_sig_size(debug_spare_signal_2_req), fapi_sig_size(debug_spare_signal_3_req), @@ -3216,6 +3958,9 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) fapi_sig_size(test_hip_tester_set_params_req), fapi_sig_size(test_hip_tester_report_req), fapi_sig_size(test_bist_get_tx_gain_req), + fapi_sig_size(test_spare_1_req), + fapi_sig_size(test_spare_2_req), + fapi_sig_size(test_spare_3_req), fapi_sig_size(test_spare_signal_1_req), fapi_sig_size(test_spare_signal_2_req), fapi_sig_size(test_spare_signal_3_req), @@ -3223,7 +3968,10 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) static const u16 fapi_ma_cfm_size_table[] = { fapi_sig_size(ma_unitdata_cfm), - fapi_sig_size(ma_control_cfm), + 0, + fapi_sig_size(ma_spare_1_cfm), + fapi_sig_size(ma_spare_2_cfm), + fapi_sig_size(ma_spare_3_cfm), fapi_sig_size(ma_spare_signal_1_cfm), fapi_sig_size(ma_spare_signal_2_cfm), fapi_sig_size(ma_spare_signal_3_cfm), @@ -3267,7 +4015,7 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) fapi_sig_size(mlme_monitor_rssi_cfm), fapi_sig_size(mlme_start_link_statistics_cfm), fapi_sig_size(mlme_stop_link_statistics_cfm), - fapi_sig_size(mlme_set_bssid_hotlist_cfm), + 0, fapi_sig_size(mlme_set_pno_list_cfm), fapi_sig_size(mlme_host_state_cfm), fapi_sig_size(mlme_add_range_cfm), @@ -3279,12 +4027,30 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) fapi_sig_size(mlme_nan_publish_cfm), fapi_sig_size(mlme_nan_subscribe_cfm), fapi_sig_size(mlme_nan_followup_cfm), + fapi_sig_size(mlme_unset_channel_cfm), + fapi_sig_size(mlme_set_country_cfm), + fapi_sig_size(mlme_forward_beacon_cfm), + fapi_sig_size(mlme_ndp_setup_cfm), + fapi_sig_size(mlme_ndp_setup_response_cfm), + fapi_sig_size(mlme_ndp_terminate_cfm), + fapi_sig_size(mlme_nan_add_range_cfm), + fapi_sig_size(mlme_nan_del_range_cfm), + fapi_sig_size(mlme_spare_4_cfm), + fapi_sig_size(mlme_spare_5_cfm), + fapi_sig_size(mlme_spare_6_cfm), + fapi_sig_size(mlme_install_apf_cfm), + fapi_sig_size(mlme_read_apf_cfm), + fapi_sig_size(mlme_set_nss_cfm), + fapi_sig_size(mlme_arp_detect_cfm), fapi_sig_size(mlme_spare_signal_1_cfm), fapi_sig_size(mlme_spare_signal_2_cfm), fapi_sig_size(mlme_spare_signal_3_cfm), }; static const u16 fapi_debug_cfm_size_table[] = { + fapi_sig_size(debug_spare_1_cfm), + fapi_sig_size(debug_spare_2_cfm), + fapi_sig_size(debug_spare_3_cfm), fapi_sig_size(debug_spare_signal_1_cfm), fapi_sig_size(debug_spare_signal_2_cfm), fapi_sig_size(debug_spare_signal_3_cfm), @@ -3314,6 +4080,9 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) fapi_sig_size(test_hip_tester_stop_cfm), fapi_sig_size(test_hip_tester_set_params_cfm), fapi_sig_size(test_bist_get_tx_gain_cfm), + fapi_sig_size(test_spare_1_cfm), + fapi_sig_size(test_spare_2_cfm), + fapi_sig_size(test_spare_3_cfm), fapi_sig_size(test_spare_signal_1_cfm), fapi_sig_size(test_spare_signal_2_cfm), fapi_sig_size(test_spare_signal_3_cfm), @@ -3322,6 +4091,9 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) static const u16 fapi_ma_ind_size_table[] = { fapi_sig_size(ma_unitdata_ind), fapi_sig_size(ma_blockack_ind), + fapi_sig_size(ma_spare_1_ind), + fapi_sig_size(ma_spare_2_ind), + fapi_sig_size(ma_spare_3_ind), fapi_sig_size(ma_spare_signal_1_ind), fapi_sig_size(ma_spare_signal_2_ind), fapi_sig_size(ma_spare_signal_3_ind), @@ -3344,8 +4116,8 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) fapi_sig_size(mlme_received_frame_ind), 0, fapi_sig_size(mlme_tdls_peer_ind), - fapi_sig_size(mlme_ap_loss_ind), - fapi_sig_size(mlme_significant_change_ind), + 0, + 0, fapi_sig_size(mlme_rssi_report_ind), fapi_sig_size(mlme_ac_priority_update_ind), fapi_sig_size(mlme_range_ind), @@ -3355,6 +4127,16 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) fapi_sig_size(mlme_nan_service_ind), fapi_sig_size(mlme_nan_followup_ind), fapi_sig_size(mlme_channel_switched_ind), + fapi_sig_size(mlme_synchronised_ind), + fapi_sig_size(mlme_beacon_reporting_event_ind), + fapi_sig_size(mlme_spare_3_ind), + fapi_sig_size(mlme_spare_4_ind), + fapi_sig_size(mlme_ndp_setup_ind), + fapi_sig_size(mlme_ndp_requested_ind), + fapi_sig_size(mlme_ndp_setup_response_ind), + fapi_sig_size(mlme_ndp_terminated_ind), + fapi_sig_size(mlme_nan_add_range_ind), + fapi_sig_size(mlme_spare_5_ind), fapi_sig_size(mlme_spare_signal_1_ind), fapi_sig_size(mlme_spare_signal_2_ind), fapi_sig_size(mlme_spare_signal_3_ind), @@ -3363,6 +4145,10 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) static const u16 fapi_debug_ind_size_table[] = { fapi_sig_size(debug_word12_ind), fapi_sig_size(debug_fault_ind), + fapi_sig_size(debug_words_ind), + fapi_sig_size(debug_spare_2_ind), + fapi_sig_size(debug_spare_3_ind), + fapi_sig_size(debug_spare_4_ind), fapi_sig_size(debug_spare_signal_1_ind), fapi_sig_size(debug_spare_signal_2_ind), fapi_sig_size(debug_spare_signal_3_ind), @@ -3374,6 +4160,9 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) fapi_sig_size(debug_pkt_sink_report_ind), fapi_sig_size(debug_pkt_gen_report_ind), fapi_sig_size(test_hip_tester_report_ind), + fapi_sig_size(test_spare_1_ind), + fapi_sig_size(test_spare_2_ind), + fapi_sig_size(test_spare_3_ind), fapi_sig_size(test_spare_signal_1_ind), fapi_sig_size(test_spare_signal_2_ind), fapi_sig_size(test_spare_signal_3_ind), @@ -3385,24 +4174,37 @@ static inline u16 fapi_get_expected_size(struct sk_buff *skb) fapi_sig_size(mlme_reassociate_res), fapi_sig_size(mlme_roamed_res), fapi_sig_size(mlme_tdls_peer_res), + fapi_sig_size(mlme_synchronised_res), + fapi_sig_size(mlme_spare_2_res), + fapi_sig_size(mlme_spare_3_res), + fapi_sig_size(mlme_spare_4_res), fapi_sig_size(mlme_spare_signal_1_res), fapi_sig_size(mlme_spare_signal_2_res), fapi_sig_size(mlme_spare_signal_3_res), }; static const u16 fapi_ma_res_size_table[] = { + fapi_sig_size(ma_spare_1_res), + fapi_sig_size(ma_spare_2_res), + fapi_sig_size(ma_spare_3_res), fapi_sig_size(ma_spare_signal_1_res), fapi_sig_size(ma_spare_signal_2_res), fapi_sig_size(ma_spare_signal_3_res), }; static const u16 fapi_debug_res_size_table[] = { + fapi_sig_size(debug_spare_1_res), + fapi_sig_size(debug_spare_2_res), + fapi_sig_size(debug_spare_3_res), fapi_sig_size(debug_spare_signal_1_res), fapi_sig_size(debug_spare_signal_2_res), fapi_sig_size(debug_spare_signal_3_res), }; static const u16 fapi_test_res_size_table[] = { + fapi_sig_size(test_spare_1_res), + fapi_sig_size(test_spare_2_res), + fapi_sig_size(test_spare_3_res), fapi_sig_size(test_spare_signal_1_res), fapi_sig_size(test_spare_signal_2_res), fapi_sig_size(test_spare_signal_3_res), diff --git a/drivers/net/wireless/scsc/mgt.c b/drivers/net/wireless/scsc/mgt.c index cfb5296b5646..b4686df6e802 100755 --- a/drivers/net/wireless/scsc/mgt.c +++ b/drivers/net/wireless/scsc/mgt.c @@ -3672,7 +3672,7 @@ static void slsi_p2p_unset_channel_expiry_work(struct work_struct *work) /* Send Unset Channel */ if (ndev_vif->driver_channel != 0) { - slsi_mlme_spare_signal_1(sdev, dev); + slsi_mlme_unset_channel_req(sdev, dev); ndev_vif->driver_channel = 0; } } diff --git a/drivers/net/wireless/scsc/mlme.c b/drivers/net/wireless/scsc/mlme.c index 4ff895dbf4a8..b82b5889dd9b 100755 --- a/drivers/net/wireless/scsc/mlme.c +++ b/drivers/net/wireless/scsc/mlme.c @@ -22,11 +22,6 @@ #define SLSI_SCAN_CHANNEL_DESCRIPTOR_SIZE 3 #define SLSI_CHANN_INFO_HT_SCB 0x0100 -#ifdef CONFIG_SCSC_WLAN_GSCAN_ENABLE -#define SLSI_FW_MAX_BSSID_PER_TRACKING_IE (20) -#define SLSI_FW_BSSID_DESCRIPTOR_BSS_SIZE (10) -#endif - #define SLSI_NOA_CONFIG_REQUEST_ID (1) #define SLSI_MLME_ARP_DROP_FREE_SLOTS_COUNT 16 @@ -931,28 +926,28 @@ int slsi_mlme_set_channel(struct slsi_dev *sdev, struct net_device *dev, struct return r; } -int slsi_mlme_spare_signal_1(struct slsi_dev *sdev, struct net_device *dev) +int slsi_mlme_unset_channel_req(struct slsi_dev *sdev, struct net_device *dev) { struct netdev_vif *ndev_vif = netdev_priv(dev); struct sk_buff *req; struct sk_buff *cfm; int r = 0; - SLSI_NET_DBG3(dev, SLSI_MLME, "slsi_mlme_spare_signal_1\n"); + SLSI_NET_DBG3(dev, SLSI_MLME, "slsi_mlme_unset_channel_req\n"); - req = fapi_alloc(mlme_spare_signal_1_req, MLME_SPARE_SIGNAL_1_REQ, ndev_vif->ifnum, 0); + req = fapi_alloc(mlme_unset_channel_req, MLME_UNSET_CHANNEL_REQ, ndev_vif->ifnum, 0); if (!req) return -ENOMEM; - cfm = slsi_mlme_req_cfm(sdev, dev, req, MLME_SPARE_SIGNAL_1_CFM); + cfm = slsi_mlme_req_cfm(sdev, dev, req, MLME_UNSET_CHANNEL_CFM); if (!cfm) return -EIO; - if (fapi_get_u16(cfm, u.mlme_set_channel_cfm.result_code) != FAPI_RESULTCODE_SUCCESS) { - SLSI_NET_ERR(dev, "mlme_spare_channel_cfm(result:0x%04x) ERROR\n", - fapi_get_u16(cfm, u.mlme_set_channel_cfm.result_code)); + if (fapi_get_u16(cfm, u.mlme_unset_channel_cfm.result_code) != FAPI_RESULTCODE_SUCCESS) { + SLSI_NET_ERR(dev, "mlme_unset_channel_cfm(result:0x%04x) ERROR\n", + fapi_get_u16(cfm, u.mlme_unset_channel_cfm.result_code)); r = -EINVAL; } @@ -1013,81 +1008,6 @@ static bool slsi_scan_cfm_validate(struct slsi_dev *sdev, struct net_device *dev } #ifdef CONFIG_SCSC_WLAN_GSCAN_ENABLE -int slsi_mlme_set_bssid_hotlist_req(struct slsi_dev *sdev, struct net_device *dev, struct slsi_nl_hotlist_param *nl_hotlist_param) -{ - struct sk_buff *req; - struct sk_buff *cfm; - int i; - int num_desc; - int alloc_data_size; - int remaining_ap; - u8 bssid_desc[] = { 0xdd, /* Element ID */ - 0x00, /* Length */ - 0x00, 0x16, 0x32, /* Samsung OUI */ - 0x01, /* OUI Type: Scan Parameters */ - 0x05, /* OUI Subtype: BSSID Descriptor */ - 0x00, /* AP Lost Threshold */ - }; - - if (nl_hotlist_param) { - /* One BSSID descriptor can contain SLSI_GSCAN_MAX_BSSID_PER_IE AP information */ - num_desc = (nl_hotlist_param->num_bssid / SLSI_GSCAN_MAX_BSSID_PER_IE); - if (nl_hotlist_param->num_bssid % SLSI_GSCAN_MAX_BSSID_PER_IE) - num_desc++; - - alloc_data_size = (num_desc * sizeof(bssid_desc)) + (nl_hotlist_param->num_bssid * SLSI_FW_BSSID_DESCRIPTOR_BSS_SIZE); - req = fapi_alloc(mlme_set_bssid_hotlist_req, MLME_SET_BSSID_HOTLIST_REQ, 0, alloc_data_size); - if (!req) { - SLSI_NET_ERR(dev, "Failed to allocate memory\n"); - return -ENOMEM; - } - - remaining_ap = nl_hotlist_param->num_bssid; - bssid_desc[7] = nl_hotlist_param->lost_ap_sample_size; - for (i = 0; i < nl_hotlist_param->num_bssid; i++) { - if ((i % SLSI_GSCAN_MAX_BSSID_PER_IE) == 0) { - if (remaining_ap > SLSI_GSCAN_MAX_BSSID_PER_IE) { - bssid_desc[1] = sizeof(bssid_desc) - 2 + (SLSI_GSCAN_MAX_BSSID_PER_IE * SLSI_FW_BSSID_DESCRIPTOR_BSS_SIZE); /* Length */ - remaining_ap -= SLSI_GSCAN_MAX_BSSID_PER_IE; - } else { - bssid_desc[1] = sizeof(bssid_desc) - 2 + (remaining_ap * SLSI_FW_BSSID_DESCRIPTOR_BSS_SIZE); /* Length */ - } - - fapi_append_data(req, bssid_desc, sizeof(bssid_desc)); - } - - fapi_append_data(req, (u8 *)&nl_hotlist_param->ap[i].bssid[0], ETH_ALEN); - - nl_hotlist_param->ap[i].low = cpu_to_le16(nl_hotlist_param->ap[i].low); - fapi_append_data(req, (u8 *)&nl_hotlist_param->ap[i].low, 2); - - nl_hotlist_param->ap[i].high = cpu_to_le16(nl_hotlist_param->ap[i].high); - fapi_append_data(req, (u8 *)&nl_hotlist_param->ap[i].high, 2); - } - } else { - req = fapi_alloc(mlme_set_bssid_hotlist_req, MLME_SET_BSSID_HOTLIST_REQ, 0, 0); - if (!req) { - SLSI_NET_ERR(dev, "Failed to allocate memory\n"); - return -ENOMEM; - } - } - - cfm = slsi_mlme_req_cfm(sdev, NULL, req, MLME_SET_BSSID_HOTLIST_CFM); - if (!cfm) - return -EIO; - - SLSI_DBG2(sdev, SLSI_GSCAN, "mlme_set_bssid_hotlist_cfm(datalen:%u)\n", fapi_get_datalen(cfm)); - if (fapi_get_u16(cfm, u.mlme_set_bssid_hotlist_cfm.result_code) != FAPI_RESULTCODE_SUCCESS) { - SLSI_NET_ERR(dev, "mlme_set_bssid_hotlist_cfm(result:0x%04x) ERROR\n", - fapi_get_u16(cfm, u.mlme_set_bssid_hotlist_cfm.result_code)); - slsi_kfree_skb(cfm); - return -EINVAL; - } - - slsi_kfree_skb(cfm); - return 0; -} - int slsi_mlme_append_gscan_channel_list(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *req, @@ -2919,21 +2839,20 @@ int slsi_mlme_synchronised_response(struct slsi_dev *sdev, struct net_device *de struct sk_buff *req; struct sk_buff *cfm; if (ndev_vif->activated) { - SLSI_NET_DBG3(dev, SLSI_MLME, "MLME_SPARE_SIGNAL_1_RES\n"); + SLSI_NET_DBG3(dev, SLSI_MLME, "MLME_SYNCHRONISED_RES\n"); - req = fapi_alloc(mlme_spare_signal_1_res, MLME_SPARE_SIGNAL_1_RES, ndev_vif->ifnum, 0); + req = fapi_alloc(mlme_synchronised_res, MLME_SYNCHRONISED_RES, ndev_vif->ifnum, 0); if (!req) return -ENOMEM; - fapi_set_low16_u32(req, u.mlme_spare_signal_1_res.spare_1, params->status); - fapi_set_high16_u32(req, u.mlme_spare_signal_1_res.spare_1, *(u16 *)(¶ms->bssid[0])); - fapi_set_u32(req, u.mlme_spare_signal_1_res.spare_2, *(u32 *)(¶ms->bssid[2])); + fapi_set_u16(req, u.mlme_synchronised_res.result_code, params->status); + fapi_set_memcpy(req, u.mlme_synchronised_res.bssid, params->bssid); SLSI_NET_DBG2(dev, SLSI_MLME, "mlme_synchronised_response(vif:%d) status:%d\n", ndev_vif->ifnum, params->status); cfm = slsi_mlme_req_no_cfm(sdev, dev, req); if (cfm) - SLSI_NET_ERR(dev, "Received cfm for MLME_SPARE_SIGNAL_1_RES\n"); + SLSI_NET_ERR(dev, "Received cfm for MLME_SYNCHRONISED_RES\n"); } else SLSI_NET_DBG1(dev, SLSI_MLME, "vif is not active"); @@ -3729,153 +3648,14 @@ void slsi_mlme_reassociate_resp(struct slsi_dev *sdev, struct net_device *dev) WARN_ON(cfm); } -#ifdef CONFIG_SCSC_WLAN_GSCAN_ENABLE -int slsi_mlme_gscan_append_tracking_channels(struct slsi_dev *sdev, - struct net_device *dev, - struct sk_buff *skb, - struct slsi_gscan *gscan) -{ - u32 n_channels = 0; - int len = 0; - - if (gscan->nl_bucket.band == WIFI_BAND_UNSPECIFIED) - n_channels = gscan->nl_bucket.num_channels; - else - n_channels = 1; - - SLSI_DBG3(sdev, SLSI_GSCAN, "num chan: %d", n_channels); - if (skb) { - int r = slsi_mlme_append_gscan_channel_list(sdev, dev, skb, &gscan->nl_bucket); - - if (r) { - SLSI_ERR(sdev, "Error appending channel list [%d]\n", r); - return r; - } - } else { - len = SLSI_SCAN_PRIVATE_IE_CHANNEL_LIST_HEADER_LEN + (n_channels * SLSI_SCAN_CHANNEL_DESCRIPTOR_SIZE); - } - return len; -} - -int slsi_mlme_significant_change_set(struct slsi_dev *sdev, struct net_device *dev, - struct slsi_nl_significant_change_params *significant_param_ptr) -{ - struct sk_buff *req; - struct sk_buff *rx; - int r = 0; - size_t alloc_data_size; - u32 i, j; - u32 num_bssid_descriptor_ies; - struct slsi_gscan *gscan = sdev->gscan; - - u8 scan_timing_ie[] = { - 0xdd, /* Element ID: Vendor Specific */ - 0x11, /* Length */ - 0x00, 0x16, 0x32, /* OUI: Samsung Electronics Co. */ - 0x01, /* OUI Type: Scan parameters */ - 0x01, /* OUI Subtype: Scan timing */ - 0x00, 0x00, 0x00, 0x00, /* Min_Period: filled later in the function */ - 0x00, 0x00, 0x00, 0x00, /* Max_Period: filled later in the function */ - 0x00, /* Exponent */ - 0x00, /* Step count */ - 0x00, 0x00 /* Skip first period: false */ - }; - - u8 change_tracking_ie[] = { /* wifi change tracking ie*/ - 0xdd, 0x07, /* VENDOR_SPECIFIC, LEN */ - 0x00, 0x16, 0x32, /* OUI */ - 0x01, 0x06, /* OUI Type, OUI sub-type */ - 0x00, /* The number of samples needed for averaging RSSI */ - 0x00 /* Min num of APs breaching low_RSSI_Threshold that are needed before informing the host */ - }; - - u8 bssid_descriptor_ie[] = { /* Bssid descriptor list ie*/ - 0xdd, 6 + (SLSI_FW_MAX_BSSID_PER_TRACKING_IE * SLSI_FW_BSSID_DESCRIPTOR_BSS_SIZE), /* VENDOR_SPECIFIC, LEN(update later) */ - 0x00, 0x16, 0x32, /* OUI */ - 0x01, 0x05, /* OUI Type, OUI sub-type */ - 0x00, /* ap lost threshold */ - }; - - if (slsi_is_test_mode_enabled()) { - SLSI_NET_INFO(dev, "Skip sending signal, WlanLite FW does not support MLME_ADD_SCAN.request\n"); - return -EOPNOTSUPP; - } - - if (WARN_ON(!(dev->dev_addr))) - return -EINVAL; - - change_tracking_ie[7] = (u8)significant_param_ptr->rssi_sample_size; - change_tracking_ie[8] = (u8)significant_param_ptr->min_breaching; - num_bssid_descriptor_ies = significant_param_ptr->num_bssid / SLSI_FW_MAX_BSSID_PER_TRACKING_IE; - if (significant_param_ptr->num_bssid % SLSI_FW_MAX_BSSID_PER_TRACKING_IE) - num_bssid_descriptor_ies++; - - alloc_data_size = sizeof(scan_timing_ie) + sizeof(change_tracking_ie) - + sizeof(bssid_descriptor_ie) * num_bssid_descriptor_ies - + SLSI_FW_BSSID_DESCRIPTOR_BSS_SIZE * significant_param_ptr->num_bssid - + slsi_mlme_gscan_append_tracking_channels(sdev, dev, NULL, gscan); - - req = fapi_alloc(mlme_add_scan_req, MLME_ADD_SCAN_REQ, 0, alloc_data_size); - if (!req) - return -ENOMEM; - - fapi_set_u16(req, u.mlme_add_scan_req.scan_id, gscan->bucket[0]->scan_id); - fapi_set_u16(req, u.mlme_add_scan_req.scan_type, FAPI_SCANTYPE_GSCAN); - fapi_set_memcpy(req, u.mlme_add_scan_req.device_address, dev->dev_addr); - fapi_set_u16(req, u.mlme_add_scan_req.report_mode_bitmap, FAPI_REPORTMODE_REAL_TIME); - - r = slsi_mlme_gscan_append_tracking_channels(sdev, dev, req, gscan); - if (r != 0) { - slsi_kfree_skb(req); - return r; - } - - SLSI_U32_TO_BUFF_LE((gscan->nl_bucket.period * 1000), &scan_timing_ie[7]); - fapi_append_data(req, scan_timing_ie, sizeof(scan_timing_ie)); - fapi_append_data(req, change_tracking_ie, sizeof(change_tracking_ie)); - - bssid_descriptor_ie[7] = significant_param_ptr->lost_ap_sample_size; - for (i = 0; i < num_bssid_descriptor_ies; i++) { - u8 bss_num = significant_param_ptr->num_bssid - (i * SLSI_FW_MAX_BSSID_PER_TRACKING_IE); - - if (bss_num < SLSI_FW_MAX_BSSID_PER_TRACKING_IE) - bssid_descriptor_ie[1] = 6 + (SLSI_FW_BSSID_DESCRIPTOR_BSS_SIZE * bss_num); - else - bss_num = SLSI_FW_MAX_BSSID_PER_TRACKING_IE; - - fapi_append_data(req, bssid_descriptor_ie, sizeof(bssid_descriptor_ie)); - for (j = i * SLSI_FW_MAX_BSSID_PER_TRACKING_IE; j < (i * SLSI_FW_MAX_BSSID_PER_TRACKING_IE + bss_num); j++) { - fapi_append_data(req, significant_param_ptr->ap[j].bssid, ETH_ALEN); - fapi_append_data(req, (u8 *)&significant_param_ptr->ap[j].low, 2); - fapi_append_data(req, (u8 *)&significant_param_ptr->ap[j].high, 2); - } - } - - /* Use the Global sig_wait not the Interface specific for Scan Req */ - rx = slsi_mlme_req_cfm(sdev, NULL, req, MLME_ADD_SCAN_CFM); - if (!rx) { - gscan->bucket[0]->for_change_tracking = false; - return -EIO; - } else if (fapi_get_u16(rx, u.mlme_add_scan_cfm.result_code) != FAPI_RESULTCODE_SUCCESS) { - gscan->bucket[0]->for_change_tracking = false; - SLSI_NET_ERR(dev, "mlme_add_scan_cfm(ERROR:0x%04x)", fapi_get_u16(rx, u.mlme_add_scan_cfm.result_code)); - r = -EINVAL; - } else { - gscan->bucket[0]->for_change_tracking = true; - } - slsi_kfree_skb(rx); - - return r; -} - int slsi_mlme_add_range_req(struct slsi_dev *sdev, u8 count, - struct slsi_rtt_config *nl_rtt_params, u16 rtt_id, u16 vif_idx) + struct slsi_rtt_config *nl_rtt_params, u16 rtt_id, u16 vif_idx, u8 *source_addr) { struct sk_buff *req; struct sk_buff *rx; int r = 0, i; size_t alloc_data_size = 0; - u8 fapi_ie_generic[] = { 0xdd, 0x24, 0x00, 0x16, 0x32, 0x0a, 0x01 }; + u8 fapi_ie_generic[] = { 0xdd, 0x1c, 0x00, 0x16, 0x32, 0x0a, 0x01 }; /* calculate data size */ alloc_data_size += count * (fapi_ie_generic[1] + 2); @@ -3884,17 +3664,17 @@ int slsi_mlme_add_range_req(struct slsi_dev *sdev, u8 count, SLSI_ERR(sdev, "failed to alloc %zd\n", alloc_data_size); return -ENOMEM; } - SLSI_DBG2(sdev, SLSI_MLME, "count-->%d allocated data size: %d\n", count, alloc_data_size); + SLSI_DBG2(sdev, SLSI_MLME, "count:%d allocated data size: %d, source_addr:%pM\n", + count, alloc_data_size, source_addr); /*fill the data */ fapi_set_u16(req, u.mlme_add_range_req.vif, vif_idx); fapi_set_u16(req, u.mlme_add_range_req.rtt_id, rtt_id); + fapi_set_memcpy(req, u.mlme_add_range_req.device_address, source_addr); for (i = 0; i < count; i++) { fapi_append_data(req, fapi_ie_generic, sizeof(fapi_ie_generic)); - fapi_append_data(req, nl_rtt_params[i].source_addr, ETH_ALEN); fapi_append_data(req, nl_rtt_params[i].peer_addr, ETH_ALEN); fapi_append_data(req, (u8 *)&nl_rtt_params[i].type, 2); fapi_append_data(req, (u8 *)&nl_rtt_params[i].channel_freq, 2); - fapi_append_data(req, (u8 *)&nl_rtt_params[i].channel_info, 2); fapi_append_data(req, (u8 *)&nl_rtt_params[i].burst_period, 1); fapi_append_data(req, (u8 *)&nl_rtt_params[i].num_burst, 1); fapi_append_data(req, (u8 *)&nl_rtt_params[i].num_frames_per_burst, 1); @@ -3974,6 +3754,7 @@ int slsi_mlme_del_range_req(struct slsi_dev *sdev, struct net_device *dev, u16 c return r; } +#ifdef CONFIG_SCSC_WLAN_GSCAN_ENABLE #define SLSI_FAPI_EPNO_NETWORK_MIN_SIZE (3) int slsi_mlme_set_pno_list(struct slsi_dev *sdev, int count, struct slsi_epno_param *epno_param, struct slsi_epno_hs2_param *epno_hs2_param) diff --git a/drivers/net/wireless/scsc/mlme.h b/drivers/net/wireless/scsc/mlme.h index fd2ed107168f..ea79a4309027 100755 --- a/drivers/net/wireless/scsc/mlme.h +++ b/drivers/net/wireless/scsc/mlme.h @@ -153,7 +153,7 @@ void slsi_mlme_del_vif(struct slsi_dev *sdev, struct net_device *dev); int slsi_mlme_set_channel(struct slsi_dev *sdev, struct net_device *dev, struct ieee80211_channel *chan, u16 duration, u16 interval, u16 count); void slsi_ap_obss_scan_done_ind(struct net_device *dev, struct netdev_vif *ndev_vif); -int slsi_mlme_spare_signal_1(struct slsi_dev *sdev, struct net_device *dev); +int slsi_mlme_unset_channel_req(struct slsi_dev *sdev, struct net_device *dev); u16 slsi_compute_chann_info(struct slsi_dev *sdev, u16 width, u16 center_freq0, u16 channel_freq); /** @@ -238,7 +238,6 @@ int slsi_mlme_set_traffic_parameters(struct slsi_dev *sdev, struct net_device *d int slsi_mlme_del_traffic_parameters(struct slsi_dev *sdev, struct net_device *dev, u16 user_priority); #ifdef CONFIG_SCSC_WLAN_GSCAN_ENABLE -int slsi_mlme_significant_change_set(struct slsi_dev *sdev, struct net_device *dev, struct slsi_nl_significant_change_params *significant_param_ptr); int slsi_mlme_set_pno_list(struct slsi_dev *sdev, int count, struct slsi_epno_param *epno_param, struct slsi_epno_hs2_param *epno_hs2_param); int slsi_mlme_start_link_stats_req(struct slsi_dev *sdev, u16 mpdu_size_threshold, bool aggressive_statis_enabled); diff --git a/drivers/net/wireless/scsc/mlme_nan.c b/drivers/net/wireless/scsc/mlme_nan.c index 579cec35dada..fbe13d1f1ff7 100755 --- a/drivers/net/wireless/scsc/mlme_nan.c +++ b/drivers/net/wireless/scsc/mlme_nan.c @@ -163,13 +163,14 @@ int slsi_mlme_nan_enable(struct slsi_dev *sdev, struct net_device *dev, struct s return -ENOMEM; } - if (hal_req->config_cluster_attribute_val) - nan_oper_ctrl |= FAPI_NANOPERATIONCONTROL_CLUSTER_SDF; + /* if (hal_req->config_cluster_attribute_val) + * nan_oper_ctrl |= FAPI_NANOPERATIONCONTROL_CLUSTER_SDF; + */ nan_oper_ctrl |= FAPI_NANOPERATIONCONTROL_MAC_ADDRESS_EVENT | FAPI_NANOPERATIONCONTROL_START_CLUSTER_EVENT | FAPI_NANOPERATIONCONTROL_JOINED_CLUSTER_EVENT; - fapi_set_u16(req, u.mlme_nan_start_req.cluster_low, hal_req->cluster_low); - fapi_set_u16(req, u.mlme_nan_start_req.cluster_high, hal_req->cluster_high); + //fapi_set_u16(req, u.mlme_nan_start_req.cluster_low, hal_req->cluster_low); + //fapi_set_u16(req, u.mlme_nan_start_req.cluster_high, hal_req->cluster_high); fapi_set_u16(req, u.mlme_nan_start_req.nan_operation_control_flags, nan_oper_ctrl); slsi_mlme_nan_enable_fapi_data(req, hal_req); @@ -480,11 +481,13 @@ int slsi_mlme_nan_tx_followup(struct slsi_dev *sdev, struct net_device *dev, /* Set/Enable corresponding bits to disable responses after followUp. * BIT0 - Disable followUp response from FW. */ - if (hal_req->recv_indication_cfg & BIT(0)) - nan_sdf_flags |= FAPI_NANSDFCONTROL_DISABLE_RESPONSES_AFTER_FOLLOWUP; + /* if (hal_req->recv_indication_cfg & BIT(0)) + * nan_sdf_flags |= FAPI_NANSDFCONTROL_DISABLE_RESPONSES_AFTER_FOLLOWUP; + */ fapi_set_u16(req, u.mlme_nan_followup_req.publish_subscribe_id, hal_req->publish_subscribe_id); - fapi_set_u16(req, u.mlme_nan_followup_req.requestor_instance_id, hal_req->requestor_instance_id); + fapi_set_u16(req, u.mlme_nan_followup_req.peer_id, hal_req->requestor_instance_id); + /*fapi_set_u16(req, u.mlme_nan_followup_req.requestor_instance_id, hal_req->requestor_instance_id);*/ fapi_set_u16(req, u.mlme_nan_subscribe_req.nan_sdf_flags, nan_sdf_flags); slsi_mlme_nan_followup_fapi_data(req, hal_req); @@ -589,8 +592,9 @@ int slsi_mlme_nan_set_config(struct slsi_dev *sdev, struct net_device *dev, stru return -ENOMEM; } - if (hal_req->config_cluster_attribute_val) - nan_oper_ctrl |= FAPI_NANOPERATIONCONTROL_CLUSTER_SDF; + /* if (hal_req->config_cluster_attribute_val) + * nan_oper_ctrl |= FAPI_NANOPERATIONCONTROL_CLUSTER_SDF; + */ nan_oper_ctrl |= FAPI_NANOPERATIONCONTROL_MAC_ADDRESS_EVENT | FAPI_NANOPERATIONCONTROL_START_CLUSTER_EVENT | FAPI_NANOPERATIONCONTROL_JOINED_CLUSTER_EVENT; fapi_set_u16(req, u.mlme_nan_config_req.nan_operation_control_flags, nan_oper_ctrl); diff --git a/drivers/net/wireless/scsc/nl80211_vendor.c b/drivers/net/wireless/scsc/nl80211_vendor.c index e22ec11c274d..cffff20108a8 100755 --- a/drivers/net/wireless/scsc/nl80211_vendor.c +++ b/drivers/net/wireless/scsc/nl80211_vendor.c @@ -61,18 +61,12 @@ static char *mem_dump_buffer; char *slsi_print_event_name(int event_id) { switch (event_id) { - case SLSI_NL80211_SIGNIFICANT_CHANGE_EVENT: - return "SIGNIFICANT_CHANGE_EVENT"; - case SLSI_NL80211_HOTLIST_AP_FOUND_EVENT: - return "HOTLIST_AP_FOUND_EVENT"; case SLSI_NL80211_SCAN_RESULTS_AVAILABLE_EVENT: return "SCAN_RESULTS_AVAILABLE_EVENT"; case SLSI_NL80211_FULL_SCAN_RESULT_EVENT: return "FULL_SCAN_RESULT_EVENT"; case SLSI_NL80211_SCAN_EVENT: return "BUCKET_SCAN_DONE_EVENT"; - case SLSI_NL80211_HOTLIST_AP_LOST_EVENT: - return "HOTLIST_AP_LOST_EVENT"; #ifdef CONFIG_SCSC_WLAN_KEY_MGMT_OFFLOAD case SLSI_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH: return "KEY_MGMT_ROAM_AUTH"; @@ -201,21 +195,6 @@ static void slsi_gscan_add_dump_params(struct slsi_nl_gscan_param *nl_gscan_para } } -static void slsi_gscan_set_hotlist_dump_params(struct slsi_nl_hotlist_param *nl_hotlist_param) -{ - int i; - - SLSI_DBG2_NODEV(SLSI_GSCAN, "Parameters for SUBCMD_SET_BSSID_HOTLIST sub-command:\n"); - SLSI_DBG2_NODEV(SLSI_GSCAN, "lost_ap_sample_size: %d, num_bssid: %d\n", - nl_hotlist_param->lost_ap_sample_size, nl_hotlist_param->num_bssid); - - for (i = 0; i < nl_hotlist_param->num_bssid; i++) { - SLSI_DBG2_NODEV(SLSI_GSCAN, "AP[%d]\n", i); - SLSI_DBG2_NODEV(SLSI_GSCAN, "\tBSSID:%pM rssi_low:%d rssi_high:%d\n", - nl_hotlist_param->ap[i].bssid, nl_hotlist_param->ap[i].low, nl_hotlist_param->ap[i].high); - } -} - void slsi_gscan_scan_res_dump(struct slsi_gscan_result *scan_data) { struct slsi_nl_scan_result_param *nl_scan_res = &scan_data->nl_scan_res; @@ -437,145 +416,6 @@ struct slsi_gscan_result *slsi_prepare_scan_result(struct sk_buff *skb, u16 anqp return scan_res; } -void slsi_hotlist_ap_lost_indication(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *skb) -{ - struct slsi_nl_scan_result_param *nl_scan_res; - struct slsi_hotlist_result *hotlist, *temp; - struct netdev_vif *ndev_vif = netdev_priv(dev); - u8 *mac_addr; - u16 num_entries; - int mem_reqd; - bool found = false; - int offset = 0; - int i; - - if (!ndev_vif) { - SLSI_WARN_NODEV("ndev_vif is NULL\n"); - slsi_kfree_skb(skb); - return; - } - - SLSI_MUTEX_LOCK(ndev_vif->scan_mutex); - - num_entries = fapi_get_s16(skb, u.mlme_ap_loss_ind.entries); - mac_addr = fapi_get_data(skb); - - SLSI_NET_DBG1(dev, SLSI_GSCAN, "Hotlist AP Lost Indication: num_entries %d\n", num_entries); - - mem_reqd = num_entries * sizeof(struct slsi_nl_scan_result_param); - nl_scan_res = kmalloc(mem_reqd, GFP_KERNEL); - if (nl_scan_res == NULL) { - SLSI_NET_ERR(dev, "Failed to allocate memory for hotlist lost\n"); - goto out; - } - - for (i = 0; i < num_entries; i++) { - SLSI_NET_DBG3(dev, SLSI_GSCAN, - "Remove the GSCAN results for the lost AP: %pM\n", &mac_addr[ETH_ALEN * i]); - slsi_gscan_hash_remove(sdev, &mac_addr[ETH_ALEN * i]); - - list_for_each_entry_safe(hotlist, temp, &sdev->hotlist_results, list) { - if (memcmp(hotlist->nl_scan_res.bssid, &mac_addr[ETH_ALEN * i], ETH_ALEN) == 0) { - SLSI_NET_DBG2(dev, SLSI_GSCAN, "Lost AP [%d]: %pM\n", i, &mac_addr[ETH_ALEN * i]); - list_del(&hotlist->list); - - hotlist->nl_scan_res.ie_length = 0; /* Not sending the IE for hotlist lost event */ - memcpy(&nl_scan_res[offset], &hotlist->nl_scan_res, sizeof(struct slsi_nl_scan_result_param)); - offset++; - - kfree(hotlist); - found = true; - break; - } - } - - if (!found) - SLSI_NET_ERR(dev, "Hostlist record is not available in scan result\n"); - - found = false; - } - - slsi_vendor_event(sdev, SLSI_NL80211_HOTLIST_AP_LOST_EVENT, - nl_scan_res, (offset * sizeof(struct slsi_nl_scan_result_param))); - - kfree(nl_scan_res); -out: - slsi_kfree_skb(skb); - SLSI_MUTEX_UNLOCK(ndev_vif->scan_mutex); -} - -void slsi_hotlist_ap_found_indication(struct slsi_dev *sdev, struct net_device *dev, struct slsi_gscan_result *scan_res) -{ - struct slsi_hotlist_result *hotlist, *temp; - int num_hotlist_results = 0; - struct netdev_vif *ndev_vif = netdev_priv(dev); - int mem_reqd; - u8 *event_buffer; - int offset; - - if (!ndev_vif) { - SLSI_WARN_NODEV("ndev_vif is NULL\n"); - return; - } - - if (!SLSI_MUTEX_IS_LOCKED(ndev_vif->scan_mutex)) - SLSI_WARN_NODEV("ndev_vif->scan_mutex is not locked\n"); - - SLSI_NET_DBG1(dev, SLSI_GSCAN, "Hotlist AP Found Indication: %pM\n", scan_res->nl_scan_res.bssid); - - /* Check if the hotlist result is already available */ - list_for_each_entry_safe(hotlist, temp, &sdev->hotlist_results, list) { - if (memcmp(hotlist->nl_scan_res.bssid, scan_res->nl_scan_res.bssid, ETH_ALEN) == 0) { - SLSI_DBG3(sdev, SLSI_GSCAN, "Hotlist result already available for: %pM\n", scan_res->nl_scan_res.bssid); - /* Delete the old result - store the new result */ - list_del(&hotlist->list); - kfree(hotlist); - break; - } - } - - /* Allocating memory for storing the hostlist result */ - mem_reqd = scan_res->scan_res_len + (sizeof(struct slsi_hotlist_result) - sizeof(struct slsi_nl_scan_result_param)); - SLSI_DBG3(sdev, SLSI_GSCAN, "hotlist result alloc size: %d\n", mem_reqd); - hotlist = kmalloc(mem_reqd, GFP_KERNEL); - if (hotlist == NULL) { - SLSI_ERR(sdev, "Failed to allocate memory for hotlist\n"); - return; - } - - hotlist->scan_res_len = scan_res->scan_res_len; - memcpy(&hotlist->nl_scan_res, &scan_res->nl_scan_res, scan_res->scan_res_len); - - INIT_LIST_HEAD(&hotlist->list); - list_add(&hotlist->list, &sdev->hotlist_results); - - /* Calculate the number of hostlist results and mem required */ - mem_reqd = 0; - offset = 0; - list_for_each_entry_safe(hotlist, temp, &sdev->hotlist_results, list) { - mem_reqd += sizeof(struct slsi_nl_scan_result_param); /* If IE required use: hotlist->scan_res_len */ - num_hotlist_results++; - } - SLSI_DBG3(sdev, SLSI_GSCAN, "num_hotlist_results = %d, mem_reqd = %d\n", num_hotlist_results, mem_reqd); - - /* Allocate event buffer */ - event_buffer = kmalloc(mem_reqd, GFP_KERNEL); - if (event_buffer == NULL) { - SLSI_ERR_NODEV("Failed to allocate memory for event_buffer\n"); - return; - } - - /* Prepare the event buffer */ - list_for_each_entry_safe(hotlist, temp, &sdev->hotlist_results, list) { - memcpy(&event_buffer[offset], &hotlist->nl_scan_res, sizeof(struct slsi_nl_scan_result_param)); - offset += sizeof(struct slsi_nl_scan_result_param); /* If IE required use: hotlist->scan_res_len */ - } - - slsi_vendor_event(sdev, SLSI_NL80211_HOTLIST_AP_FOUND_EVENT, event_buffer, offset); - - kfree(event_buffer); -} - static void slsi_gscan_hash_add(struct slsi_dev *sdev, struct slsi_gscan_result *scan_res) { u8 key = SLSI_GSCAN_GET_HASH_KEY(scan_res->nl_scan_res.bssid[5]); @@ -747,10 +587,8 @@ void slsi_gscan_handle_scan_result(struct slsi_dev *sdev, struct net_device *dev goto out; } - /* Check for hotlist AP or ePNO networks */ - if (fapi_get_u16(skb, u.mlme_scan_ind.hotlisted_ap)) { - slsi_hotlist_ap_found_indication(sdev, dev, scan_res); - } else if (fapi_get_u16(skb, u.mlme_scan_ind.preferrednetwork_ap)) { + /* Check for ePNO networks */ + if (fapi_get_u16(skb, u.mlme_scan_ind.preferrednetwork_ap)) { if (anqp_length == 0) slsi_vendor_event(sdev, SLSI_NL80211_EPNO_EVENT, &scan_res->nl_scan_res, scan_res->scan_res_len); @@ -1052,29 +890,6 @@ void slsi_gscan_flush_scan_results(struct slsi_dev *sdev) SLSI_MUTEX_UNLOCK(ndev_vif->scan_mutex); } -void slsi_gscan_flush_hotlist_results(struct slsi_dev *sdev) -{ - struct slsi_hotlist_result *hotlist, *temp; - struct netdev_vif *ndev_vif; - - ndev_vif = slsi_gscan_get_vif(sdev); - if (!ndev_vif) { - SLSI_WARN_NODEV("ndev_vif is NULL\n"); - return; - } - - SLSI_MUTEX_LOCK(ndev_vif->scan_mutex); - - list_for_each_entry_safe(hotlist, temp, &sdev->hotlist_results, list) { - list_del(&hotlist->list); - kfree(hotlist); - } - - INIT_LIST_HEAD(&sdev->hotlist_results); - - SLSI_MUTEX_UNLOCK(ndev_vif->scan_mutex); -} - static int slsi_gscan_add_mlme(struct slsi_dev *sdev, struct slsi_nl_gscan_param *nl_gscan_param, struct slsi_gscan *gscan) { struct slsi_gscan_param gscan_param; @@ -1106,7 +921,7 @@ static int slsi_gscan_add_mlme(struct slsi_dev *sdev, struct slsi_nl_gscan_param if (gscan_param.bucket->report_events & SLSI_REPORT_EVENTS_NO_BATCH) report_mode |= FAPI_REPORTMODE_NO_BATCH; } else { - report_mode = FAPI_REPORTMODE_BUFFER_FULL; + report_mode = FAPI_REPORTMODE_RESERVED; } if (report_mode == 0) { @@ -1393,318 +1208,6 @@ exit: return ret; } -static int slsi_gscan_set_hotlist_read_params(struct slsi_nl_hotlist_param *nl_hotlist_param, const void *data, int len) -{ - int tmp, tmp1, tmp2, type, j = 0; - const struct nlattr *outer, *inner, *iter; - struct slsi_nl_ap_threshold_param *nl_ap; - int flush; - - nla_for_each_attr(iter, data, len, tmp2) { - type = nla_type(iter); - switch (type) { - case GSCAN_ATTRIBUTE_HOTLIST_BSSIDS: - nla_for_each_nested(outer, iter, tmp) { - nl_ap = &nl_hotlist_param->ap[j]; - nla_for_each_nested(inner, outer, tmp1) { - type = nla_type(inner); - switch (type) { - case GSCAN_ATTRIBUTE_BSSID: - SLSI_ETHER_COPY(&nl_ap->bssid[0], nla_data(inner)); - break; - case GSCAN_ATTRIBUTE_RSSI_LOW: - nl_ap->low = nla_get_s8(inner); - break; - case GSCAN_ATTRIBUTE_RSSI_HIGH: - nl_ap->high = nla_get_s8(inner); - break; - default: - SLSI_ERR_NODEV("Unknown type %d\n", type); - break; - } - } - j++; - } - nl_hotlist_param->num_bssid = j; - break; - case GSCAN_ATTRIBUTE_HOTLIST_FLUSH: - flush = nla_get_u8(iter); - break; - case GSCAN_ATTRIBUTE_LOST_AP_SAMPLE_SIZE: - nl_hotlist_param->lost_ap_sample_size = nla_get_u32(iter); - break; - default: - SLSI_ERR_NODEV("No ATTRIBUTE_HOTLIST - %d\n", type); - break; - } - } - - return 0; -} - -static int slsi_gscan_set_hotlist(struct wiphy *wiphy, - struct wireless_dev *wdev, const void *data, int len) -{ - struct slsi_dev *sdev = SDEV_FROM_WIPHY(wiphy); - struct slsi_nl_hotlist_param *nl_hotlist_param; - struct net_device *dev; - struct netdev_vif *ndev_vif; - int ret = 0; - - SLSI_DBG1_NODEV(SLSI_GSCAN, "SUBCMD_SET_BSSID_HOTLIST\n"); - - dev = slsi_gscan_get_netdev(sdev); - if (!dev) { - SLSI_WARN_NODEV("dev is NULL\n"); - return -EINVAL; - } - - ndev_vif = netdev_priv(dev); - - SLSI_MUTEX_LOCK(ndev_vif->scan_mutex); - /* Allocate memory for the received scan params */ - nl_hotlist_param = kzalloc(sizeof(*nl_hotlist_param), GFP_KERNEL); - if (nl_hotlist_param == NULL) { - SLSI_ERR_NODEV("Failed for allocate memory for gscan hotlist_param\n"); - ret = -ENOMEM; - goto exit; - } - - slsi_gscan_set_hotlist_read_params(nl_hotlist_param, data, len); - -#ifdef CONFIG_SCSC_WLAN_DEBUG - slsi_gscan_set_hotlist_dump_params(nl_hotlist_param); -#endif - ret = slsi_mlme_set_bssid_hotlist_req(sdev, dev, nl_hotlist_param); - if (ret) - SLSI_ERR_NODEV("Failed to set hostlist\n"); - - kfree(nl_hotlist_param); - SLSI_MUTEX_UNLOCK(ndev_vif->scan_mutex); -exit: - return ret; -} - -static int slsi_gscan_reset_hotlist(struct wiphy *wiphy, - struct wireless_dev *wdev, const void *data, int len) -{ - struct slsi_dev *sdev = SDEV_FROM_WIPHY(wiphy); - struct net_device *dev; - int ret = 0; - struct netdev_vif *ndev_vif; - - SLSI_DBG1_NODEV(SLSI_GSCAN, "SUBCMD_RESET_BSSID_HOTLIST\n"); - - dev = slsi_gscan_get_netdev(sdev); - if (!dev) { - SLSI_WARN_NODEV("dev is NULL\n"); - return -EINVAL; - } - ndev_vif = netdev_priv(dev); - - SLSI_MUTEX_LOCK(ndev_vif->scan_mutex); - ret = slsi_mlme_set_bssid_hotlist_req(sdev, dev, NULL); - if (ret) - SLSI_ERR_NODEV("Failed to reset hostlist\n"); - - SLSI_MUTEX_UNLOCK(ndev_vif->scan_mutex); - - slsi_gscan_flush_hotlist_results(sdev); - - return ret; -} - -static struct slsi_gscan *slsi_mlme_get_tracking_scan_id(struct slsi_dev *sdev, - struct slsi_nl_significant_change_params *significant_param_ptr) -{ - /* If channel hint is not in significant change req, link to previous gscan, else new gscan */ - struct slsi_gscan *ret_gscan; - - if (sdev->gscan != NULL) { - ret_gscan = sdev->gscan; - SLSI_DBG3(sdev, SLSI_GSCAN, "Existing Scan for tracking\n"); - } else { - struct slsi_gscan *gscan; - /* Allocate Memory for the new gscan */ - gscan = kzalloc(sizeof(*gscan), GFP_KERNEL); - if (gscan == NULL) { - SLSI_ERR(sdev, "Failed to allocate memory for gscan\n"); - return NULL; - } - gscan->num_buckets = 1; - if (slsi_gscan_alloc_buckets(sdev, gscan, gscan->num_buckets) != 0) { - SLSI_ERR(sdev, "NO free buckets. Abort tracking\n"); - kfree(gscan); - return NULL; - } - /*Build nl_bucket based on channels in significant_param_ptr->ap array*/ - gscan->nl_bucket.band = WIFI_BAND_UNSPECIFIED; - gscan->nl_bucket.num_channels = 0; - gscan->nl_bucket.period = 5 * 1000; /* Default */ - slsi_gscan_add_to_list(&sdev->gscan, gscan); - ret_gscan = gscan; - SLSI_DBG3(sdev, SLSI_GSCAN, "New Scan for tracking\n"); - } - SLSI_DBG3(sdev, SLSI_GSCAN, "tracking channel num:%d\n", ret_gscan->nl_bucket.num_channels); - return ret_gscan; -} - -static int slsi_gscan_set_significant_change(struct wiphy *wiphy, - struct wireless_dev *wdev, const void *data, int len) -{ - int ret = 0; - struct slsi_dev *sdev = SDEV_FROM_WIPHY(wiphy); - struct slsi_nl_significant_change_params *significant_change_param; - u8 bss_count = 0; - struct slsi_nl_ap_threshold_param *bss_param_ptr; - int tmp, tmp1, tmp2, type; - const struct nlattr *outer, *inner, *iter; - struct net_device *net_dev; - struct slsi_gscan *gscan; - struct netdev_vif *ndev_vif; - - SLSI_DBG3(sdev, SLSI_GSCAN, "SUBCMD_SET_SIGNIFICANT_CHANGE Received\n"); - - significant_change_param = kmalloc(sizeof(*significant_change_param), GFP_KERNEL); - if (!significant_change_param) { - SLSI_ERR(sdev, "NO mem for significant_change_param\n"); - return -ENOMEM; - } - memset(significant_change_param, 0, sizeof(struct slsi_nl_significant_change_params)); - nla_for_each_attr(iter, data, len, tmp2) { - type = nla_type(iter); - switch (type) { - case GSCAN_ATTRIBUTE_RSSI_SAMPLE_SIZE: - significant_change_param->rssi_sample_size = nla_get_u16(iter); - SLSI_DBG3(sdev, SLSI_GSCAN, "rssi_sample_size %d\n", significant_change_param->rssi_sample_size); - break; - case GSCAN_ATTRIBUTE_LOST_AP_SAMPLE_SIZE: - significant_change_param->lost_ap_sample_size = nla_get_u16(iter); - SLSI_DBG3(sdev, SLSI_GSCAN, "lost_ap_sample_size %d\n", significant_change_param->lost_ap_sample_size); - break; - case GSCAN_ATTRIBUTE_MIN_BREACHING: - significant_change_param->min_breaching = nla_get_u16(iter); - SLSI_DBG3(sdev, SLSI_GSCAN, "min_breaching %d\n", significant_change_param->min_breaching); - break; - case GSCAN_ATTRIBUTE_SIGNIFICANT_CHANGE_BSSIDS: - nla_for_each_nested(outer, iter, tmp) { - bss_param_ptr = &significant_change_param->ap[bss_count]; - bss_count++; - SLSI_DBG3(sdev, SLSI_GSCAN, "bssids[%d]:\n", bss_count); - if (bss_count == SLSI_GSCAN_MAX_SIGNIFICANT_CHANGE_APS) { - SLSI_ERR(sdev, "Can support max:%d aps. Skipping excess\n", SLSI_GSCAN_MAX_SIGNIFICANT_CHANGE_APS); - break; - } - nla_for_each_nested(inner, outer, tmp1) { - switch (nla_type(inner)) { - case GSCAN_ATTRIBUTE_BSSID: - SLSI_ETHER_COPY(&bss_param_ptr->bssid[0], nla_data(inner)); - SLSI_DBG3(sdev, SLSI_GSCAN, "\tbssid %pM\n", bss_param_ptr->bssid); - break; - case GSCAN_ATTRIBUTE_RSSI_HIGH: - bss_param_ptr->high = nla_get_s8(inner); - SLSI_DBG3(sdev, SLSI_GSCAN, "\thigh %d\n", bss_param_ptr->high); - break; - case GSCAN_ATTRIBUTE_RSSI_LOW: - bss_param_ptr->low = nla_get_s8(inner); - SLSI_DBG3(sdev, SLSI_GSCAN, "\tlow %d\n", bss_param_ptr->low); - break; - default: - SLSI_ERR(sdev, "unknown attribute:%d\n", type); - break; - } - } - } - break; - default: - SLSI_ERR(sdev, "Unknown type:%d\n", type); - break; - } - } - significant_change_param->num_bssid = bss_count; - net_dev = slsi_get_netdev(sdev, SLSI_NET_INDEX_WLAN); - ndev_vif = netdev_priv(net_dev); - - SLSI_MUTEX_LOCK(ndev_vif->scan_mutex); - gscan = slsi_mlme_get_tracking_scan_id(sdev, significant_change_param); - if (gscan) { - if (slsi_mlme_significant_change_set(sdev, net_dev, significant_change_param)) { - SLSI_ERR(sdev, "Could not set GSCAN significant cfg\n"); - ret = -EINVAL; - } - } else { - ret = -ENOMEM; - } - SLSI_MUTEX_UNLOCK(ndev_vif->scan_mutex); - kfree(significant_change_param); - return ret; -} - -void slsi_rx_significant_change_ind(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *skb) -{ - struct netdev_vif *ndev_vif = netdev_priv(dev); - u32 eventdata_len; - u16 bssid_count = fapi_get_buff(skb, u.mlme_significant_change_ind.number_of_results); - u16 rssi_entry_count = fapi_get_buff(skb, u.mlme_significant_change_ind.number_of_rssi_entries); - u32 i, j; - u8 *eventdata = NULL; - u8 *op_ptr, *ip_ptr; - u16 *le16_ptr; - - /* convert fapi buffer to wifi-hal structure - * fapi buffer: [mac address 6 bytes] [chan_freq 2 bytes] - * [riis history N*2 bytes] - * wifi-hal structure - * typedef struct { - * uint16_t channel; - * mac_addr bssid; - * short rssi_history[8]; - * } ChangeInfo; - */ - - SLSI_DBG3(sdev, SLSI_GSCAN, "No BSSIDs:%d\n", bssid_count); - - eventdata_len = (8 + (8 * 2)) * bssid_count; /* see wifi-hal structure in above comments */ - eventdata = kmalloc(eventdata_len, GFP_KERNEL); - if (!eventdata) { - SLSI_ERR(sdev, "no mem for event data\n"); - slsi_kfree_skb(skb); - return; - } - - SLSI_MUTEX_LOCK(ndev_vif->vif_mutex); - op_ptr = eventdata; - ip_ptr = fapi_get_data(skb); - for (i = 0; i < bssid_count; i++) { - le16_ptr = (u16 *)&ip_ptr[6]; /* channel: required unit MHz. received unit 512KHz */ - *(u16 *)op_ptr = le16_to_cpu(*le16_ptr) / 2; - SLSI_DBG3(sdev, SLSI_GSCAN, "[%d] channel:%d\n", i, *(u16 *)op_ptr); - op_ptr += 2; - - SLSI_ETHER_COPY(op_ptr, ip_ptr); /* mac_addr */ - SLSI_DBG3(sdev, SLSI_GSCAN, "[%d] mac:%pM\n", i, op_ptr); - op_ptr += ETH_ALEN; - - for (j = 0; j < 8; j++) { - if (j < rssi_entry_count) { - *op_ptr = ip_ptr[8 + j * 2]; - *(op_ptr + 1) = ip_ptr[9 + j * 2]; - } else { - s16 invalid_rssi = SLSI_GSCAN_INVALID_RSSI; - *(u16 *)op_ptr = invalid_rssi; - } - op_ptr += 2; - } - ip_ptr += 8 + (rssi_entry_count * 2); - } - SLSI_DBG_HEX(sdev, SLSI_GSCAN, eventdata, eventdata_len, "significant change event buffer:\n"); - SLSI_DBG_HEX(sdev, SLSI_GSCAN, fapi_get_data(skb), fapi_get_datalen(skb), "significant change skb buffer:\n"); - slsi_vendor_event(sdev, SLSI_NL80211_SIGNIFICANT_CHANGE_EVENT, eventdata, eventdata_len); - kfree(eventdata); - slsi_kfree_skb(skb); - SLSI_MUTEX_UNLOCK(ndev_vif->vif_mutex); -} - void slsi_rx_rssi_report_ind(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *skb) { struct netdev_vif *ndev_vif = netdev_priv(dev); @@ -1719,38 +1222,6 @@ void slsi_rx_rssi_report_ind(struct slsi_dev *sdev, struct net_device *dev, stru SLSI_MUTEX_UNLOCK(ndev_vif->vif_mutex); } -static int slsi_gscan_reset_significant_change(struct wiphy *wiphy, - struct wireless_dev *wdev, const void *data, int len) -{ - struct slsi_dev *sdev = SDEV_FROM_WIPHY(wiphy); - struct net_device *net_dev; - struct netdev_vif *ndev_vif; - struct slsi_bucket *bucket = NULL; - u32 i; - - SLSI_DBG3(sdev, SLSI_GSCAN, "SUBCMD_RESET_SIGNIFICANT_CHANGE Received\n"); - - net_dev = slsi_get_netdev(sdev, SLSI_NET_INDEX_WLAN); - ndev_vif = netdev_priv(net_dev); - - SLSI_MUTEX_LOCK(ndev_vif->vif_mutex); - for (i = 0; i < SLSI_GSCAN_MAX_BUCKETS; i++) { - bucket = &sdev->bucket[i]; - if (!bucket->used || !bucket->for_change_tracking) - continue; - - (void)slsi_mlme_del_scan(sdev, net_dev, bucket->scan_id, false); - bucket->for_change_tracking = false; - bucket->used = false; - SLSI_MUTEX_UNLOCK(ndev_vif->vif_mutex); - return 0; - } - SLSI_DBG3(sdev, SLSI_GSCAN, "Significant change scan not found\n"); - SLSI_MUTEX_UNLOCK(ndev_vif->vif_mutex); - - return 0; -} - #ifdef CONFIG_SCSC_WLAN_KEY_MGMT_OFFLOAD static int slsi_key_mgmt_set_pmk(struct wiphy *wiphy, struct wireless_dev *wdev, const void *pmk, int pmklen) @@ -1941,7 +1412,7 @@ static int slsi_start_keepalive_offload(struct wiphy *wiphy, struct wireless_dev */ slsi_mlme_send_frame_mgmt(sdev, net_dev, NULL, 0, FAPI_DATAUNITDESCRIPTOR_IEEE802_3_FRAME, - FAPI_MESSAGETYPE_PERIODIC_OFFLOAD, + FAPI_MESSAGETYPE_ANY_OTHER, ndev_vif->sta.keepalive_host_tag[index - 1], 0, 0, 0); skb = slsi_alloc_skb_headroom(sizeof(struct ethhdr) + ip_pkt_len, GFP_KERNEL); @@ -1980,7 +1451,7 @@ static int slsi_start_keepalive_offload(struct wiphy *wiphy, struct wireless_dev ip_send_check(ip_hdr(skb)); host_tag = slsi_tx_mgmt_host_tag(sdev); - r = slsi_mlme_send_frame_data(sdev, net_dev, skb, FAPI_MESSAGETYPE_PERIODIC_OFFLOAD, host_tag, + r = slsi_mlme_send_frame_data(sdev, net_dev, skb, FAPI_MESSAGETYPE_ANY_OTHER, host_tag, 0, (period * 1000)); if (r == 0) ndev_vif->sta.keepalive_host_tag[index - 1] = host_tag; @@ -2047,7 +1518,7 @@ static int slsi_stop_keepalive_offload(struct wiphy *wiphy, struct wireless_dev } r = slsi_mlme_send_frame_mgmt(sdev, net_dev, NULL, 0, FAPI_DATAUNITDESCRIPTOR_IEEE802_3_FRAME, - FAPI_MESSAGETYPE_PERIODIC_OFFLOAD, ndev_vif->sta.keepalive_host_tag[index - 1], 0, 0, 0); + FAPI_MESSAGETYPE_ANY_OTHER, ndev_vif->sta.keepalive_host_tag[index - 1], 0, 0, 0); ndev_vif->sta.keepalive_host_tag[index - 1] = 0; exit: @@ -3114,12 +2585,13 @@ static int slsi_rtt_set_config(struct wiphy *wiphy, struct wireless_dev *wdev, c #endif struct slsi_rtt_config *nl_rtt_params; const struct nlattr *iter, *outer, *inner; + u8 source_addr[ETH_ALEN]; int tmp, tmp1, tmp2; u16 rtt_id = 0; u8 num_devices = 0; u16 rtt_peer = SLSI_RTT_PEER_AP; u16 vif_idx = 0; - u16 center_freq0 = 0, center_freq1 = 0, channel_freq = 0, width = 0; + u16 channel_freq = 0; SLSI_DBG1_NODEV(SLSI_GSCAN, "SUBCMD_RTT_RANGE_START\n"); if (!slsi_dev_rtt_supported()) { @@ -3172,15 +2644,6 @@ static int slsi_rtt_set_config(struct wiphy *wiphy, struct wireless_dev *wdev, c channel_freq = nla_get_u16(inner); nl_rtt_params[j].channel_freq = channel_freq * 2; break; - case SLSI_RTT_ATTRIBUTE_TARGET_CHAN_WIDTH: - width = nla_get_u16(inner); - break; - case SLSI_RTT_ATTRIBUTE_TARGET_CHAN_FREQ0: - center_freq0 = nla_get_u16(inner); - break; - case SLSI_RTT_ATTRIBUTE_TARGET_CHAN_FREQ1: - center_freq1 = nla_get_u16(inner); - break; case SLSI_RTT_ATTRIBUTE_TARGET_PERIOD: nl_rtt_params[j].burst_period = nla_get_u8(inner); break; @@ -3212,21 +2675,7 @@ static int slsi_rtt_set_config(struct wiphy *wiphy, struct wireless_dev *wdev, c SLSI_ERR_NODEV("Unknown RTT INFO ATTRIBUTE type: %d\n", type); break; } - if (rtt_peer == SLSI_RTT_PEER_NAN) { -#if CONFIG_SCSC_WLAN_MAX_INTERFACES >= 4 - SLSI_ETHER_COPY(nl_rtt_params[j].source_addr, - sdev->netdev_addresses[SLSI_NET_INDEX_NAN]); -#else - SLSI_ERR(sdev, "NAN not supported(mib:%d)\n", sdev->nan_enabled); -#endif - } else { - SLSI_ETHER_COPY(nl_rtt_params[j].source_addr, - sdev->netdev_addresses[SLSI_NET_INDEX_WLAN]); - } } - /* width+1:to match RTT width enum value with NL enums */ - nl_rtt_params[j].channel_info = slsi_compute_chann_info(sdev, width + 1, center_freq0, - channel_freq); j++; } break; @@ -3235,6 +2684,15 @@ static int slsi_rtt_set_config(struct wiphy *wiphy, struct wireless_dev *wdev, c break; } } + if (rtt_peer == SLSI_RTT_PEER_NAN) { +#if CONFIG_SCSC_WLAN_MAX_INTERFACES >= 4 + SLSI_ETHER_COPY(source_addr, sdev->netdev_addresses[SLSI_NET_INDEX_NAN]); +#else + SLSI_ERR(sdev, "NAN not supported(mib:%d)\n", sdev->nan_enabled); +#endif + } else { + SLSI_ETHER_COPY(source_addr, sdev->netdev_addresses[SLSI_NET_INDEX_WLAN]); + } if (rtt_peer == SLSI_RTT_PEER_AP) { vif_idx = 0; } else if (rtt_peer == SLSI_RTT_PEER_NAN) { @@ -3257,7 +2715,7 @@ static int slsi_rtt_set_config(struct wiphy *wiphy, struct wireless_dev *wdev, c return -ENOTSUPP; #endif } - r = slsi_mlme_add_range_req(sdev, num_devices, nl_rtt_params, rtt_id, vif_idx); + r = slsi_mlme_add_range_req(sdev, num_devices, nl_rtt_params, rtt_id, vif_idx, source_addr); if (r) { r = -EINVAL; SLSI_ERR_NODEV("Failed to set rtt config\n"); @@ -3416,8 +2874,11 @@ void slsi_rx_range_ind(struct slsi_dev *sdev, struct net_device *dev, struct sk_ tm = *ip_ptr; res |= nla_put_u32(nl_skb, SLSI_RTT_EVENT_ATTR_TIMESTAMP_US, tkernel - (tmac - tm)); ip_ptr += 4; - res |= nla_put_u16(nl_skb, SLSI_RTT_EVENT_ATTR_BURST_DURATION_MSN, *ip_ptr); - ip_ptr += 2; + res |= nla_put_u32(nl_skb, SLSI_RTT_EVENT_ATTR_DISTANCE_MM, *ip_ptr); + ip_ptr += 4; + res |= nla_put_u32(nl_skb, SLSI_RTT_EVENT_ATTR_DISTANCE_SD_MM, *ip_ptr); + ip_ptr += 4; + res |= nla_put_u8(nl_skb, SLSI_RTT_EVENT_ATTR_BURST_DURATION_MSN, *ip_ptr++); res |= nla_put_u8(nl_skb, SLSI_RTT_EVENT_ATTR_NEGOTIATED_BURST_NUM, *ip_ptr++); for (rep_cnt = 0; rep_cnt < 2; rep_cnt++) { if (ip_ptr - start_ptr < data_len && ip_ptr[0] == WLAN_EID_MEASURE_REPORT) { @@ -4834,12 +4295,9 @@ static int slsi_acs_init(struct wiphy *wiphy, } static const struct nl80211_vendor_cmd_info slsi_vendor_events[] = { - { OUI_GOOGLE, SLSI_NL80211_SIGNIFICANT_CHANGE_EVENT }, - { OUI_GOOGLE, SLSI_NL80211_HOTLIST_AP_FOUND_EVENT }, { OUI_GOOGLE, SLSI_NL80211_SCAN_RESULTS_AVAILABLE_EVENT }, { OUI_GOOGLE, SLSI_NL80211_FULL_SCAN_RESULT_EVENT }, { OUI_GOOGLE, SLSI_NL80211_SCAN_EVENT }, - { OUI_GOOGLE, SLSI_NL80211_HOTLIST_AP_LOST_EVENT }, #ifdef CONFIG_SCSC_WLAN_KEY_MGMT_OFFLOAD { OUI_SAMSUNG, SLSI_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH }, #endif @@ -4905,38 +4363,6 @@ static const struct wiphy_vendor_command slsi_vendor_cmd[] = { .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, .doit = slsi_gscan_get_scan_results }, - { - { - .vendor_id = OUI_GOOGLE, - .subcmd = SLSI_NL80211_VENDOR_SUBCMD_SET_BSSID_HOTLIST - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, - .doit = slsi_gscan_set_hotlist - }, - { - { - .vendor_id = OUI_GOOGLE, - .subcmd = SLSI_NL80211_VENDOR_SUBCMD_RESET_BSSID_HOTLIST - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, - .doit = slsi_gscan_reset_hotlist - }, - { - { - .vendor_id = OUI_GOOGLE, - .subcmd = SLSI_NL80211_VENDOR_SUBCMD_SET_SIGNIFICANT_CHANGE - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, - .doit = slsi_gscan_set_significant_change - }, - { - { - .vendor_id = OUI_GOOGLE, - .subcmd = SLSI_NL80211_VENDOR_SUBCMD_RESET_SIGNIFICANT_CHANGE - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, - .doit = slsi_gscan_reset_significant_change - }, { { .vendor_id = OUI_GOOGLE, @@ -5308,8 +4734,6 @@ void slsi_nl80211_vendor_deinit(struct slsi_dev *sdev) SLSI_DBG2(sdev, SLSI_GSCAN, "Gscan cleanup\n"); slsi_gscan_flush_scan_results(sdev); - SLSI_DBG2(sdev, SLSI_GSCAN, "Hotlist cleanup\n"); - slsi_gscan_flush_hotlist_results(sdev); } void slsi_nl80211_vendor_init(struct slsi_dev *sdev) diff --git a/drivers/net/wireless/scsc/nl80211_vendor.h b/drivers/net/wireless/scsc/nl80211_vendor.h index ec2c4aaa4fdb..9ec7b9912c15 100755 --- a/drivers/net/wireless/scsc/nl80211_vendor.h +++ b/drivers/net/wireless/scsc/nl80211_vendor.h @@ -153,23 +153,6 @@ enum GSCAN_ATTRIBUTE { GSCAN_ATTRIBUTE_SCAN_FLAGS, GSCAN_ATTRIBUTE_SCAN_BUCKET_BIT, - /* remaining reserved for additional attributes */ - GSCAN_ATTRIBUTE_SSID = 40, - GSCAN_ATTRIBUTE_BSSID, - GSCAN_ATTRIBUTE_CHANNEL, - GSCAN_ATTRIBUTE_RSSI, - GSCAN_ATTRIBUTE_TIMESTAMP, - GSCAN_ATTRIBUTE_RTT, - GSCAN_ATTRIBUTE_RTTSD, - - /* remaining reserved for additional attributes */ - GSCAN_ATTRIBUTE_HOTLIST_BSSIDS = 50, - GSCAN_ATTRIBUTE_RSSI_LOW, - GSCAN_ATTRIBUTE_RSSI_HIGH, - GSCAN_ATTRIBUTE_HOTLIST_ELEM, - GSCAN_ATTRIBUTE_HOTLIST_FLUSH, - GSCAN_ATTRIBUTE_CHANNEL_NUMBER, - /* remaining reserved for additional attributes */ GSCAN_ATTRIBUTE_RSSI_SAMPLE_SIZE = 60, GSCAN_ATTRIBUTE_LOST_AP_SAMPLE_SIZE, @@ -270,11 +253,6 @@ enum slsi_hal_vendor_subcmds { SLSI_NL80211_VENDOR_SUBCMD_ADD_GSCAN, SLSI_NL80211_VENDOR_SUBCMD_DEL_GSCAN, SLSI_NL80211_VENDOR_SUBCMD_GET_SCAN_RESULTS, - SLSI_NL80211_VENDOR_SUBCMD_SET_BSSID_HOTLIST, - SLSI_NL80211_VENDOR_SUBCMD_RESET_BSSID_HOTLIST, - SLSI_NL80211_VENDOR_SUBCMD_GET_HOTLIST_RESULTS, - SLSI_NL80211_VENDOR_SUBCMD_SET_SIGNIFICANT_CHANGE, - SLSI_NL80211_VENDOR_SUBCMD_RESET_SIGNIFICANT_CHANGE, SLSI_NL80211_VENDOR_SUBCMD_SET_GSCAN_OUI, SLSI_NL80211_VENDOR_SUBCMD_SET_NODFS, SLSI_NL80211_VENDOR_SUBCMD_START_KEEP_ALIVE_OFFLOAD, @@ -327,12 +305,9 @@ enum slsi_supp_vendor_subcmds { }; enum slsi_vendor_event_values { - SLSI_NL80211_SIGNIFICANT_CHANGE_EVENT, - SLSI_NL80211_HOTLIST_AP_FOUND_EVENT, SLSI_NL80211_SCAN_RESULTS_AVAILABLE_EVENT, SLSI_NL80211_FULL_SCAN_RESULT_EVENT, SLSI_NL80211_SCAN_EVENT, - SLSI_NL80211_HOTLIST_AP_LOST_EVENT, SLSI_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH, SLSI_NL80211_VENDOR_HANGED_EVENT, SLSI_NL80211_EPNO_EVENT, @@ -523,10 +498,7 @@ enum slsi_rtt_attribute { SLSI_RTT_ATTRIBUTE_TARGET_MAC, SLSI_RTT_ATTRIBUTE_TARGET_TYPE, SLSI_RTT_ATTRIBUTE_TARGET_PEER, - SLSI_RTT_ATTRIBUTE_TARGET_CHAN_WIDTH, SLSI_RTT_ATTRIBUTE_TARGET_CHAN_FREQ, - SLSI_RTT_ATTRIBUTE_TARGET_CHAN_FREQ0, - SLSI_RTT_ATTRIBUTE_TARGET_CHAN_FREQ1, SLSI_RTT_ATTRIBUTE_TARGET_PERIOD, SLSI_RTT_ATTRIBUTE_TARGET_NUM_BURST, SLSI_RTT_ATTRIBUTE_TARGET_NUM_FTM_BURST, @@ -627,18 +599,6 @@ struct slsi_nl_scan_result_param { u8 ie_data[1]; /* beacon IE */ }; -struct slsi_nl_ap_threshold_param { - u8 bssid[6]; /* AP BSSID */ - s16 low; /* low threshold */ - s16 high; /* high threshold */ -}; - -struct slsi_nl_hotlist_param { - u8 lost_ap_sample_size; - u8 num_bssid; /* number of hotlist APs */ - struct slsi_nl_ap_threshold_param ap[SLSI_GSCAN_MAX_HOTLIST_APS]; /* hotlist APs */ -}; - struct slsi_bucket { bool used; /* to identify if this entry is free */ bool for_change_tracking; /* Indicates if this scan_id is used for change_tracking */ @@ -664,14 +624,6 @@ struct slsi_gscan_param { struct slsi_bucket *bucket; }; -struct slsi_nl_significant_change_params { - int rssi_sample_size; /* number of samples for averaging RSSI */ - int lost_ap_sample_size; /* number of samples to confirm AP loss */ - int min_breaching; /* number of APs breaching threshold */ - int num_bssid; /* max 64 */ - struct slsi_nl_ap_threshold_param ap[SLSI_GSCAN_MAX_SIGNIFICANT_CHANGE_APS]; -}; - struct slsi_gscan_result { struct slsi_gscan_result *hnext; int scan_cycle; @@ -680,12 +632,6 @@ struct slsi_gscan_result { struct slsi_nl_scan_result_param nl_scan_res; }; -struct slsi_hotlist_result { - struct list_head list; - int scan_res_len; - struct slsi_nl_scan_result_param nl_scan_res; -}; - struct slsi_epno_ssid_param { u16 flags; u8 ssid_len; @@ -905,7 +851,6 @@ struct slsi_rtt_capabilities { /* RTT configuration */ struct slsi_rtt_config { - u8 source_addr[ETH_ALEN]; u8 peer_addr[ETH_ALEN]; /* peer device mac address */ u16 type; /* 1-sided or 2-sided RTT */ u16 channel_freq; /* Required for STA-AP mode, optional for P2P, NBD etc. */ @@ -984,8 +929,6 @@ void slsi_nl80211_vendor_init(struct slsi_dev *sdev); void slsi_nl80211_vendor_deinit(struct slsi_dev *sdev); u8 slsi_gscan_get_scan_policy(enum wifi_band band); void slsi_gscan_handle_scan_result(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *skb, u16 scan_id, bool scan_done); -int slsi_mlme_set_bssid_hotlist_req(struct slsi_dev *sdev, struct net_device *dev, struct slsi_nl_hotlist_param *nl_hotlist_param); -void slsi_hotlist_ap_lost_indication(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *skb); void slsi_gscan_hash_remove(struct slsi_dev *sdev, u8 *mac); void slsi_rx_significant_change_ind(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *skb); int slsi_gscan_alloc_buckets(struct slsi_dev *sdev, struct slsi_gscan *gscan, int num_buckets); @@ -994,7 +937,7 @@ int slsi_mib_get_gscan_cap(struct slsi_dev *sdev, struct slsi_nl_gscan_capabilit void slsi_rx_rssi_report_ind(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *skb); int slsi_mib_get_rtt_cap(struct slsi_dev *sdev, struct net_device *dev, struct slsi_rtt_capabilities *cap); int slsi_mlme_add_range_req(struct slsi_dev *sdev, u8 count, struct slsi_rtt_config *nl_rtt_params, - u16 rtt_id, u16 vif_idx); + u16 rtt_id, u16 vif_idx, u8 *source_addr); int slsi_mlme_del_range_req(struct slsi_dev *sdev, struct net_device *dev, u16 count, u8 *addr, u16 rtt_id); void slsi_rx_range_ind(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *skb); void slsi_rx_range_done_ind(struct slsi_dev *sdev, struct net_device *dev, struct sk_buff *skb); diff --git a/drivers/net/wireless/scsc/nl80211_vendor_nan.c b/drivers/net/wireless/scsc/nl80211_vendor_nan.c index 4dc1c201be49..f005162e74f7 100755 --- a/drivers/net/wireless/scsc/nl80211_vendor_nan.c +++ b/drivers/net/wireless/scsc/nl80211_vendor_nan.c @@ -1368,7 +1368,7 @@ void slsi_nan_followup_ind(struct slsi_dev *sdev, struct net_device *dev, struct return; } hal_evt->publish_subscribe_id = fapi_get_u16(skb, u.mlme_nan_followup_ind.publish_subscribe_id); - hal_evt->requestor_instance_id = fapi_get_u16(skb, u.mlme_nan_followup_ind.requestor_instance_id); + hal_evt->requestor_instance_id = fapi_get_u16(skb, u.mlme_nan_followup_ind.peer_id); ptr = stitched_ie_p + 7; /* 7 = ie_id(1), ie_len(1), oui(3) type/subtype(2)*/ ether_addr_copy(hal_evt->addr, ptr); @@ -1479,7 +1479,7 @@ void slsi_nan_service_ind(struct slsi_dev *sdev, struct net_device *dev, struct return; } hal_evt->publish_subscribe_id = fapi_get_u16(skb, u.mlme_nan_service_ind.publish_subscribe_id); - hal_evt->requestor_instance_id = fapi_get_u32(skb, u.mlme_nan_service_ind.requestor_instance_id); + hal_evt->requestor_instance_id = fapi_get_u32(skb, u.mlme_nan_service_ind.peer_id); /* 7 = ie_id(1), ie_len(1), oui(3) type/subtype(2)*/ ptr = stitched_ie_p + 7; diff --git a/drivers/net/wireless/scsc/rx.c b/drivers/net/wireless/scsc/rx.c index f4ed44241761..2044c56548d3 100755 --- a/drivers/net/wireless/scsc/rx.c +++ b/drivers/net/wireless/scsc/rx.c @@ -2410,7 +2410,7 @@ void slsi_rx_received_frame_ind(struct slsi_dev *sdev, struct net_device *dev, s if ((subtype == SLSI_P2P_PA_GO_NEG_CFM) || (subtype == SLSI_P2P_PA_PROV_DISC_RSP)) { ndev_vif->drv_in_p2p_procedure = false; if (!delayed_work_pending(&ndev_vif->unsync.roc_expiry_work)) { - slsi_mlme_spare_signal_1(ndev_vif->sdev, ndev_vif->wdev.netdev); + slsi_mlme_unset_channel_req(ndev_vif->sdev, ndev_vif->wdev.netdev); ndev_vif->driver_channel = 0; } } diff --git a/drivers/net/wireless/scsc/sap_mlme.c b/drivers/net/wireless/scsc/sap_mlme.c index 2afc5e0a4203..c16a55b9739c 100755 --- a/drivers/net/wireless/scsc/sap_mlme.c +++ b/drivers/net/wireless/scsc/sap_mlme.c @@ -157,12 +157,6 @@ static int slsi_rx_netdev_mlme(struct slsi_dev *sdev, struct net_device *dev, st slsi_kfree_skb(skb); break; #ifdef CONFIG_SCSC_WLAN_GSCAN_ENABLE - case MLME_AP_LOSS_IND: - slsi_hotlist_ap_lost_indication(sdev, dev, skb); - break; - case MLME_SIGNIFICANT_CHANGE_IND: - slsi_rx_significant_change_ind(sdev, dev, skb); - break; case MLME_RSSI_REPORT_IND: slsi_rx_rssi_report_ind(sdev, dev, skb); break; @@ -191,7 +185,7 @@ static int slsi_rx_netdev_mlme(struct slsi_dev *sdev, struct net_device *dev, st break; #endif #ifdef CONFIG_SCSC_WLAN_SAE_CONFIG - case MLME_SPARE_SIGNAL_1_IND: + case MLME_SYNCHRONISED_IND: slsi_rx_synchronised_ind(sdev, dev, skb); slsi_kfree_skb(skb); break; @@ -337,11 +331,6 @@ static int sap_mlme_rx_handler(struct slsi_dev *sdev, struct sk_buff *skb) } return slsi_rx_action_enqueue_netdev_mlme(sdev, skb, vif); #ifdef CONFIG_SCSC_WLAN_GSCAN_ENABLE - case MLME_AP_LOSS_IND: - return slsi_rx_enqueue_netdev_mlme(sdev, skb, SLSI_NET_INDEX_WLAN); - case MLME_SIGNIFICANT_CHANGE_IND: - return slsi_rx_enqueue_netdev_mlme(sdev, skb, SLSI_NET_INDEX_WLAN); - case MLME_NAN_EVENT_IND: case MLME_NAN_FOLLOWUP_IND: case MLME_NAN_SERVICE_IND: -- 2.20.1