equal
deleted
inserted
replaced
51 m_dca = dca; |
51 m_dca = dca; |
52 m_dca->SetTxOkCallback (MakeCallback (&MacHighNqap::TxOk, this)); |
52 m_dca->SetTxOkCallback (MakeCallback (&MacHighNqap::TxOk, this)); |
53 m_dca->SetTxFailedCallback (MakeCallback (&MacHighNqap::TxFailed, this)); |
53 m_dca->SetTxFailedCallback (MakeCallback (&MacHighNqap::TxFailed, this)); |
54 } |
54 } |
55 void |
55 void |
56 MacHighNqap::SetInterface (WifiNetDevice *interface) |
56 MacHighNqap::SetDevice (WifiNetDevice *device) |
57 { |
57 { |
58 m_interface = interface; |
58 m_device = device; |
59 } |
59 } |
60 void |
60 void |
61 MacHighNqap::SetStations (MacStations *stations) |
61 MacHighNqap::SetStations (MacStations *stations) |
62 { |
62 { |
63 m_stations = stations; |
63 m_stations = stations; |
81 MacHighNqap::ForwardDown (Packet packet, Mac48Address from, Mac48Address to) |
81 MacHighNqap::ForwardDown (Packet packet, Mac48Address from, Mac48Address to) |
82 { |
82 { |
83 WifiMacHeader hdr; |
83 WifiMacHeader hdr; |
84 hdr.SetTypeData (); |
84 hdr.SetTypeData (); |
85 hdr.SetAddr1 (to); |
85 hdr.SetAddr1 (to); |
86 hdr.SetAddr2 (m_interface->GetSelfAddress ()); |
86 hdr.SetAddr2 (m_device->GetSelfAddress ()); |
87 hdr.SetAddr3 (from); |
87 hdr.SetAddr3 (from); |
88 hdr.SetDsFrom (); |
88 hdr.SetDsFrom (); |
89 hdr.SetDsNotTo (); |
89 hdr.SetDsNotTo (); |
90 m_dca->Queue (packet, hdr); |
90 m_dca->Queue (packet, hdr); |
91 } |
91 } |
92 void |
92 void |
93 MacHighNqap::Queue (Packet packet, Mac48Address to) |
93 MacHighNqap::Queue (Packet packet, Mac48Address to) |
94 { |
94 { |
95 ForwardDown (packet, m_interface->GetSelfAddress (), to); |
95 ForwardDown (packet, m_device->GetSelfAddress (), to); |
96 } |
96 } |
97 SupportedRates |
97 SupportedRates |
98 MacHighNqap::GetSupportedRates (void) |
98 MacHighNqap::GetSupportedRates (void) |
99 { |
99 { |
100 return m_rates; |
100 return m_rates; |
104 { |
104 { |
105 TRACE ("send probe response to="<<to); |
105 TRACE ("send probe response to="<<to); |
106 WifiMacHeader hdr; |
106 WifiMacHeader hdr; |
107 hdr.SetProbeResp (); |
107 hdr.SetProbeResp (); |
108 hdr.SetAddr1 (to); |
108 hdr.SetAddr1 (to); |
109 hdr.SetAddr2 (m_interface->GetSelfAddress ()); |
109 hdr.SetAddr2 (m_device->GetSelfAddress ()); |
110 hdr.SetAddr3 (m_interface->GetSelfAddress ()); |
110 hdr.SetAddr3 (m_device->GetSelfAddress ()); |
111 hdr.SetDsNotFrom (); |
111 hdr.SetDsNotFrom (); |
112 hdr.SetDsNotTo (); |
112 hdr.SetDsNotTo (); |
113 Packet packet; |
113 Packet packet; |
114 MgtProbeResponseHeader probe; |
114 MgtProbeResponseHeader probe; |
115 probe.SetSsid (m_interface->GetSsid ()); |
115 probe.SetSsid (m_device->GetSsid ()); |
116 SupportedRates rates = GetSupportedRates (); |
116 SupportedRates rates = GetSupportedRates (); |
117 probe.SetSupportedRates (rates); |
117 probe.SetSupportedRates (rates); |
118 probe.SetBeaconIntervalUs (m_beaconIntervalUs); |
118 probe.SetBeaconIntervalUs (m_beaconIntervalUs); |
119 packet.AddHeader (probe); |
119 packet.AddHeader (probe); |
120 |
120 |
125 { |
125 { |
126 TRACE ("send assoc response to="<<to); |
126 TRACE ("send assoc response to="<<to); |
127 WifiMacHeader hdr; |
127 WifiMacHeader hdr; |
128 hdr.SetAssocResp (); |
128 hdr.SetAssocResp (); |
129 hdr.SetAddr1 (to); |
129 hdr.SetAddr1 (to); |
130 hdr.SetAddr2 (m_interface->GetSelfAddress ()); |
130 hdr.SetAddr2 (m_device->GetSelfAddress ()); |
131 hdr.SetAddr3 (m_interface->GetSelfAddress ()); |
131 hdr.SetAddr3 (m_device->GetSelfAddress ()); |
132 hdr.SetDsNotFrom (); |
132 hdr.SetDsNotFrom (); |
133 hdr.SetDsNotTo (); |
133 hdr.SetDsNotTo (); |
134 Packet packet; |
134 Packet packet; |
135 MgtAssocResponseHeader assoc; |
135 MgtAssocResponseHeader assoc; |
136 StatusCode code; |
136 StatusCode code; |
169 |
169 |
170 if (hdr->IsData ()) |
170 if (hdr->IsData ()) |
171 { |
171 { |
172 if (!hdr->IsFromDs () && |
172 if (!hdr->IsFromDs () && |
173 hdr->IsToDs () && |
173 hdr->IsToDs () && |
174 hdr->GetAddr1 () == m_interface->GetSelfAddress () && |
174 hdr->GetAddr1 () == m_device->GetSelfAddress () && |
175 station->IsAssociated ()) |
175 station->IsAssociated ()) |
176 { |
176 { |
177 if (hdr->GetAddr3 () == m_interface->GetSelfAddress ()) |
177 if (hdr->GetAddr3 () == m_device->GetSelfAddress ()) |
178 { |
178 { |
179 m_forwardUp (packet); |
179 m_forwardUp (packet, hdr->GetAddr2 ()); |
180 } |
180 } |
181 else |
181 else |
182 { |
182 { |
183 ForwardDown (packet, |
183 ForwardDown (packet, |
184 hdr->GetAddr2 (), |
184 hdr->GetAddr2 (), |
185 hdr->GetAddr3 ()); |
185 hdr->GetAddr3 ()); |
186 m_forwardUp (packet); |
186 m_forwardUp (packet, hdr->GetAddr2 ()); |
187 } |
187 } |
188 } |
188 } |
189 else if (hdr->IsFromDs () && |
189 else if (hdr->IsFromDs () && |
190 hdr->IsToDs ()) |
190 hdr->IsToDs ()) |
191 { |
191 { |
203 if (hdr->IsProbeReq ()) |
203 if (hdr->IsProbeReq ()) |
204 { |
204 { |
205 NS_ASSERT (hdr->GetAddr1 ().IsBroadcast ()); |
205 NS_ASSERT (hdr->GetAddr1 ().IsBroadcast ()); |
206 SendProbeResp (hdr->GetAddr2 ()); |
206 SendProbeResp (hdr->GetAddr2 ()); |
207 } |
207 } |
208 else if (hdr->GetAddr1 () == m_interface->GetSelfAddress ()) |
208 else if (hdr->GetAddr1 () == m_device->GetSelfAddress ()) |
209 { |
209 { |
210 if (hdr->IsAssocReq ()) |
210 if (hdr->IsAssocReq ()) |
211 { |
211 { |
212 station->RecordWaitAssocTxOk (); |
212 station->RecordWaitAssocTxOk (); |
213 SendAssocResp (hdr->GetAddr2 ()); |
213 SendAssocResp (hdr->GetAddr2 ()); |