LEFT | RIGHT |
(no file at all) | |
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ | 1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
2 /* | 2 /* |
3 * Copyright (c) 2013 | 3 * Copyright (c) 2013 |
4 * | 4 * |
5 * This program is free software; you can redistribute it and/or modify | 5 * This program is free software; you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 2 as | 6 * it under the terms of the GNU General Public License version 2 as |
7 * published by the Free Software Foundation; | 7 * published by the Free Software Foundation; |
8 * | 8 * |
9 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 | 71 |
72 if ((4 + packet->GetSize () + actualSize + padding) <= m_maxAmpduLength) | 72 if ((4 + packet->GetSize () + actualSize + padding) <= m_maxAmpduLength) |
73 { | 73 { |
74 if (padding) | 74 if (padding) |
75 { | 75 { |
76 Ptr<Packet> pad = Create<Packet> (padding); | 76 Ptr<Packet> pad = Create<Packet> (padding); |
77 aggregatedPacket->AddAtEnd (pad); | 77 aggregatedPacket->AddAtEnd (pad); |
78 } | 78 } |
79 currentHdr.SetCrc (1); | 79 currentHdr.SetCrc (1); |
80 currentHdr.SetSig (); | 80 currentHdr.SetSig (); |
81 currentHdr.SetLength (packet->GetSize ()); | 81 currentHdr.SetLength (static_cast<uint16_t>(packet->GetSize ())); |
82 currentPacket = packet->Copy (); | 82 currentPacket = packet->Copy (); |
83 | 83 |
84 currentPacket->AddHeader (currentHdr); | 84 currentPacket->AddHeader (currentHdr); |
85 aggregatedPacket->AddAtEnd (currentPacket); | 85 aggregatedPacket->AddAtEnd (currentPacket); |
86 return true; | 86 return true; |
87 } | 87 } |
88 return false; | 88 return false; |
89 } | 89 } |
90 | 90 |
91 void | 91 void |
92 MpduAggregator::AggregateSingleMpdu (Ptr<const Packet> packet, Ptr<Packet> aggre
gatedPacket) const | 92 MpduAggregator::AggregateSingleMpdu (Ptr<const Packet> packet, Ptr<Packet> aggre
gatedPacket) const |
93 { | 93 { |
94 NS_LOG_FUNCTION (this); | 94 NS_LOG_FUNCTION (this); |
95 Ptr<Packet> currentPacket; | 95 Ptr<Packet> currentPacket; |
96 AmpduSubframeHeader currentHdr; | 96 AmpduSubframeHeader currentHdr; |
97 | 97 |
98 uint8_t padding = CalculatePadding (aggregatedPacket); | 98 uint8_t padding = CalculatePadding (aggregatedPacket); |
99 if (padding) | 99 if (padding) |
100 { | 100 { |
101 Ptr<Packet> pad = Create<Packet> (padding); | 101 Ptr<Packet> pad = Create<Packet> (padding); |
102 aggregatedPacket->AddAtEnd (pad); | 102 aggregatedPacket->AddAtEnd (pad); |
103 } | 103 } |
104 | 104 |
105 currentHdr.SetEof (1); | 105 currentHdr.SetEof (1); |
106 currentHdr.SetCrc (1); | 106 currentHdr.SetCrc (1); |
107 currentHdr.SetSig (); | 107 currentHdr.SetSig (); |
108 currentHdr.SetLength (packet->GetSize ()); | 108 currentHdr.SetLength (static_cast<uint16_t>(packet->GetSize ())); |
109 currentPacket = packet->Copy (); | 109 currentPacket = packet->Copy (); |
110 | 110 |
111 currentPacket->AddHeader (currentHdr); | 111 currentPacket->AddHeader (currentHdr); |
112 aggregatedPacket->AddAtEnd (currentPacket); | 112 aggregatedPacket->AddAtEnd (currentPacket); |
113 } | 113 } |
114 | 114 |
115 void | 115 void |
116 MpduAggregator::AddHeaderAndPad (Ptr<Packet> packet, bool last, bool isSingleMpd
u) const | 116 MpduAggregator::AddHeaderAndPad (Ptr<Packet> packet, bool last, bool isSingleMpd
u) const |
117 { | 117 { |
118 NS_LOG_FUNCTION (this); | 118 NS_LOG_FUNCTION (this); |
119 AmpduSubframeHeader currentHdr; | 119 AmpduSubframeHeader currentHdr; |
120 | 120 |
121 //This is called to prepare packets from the aggregate queue to be sent so no
need to check total size since it has already been | 121 //This is called to prepare packets from the aggregate queue to be sent so no
need to check total size since it has already been |
122 //done before when deciding how many packets to add to the queue | 122 //done before when deciding how many packets to add to the queue |
123 currentHdr.SetCrc (1); | 123 currentHdr.SetCrc (1); |
124 currentHdr.SetSig (); | 124 currentHdr.SetSig (); |
125 currentHdr.SetLength (packet->GetSize ()); | 125 currentHdr.SetLength (static_cast<uint16_t>(packet->GetSize ())); |
126 if (isSingleMpdu) | 126 if (isSingleMpdu) |
127 { | 127 { |
128 currentHdr.SetEof (1); | 128 currentHdr.SetEof (1); |
129 } | 129 } |
130 | 130 |
131 packet->AddHeader (currentHdr); | 131 packet->AddHeader (currentHdr); |
132 uint32_t padding = CalculatePadding (packet); | 132 uint32_t padding = CalculatePadding (packet); |
133 | 133 |
134 if (padding && !last) | 134 if (padding && !last) |
135 { | 135 { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 } | 193 } |
194 | 194 |
195 std::pair<Ptr<Packet>, AmpduSubframeHeader> packetHdr (extractedMpdu, hdr)
; | 195 std::pair<Ptr<Packet>, AmpduSubframeHeader> packetHdr (extractedMpdu, hdr)
; |
196 set.push_back (packetHdr); | 196 set.push_back (packetHdr); |
197 } | 197 } |
198 NS_LOG_INFO ("Deaggreated A-MPDU: extracted " << set.size () << " MPDUs"); | 198 NS_LOG_INFO ("Deaggreated A-MPDU: extracted " << set.size () << " MPDUs"); |
199 return set; | 199 return set; |
200 } | 200 } |
201 | 201 |
202 } //namespace ns3 | 202 } //namespace ns3 |
LEFT | RIGHT |