src/devices/wifi/mac-high-nqap.cc
changeset 1964 041240a915f8
parent 1940 6c62be5cf73a
child 2010 e2e16c1712c8
equal deleted inserted replaced
1963:007214146da7 1964:041240a915f8
    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 ());