diff options
| -rw-r--r-- | drivers/net/wireless/p54/p54.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/p54/p54common.c | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/p54/p54.h b/drivers/net/wireless/p54/p54.h index c6f27b9022f9..cac9a515b82d 100644 --- a/drivers/net/wireless/p54/p54.h +++ b/drivers/net/wireless/p54/p54.h | |||
| @@ -52,6 +52,7 @@ struct p54_common { | |||
| 52 | int (*open)(struct ieee80211_hw *dev); | 52 | int (*open)(struct ieee80211_hw *dev); |
| 53 | void (*stop)(struct ieee80211_hw *dev); | 53 | void (*stop)(struct ieee80211_hw *dev); |
| 54 | int mode; | 54 | int mode; |
| 55 | struct mutex conf_mutex; | ||
| 55 | u8 mac_addr[ETH_ALEN]; | 56 | u8 mac_addr[ETH_ALEN]; |
| 56 | u8 bssid[ETH_ALEN]; | 57 | u8 bssid[ETH_ALEN]; |
| 57 | struct pda_iq_autocal_entry *iq_autocal; | 58 | struct pda_iq_autocal_entry *iq_autocal; |
diff --git a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c index ffaf7a6b6810..4da89ea9b561 100644 --- a/drivers/net/wireless/p54/p54common.c +++ b/drivers/net/wireless/p54/p54common.c | |||
| @@ -886,9 +886,12 @@ static void p54_remove_interface(struct ieee80211_hw *dev, | |||
| 886 | static int p54_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) | 886 | static int p54_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) |
| 887 | { | 887 | { |
| 888 | int ret; | 888 | int ret; |
| 889 | struct p54_common *priv = dev->priv; | ||
| 889 | 890 | ||
| 891 | mutex_lock(&priv->conf_mutex); | ||
| 890 | ret = p54_set_freq(dev, cpu_to_le16(conf->channel->center_freq)); | 892 | ret = p54_set_freq(dev, cpu_to_le16(conf->channel->center_freq)); |
| 891 | p54_set_vdcf(dev); | 893 | p54_set_vdcf(dev); |
| 894 | mutex_unlock(&priv->conf_mutex); | ||
| 892 | return ret; | 895 | return ret; |
| 893 | } | 896 | } |
| 894 | 897 | ||
| @@ -898,10 +901,12 @@ static int p54_config_interface(struct ieee80211_hw *dev, | |||
| 898 | { | 901 | { |
| 899 | struct p54_common *priv = dev->priv; | 902 | struct p54_common *priv = dev->priv; |
| 900 | 903 | ||
| 904 | mutex_lock(&priv->conf_mutex); | ||
| 901 | p54_set_filter(dev, 0, priv->mac_addr, conf->bssid, 0, 1, 0, 0xF642); | 905 | p54_set_filter(dev, 0, priv->mac_addr, conf->bssid, 0, 1, 0, 0xF642); |
| 902 | p54_set_filter(dev, 0, priv->mac_addr, conf->bssid, 2, 0, 0, 0); | 906 | p54_set_filter(dev, 0, priv->mac_addr, conf->bssid, 2, 0, 0, 0); |
| 903 | p54_set_leds(dev, 1, !is_multicast_ether_addr(conf->bssid), 0); | 907 | p54_set_leds(dev, 1, !is_multicast_ether_addr(conf->bssid), 0); |
| 904 | memcpy(priv->bssid, conf->bssid, ETH_ALEN); | 908 | memcpy(priv->bssid, conf->bssid, ETH_ALEN); |
| 909 | mutex_unlock(&priv->conf_mutex); | ||
| 905 | return 0; | 910 | return 0; |
| 906 | } | 911 | } |
| 907 | 912 | ||
| @@ -1009,6 +1014,7 @@ struct ieee80211_hw *p54_init_common(size_t priv_data_len) | |||
| 1009 | } | 1014 | } |
| 1010 | 1015 | ||
| 1011 | p54_init_vdcf(dev); | 1016 | p54_init_vdcf(dev); |
| 1017 | mutex_init(&priv->conf_mutex); | ||
| 1012 | 1018 | ||
| 1013 | return dev; | 1019 | return dev; |
| 1014 | } | 1020 | } |
