Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
praich
Ns 3 Dev
Commits
0f95f8b6
Commit
0f95f8b6
authored
3 years ago
by
Stefano Avallone
Browse files
Options
Download
Email Patches
Plain Diff
wifi: Make EHT Capabilities IE optional in mgt frames
parent
eeaadc4c
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
src/wifi/model/ap-wifi-mac.cc
+3
-3
src/wifi/model/ap-wifi-mac.cc
src/wifi/model/eht/eht-capabilities.cc
+2
-34
src/wifi/model/eht/eht-capabilities.cc
src/wifi/model/eht/eht-capabilities.h
+0
-19
src/wifi/model/eht/eht-capabilities.h
src/wifi/model/mgt-headers.cc
+27
-27
src/wifi/model/mgt-headers.cc
src/wifi/model/mgt-headers.h
+20
-20
src/wifi/model/mgt-headers.h
src/wifi/model/sta-wifi-mac.cc
+2
-2
src/wifi/model/sta-wifi-mac.cc
src/wifi/model/wifi-mac.cc
+2
-4
src/wifi/model/wifi-mac.cc
with
56 additions
and
109 deletions
+56
-109
src/wifi/model/ap-wifi-mac.cc
View file @
0f95f8b6
...
...
@@ -1478,7 +1478,7 @@ ApWifiMac::ReceiveAssocRequest (const AssocReqRefVariant& assoc, const Mac48Addr
if
(
GetEhtSupported
())
{
//check whether the EHT STA supports all MCSs in Basic MCS Set
// const
EhtCapabilities
& ehtCapabilities = frame.GetEhtCapabilities ();
// const
auto
& ehtCapabilities = frame.GetEhtCapabilities ();
//TODO: to be completed
}
...
...
@@ -1542,9 +1542,9 @@ ApWifiMac::ReceiveAssocRequest (const AssocReqRefVariant& assoc, const Mac48Addr
}
if
(
GetEhtSupported
())
{
const
EhtCapabilities
&
ehtCapabilities
=
frame
.
GetEhtCapabilities
();
const
auto
&
ehtCapabilities
=
frame
.
GetEhtCapabilities
();
//TODO: once we support non constant rate managers, we should add checks here whether EHT is supported by the peer
remoteStationManager
->
AddStationEhtCapabilities
(
from
,
ehtCapabilities
);
remoteStationManager
->
AddStationEhtCapabilities
(
from
,
*
ehtCapabilities
);
for
(
const
auto
&
mcs
:
phy
->
GetMcsList
(
WIFI_MOD_CLASS_EHT
))
{
//TODO: Add check whether MCS is supported from the capabilities
...
...
This diff is collapsed.
Click to expand it.
src/wifi/model/eht/eht-capabilities.cc
View file @
0f95f8b6
...
...
@@ -23,7 +23,6 @@
namespace
ns3
{
EhtCapabilities
::
EhtCapabilities
()
:
m_ehtSupported
(
0
)
{
}
...
...
@@ -39,47 +38,16 @@ EhtCapabilities::ElementIdExt () const
return
IE_EXT_EHT_CAPABILITIES
;
}
void
EhtCapabilities
::
SetEhtSupported
(
uint8_t
ehtSupported
)
{
m_ehtSupported
=
ehtSupported
;
}
uint8_t
EhtCapabilities
::
GetInformationFieldSize
()
const
{
//we should not be here if EHT is not supported
NS_ASSERT
(
m_ehtSupported
>
0
);
return
0
;
//FIXME
}
Buffer
::
Iterator
EhtCapabilities
::
Serialize
(
Buffer
::
Iterator
i
)
const
{
if
(
m_ehtSupported
<
1
)
{
return
i
;
}
return
WifiInformationElement
::
Serialize
(
i
);
}
uint16_t
EhtCapabilities
::
GetSerializedSize
()
const
{
if
(
m_ehtSupported
<
1
)
{
return
0
;
}
return
WifiInformationElement
::
GetSerializedSize
();
return
1
;
//FIXME
}
void
EhtCapabilities
::
SerializeInformationField
(
Buffer
::
Iterator
start
)
const
{
if
(
m_ehtSupported
==
1
)
{
//TODO
}
//TODO
}
uint8_t
...
...
This diff is collapsed.
Click to expand it.
src/wifi/model/eht/eht-capabilities.h
View file @
0f95f8b6
...
...
@@ -34,12 +34,6 @@ class EhtCapabilities : public WifiInformationElement
{
public:
EhtCapabilities
();
/**
* Set EHT supported
* \param ehtSupported the EHT supported indicator
*/
void
SetEhtSupported
(
uint8_t
ehtSupported
);
// Implementations of pure virtual methods, or overridden from base class.
WifiInformationElementId
ElementId
()
const
;
WifiInformationElementId
ElementIdExt
()
const
;
...
...
@@ -47,21 +41,8 @@ public:
void
SerializeInformationField
(
Buffer
::
Iterator
start
)
const
;
uint8_t
DeserializeInformationField
(
Buffer
::
Iterator
start
,
uint8_t
length
);
/*
* This information element is a bit special in that it is only
* included if the STA is an EHT STA. To support this we
* override the Serialize and GetSerializedSize methods of
* WifiInformationElement.
*/
Buffer
::
Iterator
Serialize
(
Buffer
::
Iterator
start
)
const
;
uint16_t
GetSerializedSize
()
const
;
private:
//TODO: add fields
/// This is used to decide if this element should be added to the frame or not
uint8_t
m_ehtSupported
;
};
/**
...
...
This diff is collapsed.
Click to expand it.
src/wifi/model/mgt-headers.cc
View file @
0f95f8b6
...
...
@@ -150,7 +150,7 @@ MgtProbeRequestHeader::SetEhtCapabilities (EhtCapabilities&& ehtCapabilities)
m_ehtCapability
=
std
::
move
(
ehtCapabilities
);
}
const
EhtCapabilities
&
const
std
::
optional
<
EhtCapabilities
>
&
MgtProbeRequestHeader
::
GetEhtCapabilities
(
void
)
const
{
return
m_ehtCapability
;
...
...
@@ -173,7 +173,7 @@ MgtProbeRequestHeader::GetSerializedSize (void) const
if
(
m_htCapability
.
has_value
())
size
+=
m_htCapability
->
GetSerializedSize
();
if
(
m_vhtCapability
.
has_value
())
size
+=
m_vhtCapability
->
GetSerializedSize
();
if
(
m_heCapability
.
has_value
())
size
+=
m_heCapability
->
GetSerializedSize
();
size
+=
m_ehtCapability
.
GetSerializedSize
();
if
(
m_ehtCapability
.
has_value
())
size
+=
m_ehtCapability
->
GetSerializedSize
();
return
size
;
}
...
...
@@ -203,7 +203,7 @@ MgtProbeRequestHeader::Print (std::ostream &os) const
if
(
m_htCapability
.
has_value
())
os
<<
"HT Capabilities="
<<
*
m_htCapability
<<
" , "
;
if
(
m_vhtCapability
.
has_value
())
os
<<
"VHT Capabilities="
<<
*
m_vhtCapability
<<
" , "
;
if
(
m_heCapability
.
has_value
())
os
<<
"HE Capabilities="
<<
*
m_heCapability
<<
" , "
;
os
<<
"EHT Capabilities="
<<
m_ehtCapability
;
if
(
m_ehtCapability
.
has_value
())
os
<<
"EHT Capabilities="
<<
*
m_ehtCapability
;
}
void
...
...
@@ -217,7 +217,7 @@ MgtProbeRequestHeader::Serialize (Buffer::Iterator start) const
if
(
m_htCapability
.
has_value
())
i
=
m_htCapability
->
Serialize
(
i
);
if
(
m_vhtCapability
.
has_value
())
i
=
m_vhtCapability
->
Serialize
(
i
);
if
(
m_heCapability
.
has_value
())
i
=
m_heCapability
->
Serialize
(
i
);
i
=
m_ehtCapability
.
Serialize
(
i
);
if
(
m_ehtCapability
.
has_value
())
i
=
m_ehtCapability
->
Serialize
(
i
);
}
uint32_t
...
...
@@ -231,7 +231,7 @@ MgtProbeRequestHeader::Deserialize (Buffer::Iterator start)
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_htCapability
,
i
);
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_vhtCapability
,
i
);
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_heCapability
,
i
);
i
=
m_ehtCapability
.
DeserializeIfPresent
(
i
);
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_ehtCapability
,
i
);
return
i
.
GetDistanceFrom
(
start
);
}
...
...
@@ -430,7 +430,7 @@ MgtProbeResponseHeader::SetEhtCapabilities (EhtCapabilities&& ehtCapabilities)
m_ehtCapability
=
std
::
move
(
ehtCapabilities
);
}
const
EhtCapabilities
&
const
std
::
optional
<
EhtCapabilities
>
&
MgtProbeResponseHeader
::
GetEhtCapabilities
(
void
)
const
{
return
m_ehtCapability
;
...
...
@@ -600,7 +600,7 @@ MgtProbeResponseHeader::GetSerializedSize (void) const
if
(
m_heCapability
.
has_value
())
size
+=
m_heCapability
->
GetSerializedSize
();
size
+=
m_heOperation
.
GetSerializedSize
();
size
+=
m_muEdcaParameterSet
.
GetSerializedSize
();
size
+=
m_ehtCapability
.
GetSerializedSize
();
if
(
m_ehtCapability
.
has_value
())
size
+=
m_ehtCapability
->
GetSerializedSize
();
if
(
m_reducedNeighborReport
!=
nullptr
)
size
+=
m_reducedNeighborReport
->
GetSerializedSize
();
if
(
m_multiLinkElement
!=
nullptr
)
size
+=
m_multiLinkElement
->
GetSerializedSize
();
return
size
;
...
...
@@ -618,8 +618,8 @@ MgtProbeResponseHeader::Print (std::ostream &os) const
if
(
m_vhtCapability
.
has_value
())
os
<<
"VHT Capabilities="
<<
*
m_vhtCapability
<<
" , "
;
os
<<
"VHT Operation="
<<
m_vhtOperation
<<
" , "
;
if
(
m_heCapability
.
has_value
())
os
<<
"HE Capabilities="
<<
*
m_heCapability
<<
" , "
;
os
<<
"HE Operation="
<<
m_heOperation
<<
" , "
<<
"EHT Capabilities="
<<
m_ehtCapability
;
os
<<
"HE Operation="
<<
m_heOperation
<<
" , "
;
if
(
m_ehtCapability
.
has_value
())
os
<<
"EHT Capabilities="
<<
*
m_ehtCapability
;
}
void
...
...
@@ -643,7 +643,7 @@ MgtProbeResponseHeader::Serialize (Buffer::Iterator start) const
if
(
m_heCapability
.
has_value
())
i
=
m_heCapability
->
Serialize
(
i
);
i
=
m_heOperation
.
Serialize
(
i
);
i
=
m_muEdcaParameterSet
.
Serialize
(
i
);
i
=
m_ehtCapability
.
Serialize
(
i
);
if
(
m_ehtCapability
.
has_value
())
i
=
m_ehtCapability
->
Serialize
(
i
);
if
(
m_reducedNeighborReport
!=
nullptr
)
i
=
m_reducedNeighborReport
->
Serialize
(
i
);
if
(
m_multiLinkElement
!=
nullptr
)
i
=
m_multiLinkElement
->
Serialize
(
i
);
}
...
...
@@ -670,7 +670,7 @@ MgtProbeResponseHeader::Deserialize (Buffer::Iterator start)
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_heCapability
,
i
);
i
=
m_heOperation
.
DeserializeIfPresent
(
i
);
i
=
m_muEdcaParameterSet
.
DeserializeIfPresent
(
i
);
i
=
m_ehtCapability
.
DeserializeIfPresent
(
i
);
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_ehtCapability
,
i
);
i
=
(
m_reducedNeighborReport
=
Create
<
ReducedNeighborReport
>
())
->
DeserializeIfPresent
(
tmp
=
i
);
if
(
i
.
GetDistanceFrom
(
tmp
)
==
0
)
m_reducedNeighborReport
=
nullptr
;
i
=
(
m_multiLinkElement
=
Create
<
MultiLinkElement
>
(
WIFI_MAC_MGT_BEACON
))
->
DeserializeIfPresent
(
tmp
=
i
);
...
...
@@ -846,7 +846,7 @@ MgtAssocRequestHeader::SetEhtCapabilities (EhtCapabilities&& ehtCapabilities)
m_ehtCapability
=
std
::
move
(
ehtCapabilities
);
}
const
EhtCapabilities
&
const
std
::
optional
<
EhtCapabilities
>
&
MgtAssocRequestHeader
::
GetEhtCapabilities
(
void
)
const
{
return
m_ehtCapability
;
...
...
@@ -912,7 +912,7 @@ MgtAssocRequestHeader::GetSerializedSize (void) const
if
(
m_htCapability
.
has_value
())
size
+=
m_htCapability
->
GetSerializedSize
();
if
(
m_vhtCapability
.
has_value
())
size
+=
m_vhtCapability
->
GetSerializedSize
();
if
(
m_heCapability
.
has_value
())
size
+=
m_heCapability
->
GetSerializedSize
();
size
+=
m_ehtCapability
.
GetSerializedSize
();
if
(
m_ehtCapability
.
has_value
())
size
+=
m_ehtCapability
->
GetSerializedSize
();
if
(
m_multiLinkElement
!=
nullptr
)
size
+=
m_multiLinkElement
->
GetSerializedSize
();
return
size
;
}
...
...
@@ -926,7 +926,7 @@ MgtAssocRequestHeader::Print (std::ostream &os) const
if
(
m_htCapability
.
has_value
())
os
<<
"HT Capabilities="
<<
*
m_htCapability
<<
" , "
;
if
(
m_vhtCapability
.
has_value
())
os
<<
"VHT Capabilities="
<<
*
m_vhtCapability
<<
" , "
;
if
(
m_heCapability
.
has_value
())
os
<<
"HE Capabilities="
<<
*
m_heCapability
<<
" , "
;
os
<<
"EHT Capabilities="
<<
m_ehtCapability
;
if
(
m_ehtCapability
.
has_value
())
os
<<
"EHT Capabilities="
<<
*
m_ehtCapability
;
}
void
...
...
@@ -942,7 +942,7 @@ MgtAssocRequestHeader::Serialize (Buffer::Iterator start) const
if
(
m_htCapability
.
has_value
())
i
=
m_htCapability
->
Serialize
(
i
);
if
(
m_vhtCapability
.
has_value
())
i
=
m_vhtCapability
->
Serialize
(
i
);
if
(
m_heCapability
.
has_value
())
i
=
m_heCapability
->
Serialize
(
i
);
i
=
m_ehtCapability
.
Serialize
(
i
);
if
(
m_ehtCapability
.
has_value
())
i
=
m_ehtCapability
->
Serialize
(
i
);
if
(
m_multiLinkElement
!=
nullptr
)
i
=
m_multiLinkElement
->
Serialize
(
i
);
}
...
...
@@ -959,7 +959,7 @@ MgtAssocRequestHeader::Deserialize (Buffer::Iterator start)
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_htCapability
,
i
);
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_vhtCapability
,
i
);
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_heCapability
,
i
);
i
=
m_ehtCapability
.
DeserializeIfPresent
(
i
);
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_ehtCapability
,
i
);
m_multiLinkElement
=
Create
<
MultiLinkElement
>
(
WIFI_MAC_MGT_ASSOCIATION_REQUEST
);
i
=
m_multiLinkElement
->
DeserializeIfPresent
(
tmp
=
i
);
if
(
i
.
GetDistanceFrom
(
tmp
)
==
0
)
m_multiLinkElement
=
nullptr
;
...
...
@@ -1114,7 +1114,7 @@ MgtReassocRequestHeader::SetEhtCapabilities (EhtCapabilities&& ehtCapabilities)
m_ehtCapability
=
std
::
move
(
ehtCapabilities
);
}
const
EhtCapabilities
&
const
std
::
optional
<
EhtCapabilities
>
&
MgtReassocRequestHeader
::
GetEhtCapabilities
(
void
)
const
{
return
m_ehtCapability
;
...
...
@@ -1187,7 +1187,7 @@ MgtReassocRequestHeader::GetSerializedSize (void) const
if
(
m_htCapability
.
has_value
())
size
+=
m_htCapability
->
GetSerializedSize
();
if
(
m_vhtCapability
.
has_value
())
size
+=
m_vhtCapability
->
GetSerializedSize
();
if
(
m_heCapability
.
has_value
())
size
+=
m_heCapability
->
GetSerializedSize
();
size
+=
m_ehtCapability
.
GetSerializedSize
();
if
(
m_ehtCapability
.
has_value
())
size
+=
m_ehtCapability
->
GetSerializedSize
();
if
(
m_multiLinkElement
!=
nullptr
)
size
+=
m_multiLinkElement
->
GetSerializedSize
();
return
size
;
}
...
...
@@ -1202,7 +1202,7 @@ MgtReassocRequestHeader::Print (std::ostream &os) const
if
(
m_htCapability
.
has_value
())
os
<<
"HT Capabilities="
<<
*
m_htCapability
<<
" , "
;
if
(
m_vhtCapability
.
has_value
())
os
<<
"VHT Capabilities="
<<
*
m_vhtCapability
<<
" , "
;
if
(
m_heCapability
.
has_value
())
os
<<
"HE Capabilities="
<<
*
m_heCapability
<<
" , "
;
os
<<
"EHT Capabilities="
<<
m_ehtCapability
;
if
(
m_ehtCapability
.
has_value
())
os
<<
"EHT Capabilities="
<<
*
m_ehtCapability
;
}
void
...
...
@@ -1219,7 +1219,7 @@ MgtReassocRequestHeader::Serialize (Buffer::Iterator start) const
if
(
m_htCapability
.
has_value
())
i
=
m_htCapability
->
Serialize
(
i
);
if
(
m_vhtCapability
.
has_value
())
i
=
m_vhtCapability
->
Serialize
(
i
);
if
(
m_heCapability
.
has_value
())
i
=
m_heCapability
->
Serialize
(
i
);
i
=
m_ehtCapability
.
Serialize
(
i
);
if
(
m_ehtCapability
.
has_value
())
i
=
m_ehtCapability
->
Serialize
(
i
);
if
(
m_multiLinkElement
!=
nullptr
)
i
=
m_multiLinkElement
->
Serialize
(
i
);
}
...
...
@@ -1237,7 +1237,7 @@ MgtReassocRequestHeader::Deserialize (Buffer::Iterator start)
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_htCapability
,
i
);
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_vhtCapability
,
i
);
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_heCapability
,
i
);
i
=
m_ehtCapability
.
DeserializeIfPresent
(
i
);
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_ehtCapability
,
i
);
m_multiLinkElement
=
Create
<
MultiLinkElement
>
(
WIFI_MAC_MGT_REASSOCIATION_REQUEST
);
i
=
m_multiLinkElement
->
DeserializeIfPresent
(
tmp
=
i
);
if
(
i
.
GetDistanceFrom
(
tmp
)
==
0
)
m_multiLinkElement
=
nullptr
;
...
...
@@ -1446,7 +1446,7 @@ MgtAssocResponseHeader::SetEhtCapabilities (EhtCapabilities&& ehtCapabilities)
m_ehtCapability
=
std
::
move
(
ehtCapabilities
);
}
const
EhtCapabilities
&
const
std
::
optional
<
EhtCapabilities
>
&
MgtAssocResponseHeader
::
GetEhtCapabilities
(
void
)
const
{
return
m_ehtCapability
;
...
...
@@ -1566,7 +1566,7 @@ MgtAssocResponseHeader::GetSerializedSize (void) const
if
(
m_heCapability
.
has_value
())
size
+=
m_heCapability
->
GetSerializedSize
();
size
+=
m_heOperation
.
GetSerializedSize
();
size
+=
m_muEdcaParameterSet
.
GetSerializedSize
();
size
+=
m_ehtCapability
.
GetSerializedSize
();
if
(
m_ehtCapability
.
has_value
())
size
+=
m_ehtCapability
->
GetSerializedSize
();
if
(
m_multiLinkElement
!=
nullptr
)
size
+=
m_multiLinkElement
->
GetSerializedSize
();
return
size
;
}
...
...
@@ -1584,8 +1584,8 @@ MgtAssocResponseHeader::Print (std::ostream &os) const
if
(
m_vhtCapability
.
has_value
())
os
<<
"VHT Capabilities="
<<
*
m_vhtCapability
<<
" , "
;
os
<<
"VHT Operation="
<<
m_vhtOperation
<<
" , "
;
if
(
m_heCapability
.
has_value
())
os
<<
"HE Capabilities="
<<
*
m_heCapability
<<
" , "
;
os
<<
"HE Operation="
<<
m_heOperation
<<
" , "
<<
"EHT Capabilities="
<<
m_ehtCapability
;
os
<<
"HE Operation="
<<
m_heOperation
<<
" , "
;
if
(
m_ehtCapability
.
has_value
())
os
<<
"EHT Capabilities="
<<
*
m_ehtCapability
;
}
void
...
...
@@ -1607,7 +1607,7 @@ MgtAssocResponseHeader::Serialize (Buffer::Iterator start) const
if
(
m_heCapability
.
has_value
())
i
=
m_heCapability
->
Serialize
(
i
);
i
=
m_heOperation
.
Serialize
(
i
);
i
=
m_muEdcaParameterSet
.
Serialize
(
i
);
i
=
m_ehtCapability
.
Serialize
(
i
);
if
(
m_ehtCapability
.
has_value
())
i
=
m_ehtCapability
->
Serialize
(
i
);
if
(
m_multiLinkElement
!=
nullptr
)
i
=
m_multiLinkElement
->
Serialize
(
i
);
}
...
...
@@ -1630,7 +1630,7 @@ MgtAssocResponseHeader::Deserialize (Buffer::Iterator start)
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_heCapability
,
i
);
i
=
m_heOperation
.
DeserializeIfPresent
(
i
);
i
=
m_muEdcaParameterSet
.
DeserializeIfPresent
(
i
);
i
=
m_ehtCapability
.
DeserializeIfPresent
(
i
);
i
=
WifiInformationElement
::
DeserializeIfPresent
(
m_ehtCapability
,
i
);
m_multiLinkElement
=
Create
<
MultiLinkElement
>
(
WIFI_MAC_MGT_ASSOCIATION_RESPONSE
);
i
=
m_multiLinkElement
->
DeserializeIfPresent
(
tmp
=
i
);
if
(
i
.
GetDistanceFrom
(
tmp
)
==
0
)
m_multiLinkElement
=
nullptr
;
...
...
This diff is collapsed.
Click to expand it.
src/wifi/model/mgt-headers.h
View file @
0f95f8b6
...
...
@@ -179,11 +179,11 @@ public:
*/
const
std
::
optional
<
HeCapabilities
>&
GetHeCapabilities
(
void
)
const
;
/**
* Return the EHT capabilities.
* Return the EHT capabilities
, if present
.
*
* \return EHT capabilities
* \return EHT capabilities
, if present
*/
const
EhtCapabilities
&
GetEhtCapabilities
(
void
)
const
;
const
std
::
optional
<
EhtCapabilities
>
&
GetEhtCapabilities
(
void
)
const
;
/**
* Return the Service Set Identifier (SSID).
*
...
...
@@ -233,7 +233,7 @@ private:
std
::
optional
<
VhtCapabilities
>
m_vhtCapability
;
//!< VHT capabilities
std
::
optional
<
HeCapabilities
>
m_heCapability
;
//!< HE capabilities
uint16_t
m_listenInterval
;
//!< listen interval
EhtCapabilities
m_ehtCapability
;
//!< EHT capabilities
std
::
optional
<
EhtCapabilities
>
m_ehtCapability
;
//!< EHT capabilities
Ptr
<
MultiLinkElement
>
m_multiLinkElement
;
//!< Multi-Link Element
};
...
...
@@ -372,11 +372,11 @@ public:
*/
const
std
::
optional
<
HeCapabilities
>&
GetHeCapabilities
(
void
)
const
;
/**
* Return the EHT capabilities.
* Return the EHT capabilities
, if present
.
*
* \return EHT capabilities
* \return EHT capabilities
, if present
*/
const
EhtCapabilities
&
GetEhtCapabilities
(
void
)
const
;
const
std
::
optional
<
EhtCapabilities
>
&
GetEhtCapabilities
(
void
)
const
;
/**
* Return the Service Set Identifier (SSID).
*
...
...
@@ -432,7 +432,7 @@ private:
std
::
optional
<
VhtCapabilities
>
m_vhtCapability
;
//!< VHT capabilities
std
::
optional
<
HeCapabilities
>
m_heCapability
;
//!< HE capabilities
uint16_t
m_listenInterval
;
//!< listen interval
EhtCapabilities
m_ehtCapability
;
//!< EHT capabilities
std
::
optional
<
EhtCapabilities
>
m_ehtCapability
;
//!< EHT capabilities
Ptr
<
MultiLinkElement
>
m_multiLinkElement
;
//!< Multi-Link Element
};
...
...
@@ -508,11 +508,11 @@ public:
*/
const
HeOperation
&
GetHeOperation
(
void
)
const
;
/**
* Return the EHT capabilities.
* Return the EHT capabilities
, if present
.
*
* \return EHT capabilities
* \return EHT capabilities
, if present
*/
const
EhtCapabilities
&
GetEhtCapabilities
(
void
)
const
;
const
std
::
optional
<
EhtCapabilities
>
&
GetEhtCapabilities
(
void
)
const
;
/**
* Return the Multi-Link Element information element, if present, or a null
* pointer, otherwise.
...
...
@@ -723,7 +723,7 @@ private:
std
::
optional
<
HeCapabilities
>
m_heCapability
;
//!< HE capabilities
HeOperation
m_heOperation
;
//!< HE operation
MuEdcaParameterSet
m_muEdcaParameterSet
;
//!< MU EDCA Parameter Set
EhtCapabilities
m_ehtCapability
;
//!< EHT capabilities
std
::
optional
<
EhtCapabilities
>
m_ehtCapability
;
//!< EHT capabilities
Ptr
<
MultiLinkElement
>
m_multiLinkElement
;
//!< Multi-Link Element
};
...
...
@@ -850,11 +850,11 @@ public:
const
std
::
optional
<
HeCapabilities
>&
GetHeCapabilities
(
void
)
const
;
/**
* Return the EHT capabilities.
* Return the EHT capabilities
, if present
.
*
* \return EHT capabilities
* \return EHT capabilities
, if present
*/
const
EhtCapabilities
&
GetEhtCapabilities
(
void
)
const
;
const
std
::
optional
<
EhtCapabilities
>
&
GetEhtCapabilities
(
void
)
const
;
/**
* Register this type.
...
...
@@ -875,7 +875,7 @@ private:
std
::
optional
<
HtCapabilities
>
m_htCapability
;
//!< HT capabilities
std
::
optional
<
VhtCapabilities
>
m_vhtCapability
;
//!< VHT capabilities
std
::
optional
<
HeCapabilities
>
m_heCapability
;
//!< HE capabilities
EhtCapabilities
m_ehtCapability
;
//!< EHT capabilities
std
::
optional
<
EhtCapabilities
>
m_ehtCapability
;
//!< EHT capabilities
};
...
...
@@ -962,11 +962,11 @@ public:
*/
const
HeOperation
&
GetHeOperation
(
void
)
const
;
/**
* Return the EHT capabilities.
* Return the EHT capabilities
, if present
.
*
* \return EHT capabilities
* \return EHT capabilities
, if present
*/
const
EhtCapabilities
&
GetEhtCapabilities
(
void
)
const
;
const
std
::
optional
<
EhtCapabilities
>
&
GetEhtCapabilities
(
void
)
const
;
/**
* Return the ERP information.
*
...
...
@@ -1205,7 +1205,7 @@ private:
ErpInformation
m_erpInformation
;
//!< ERP information
EdcaParameterSet
m_edcaParameterSet
;
//!< EDCA Parameter Set
MuEdcaParameterSet
m_muEdcaParameterSet
;
//!< MU EDCA Parameter Set
EhtCapabilities
m_ehtCapability
;
//!< EHT capabilities
std
::
optional
<
EhtCapabilities
>
m_ehtCapability
;
//!< EHT capabilities
Ptr
<
ReducedNeighborReport
>
m_reducedNeighborReport
;
//!< Reduced Neighbor Report information
Ptr
<
MultiLinkElement
>
m_multiLinkElement
;
//!< Multi-Link Element
};
...
...
This diff is collapsed.
Click to expand it.
src/wifi/model/sta-wifi-mac.cc
View file @
0f95f8b6
...
...
@@ -1179,9 +1179,9 @@ StaWifiMac::UpdateApInfo (const MgtFrameType& frame, const Mac48Address& apAddr,
if
(
!
GetEhtSupported
())
return
;
/* EHT station */
const
EhtCapabilities
&
ehtCapabilities
=
frame
.
GetEhtCapabilities
();
const
auto
&
ehtCapabilities
=
frame
.
GetEhtCapabilities
();
//TODO: once we support non constant rate managers, we should add checks here whether EHT is supported by the peer
GetWifiRemoteStationManager
(
linkId
)
->
AddStationEhtCapabilities
(
apAddr
,
ehtCapabilities
);
GetWifiRemoteStationManager
(
linkId
)
->
AddStationEhtCapabilities
(
apAddr
,
*
ehtCapabilities
);
};
// process Information Elements included in the current frame variant
...
...
This diff is collapsed.
Click to expand it.
src/wifi/model/wifi-mac.cc
View file @
0f95f8b6
...
...
@@ -1518,11 +1518,9 @@ EhtCapabilities
WifiMac
::
GetEhtCapabilities
(
void
)
const
{
NS_LOG_FUNCTION
(
this
);
NS_ASSERT
(
GetEhtSupported
());
EhtCapabilities
capabilities
;
if
(
GetEhtSupported
())
{
//TODO: fill in EHT capabilities
}
// TODO: fill in EHT capabilities
return
capabilities
;
}
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment