mirror of https://gitee.com/openkylin/linux.git
rtw88: add ieee80211_ops::change_interface
Sometimes mac80211 will just ask driver to change the interface instead of to remove and then add a new one. And for driver, to change the interface is just simply to remove and add a new one but change the type of it. Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/20200717064937.27966-6-yhchuang@realtek.com
This commit is contained in:
parent
3f194bd4ca
commit
40b788d158
|
@ -231,6 +231,23 @@ static void rtw_ops_remove_interface(struct ieee80211_hw *hw,
|
|||
mutex_unlock(&rtwdev->mutex);
|
||||
}
|
||||
|
||||
static int rtw_ops_change_interface(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
enum nl80211_iftype type, bool p2p)
|
||||
{
|
||||
struct rtw_dev *rtwdev = hw->priv;
|
||||
|
||||
rtw_info(rtwdev, "change vif %pM (%d)->(%d), p2p (%d)->(%d)\n",
|
||||
vif->addr, vif->type, type, vif->p2p, p2p);
|
||||
|
||||
rtw_ops_remove_interface(hw, vif);
|
||||
|
||||
vif->type = type;
|
||||
vif->p2p = p2p;
|
||||
|
||||
return rtw_ops_add_interface(hw, vif);
|
||||
}
|
||||
|
||||
static void rtw_ops_configure_filter(struct ieee80211_hw *hw,
|
||||
unsigned int changed_flags,
|
||||
unsigned int *new_flags,
|
||||
|
@ -827,6 +844,7 @@ const struct ieee80211_ops rtw_ops = {
|
|||
.config = rtw_ops_config,
|
||||
.add_interface = rtw_ops_add_interface,
|
||||
.remove_interface = rtw_ops_remove_interface,
|
||||
.change_interface = rtw_ops_change_interface,
|
||||
.configure_filter = rtw_ops_configure_filter,
|
||||
.bss_info_changed = rtw_ops_bss_info_changed,
|
||||
.conf_tx = rtw_ops_conf_tx,
|
||||
|
|
Loading…
Reference in New Issue