qcacld-3.0: Consider PMF capa of peer also for rmf frame processing

Cache the PMF capability of peer in peer_mlme_priv_obj while
adding bss for both station and AP modes. Process the mgmt frames
received from the peer as rmf frames only if the peer is of PMF
capable.
Move mlme_peer_object creation and deletion out of the define
CRYPTO_SET_KEY_CONVERGED to make it generic.
Remove the check where WEP bit is validated and modified based on
PMF capability of the peer. This is already taken care while
setting WEP bit in lim.

Change-Id: I0c93bb25db6a866e4c1793c9ba4c60773c0f019d
CRs-Fixed: 2520249
这个提交包含在:
Srinivas Dasari
2019-09-05 17:18:48 +05:30
提交者 nshrivas
父节点 1756b27a7f
当前提交 cc863f0b26
修改 5 个文件,包含 182 行新增40 行删除

查看文件

@@ -56,9 +56,11 @@ struct wlan_ies {
/**
* struct peer_mlme_priv_obj - peer MLME component object
* @ucast_key_cipher: unicast crypto type.
* @is_pmf_enabled: True if PMF is enabled
*/
struct peer_mlme_priv_obj {
uint32_t ucast_key_cipher;
bool is_pmf_enabled;
};
/**
@@ -341,4 +343,23 @@ void mlme_free_peer_disconnect_ies(struct wlan_objmgr_vdev *vdev);
* Return: Returns a pointer to the peer disconnect IEs present in vdev object
*/
struct wlan_ies *mlme_get_peer_disconnect_ies(struct wlan_objmgr_vdev *vdev);
/**
* mlme_set_peer_pmf_status() - set pmf status of peer
* @peer: PEER object
* @is_pmf_enabled: Carries if PMF is enabled or not
*
* is_pmf_enabled will be set to true if PMF is enabled by peer
*
* Return: void
*/
void mlme_set_peer_pmf_status(struct wlan_objmgr_peer *peer,
bool is_pmf_enabled);
/**
* mlme_get_peer_pmf_status() - get if peer is of pmf capable
* @peer: PEER object
*
* Return: Value of is_pmf_enabled; True if PMF is enabled by peer
*/
bool mlme_get_peer_pmf_status(struct wlan_objmgr_peer *peer);
#endif

查看文件

@@ -187,20 +187,6 @@ QDF_STATUS mlme_get_peer_mic_len(struct wlan_objmgr_psoc *psoc, uint8_t pdev_id,
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
mlme_peer_object_created_notification(struct wlan_objmgr_peer *peer,
void *arg)
{
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
mlme_peer_object_destroyed_notification(struct wlan_objmgr_peer *peer,
void *arg)
{
return QDF_STATUS_SUCCESS;
}
#else
QDF_STATUS mlme_get_peer_mic_len(struct wlan_objmgr_psoc *psoc, uint8_t pdev_id,
@@ -236,6 +222,7 @@ QDF_STATUS mlme_get_peer_mic_len(struct wlan_objmgr_psoc *psoc, uint8_t pdev_id,
return QDF_STATUS_SUCCESS;
}
#endif
QDF_STATUS
mlme_peer_object_created_notification(struct wlan_objmgr_peer *peer,
@@ -298,7 +285,6 @@ mlme_peer_object_destroyed_notification(struct wlan_objmgr_peer *peer,
return status;
}
#endif
static void mlme_init_chainmask_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_chainmask *chainmask_info)
@@ -2496,3 +2482,31 @@ struct wlan_ies *mlme_get_peer_disconnect_ies(struct wlan_objmgr_vdev *vdev)
return &mlme_priv->peer_disconnect_ies;
}
void mlme_set_peer_pmf_status(struct wlan_objmgr_peer *peer,
bool is_pmf_enabled)
{
struct peer_mlme_priv_obj *peer_priv;
peer_priv = wlan_objmgr_peer_get_comp_private_obj(peer,
WLAN_UMAC_COMP_MLME);
if (!peer_priv) {
mlme_legacy_err(" peer mlme component object is NULL");
return;
}
peer_priv->is_pmf_enabled = is_pmf_enabled;
}
bool mlme_get_peer_pmf_status(struct wlan_objmgr_peer *peer)
{
struct peer_mlme_priv_obj *peer_priv;
peer_priv = wlan_objmgr_peer_get_comp_private_obj(peer,
WLAN_UMAC_COMP_MLME);
if (!peer_priv) {
mlme_legacy_err("peer mlme component object is NULL");
return false;
}
return peer_priv->is_pmf_enabled;
}