diff options
author | Yoni Divinsky <yoni.divinsky@ti.com> | 2012-06-20 08:39:13 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-06-20 11:35:22 -0400 |
commit | 00e96decfd0b927f975c98340a5982c5039eeaae (patch) | |
tree | aec86580944dd4a5bc22238fe4a77bb3d8acc777 /net/mac80211/mlme.c | |
parent | 50ae34a254ca5192e46503884ed0edd60795fe87 (diff) |
mac80211: save wmm_acm per sdata
Save and configure the wmm_acm per sdata, rather than
per hardware.
If wmm_acm is saved per hardware when running two
interfaces simultaneously on the same hardware one
interface's wmm policy will be affected by the other
interface.
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 94d0183ce224..2b450f541993 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -1141,7 +1141,7 @@ static void ieee80211_sta_wmm_params(struct ieee80211_local *local, | |||
1141 | 1141 | ||
1142 | memset(¶ms, 0, sizeof(params)); | 1142 | memset(¶ms, 0, sizeof(params)); |
1143 | 1143 | ||
1144 | local->wmm_acm = 0; | 1144 | sdata->wmm_acm = 0; |
1145 | for (; left >= 4; left -= 4, pos += 4) { | 1145 | for (; left >= 4; left -= 4, pos += 4) { |
1146 | int aci = (pos[0] >> 5) & 0x03; | 1146 | int aci = (pos[0] >> 5) & 0x03; |
1147 | int acm = (pos[0] >> 4) & 0x01; | 1147 | int acm = (pos[0] >> 4) & 0x01; |
@@ -1152,21 +1152,21 @@ static void ieee80211_sta_wmm_params(struct ieee80211_local *local, | |||
1152 | case 1: /* AC_BK */ | 1152 | case 1: /* AC_BK */ |
1153 | queue = 3; | 1153 | queue = 3; |
1154 | if (acm) | 1154 | if (acm) |
1155 | local->wmm_acm |= BIT(1) | BIT(2); /* BK/- */ | 1155 | sdata->wmm_acm |= BIT(1) | BIT(2); /* BK/- */ |
1156 | if (uapsd_queues & IEEE80211_WMM_IE_STA_QOSINFO_AC_BK) | 1156 | if (uapsd_queues & IEEE80211_WMM_IE_STA_QOSINFO_AC_BK) |
1157 | uapsd = true; | 1157 | uapsd = true; |
1158 | break; | 1158 | break; |
1159 | case 2: /* AC_VI */ | 1159 | case 2: /* AC_VI */ |
1160 | queue = 1; | 1160 | queue = 1; |
1161 | if (acm) | 1161 | if (acm) |
1162 | local->wmm_acm |= BIT(4) | BIT(5); /* CL/VI */ | 1162 | sdata->wmm_acm |= BIT(4) | BIT(5); /* CL/VI */ |
1163 | if (uapsd_queues & IEEE80211_WMM_IE_STA_QOSINFO_AC_VI) | 1163 | if (uapsd_queues & IEEE80211_WMM_IE_STA_QOSINFO_AC_VI) |
1164 | uapsd = true; | 1164 | uapsd = true; |
1165 | break; | 1165 | break; |
1166 | case 3: /* AC_VO */ | 1166 | case 3: /* AC_VO */ |
1167 | queue = 0; | 1167 | queue = 0; |
1168 | if (acm) | 1168 | if (acm) |
1169 | local->wmm_acm |= BIT(6) | BIT(7); /* VO/NC */ | 1169 | sdata->wmm_acm |= BIT(6) | BIT(7); /* VO/NC */ |
1170 | if (uapsd_queues & IEEE80211_WMM_IE_STA_QOSINFO_AC_VO) | 1170 | if (uapsd_queues & IEEE80211_WMM_IE_STA_QOSINFO_AC_VO) |
1171 | uapsd = true; | 1171 | uapsd = true; |
1172 | break; | 1172 | break; |
@@ -1174,7 +1174,7 @@ static void ieee80211_sta_wmm_params(struct ieee80211_local *local, | |||
1174 | default: | 1174 | default: |
1175 | queue = 2; | 1175 | queue = 2; |
1176 | if (acm) | 1176 | if (acm) |
1177 | local->wmm_acm |= BIT(0) | BIT(3); /* BE/EE */ | 1177 | sdata->wmm_acm |= BIT(0) | BIT(3); /* BE/EE */ |
1178 | if (uapsd_queues & IEEE80211_WMM_IE_STA_QOSINFO_AC_BE) | 1178 | if (uapsd_queues & IEEE80211_WMM_IE_STA_QOSINFO_AC_BE) |
1179 | uapsd = true; | 1179 | uapsd = true; |
1180 | break; | 1180 | break; |