aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/mlme.c
diff options
context:
space:
mode:
authorYoni Divinsky <yoni.divinsky@ti.com>2012-06-20 08:39:13 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-06-20 11:35:22 -0400
commit00e96decfd0b927f975c98340a5982c5039eeaae (patch)
treeaec86580944dd4a5bc22238fe4a77bb3d8acc777 /net/mac80211/mlme.c
parent50ae34a254ca5192e46503884ed0edd60795fe87 (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.c10
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(&params, 0, sizeof(params)); 1142 memset(&params, 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;