]>
git.ipfire.org Git - thirdparty/hostap.git/blob - tests/hwsim/test_ap_qosmap.py
2 # Copyright (c) 2013, Jouni Malinen <j@w1.fi>
4 # This software may be distributed under the terms of the BSD license.
5 # See README for more details.
10 logger
= logging
. getLogger ()
14 from wlantest
import Wlantest
16 def check_qos_map ( ap
, hapd
, dev
, dscp
, tid
, ap_tid
= None ):
20 sta
= dev
. p2p_interface_addr ()
22 wt
. clear_sta_counters ( bssid
, sta
)
23 hwsim_utils
. test_connectivity ( dev
, hapd
, dscp
= dscp
)
25 [ tx
, rx
] = wt
. get_tid_counters ( bssid
, sta
)
27 logger
. info ( "Expected TX DSCP " + str ( dscp
) + " with TID " + str ( tid
) + " but counters: " + str ( tx
))
28 raise Exception ( "No STA->AP data frame using the expected TID" )
30 logger
. info ( "Expected RX DSCP " + str ( dscp
) + " with TID " + str ( ap_tid
) + " but counters: " + str ( rx
))
31 raise Exception ( "No AP->STA data frame using the expected TID" )
33 def test_ap_qosmap ( dev
, apdev
):
35 drv_flags
= dev
[ 0 ]. get_driver_status_field ( "capa.flags" )
36 if int ( drv_flags
, 0 ) & 0x40000000 == 0 :
39 params
= { "ssid" : ssid
}
40 params
[ 'qos_map_set' ] = '53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,48,55'
41 hapd
= hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
42 dev
[ 0 ]. connect ( ssid
, key_mgmt
= "NONE" , scan_freq
= "2412" )
44 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 53 , 2 )
45 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 22 , 6 )
46 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 8 , 0 )
47 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 15 , 0 )
48 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 0 , 1 )
49 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 7 , 1 )
50 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 16 , 3 )
51 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 31 , 3 )
52 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 32 , 4 )
53 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 39 , 4 )
54 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 40 , 6 )
55 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 47 , 6 )
56 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 48 , 7 )
57 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 55 , 7 )
58 hapd
. request ( "SET_QOS_MAP_SET 22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,48,55" )
59 hapd
. request ( "SEND_QOS_MAP_CONF " + dev
[ 0 ]. get_status_field ( "address" ))
60 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 53 , 7 )
61 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 22 , 6 )
62 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 48 , 7 )
63 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 55 , 7 )
64 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 56 , 56 >> 3 )
65 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], 63 , 63 >> 3 )
67 def test_ap_qosmap_default ( dev
, apdev
):
68 """QoS mapping with default values"""
69 ssid
= "test-qosmap-default"
70 params
= { "ssid" : ssid
}
71 hapd
= hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
72 dev
[ 0 ]. connect ( ssid
, key_mgmt
= "NONE" , scan_freq
= "2412" )
73 for dscp
in [ 0 , 7 , 8 , 15 , 16 , 23 , 24 , 31 , 32 , 39 , 40 , 47 , 48 , 55 , 56 , 63 ]:
74 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], dscp
, dscp
>> 3 )
76 def test_ap_qosmap_default_acm ( dev
, apdev
):
77 """QoS mapping with default values and ACM=1 for VO/VI"""
78 ssid
= "test-qosmap-default"
79 params
= { "ssid" : ssid
,
80 "wmm_ac_bk_aifs" : "7" ,
81 "wmm_ac_bk_cwmin" : "4" ,
82 "wmm_ac_bk_cwmax" : "10" ,
83 "wmm_ac_bk_txop_limit" : "0" ,
85 "wmm_ac_be_aifs" : "3" ,
86 "wmm_ac_be_cwmin" : "4" ,
87 "wmm_ac_be_cwmax" : "10" ,
88 "wmm_ac_be_txop_limit" : "0" ,
90 "wmm_ac_vi_aifs" : "2" ,
91 "wmm_ac_vi_cwmin" : "3" ,
92 "wmm_ac_vi_cwmax" : "4" ,
93 "wmm_ac_vi_txop_limit" : "94" ,
95 "wmm_ac_vo_aifs" : "2" ,
96 "wmm_ac_vo_cwmin" : "2" ,
97 "wmm_ac_vo_cwmax" : "2" ,
98 "wmm_ac_vo_txop_limit" : "47" ,
99 "wmm_ac_vo_acm" : "1" }
100 hapd
= hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
101 dev
[ 0 ]. connect ( ssid
, key_mgmt
= "NONE" , scan_freq
= "2412" )
102 for dscp
in [ 0 , 7 , 8 , 15 , 16 , 23 , 24 , 31 , 32 , 39 , 40 , 47 , 48 , 55 , 56 , 63 ]:
105 # downgrade VI/VO to BE
106 if tid
in [ 4 , 5 , 6 , 7 ]:
108 check_qos_map ( apdev
[ 0 ], hapd
, dev
[ 0 ], dscp
, tid
, ap_tid
)
110 def test_ap_qosmap_invalid ( dev
, apdev
):
111 """QoS mapping ctrl_iface error handling"""
113 params
= { "ssid" : ssid
}
114 hapd
= hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
115 if "FAIL" not in hapd
. request ( "SEND_QOS_MAP_CONF 00:11:22:33:44:55" ):
116 raise Exception ( "Unexpected SEND_QOS_MAP_CONF success" )
117 if "FAIL" not in hapd
. request ( "SET_QOS_MAP_SET " ):
118 raise Exception ( "Unexpected SET_QOS_MAP_SET success" )
119 if "FAIL" not in hapd
. request ( "SET_QOS_MAP_SET 1,2,3" ):
120 raise Exception ( "Unexpected SET_QOS_MAP_SET success" )
121 if "FAIL" not in hapd
. request ( "SET_QOS_MAP_SET 1,-2,3" ):
122 raise Exception ( "Unexpected SET_QOS_MAP_SET success" )
123 if "FAIL" not in hapd
. request ( "SET_QOS_MAP_SET 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59" ):
124 raise Exception ( "Unexpected SET_QOS_MAP_SET success" )
125 if "FAIL" not in hapd
. request ( "SET_QOS_MAP_SET 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21" ):
126 raise Exception ( "Unexpected SET_QOS_MAP_SET success" )
128 if "FAIL" in hapd
. request ( "SET_QOS_MAP_SET 22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,48,55" ):
129 raise Exception ( "Unexpected SET_QOS_MAP_SET failure" )
130 if "FAIL" not in hapd
. request ( "SEND_QOS_MAP_CONF 00:11:22:33:44:55" ):
131 raise Exception ( "Unexpected SEND_QOS_MAP_CONF success" )
132 if "FAIL" not in hapd
. request ( "SEND_QOS_MAP_CONF 00:11:22:33:44" ):
133 raise Exception ( "Unexpected SEND_QOS_MAP_CONF success" )