diff options
-rw-r--r-- | include/linux/nl80211.h | 22 | ||||
-rw-r--r-- | include/net/cfg80211.h | 4 | ||||
-rw-r--r-- | include/net/mac80211.h | 2 | ||||
-rw-r--r-- | net/mac80211/cfg.c | 10 | ||||
-rw-r--r-- | net/mac80211/driver-ops.h | 6 | ||||
-rw-r--r-- | net/mac80211/driver-trace.h | 13 | ||||
-rw-r--r-- | net/wireless/nl80211.c | 7 |
7 files changed, 37 insertions, 27 deletions
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h index e474f6e780cc..1f6e44680fb7 100644 --- a/include/linux/nl80211.h +++ b/include/linux/nl80211.h | |||
@@ -2223,7 +2223,7 @@ enum nl80211_mesh_setup_params { | |||
2223 | /** | 2223 | /** |
2224 | * enum nl80211_txq_attr - TX queue parameter attributes | 2224 | * enum nl80211_txq_attr - TX queue parameter attributes |
2225 | * @__NL80211_TXQ_ATTR_INVALID: Attribute number 0 is reserved | 2225 | * @__NL80211_TXQ_ATTR_INVALID: Attribute number 0 is reserved |
2226 | * @NL80211_TXQ_ATTR_QUEUE: TX queue identifier (NL80211_TXQ_Q_*) | 2226 | * @NL80211_TXQ_ATTR_AC: AC identifier (NL80211_AC_*) |
2227 | * @NL80211_TXQ_ATTR_TXOP: Maximum burst time in units of 32 usecs, 0 meaning | 2227 | * @NL80211_TXQ_ATTR_TXOP: Maximum burst time in units of 32 usecs, 0 meaning |
2228 | * disabled | 2228 | * disabled |
2229 | * @NL80211_TXQ_ATTR_CWMIN: Minimum contention window [a value of the form | 2229 | * @NL80211_TXQ_ATTR_CWMIN: Minimum contention window [a value of the form |
@@ -2236,7 +2236,7 @@ enum nl80211_mesh_setup_params { | |||
2236 | */ | 2236 | */ |
2237 | enum nl80211_txq_attr { | 2237 | enum nl80211_txq_attr { |
2238 | __NL80211_TXQ_ATTR_INVALID, | 2238 | __NL80211_TXQ_ATTR_INVALID, |
2239 | NL80211_TXQ_ATTR_QUEUE, | 2239 | NL80211_TXQ_ATTR_AC, |
2240 | NL80211_TXQ_ATTR_TXOP, | 2240 | NL80211_TXQ_ATTR_TXOP, |
2241 | NL80211_TXQ_ATTR_CWMIN, | 2241 | NL80211_TXQ_ATTR_CWMIN, |
2242 | NL80211_TXQ_ATTR_CWMAX, | 2242 | NL80211_TXQ_ATTR_CWMAX, |
@@ -2247,13 +2247,21 @@ enum nl80211_txq_attr { | |||
2247 | NL80211_TXQ_ATTR_MAX = __NL80211_TXQ_ATTR_AFTER_LAST - 1 | 2247 | NL80211_TXQ_ATTR_MAX = __NL80211_TXQ_ATTR_AFTER_LAST - 1 |
2248 | }; | 2248 | }; |
2249 | 2249 | ||
2250 | enum nl80211_txq_q { | 2250 | enum nl80211_ac { |
2251 | NL80211_TXQ_Q_VO, | 2251 | NL80211_AC_VO, |
2252 | NL80211_TXQ_Q_VI, | 2252 | NL80211_AC_VI, |
2253 | NL80211_TXQ_Q_BE, | 2253 | NL80211_AC_BE, |
2254 | NL80211_TXQ_Q_BK | 2254 | NL80211_AC_BK, |
2255 | NL80211_NUM_ACS | ||
2255 | }; | 2256 | }; |
2256 | 2257 | ||
2258 | /* backward compat */ | ||
2259 | #define NL80211_TXQ_ATTR_QUEUE NL80211_TXQ_ATTR_AC | ||
2260 | #define NL80211_TXQ_Q_VO NL80211_AC_VO | ||
2261 | #define NL80211_TXQ_Q_VI NL80211_AC_VI | ||
2262 | #define NL80211_TXQ_Q_BE NL80211_AC_BE | ||
2263 | #define NL80211_TXQ_Q_BK NL80211_AC_BK | ||
2264 | |||
2257 | enum nl80211_channel_type { | 2265 | enum nl80211_channel_type { |
2258 | NL80211_CHAN_NO_HT, | 2266 | NL80211_CHAN_NO_HT, |
2259 | NL80211_CHAN_HT20, | 2267 | NL80211_CHAN_HT20, |
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 83d800c31e3c..ac9147778a81 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -845,7 +845,7 @@ struct mesh_setup { | |||
845 | 845 | ||
846 | /** | 846 | /** |
847 | * struct ieee80211_txq_params - TX queue parameters | 847 | * struct ieee80211_txq_params - TX queue parameters |
848 | * @queue: TX queue identifier (NL80211_TXQ_Q_*) | 848 | * @ac: AC identifier |
849 | * @txop: Maximum burst time in units of 32 usecs, 0 meaning disabled | 849 | * @txop: Maximum burst time in units of 32 usecs, 0 meaning disabled |
850 | * @cwmin: Minimum contention window [a value of the form 2^n-1 in the range | 850 | * @cwmin: Minimum contention window [a value of the form 2^n-1 in the range |
851 | * 1..32767] | 851 | * 1..32767] |
@@ -854,7 +854,7 @@ struct mesh_setup { | |||
854 | * @aifs: Arbitration interframe space [0..255] | 854 | * @aifs: Arbitration interframe space [0..255] |
855 | */ | 855 | */ |
856 | struct ieee80211_txq_params { | 856 | struct ieee80211_txq_params { |
857 | enum nl80211_txq_q queue; | 857 | enum nl80211_ac ac; |
858 | u16 txop; | 858 | u16 txop; |
859 | u16 cwmin; | 859 | u16 cwmin; |
860 | u16 cwmax; | 860 | u16 cwmax; |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index a0e79d13fa8b..43f4609ab5f0 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -2222,7 +2222,7 @@ struct ieee80211_ops { | |||
2222 | struct ieee80211_sta *sta, | 2222 | struct ieee80211_sta *sta, |
2223 | u32 changed); | 2223 | u32 changed); |
2224 | int (*conf_tx)(struct ieee80211_hw *hw, | 2224 | int (*conf_tx)(struct ieee80211_hw *hw, |
2225 | struct ieee80211_vif *vif, u16 queue, | 2225 | struct ieee80211_vif *vif, u16 ac, |
2226 | const struct ieee80211_tx_queue_params *params); | 2226 | const struct ieee80211_tx_queue_params *params); |
2227 | u64 (*get_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif); | 2227 | u64 (*get_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif); |
2228 | void (*set_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 2228 | void (*set_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 677d65929780..ef40db5ab3c7 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c | |||
@@ -1449,14 +1449,14 @@ static int ieee80211_set_txq_params(struct wiphy *wiphy, | |||
1449 | */ | 1449 | */ |
1450 | p.uapsd = false; | 1450 | p.uapsd = false; |
1451 | 1451 | ||
1452 | if (params->queue >= local->hw.queues) | 1452 | if (params->ac >= local->hw.queues) |
1453 | return -EINVAL; | 1453 | return -EINVAL; |
1454 | 1454 | ||
1455 | sdata->tx_conf[params->queue] = p; | 1455 | sdata->tx_conf[params->ac] = p; |
1456 | if (drv_conf_tx(local, sdata, params->queue, &p)) { | 1456 | if (drv_conf_tx(local, sdata, params->ac, &p)) { |
1457 | wiphy_debug(local->hw.wiphy, | 1457 | wiphy_debug(local->hw.wiphy, |
1458 | "failed to set TX queue parameters for queue %d\n", | 1458 | "failed to set TX queue parameters for AC %d\n", |
1459 | params->queue); | 1459 | params->ac); |
1460 | return -EINVAL; | 1460 | return -EINVAL; |
1461 | } | 1461 | } |
1462 | 1462 | ||
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h index 0eb2bc003058..8ad40f68f2c3 100644 --- a/net/mac80211/driver-ops.h +++ b/net/mac80211/driver-ops.h | |||
@@ -492,7 +492,7 @@ static inline void drv_sta_rc_update(struct ieee80211_local *local, | |||
492 | } | 492 | } |
493 | 493 | ||
494 | static inline int drv_conf_tx(struct ieee80211_local *local, | 494 | static inline int drv_conf_tx(struct ieee80211_local *local, |
495 | struct ieee80211_sub_if_data *sdata, u16 queue, | 495 | struct ieee80211_sub_if_data *sdata, u16 ac, |
496 | const struct ieee80211_tx_queue_params *params) | 496 | const struct ieee80211_tx_queue_params *params) |
497 | { | 497 | { |
498 | int ret = -EOPNOTSUPP; | 498 | int ret = -EOPNOTSUPP; |
@@ -501,10 +501,10 @@ static inline int drv_conf_tx(struct ieee80211_local *local, | |||
501 | 501 | ||
502 | check_sdata_in_driver(sdata); | 502 | check_sdata_in_driver(sdata); |
503 | 503 | ||
504 | trace_drv_conf_tx(local, sdata, queue, params); | 504 | trace_drv_conf_tx(local, sdata, ac, params); |
505 | if (local->ops->conf_tx) | 505 | if (local->ops->conf_tx) |
506 | ret = local->ops->conf_tx(&local->hw, &sdata->vif, | 506 | ret = local->ops->conf_tx(&local->hw, &sdata->vif, |
507 | queue, params); | 507 | ac, params); |
508 | trace_drv_return_int(local, ret); | 508 | trace_drv_return_int(local, ret); |
509 | return ret; | 509 | return ret; |
510 | } | 510 | } |
diff --git a/net/mac80211/driver-trace.h b/net/mac80211/driver-trace.h index 7ea544d86436..d1f017a11988 100644 --- a/net/mac80211/driver-trace.h +++ b/net/mac80211/driver-trace.h | |||
@@ -705,15 +705,14 @@ TRACE_EVENT(drv_sta_remove, | |||
705 | TRACE_EVENT(drv_conf_tx, | 705 | TRACE_EVENT(drv_conf_tx, |
706 | TP_PROTO(struct ieee80211_local *local, | 706 | TP_PROTO(struct ieee80211_local *local, |
707 | struct ieee80211_sub_if_data *sdata, | 707 | struct ieee80211_sub_if_data *sdata, |
708 | u16 queue, | 708 | u16 ac, const struct ieee80211_tx_queue_params *params), |
709 | const struct ieee80211_tx_queue_params *params), | ||
710 | 709 | ||
711 | TP_ARGS(local, sdata, queue, params), | 710 | TP_ARGS(local, sdata, ac, params), |
712 | 711 | ||
713 | TP_STRUCT__entry( | 712 | TP_STRUCT__entry( |
714 | LOCAL_ENTRY | 713 | LOCAL_ENTRY |
715 | VIF_ENTRY | 714 | VIF_ENTRY |
716 | __field(u16, queue) | 715 | __field(u16, ac) |
717 | __field(u16, txop) | 716 | __field(u16, txop) |
718 | __field(u16, cw_min) | 717 | __field(u16, cw_min) |
719 | __field(u16, cw_max) | 718 | __field(u16, cw_max) |
@@ -724,7 +723,7 @@ TRACE_EVENT(drv_conf_tx, | |||
724 | TP_fast_assign( | 723 | TP_fast_assign( |
725 | LOCAL_ASSIGN; | 724 | LOCAL_ASSIGN; |
726 | VIF_ASSIGN; | 725 | VIF_ASSIGN; |
727 | __entry->queue = queue; | 726 | __entry->ac = ac; |
728 | __entry->txop = params->txop; | 727 | __entry->txop = params->txop; |
729 | __entry->cw_max = params->cw_max; | 728 | __entry->cw_max = params->cw_max; |
730 | __entry->cw_min = params->cw_min; | 729 | __entry->cw_min = params->cw_min; |
@@ -733,8 +732,8 @@ TRACE_EVENT(drv_conf_tx, | |||
733 | ), | 732 | ), |
734 | 733 | ||
735 | TP_printk( | 734 | TP_printk( |
736 | LOCAL_PR_FMT VIF_PR_FMT " queue:%d", | 735 | LOCAL_PR_FMT VIF_PR_FMT " AC:%d", |
737 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->queue | 736 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->ac |
738 | ) | 737 | ) |
739 | ); | 738 | ); |
740 | 739 | ||
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index e49da2797022..344697df1177 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
@@ -1104,17 +1104,20 @@ static const struct nla_policy txq_params_policy[NL80211_TXQ_ATTR_MAX + 1] = { | |||
1104 | static int parse_txq_params(struct nlattr *tb[], | 1104 | static int parse_txq_params(struct nlattr *tb[], |
1105 | struct ieee80211_txq_params *txq_params) | 1105 | struct ieee80211_txq_params *txq_params) |
1106 | { | 1106 | { |
1107 | if (!tb[NL80211_TXQ_ATTR_QUEUE] || !tb[NL80211_TXQ_ATTR_TXOP] || | 1107 | if (!tb[NL80211_TXQ_ATTR_AC] || !tb[NL80211_TXQ_ATTR_TXOP] || |
1108 | !tb[NL80211_TXQ_ATTR_CWMIN] || !tb[NL80211_TXQ_ATTR_CWMAX] || | 1108 | !tb[NL80211_TXQ_ATTR_CWMIN] || !tb[NL80211_TXQ_ATTR_CWMAX] || |
1109 | !tb[NL80211_TXQ_ATTR_AIFS]) | 1109 | !tb[NL80211_TXQ_ATTR_AIFS]) |
1110 | return -EINVAL; | 1110 | return -EINVAL; |
1111 | 1111 | ||
1112 | txq_params->queue = nla_get_u8(tb[NL80211_TXQ_ATTR_QUEUE]); | 1112 | txq_params->ac = nla_get_u8(tb[NL80211_TXQ_ATTR_AC]); |
1113 | txq_params->txop = nla_get_u16(tb[NL80211_TXQ_ATTR_TXOP]); | 1113 | txq_params->txop = nla_get_u16(tb[NL80211_TXQ_ATTR_TXOP]); |
1114 | txq_params->cwmin = nla_get_u16(tb[NL80211_TXQ_ATTR_CWMIN]); | 1114 | txq_params->cwmin = nla_get_u16(tb[NL80211_TXQ_ATTR_CWMIN]); |
1115 | txq_params->cwmax = nla_get_u16(tb[NL80211_TXQ_ATTR_CWMAX]); | 1115 | txq_params->cwmax = nla_get_u16(tb[NL80211_TXQ_ATTR_CWMAX]); |
1116 | txq_params->aifs = nla_get_u8(tb[NL80211_TXQ_ATTR_AIFS]); | 1116 | txq_params->aifs = nla_get_u8(tb[NL80211_TXQ_ATTR_AIFS]); |
1117 | 1117 | ||
1118 | if (txq_params->ac >= NL80211_NUM_ACS) | ||
1119 | return -EINVAL; | ||
1120 | |||
1118 | return 0; | 1121 | return 0; |
1119 | } | 1122 | } |
1120 | 1123 | ||