diff options
Diffstat (limited to 'drivers/net/wireless/mac80211_hwsim.c')
| -rw-r--r-- | drivers/net/wireless/mac80211_hwsim.c | 27 | 
1 files changed, 14 insertions, 13 deletions
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index 523ad55a288..4b9e730d2c8 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c @@ -37,7 +37,8 @@ MODULE_AUTHOR("Jouni Malinen");  MODULE_DESCRIPTION("Software simulator of 802.11 radio(s) for mac80211");  MODULE_LICENSE("GPL"); -int wmediumd_pid; +static u32 wmediumd_pid; +  static int radios = 2;  module_param(radios, int, 0444);  MODULE_PARM_DESC(radios, "Number of simulated radios"); @@ -665,7 +666,7 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw, struct sk_buff *skb)  {  	bool ack;  	struct ieee80211_tx_info *txi; -	int _pid; +	u32 _pid;  	mac80211_hwsim_monitor_rx(hw, skb); @@ -676,7 +677,7 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw, struct sk_buff *skb)  	}  	/* wmediumd mode check */ -	_pid = wmediumd_pid; +	_pid = ACCESS_ONCE(wmediumd_pid);  	if (_pid)  		return mac80211_hwsim_tx_frame_nl(hw, skb, _pid); @@ -707,7 +708,7 @@ static int mac80211_hwsim_start(struct ieee80211_hw *hw)  {  	struct mac80211_hwsim_data *data = hw->priv;  	wiphy_debug(hw->wiphy, "%s\n", __func__); -	data->started = 1; +	data->started = true;  	return 0;  } @@ -715,7 +716,7 @@ static int mac80211_hwsim_start(struct ieee80211_hw *hw)  static void mac80211_hwsim_stop(struct ieee80211_hw *hw)  {  	struct mac80211_hwsim_data *data = hw->priv; -	data->started = 0; +	data->started = false;  	del_timer(&data->beacon_timer);  	wiphy_debug(hw->wiphy, "%s\n", __func__);  } @@ -764,7 +765,7 @@ static void mac80211_hwsim_beacon_tx(void *arg, u8 *mac,  	struct ieee80211_hw *hw = arg;  	struct sk_buff *skb;  	struct ieee80211_tx_info *info; -	int _pid; +	u32 _pid;  	hwsim_check_magic(vif); @@ -781,7 +782,7 @@ static void mac80211_hwsim_beacon_tx(void *arg, u8 *mac,  	mac80211_hwsim_monitor_rx(hw, skb);  	/* wmediumd mode check */ -	_pid = wmediumd_pid; +	_pid = ACCESS_ONCE(wmediumd_pid);  	if (_pid)  		return mac80211_hwsim_tx_frame_nl(hw, skb, _pid); @@ -1254,7 +1255,7 @@ static void hwsim_send_ps_poll(void *dat, u8 *mac, struct ieee80211_vif *vif)  	struct hwsim_vif_priv *vp = (void *)vif->drv_priv;  	struct sk_buff *skb;  	struct ieee80211_pspoll *pspoll; -	int _pid; +	u32 _pid;  	if (!vp->assoc)  		return; @@ -1275,7 +1276,7 @@ static void hwsim_send_ps_poll(void *dat, u8 *mac, struct ieee80211_vif *vif)  	memcpy(pspoll->ta, mac, ETH_ALEN);  	/* wmediumd mode check */ -	_pid = wmediumd_pid; +	_pid = ACCESS_ONCE(wmediumd_pid);  	if (_pid)  		return mac80211_hwsim_tx_frame_nl(data->hw, skb, _pid); @@ -1292,7 +1293,7 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac,  	struct hwsim_vif_priv *vp = (void *)vif->drv_priv;  	struct sk_buff *skb;  	struct ieee80211_hdr *hdr; -	int _pid; +	u32 _pid;  	if (!vp->assoc)  		return; @@ -1314,7 +1315,7 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac,  	memcpy(hdr->addr3, vp->bssid, ETH_ALEN);  	/* wmediumd mode check */ -	_pid = wmediumd_pid; +	_pid = ACCESS_ONCE(wmediumd_pid);  	if (_pid)  		return mac80211_hwsim_tx_frame_nl(data->hw, skb, _pid); @@ -1634,8 +1635,6 @@ static int hwsim_init_netlink(void)  	int rc;  	printk(KERN_INFO "mac80211_hwsim: initializing netlink\n"); -	wmediumd_pid = 0; -  	rc = genl_register_family_with_ops(&hwsim_genl_family,  		hwsim_ops, ARRAY_SIZE(hwsim_ops));  	if (rc) @@ -1748,6 +1747,8 @@ static int __init init_mac80211_hwsim(void)  			    IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS |  			    IEEE80211_HW_AMPDU_AGGREGATION; +		hw->wiphy->flags |= WIPHY_FLAG_SUPPORTS_TDLS; +  		/* ask mac80211 to reserve space for magic */  		hw->vif_data_size = sizeof(struct hwsim_vif_priv);  		hw->sta_data_size = sizeof(struct hwsim_sta_priv);  |