mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 07:37:31 -04:00
Merge "qcacmn: Fix DFS kernel panic"
This commit is contained in:
commit
036d8bc745
12 changed files with 75 additions and 32 deletions
|
|
@ -448,7 +448,7 @@ struct dfs_filtertype {
|
|||
*/
|
||||
struct dfs_ieee80211_channel {
|
||||
uint16_t dfs_ch_freq;
|
||||
uint32_t dfs_ch_flags;
|
||||
uint64_t dfs_ch_flags;
|
||||
uint16_t dfs_ch_flagext;
|
||||
uint8_t dfs_ch_ieee;
|
||||
uint8_t dfs_ch_vhtop_ch_freq_seg1;
|
||||
|
|
@ -1743,7 +1743,7 @@ void ol_if_dfs_clist_update(struct wlan_dfs *dfs,
|
|||
*/
|
||||
void dfs_set_current_channel(struct wlan_dfs *dfs,
|
||||
uint16_t dfs_ch_freq,
|
||||
uint32_t dfs_ch_flags,
|
||||
uint64_t dfs_ch_flags,
|
||||
uint16_t dfs_ch_flagext,
|
||||
uint8_t dfs_ch_ieee,
|
||||
uint8_t dfs_ch_vhtop_ch_freq_seg1,
|
||||
|
|
@ -1922,4 +1922,14 @@ void dfs_main_timer_reset(struct wlan_dfs *dfs);
|
|||
* @dfs: Pointer to wlan_dfs structure.
|
||||
*/
|
||||
void dfs_stop(struct wlan_dfs *dfs);
|
||||
|
||||
/**
|
||||
* dfs_update_cur_chan_flags() - Update DFS channel flag and flagext.
|
||||
* @dfs: Pointer to wlan_dfs structure.
|
||||
* @flags: New channel flags
|
||||
* @flagext: New Extended flags
|
||||
*/
|
||||
void dfs_update_cur_chan_flags(struct wlan_dfs *dfs,
|
||||
uint64_t flags,
|
||||
uint16_t flagext);
|
||||
#endif /* _DFS_H_ */
|
||||
|
|
|
|||
|
|
@ -1054,7 +1054,7 @@ int dfs_get_thresholds(struct wlan_dfs *dfs,
|
|||
|
||||
void dfs_set_current_channel(struct wlan_dfs *dfs,
|
||||
uint16_t dfs_ch_freq,
|
||||
uint32_t dfs_ch_flags,
|
||||
uint64_t dfs_ch_flags,
|
||||
uint16_t dfs_ch_flagext,
|
||||
uint8_t dfs_ch_ieee,
|
||||
uint8_t dfs_ch_vhtop_ch_freq_seg1,
|
||||
|
|
@ -1081,3 +1081,11 @@ u_int dfs_ieee80211_chan2freq(struct dfs_ieee80211_channel *chan)
|
|||
return chan == IEEE80211_CHAN_ANYC ?
|
||||
IEEE80211_CHAN_ANY : chan->dfs_ch_freq;
|
||||
}
|
||||
|
||||
void dfs_update_cur_chan_flags(struct wlan_dfs *dfs,
|
||||
uint64_t flags,
|
||||
uint16_t flagext)
|
||||
{
|
||||
dfs->dfs_curchan->dfs_ch_flags = flags;
|
||||
dfs->dfs_curchan->dfs_ch_flagext = flagext;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -241,7 +241,8 @@ int dfs_random_channel(struct wlan_dfs *dfs,
|
|||
uint8_t skip_curchan)
|
||||
{
|
||||
int chanStart, n = 0;
|
||||
uint32_t curChanFlags = 0, chan_flags, chan_flagext = 0;
|
||||
uint64_t curChanFlags = 0, chan_flags;
|
||||
uint16_t chan_flagext = 0;
|
||||
int numGChannels = 0;
|
||||
int numAChannels = 0;
|
||||
int j = 0;
|
||||
|
|
|
|||
|
|
@ -254,7 +254,7 @@ void dfs_print_nolhistory(struct wlan_dfs *dfs)
|
|||
i);
|
||||
if (IEEE80211_IS_CHAN_HISTORY_RADAR(c)) {
|
||||
DFS_PRINTK(
|
||||
"nolhistory:%d channel=%d MHz Flags=%X\n",
|
||||
"nolhistory:%d channel=%d MHz Flags=%llx\n",
|
||||
j, c->dfs_ch_freq, c->dfs_ch_flags);
|
||||
j++;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ extern struct dfs_to_mlme global_dfs_to_mlme;
|
|||
void dfs_mlme_channel_mark_radar(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t freq,
|
||||
uint8_t vhtop_ch_freq_seg2,
|
||||
uint32_t flags);
|
||||
uint64_t flags);
|
||||
|
||||
/**
|
||||
* dfs_mlme_start_rcsa() - Send RCSA to RootAP.
|
||||
|
|
@ -58,7 +58,7 @@ void dfs_mlme_mark_dfs(struct wlan_objmgr_pdev *pdev,
|
|||
uint8_t ieee,
|
||||
uint16_t freq,
|
||||
uint8_t vhtop_ch_freq_seg2,
|
||||
uint32_t flags);
|
||||
uint64_t flags);
|
||||
|
||||
/**
|
||||
* dfs_mlme_start_csa() - Sends CSA in ieeeChan
|
||||
|
|
@ -130,7 +130,7 @@ void dfs_mlme_find_any_valid_channel(struct wlan_objmgr_pdev *pdev,
|
|||
*/
|
||||
QDF_STATUS dfs_mlme_get_extchan(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint32_t *dfs_ch_flags,
|
||||
uint64_t *dfs_ch_flags,
|
||||
uint16_t *dfs_ch_flagext,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
|
|
@ -152,7 +152,7 @@ void dfs_mlme_set_no_chans_available(struct wlan_objmgr_pdev *pdev,
|
|||
*/
|
||||
int dfs_mlme_ieee2mhz(struct wlan_objmgr_pdev *pdev,
|
||||
int ieee,
|
||||
int flag);
|
||||
uint64_t flag);
|
||||
|
||||
/**
|
||||
* dfs_mlme_find_dot11_channel() - Get dot11 channel from ieee, cfreq2 and mode.
|
||||
|
|
@ -173,7 +173,7 @@ void dfs_mlme_find_dot11_channel(struct wlan_objmgr_pdev *pdev,
|
|||
uint8_t des_cfreq2,
|
||||
int mode,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint32_t *dfs_ch_flags,
|
||||
uint64_t *dfs_ch_flags,
|
||||
uint16_t *dfs_ch_flagext,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
|
|
@ -193,7 +193,7 @@ void dfs_mlme_find_dot11_channel(struct wlan_objmgr_pdev *pdev,
|
|||
*/
|
||||
void dfs_mlme_get_dfs_ch_channels(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint32_t *dfs_ch_flags,
|
||||
uint64_t *dfs_ch_flags,
|
||||
uint16_t *dfs_ch_flagext,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
|
|
@ -239,6 +239,6 @@ void dfs_mlme_clist_update(struct wlan_objmgr_pdev *pdev,
|
|||
int dfs_mlme_get_cac_timeout(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t dfs_ch_freq,
|
||||
uint8_t dfs_ch_vhtop_ch_freq_seg2,
|
||||
uint32_t dfs_ch_flags);
|
||||
uint64_t dfs_ch_flags);
|
||||
|
||||
#endif /* _WLAN_DFS_MLME_API_H_ */
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ extern struct dfs_to_mlme global_dfs_to_mlme;
|
|||
*/
|
||||
QDF_STATUS tgt_dfs_set_current_channel(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t dfs_ch_freq,
|
||||
uint32_t dfs_ch_flags,
|
||||
uint64_t dfs_ch_flags,
|
||||
uint16_t dfs_ch_flagext,
|
||||
uint8_t dfs_ch_ieee,
|
||||
uint8_t dfs_ch_vhtop_ch_freq_seg1,
|
||||
|
|
|
|||
|
|
@ -70,13 +70,13 @@ struct dfs_to_mlme {
|
|||
QDF_STATUS (*dfs_channel_mark_radar)(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t freq,
|
||||
uint8_t vhtop_ch_freq_seg2,
|
||||
uint32_t flags);
|
||||
uint64_t flags);
|
||||
QDF_STATUS (*dfs_start_rcsa)(struct wlan_objmgr_pdev *pdev);
|
||||
QDF_STATUS (*mlme_mark_dfs)(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee,
|
||||
uint16_t freq,
|
||||
uint8_t vhtop_ch_freq_seg2,
|
||||
uint32_t flags);
|
||||
uint64_t flags);
|
||||
QDF_STATUS (*mlme_start_csa)(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieeeChan);
|
||||
QDF_STATUS (*mlme_proc_cac)(struct wlan_objmgr_pdev *pdev);
|
||||
|
|
@ -98,7 +98,7 @@ struct dfs_to_mlme {
|
|||
int *ret_val);
|
||||
QDF_STATUS (*mlme_get_extchan)(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint32_t *dfs_ch_flags,
|
||||
uint64_t *dfs_ch_flags,
|
||||
uint16_t *dfs_ch_flagext,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
|
|
@ -107,14 +107,14 @@ struct dfs_to_mlme {
|
|||
int val);
|
||||
QDF_STATUS (*mlme_ieee2mhz)(struct wlan_objmgr_pdev *pdev,
|
||||
int ieee,
|
||||
int flag,
|
||||
uint64_t flag,
|
||||
int *freq);
|
||||
QDF_STATUS (*mlme_find_dot11_channel)(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee,
|
||||
uint8_t des_cfreq2,
|
||||
int mode,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint32_t *dfs_ch_flags,
|
||||
uint64_t *dfs_ch_flags,
|
||||
uint16_t *dfs_ch_flagext,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
|
|
@ -122,14 +122,14 @@ struct dfs_to_mlme {
|
|||
|
||||
QDF_STATUS (*mlme_get_dfs_ch_channels)(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint32_t *dfs_ch_flags,
|
||||
uint64_t *dfs_ch_flags,
|
||||
uint16_t *dfs_ch_flagext,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg2,
|
||||
int index);
|
||||
QDF_STATUS (*mlme_dfs_ch_flags_ext)(struct wlan_objmgr_pdev *pdev,
|
||||
uint32_t *flag_ext);
|
||||
uint16_t *flag_ext);
|
||||
QDF_STATUS (*mlme_channel_change_by_precac)(
|
||||
struct wlan_objmgr_pdev *pdev);
|
||||
QDF_STATUS (*mlme_nol_timeout_notification)(
|
||||
|
|
@ -140,7 +140,7 @@ struct dfs_to_mlme {
|
|||
QDF_STATUS (*mlme_get_cac_timeout)(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t dfs_ch_freq,
|
||||
uint8_t c_vhtop_ch_freq_seg2,
|
||||
uint32_t dfs_ch_flags,
|
||||
uint64_t dfs_ch_flags,
|
||||
int *cac_timeout);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -427,4 +427,13 @@ uint8_t utils_dfs_freq_to_chan(uint32_t freq);
|
|||
*/
|
||||
uint32_t utils_dfs_chan_to_freq(uint8_t chan);
|
||||
|
||||
/**
|
||||
* utils_dfs_update_cur_chan_flags() - Update DFS channel flag and flagext.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @flags: New channel flags
|
||||
* @flagext: New Extended flags
|
||||
*/
|
||||
QDF_STATUS utils_dfs_update_cur_chan_flags(struct wlan_objmgr_pdev *pdev,
|
||||
uint64_t flags,
|
||||
uint16_t flagext);
|
||||
#endif /* _WLAN_DFS_UTILS_API_H_ */
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
void dfs_mlme_channel_mark_radar(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t freq,
|
||||
uint8_t vhtop_ch_freq_seg2,
|
||||
uint32_t flags)
|
||||
uint64_t flags)
|
||||
{
|
||||
if (global_dfs_to_mlme.dfs_channel_mark_radar != NULL)
|
||||
global_dfs_to_mlme.dfs_channel_mark_radar(pdev,
|
||||
|
|
@ -53,7 +53,7 @@ void dfs_mlme_mark_dfs(struct wlan_objmgr_pdev *pdev,
|
|||
uint8_t ieee,
|
||||
uint16_t freq,
|
||||
uint8_t vhtop_ch_freq_seg2,
|
||||
uint32_t flags)
|
||||
uint64_t flags)
|
||||
{
|
||||
if (global_dfs_to_mlme.mlme_mark_dfs != NULL)
|
||||
global_dfs_to_mlme.mlme_mark_dfs(pdev,
|
||||
|
|
@ -82,7 +82,7 @@ void dfs_mlme_mark_dfs(struct wlan_objmgr_pdev *pdev,
|
|||
uint8_t ieee,
|
||||
uint16_t freq,
|
||||
uint8_t vhtop_ch_freq_seg2,
|
||||
uint32_t flags)
|
||||
uint64_t flags)
|
||||
{
|
||||
if (!pdev) {
|
||||
DFS_PRINTK("%s: null pdev\n", __func__);
|
||||
|
|
@ -174,7 +174,7 @@ void dfs_mlme_find_any_valid_channel(struct wlan_objmgr_pdev *pdev,
|
|||
|
||||
QDF_STATUS dfs_mlme_get_extchan(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint32_t *dfs_ch_flags,
|
||||
uint64_t *dfs_ch_flags,
|
||||
uint16_t *dfs_ch_flagext,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
|
|
@ -201,7 +201,7 @@ void dfs_mlme_set_no_chans_available(struct wlan_objmgr_pdev *pdev,
|
|||
val);
|
||||
}
|
||||
|
||||
int dfs_mlme_ieee2mhz(struct wlan_objmgr_pdev *pdev, int ieee, int flag)
|
||||
int dfs_mlme_ieee2mhz(struct wlan_objmgr_pdev *pdev, int ieee, uint64_t flag)
|
||||
{
|
||||
int freq = 0;
|
||||
|
||||
|
|
@ -219,7 +219,7 @@ void dfs_mlme_find_dot11_channel(struct wlan_objmgr_pdev *pdev,
|
|||
uint8_t des_cfreq2,
|
||||
int mode,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint32_t *dfs_ch_flags,
|
||||
uint64_t *dfs_ch_flags,
|
||||
uint16_t *dfs_ch_flagext,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
|
|
@ -240,7 +240,7 @@ void dfs_mlme_find_dot11_channel(struct wlan_objmgr_pdev *pdev,
|
|||
|
||||
void dfs_mlme_get_dfs_ch_channels(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint32_t *dfs_ch_flags,
|
||||
uint64_t *dfs_ch_flags,
|
||||
uint16_t *dfs_ch_flagext,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
|
|
@ -260,7 +260,7 @@ void dfs_mlme_get_dfs_ch_channels(struct wlan_objmgr_pdev *pdev,
|
|||
|
||||
uint32_t dfs_mlme_dfs_ch_flags_ext(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
uint32_t flag_ext = 0;
|
||||
uint16_t flag_ext = 0;
|
||||
|
||||
if (global_dfs_to_mlme.mlme_dfs_ch_flags_ext != NULL)
|
||||
global_dfs_to_mlme.mlme_dfs_ch_flags_ext(pdev,
|
||||
|
|
@ -296,7 +296,7 @@ void dfs_mlme_clist_update(struct wlan_objmgr_pdev *pdev,
|
|||
int dfs_mlme_get_cac_timeout(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t dfs_ch_freq,
|
||||
uint8_t dfs_ch_vhtop_ch_freq_seg2,
|
||||
uint32_t dfs_ch_flags)
|
||||
uint64_t dfs_ch_flags)
|
||||
{
|
||||
int cac_timeout = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ wlan_psoc_get_dfs_txops(struct wlan_objmgr_psoc *psoc)
|
|||
|
||||
QDF_STATUS tgt_dfs_set_current_channel(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t dfs_ch_freq,
|
||||
uint32_t dfs_ch_flags,
|
||||
uint64_t dfs_ch_flags,
|
||||
uint16_t dfs_ch_flagext,
|
||||
uint8_t dfs_ch_ieee,
|
||||
uint8_t dfs_ch_vhtop_ch_freq_seg1,
|
||||
|
|
|
|||
|
|
@ -392,6 +392,21 @@ QDF_STATUS utils_dfs_get_nol_chfreq_and_chwidth(struct wlan_objmgr_pdev *pdev,
|
|||
}
|
||||
EXPORT_SYMBOL(utils_dfs_get_nol_chfreq_and_chwidth);
|
||||
|
||||
QDF_STATUS utils_dfs_update_cur_chan_flags(struct wlan_objmgr_pdev *pdev,
|
||||
uint64_t flags,
|
||||
uint16_t flagext)
|
||||
{
|
||||
struct wlan_dfs *dfs;
|
||||
|
||||
dfs = global_dfs_to_mlme.pdev_get_comp_private_obj(pdev);
|
||||
if (dfs == NULL)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
dfs_update_cur_chan_flags(dfs, flags, flagext);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static void utils_dfs_get_max_phy_mode(struct wlan_objmgr_pdev *pdev,
|
||||
uint32_t *phy_mode)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -846,7 +846,7 @@ struct wlan_lmac_if_dfs_rx_ops {
|
|||
int *precac_timeout);
|
||||
QDF_STATUS (*dfs_set_current_channel)(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t ic_freq,
|
||||
uint32_t ic_flags,
|
||||
uint64_t ic_flags,
|
||||
uint16_t ic_flagext,
|
||||
uint8_t ic_ieee,
|
||||
uint8_t ic_vhtop_ch_freq_seg1,
|
||||
|
|
|
|||
Loading…
Reference in a new issue