|
@@ -1,5 +1,6 @@
|
|
|
/*
|
|
|
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
|
|
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
*
|
|
|
* Permission to use, copy, modify, and/or distribute this software for any
|
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
@@ -52,6 +53,70 @@ wlan_wfatest_get_tx_ops_from_vdev(struct wlan_objmgr_vdev *vdev)
|
|
|
return tx_ops;
|
|
|
}
|
|
|
|
|
|
+static QDF_STATUS
|
|
|
+wlan_wfa_set_test_feature_flags(struct wlan_objmgr_psoc *psoc,
|
|
|
+ enum wlan_wfa_test_feature_flags feature,
|
|
|
+ uint8_t value)
|
|
|
+{
|
|
|
+ mlme_psoc_ext_t *mlme_priv;
|
|
|
+
|
|
|
+ if (!psoc) {
|
|
|
+ mlme_legacy_err("psoc object is NULL");
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ mlme_priv = wlan_psoc_mlme_get_ext_hdl(psoc);
|
|
|
+ if (!mlme_priv) {
|
|
|
+ mlme_legacy_err("vdev legacy private object is NULL");
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (feature) {
|
|
|
+ case WFA_TEST_IGNORE_RSNXE:
|
|
|
+ if (value)
|
|
|
+ mlme_priv->wfa_testcmd.flags |= WFA_TEST_IGNORE_RSNXE;
|
|
|
+ else
|
|
|
+ mlme_priv->wfa_testcmd.flags &= ~WFA_TEST_IGNORE_RSNXE;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ mlme_legacy_debug("Invalid feature flag: 0x%x", feature);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+}
|
|
|
+
|
|
|
+bool wlan_wfa_get_test_feature_flags(struct wlan_objmgr_psoc *psoc,
|
|
|
+ enum wlan_wfa_test_feature_flags feature)
|
|
|
+{
|
|
|
+ mlme_psoc_ext_t *mlme_priv;
|
|
|
+ bool set = false;
|
|
|
+
|
|
|
+ if (!psoc) {
|
|
|
+ mlme_legacy_err("psoc object is NULL");
|
|
|
+ return set;
|
|
|
+ }
|
|
|
+
|
|
|
+ mlme_priv = wlan_psoc_mlme_get_ext_hdl(psoc);
|
|
|
+ if (!mlme_priv) {
|
|
|
+ mlme_legacy_err("psoc legacy private object is NULL");
|
|
|
+ return set;
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (feature) {
|
|
|
+ case WFA_TEST_IGNORE_RSNXE:
|
|
|
+ set = !!(mlme_priv->wfa_testcmd.flags & WFA_TEST_IGNORE_RSNXE);
|
|
|
+ if (set)
|
|
|
+ mlme_legacy_debug("IGNORE_RSNXE is set");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ mlme_legacy_debug("Invalid feature flag: 0x%x", feature);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return set;
|
|
|
+}
|
|
|
+
|
|
|
QDF_STATUS
|
|
|
wlan_send_wfatest_cmd(struct wlan_objmgr_vdev *vdev,
|
|
|
struct set_wfatest_params *wmi_wfatest)
|
|
@@ -78,6 +143,10 @@ wlan_send_wfatest_cmd(struct wlan_objmgr_vdev *vdev,
|
|
|
param.fd_period = DEFAULT_FILS_DISCOVERY_PERIOD;
|
|
|
|
|
|
return tgt_vdev_mgr_fils_enable_send(mlme_obj, ¶m);
|
|
|
+ } else if (wmi_wfatest->cmd == WFA_IGNORE_H2E_RSNXE) {
|
|
|
+ return wlan_wfa_set_test_feature_flags(wlan_vdev_get_psoc(vdev),
|
|
|
+ WFA_TEST_IGNORE_RSNXE,
|
|
|
+ wmi_wfatest->value);
|
|
|
}
|
|
|
|
|
|
tx_ops = wlan_wfatest_get_tx_ops_from_vdev(vdev);
|