diff options
Diffstat (limited to 'drivers/net/wireless/rtl818x')
-rw-r--r-- | drivers/net/wireless/rtl818x/rtl8187_dev.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/net/wireless/rtl818x/rtl8187_dev.c b/drivers/net/wireless/rtl818x/rtl8187_dev.c index 9679b29e1c49..2017ccc00145 100644 --- a/drivers/net/wireless/rtl818x/rtl8187_dev.c +++ b/drivers/net/wireless/rtl818x/rtl8187_dev.c | |||
@@ -871,6 +871,9 @@ static int rtl8187b_init_hw(struct ieee80211_hw *dev) | |||
871 | priv->aifsn[3] = 3; /* AIFSN[AC_BE] */ | 871 | priv->aifsn[3] = 3; /* AIFSN[AC_BE] */ |
872 | rtl818x_iowrite8(priv, &priv->map->ACM_CONTROL, 0); | 872 | rtl818x_iowrite8(priv, &priv->map->ACM_CONTROL, 0); |
873 | 873 | ||
874 | /* ENEDCA flag must always be set, transmit issues? */ | ||
875 | rtl818x_iowrite8(priv, &priv->map->MSR, RTL818X_MSR_ENEDCA); | ||
876 | |||
874 | return 0; | 877 | return 0; |
875 | } | 878 | } |
876 | 879 | ||
@@ -1176,13 +1179,16 @@ static void rtl8187_bss_info_changed(struct ieee80211_hw *dev, | |||
1176 | rtl818x_iowrite8(priv, &priv->map->BSSID[i], | 1179 | rtl818x_iowrite8(priv, &priv->map->BSSID[i], |
1177 | info->bssid[i]); | 1180 | info->bssid[i]); |
1178 | 1181 | ||
1182 | if (priv->is_rtl8187b) | ||
1183 | reg = RTL818X_MSR_ENEDCA; | ||
1184 | else | ||
1185 | reg = 0; | ||
1186 | |||
1179 | if (is_valid_ether_addr(info->bssid)) { | 1187 | if (is_valid_ether_addr(info->bssid)) { |
1180 | reg = RTL818X_MSR_INFRA; | 1188 | reg |= RTL818X_MSR_INFRA; |
1181 | if (priv->is_rtl8187b) | ||
1182 | reg |= RTL818X_MSR_ENEDCA; | ||
1183 | rtl818x_iowrite8(priv, &priv->map->MSR, reg); | 1189 | rtl818x_iowrite8(priv, &priv->map->MSR, reg); |
1184 | } else { | 1190 | } else { |
1185 | reg = RTL818X_MSR_NO_LINK; | 1191 | reg |= RTL818X_MSR_NO_LINK; |
1186 | rtl818x_iowrite8(priv, &priv->map->MSR, reg); | 1192 | rtl818x_iowrite8(priv, &priv->map->MSR, reg); |
1187 | } | 1193 | } |
1188 | 1194 | ||