summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/sap/dfs/src/dfs.c48
1 files changed, 29 insertions, 19 deletions
diff --git a/core/sap/dfs/src/dfs.c b/core/sap/dfs/src/dfs.c
index a2b5cff32ac1..e3fe339b9657 100644
--- a/core/sap/dfs/src/dfs.c
+++ b/core/sap/dfs/src/dfs.c
@@ -253,6 +253,24 @@ error:
return status;
}
+/**
+ * dfs_free_filter() - free memory allocated for dfs ft_filters
+ * @radarf: pointer holding ft_filters
+ *
+ * Return: NA
+*/
+static void dfs_free_filter(struct dfs_filtertype *radarf)
+{
+ int i;
+
+ for (i = 0; i < DFS_MAX_NUM_RADAR_FILTERS; i++) {
+ if (radarf->ft_filters[i]) {
+ qdf_mem_free(radarf->ft_filters[i]);
+ radarf->ft_filters[i] = NULL;
+ }
+ }
+}
+
int dfs_attach(struct ieee80211com *ic)
{
int i, n;
@@ -440,11 +458,20 @@ int dfs_attach(struct ieee80211com *ic)
return 0;
bad2:
- OS_FREE(dfs->dfs_radartable);
- dfs->dfs_radartable = NULL;
+ if (dfs->dfs_radartable != NULL) {
+ for (n = 0; n < 256; n++) {
+ if (dfs->dfs_radartable[n] != NULL) {
+ OS_FREE(dfs->dfs_radartable[n]);
+ dfs->dfs_radartable[n] = NULL;
+ }
+ }
+ OS_FREE(dfs->dfs_radartable);
+ dfs->dfs_radartable = NULL;
+ }
bad1:
for (n = 0; n < DFS_MAX_RADAR_TYPES; n++) {
if (dfs->dfs_radarf[n] != NULL) {
+ dfs_free_filter(dfs->dfs_radarf[n]);
OS_FREE(dfs->dfs_radarf[n]);
dfs->dfs_radarf[n] = NULL;
}
@@ -471,23 +498,6 @@ bad1:
#undef N
}
-/**
- * dfs_free_filter() - free memory allocated for dfs ft_filters
- * @radarf: pointer holding ft_filters
- *
- * Return: NA
-*/
-static void dfs_free_filter(struct dfs_filtertype *radarf)
-{
- int i;
-
- for (i = 0; i < DFS_MAX_NUM_RADAR_FILTERS; i++) {
- if (radarf->ft_filters[i]) {
- qdf_mem_free(radarf->ft_filters[i]);
- radarf->ft_filters[i] = NULL;
- }
- }
-}
void dfs_detach(struct ieee80211com *ic)
{
struct ath_dfs *dfs = (struct ath_dfs *)ic->ic_dfs;