qcacld-3.0: Add hdd_ch_avoid_dyn_cbk as channel avoid callback

Currently channel avoid event is not handled, add hdd_ch_avoid_dyn_cbk
as channel change callback to handle channel avoid event.

Change-Id: I451eedf69fd5b91850ed82cf3ad8d7530e259176
CRs-Fixed: 2163673
Bu işleme şunda yer alıyor:
Will Huang
2018-01-08 18:16:17 +08:00
işlemeyi yapan: snandini
ebeveyn 8c4e5c43c2
işleme 93bc137ee1

Dosyayı Görüntüle

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2014-2017 The Linux Foundation. All rights reserved.
* Copyright (c) 2014-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -982,6 +982,35 @@ static void hdd_regulatory_dyn_cbk(struct wlan_objmgr_psoc *psoc,
&avoid_freq_ind->freq_list);
}
/**
* hdd_ch_avoid_dyn_cbk() - Callback of chan avoid event when reg non-offload
* @psoc: PSOC object
* @pdev: PDEV object
* @chan_list: Current reg channel list, not used in this callback
* @avoid_freq_ind: Frequency avoid data post from event handler
* @arg: Callback function context parameter
*
* Return: None.
*/
static void hdd_ch_avoid_dyn_cbk(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_pdev *pdev,
struct regulatory_channel *chan_list,
struct avoid_freq_ind_data *avoid_freq_ind,
void *arg)
{
struct wiphy *wiphy;
struct pdev_osif_priv *pdev_priv;
struct hdd_context *hdd_ctx;
pdev_priv = wlan_pdev_get_ospriv(pdev);
wiphy = pdev_priv->wiphy;
hdd_ctx = wiphy_priv(wiphy);
if (avoid_freq_ind)
hdd_ch_avoid_ind(hdd_ctx, &avoid_freq_ind->chan_list,
&avoid_freq_ind->freq_list);
}
/**
* hdd_regulatory_init_offload() - regulatory init
* @hdd_ctx: hdd context
@@ -1032,6 +1061,9 @@ int hdd_regulatory_init(struct hdd_context *hdd_ctx, struct wiphy *wiphy)
wiphy->regulatory_flags |= REGULATORY_DISABLE_BEACON_HINTS;
wiphy->regulatory_flags |= REGULATORY_COUNTRY_IE_IGNORE;
hdd_regulatory_init_no_offload(hdd_ctx, wiphy);
ucfg_reg_register_chan_change_callback(hdd_ctx->hdd_psoc,
hdd_ch_avoid_dyn_cbk,
NULL);
}
return 0;