diff options
-rw-r--r-- | drivers/net/wireless/rtl818x/rtl8180_dev.c | 12 | ||||
-rw-r--r-- | drivers/net/wireless/rtl818x/rtl8180_rtl8225.c | 14 | ||||
-rw-r--r-- | drivers/net/wireless/rtl818x/rtl818x.h | 1 |
3 files changed, 24 insertions, 3 deletions
diff --git a/drivers/net/wireless/rtl818x/rtl8180_dev.c b/drivers/net/wireless/rtl818x/rtl8180_dev.c index 6c226c024dd9..5f887fb137a9 100644 --- a/drivers/net/wireless/rtl818x/rtl8180_dev.c +++ b/drivers/net/wireless/rtl818x/rtl8180_dev.c | |||
@@ -720,6 +720,17 @@ static int rtl8180_config_interface(struct ieee80211_hw *dev, | |||
720 | return 0; | 720 | return 0; |
721 | } | 721 | } |
722 | 722 | ||
723 | static void rtl8180_bss_info_changed(struct ieee80211_hw *dev, | ||
724 | struct ieee80211_vif *vif, | ||
725 | struct ieee80211_bss_conf *info, | ||
726 | u32 changed) | ||
727 | { | ||
728 | struct rtl8180_priv *priv = dev->priv; | ||
729 | |||
730 | if (changed & BSS_CHANGED_ERP_SLOT && priv->rf->conf_erp) | ||
731 | priv->rf->conf_erp(dev, info); | ||
732 | } | ||
733 | |||
723 | static void rtl8180_configure_filter(struct ieee80211_hw *dev, | 734 | static void rtl8180_configure_filter(struct ieee80211_hw *dev, |
724 | unsigned int changed_flags, | 735 | unsigned int changed_flags, |
725 | unsigned int *total_flags, | 736 | unsigned int *total_flags, |
@@ -760,6 +771,7 @@ static const struct ieee80211_ops rtl8180_ops = { | |||
760 | .remove_interface = rtl8180_remove_interface, | 771 | .remove_interface = rtl8180_remove_interface, |
761 | .config = rtl8180_config, | 772 | .config = rtl8180_config, |
762 | .config_interface = rtl8180_config_interface, | 773 | .config_interface = rtl8180_config_interface, |
774 | .bss_info_changed = rtl8180_bss_info_changed, | ||
763 | .configure_filter = rtl8180_configure_filter, | 775 | .configure_filter = rtl8180_configure_filter, |
764 | }; | 776 | }; |
765 | 777 | ||
diff --git a/drivers/net/wireless/rtl818x/rtl8180_rtl8225.c b/drivers/net/wireless/rtl818x/rtl8180_rtl8225.c index cd22781728a9..4d2be0d9672b 100644 --- a/drivers/net/wireless/rtl818x/rtl8180_rtl8225.c +++ b/drivers/net/wireless/rtl818x/rtl8180_rtl8225.c | |||
@@ -725,8 +725,14 @@ static void rtl8225_rf_set_channel(struct ieee80211_hw *dev, | |||
725 | 725 | ||
726 | rtl8225_write(dev, 0x7, rtl8225_chan[chan - 1]); | 726 | rtl8225_write(dev, 0x7, rtl8225_chan[chan - 1]); |
727 | msleep(10); | 727 | msleep(10); |
728 | } | ||
729 | |||
730 | static void rtl8225_rf_conf_erp(struct ieee80211_hw *dev, | ||
731 | struct ieee80211_bss_conf *info) | ||
732 | { | ||
733 | struct rtl8180_priv *priv = dev->priv; | ||
728 | 734 | ||
729 | if (conf->flags & IEEE80211_CONF_SHORT_SLOT_TIME) { | 735 | if (info->use_short_slot) { |
730 | rtl818x_iowrite8(priv, &priv->map->SLOT, 0x9); | 736 | rtl818x_iowrite8(priv, &priv->map->SLOT, 0x9); |
731 | rtl818x_iowrite8(priv, &priv->map->SIFS, 0x22); | 737 | rtl818x_iowrite8(priv, &priv->map->SIFS, 0x22); |
732 | rtl818x_iowrite8(priv, &priv->map->DIFS, 0x14); | 738 | rtl818x_iowrite8(priv, &priv->map->DIFS, 0x14); |
@@ -745,14 +751,16 @@ static const struct rtl818x_rf_ops rtl8225_ops = { | |||
745 | .name = "rtl8225", | 751 | .name = "rtl8225", |
746 | .init = rtl8225_rf_init, | 752 | .init = rtl8225_rf_init, |
747 | .stop = rtl8225_rf_stop, | 753 | .stop = rtl8225_rf_stop, |
748 | .set_chan = rtl8225_rf_set_channel | 754 | .set_chan = rtl8225_rf_set_channel, |
755 | .conf_erp = rtl8225_rf_conf_erp, | ||
749 | }; | 756 | }; |
750 | 757 | ||
751 | static const struct rtl818x_rf_ops rtl8225z2_ops = { | 758 | static const struct rtl818x_rf_ops rtl8225z2_ops = { |
752 | .name = "rtl8225z2", | 759 | .name = "rtl8225z2", |
753 | .init = rtl8225z2_rf_init, | 760 | .init = rtl8225z2_rf_init, |
754 | .stop = rtl8225_rf_stop, | 761 | .stop = rtl8225_rf_stop, |
755 | .set_chan = rtl8225_rf_set_channel | 762 | .set_chan = rtl8225_rf_set_channel, |
763 | .conf_erp = rtl8225_rf_conf_erp, | ||
756 | }; | 764 | }; |
757 | 765 | ||
758 | const struct rtl818x_rf_ops * rtl8180_detect_rf(struct ieee80211_hw *dev) | 766 | const struct rtl818x_rf_ops * rtl8180_detect_rf(struct ieee80211_hw *dev) |
diff --git a/drivers/net/wireless/rtl818x/rtl818x.h b/drivers/net/wireless/rtl818x/rtl818x.h index 3538b15211b1..34a5555cc19c 100644 --- a/drivers/net/wireless/rtl818x/rtl818x.h +++ b/drivers/net/wireless/rtl818x/rtl818x.h | |||
@@ -191,6 +191,7 @@ struct rtl818x_rf_ops { | |||
191 | void (*init)(struct ieee80211_hw *); | 191 | void (*init)(struct ieee80211_hw *); |
192 | void (*stop)(struct ieee80211_hw *); | 192 | void (*stop)(struct ieee80211_hw *); |
193 | void (*set_chan)(struct ieee80211_hw *, struct ieee80211_conf *); | 193 | void (*set_chan)(struct ieee80211_hw *, struct ieee80211_conf *); |
194 | void (*conf_erp)(struct ieee80211_hw *, struct ieee80211_bss_conf *); | ||
194 | }; | 195 | }; |
195 | 196 | ||
196 | /* Tx/Rx flags are common between RTL818X chips */ | 197 | /* Tx/Rx flags are common between RTL818X chips */ |