@@ -44,6 +44,9 @@ struct ieee80211_elems_parse {
44
44
/* The reconfiguration Multi-Link element in the original elements */
45
45
const struct element * ml_reconf_elem ;
46
46
47
+ /* The EPCS Multi-Link element in the original elements */
48
+ const struct element * ml_epcs_elem ;
49
+
47
50
/*
48
51
* scratch buffer that can be used for various element parsing related
49
52
* tasks, e.g., element de-fragmentation etc.
@@ -159,6 +162,9 @@ ieee80211_parse_extension_element(u32 *crc,
159
162
case IEEE80211_ML_CONTROL_TYPE_RECONF :
160
163
elems_parse -> ml_reconf_elem = elem ;
161
164
break ;
165
+ case IEEE80211_ML_CONTROL_TYPE_PRIO_ACCESS :
166
+ elems_parse -> ml_epcs_elem = elem ;
167
+ break ;
162
168
default :
163
169
break ;
164
170
}
@@ -943,6 +949,27 @@ ieee80211_mle_defrag_reconf(struct ieee80211_elems_parse *elems_parse)
943
949
elems_parse -> scratch_pos += ml_len ;
944
950
}
945
951
952
+ static void
953
+ ieee80211_mle_defrag_epcs (struct ieee80211_elems_parse * elems_parse )
954
+ {
955
+ struct ieee802_11_elems * elems = & elems_parse -> elems ;
956
+ ssize_t ml_len ;
957
+
958
+ ml_len = cfg80211_defragment_element (elems_parse -> ml_epcs_elem ,
959
+ elems -> ie_start ,
960
+ elems -> total_len ,
961
+ elems_parse -> scratch_pos ,
962
+ elems_parse -> scratch +
963
+ elems_parse -> scratch_len -
964
+ elems_parse -> scratch_pos ,
965
+ WLAN_EID_FRAGMENT );
966
+ if (ml_len < 0 )
967
+ return ;
968
+ elems -> ml_epcs = (void * )elems_parse -> scratch_pos ;
969
+ elems -> ml_epcs_len = ml_len ;
970
+ elems_parse -> scratch_pos += ml_len ;
971
+ }
972
+
946
973
struct ieee802_11_elems *
947
974
ieee802_11_parse_elems_full (struct ieee80211_elems_parse_params * params )
948
975
{
@@ -1001,6 +1028,8 @@ ieee802_11_parse_elems_full(struct ieee80211_elems_parse_params *params)
1001
1028
1002
1029
ieee80211_mle_defrag_reconf (elems_parse );
1003
1030
1031
+ ieee80211_mle_defrag_epcs (elems_parse );
1032
+
1004
1033
if (elems -> tim && !elems -> parse_error ) {
1005
1034
const struct ieee80211_tim_ie * tim_ie = elems -> tim ;
1006
1035
0 commit comments