mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 07:03:09 -04:00
qcacld-3.0: Add support to indicate subnet change status to user space
LFR3 to indicate the change in IP subnet to user space (supplicant). This enables the DHCP refresh in case of IP subnet change during roaming. Change-Id: I9842a28461346fe97ab39f5a11ae504f2e32fa16 CRs-Fixed: 876335
This commit is contained in:
parent
deb5a8d6ff
commit
277ae9beed
5 changed files with 32 additions and 1 deletions
|
|
@ -3012,7 +3012,7 @@ int wlan_hdd_send_roam_auth_event(hdd_context_t *hdd_ctx_ptr, uint8_t *bssid,
|
|||
ETH_ALEN + req_rsn_len + rsp_rsn_len +
|
||||
sizeof(uint8_t) + SIR_REPLAY_CTR_LEN +
|
||||
SIR_KCK_KEY_LEN + SIR_KCK_KEY_LEN +
|
||||
(7 * NLMSG_HDRLEN),
|
||||
sizeof(uint8_t) + (8 * NLMSG_HDRLEN),
|
||||
QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH_INDEX,
|
||||
GFP_KERNEL);
|
||||
|
||||
|
|
@ -3057,6 +3057,24 @@ int wlan_hdd_send_roam_auth_event(hdd_context_t *hdd_ctx_ptr, uint8_t *bssid,
|
|||
}
|
||||
}
|
||||
|
||||
hddLog(CDF_TRACE_LEVEL_DEBUG, FL("Subnet Change Status = %d"),
|
||||
roam_info_ptr->subnet_change_status);
|
||||
|
||||
/*
|
||||
* Add subnet change status if subnet has changed
|
||||
* 0 = unchanged
|
||||
* 1 = changed
|
||||
* 2 = unknown
|
||||
*/
|
||||
if (roam_info_ptr->subnet_change_status) {
|
||||
if (nla_put_u8(skb,
|
||||
QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_SUBNET_STATUS,
|
||||
roam_info_ptr->subnet_change_status)) {
|
||||
hddLog(CDF_TRACE_LEVEL_ERROR, FL("nla put fail"));
|
||||
goto nla_put_failure;
|
||||
}
|
||||
}
|
||||
|
||||
cfg80211_vendor_event(skb, GFP_KERNEL);
|
||||
return 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -1554,6 +1554,7 @@ enum qca_wlan_vendor_attr_set_no_dfs_flag {
|
|||
* @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_KEY_REPLAY_CTR: Replay Counter
|
||||
* @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_PTK_KCK: KCK of the PTK
|
||||
* @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_PTK_KEK: KEK of the PTK
|
||||
* @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_SUBNET_STATUS: subnet change status
|
||||
*/
|
||||
enum qca_wlan_vendor_attr_roam_auth {
|
||||
QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_INVALID = 0,
|
||||
|
|
@ -1564,6 +1565,7 @@ enum qca_wlan_vendor_attr_roam_auth {
|
|||
QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_KEY_REPLAY_CTR,
|
||||
QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_PTK_KCK,
|
||||
QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_PTK_KEK,
|
||||
QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_SUBNET_STATUS,
|
||||
QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_AFTER_LAST,
|
||||
QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_MAX =
|
||||
QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_AFTER_LAST - 1
|
||||
|
|
|
|||
|
|
@ -1351,6 +1351,7 @@ typedef struct tagCsrRoamInfo {
|
|||
uint8_t kck[SIR_KCK_KEY_LEN];
|
||||
uint8_t kek[SIR_KEK_KEY_LEN];
|
||||
uint8_t replay_ctr[SIR_REPLAY_CTR_LEN];
|
||||
uint8_t subnet_change_status;
|
||||
#endif
|
||||
tSirSmeChanInfo chan_info;
|
||||
uint8_t target_channel;
|
||||
|
|
|
|||
|
|
@ -1202,6 +1202,13 @@ typedef struct tagCsrRoamStruct {
|
|||
(eCsrLostLink2 == (pCommand)->u.roamCmd.roamReason) || \
|
||||
(eCsrLostLink3 == (pCommand)->u.roamCmd.roamReason))
|
||||
|
||||
#ifdef FEATURE_LFR_SUBNET_DETECTION
|
||||
/* bit-4 and bit-5 indicate the subnet status */
|
||||
#define CSR_GET_SUBNET_STATUS(roam_reason) (((roam_reason) & 0x30) >> 4)
|
||||
#else
|
||||
#define CSR_GET_SUBNET_STATUS(roam_reason) (0)
|
||||
#endif
|
||||
|
||||
CDF_STATUS csr_get_channel_and_power_list(tpAniSirGlobal pMac);
|
||||
CDF_STATUS csrScanFilter11dResult(tpAniSirGlobal pMac);
|
||||
|
||||
|
|
|
|||
|
|
@ -6440,6 +6440,9 @@ static void csr_roam_process_join_res(tpAniSirGlobal mac_ctx,
|
|||
FL
|
||||
("LFR3: Copy KCK, KEK and Replay Ctr"));
|
||||
}
|
||||
|
||||
roam_info.subnet_change_status =
|
||||
CSR_GET_SUBNET_STATUS(roam_offload_params->roamReason);
|
||||
#endif
|
||||
csr_roam_call_callback(mac_ctx, session_id, &roam_info,
|
||||
cmd->u.roamCmd.roamId,
|
||||
|
|
|
|||
Loading…
Reference in a new issue