View | Details | Raw Unified | Return to bug 398
Collapse All | Expand All

(-)a/src/devices/wifi/nqsta-wifi-mac.cc (-4 / +23 lines)
 Lines 494-499    Link Here 
494
    } 
495
    } 
495
  else if (hdr->IsData ()) 
496
  else if (hdr->IsData ()) 
496
    {
497
    {
498
      if (!IsAssociated ())
499
        {
500
          NS_LOG_LOGIC ("Received data frame while not associated: ignore");
501
          return;
502
        }
503
      if (!(hdr->IsFromDs () && !hdr->IsToDs ()))
504
        {
505
          NS_LOG_LOGIC ("Received data frame not from the DS: ignore");
506
          return;
507
        }
508
      if (hdr->GetAddr2 () != GetBssid ())
509
        {
510
          NS_LOG_LOGIC ("Received data frame not from the the BSS we are associated with: ignore");
511
          return;
512
        }
497
      NS_LOG_LOGIC ("ForwardUp");
513
      NS_LOG_LOGIC ("ForwardUp");
498
      ForwardUp (packet, hdr->GetAddr2 (), hdr->GetAddr1 ());
514
      ForwardUp (packet, hdr->GetAddr2 (), hdr->GetAddr1 ());
499
    } 
515
    } 
 Lines 511-522    Link Here 
511
      if (GetSsid ().IsBroadcast () ||
527
      if (GetSsid ().IsBroadcast () ||
512
          beacon.GetSsid ().IsEqual (GetSsid ()))
528
          beacon.GetSsid ().IsEqual (GetSsid ()))
513
        {
529
        {
530
          goodBeacon = true;
531
        }
532
      if (IsAssociated () && hdr->GetAddr3 () != GetBssid ())
533
        {
534
          goodBeacon = false;
535
        }
536
      if (goodBeacon)
537
        {
514
          Time delay = MicroSeconds (beacon.GetBeaconIntervalUs () * m_maxMissedBeacons);
538
          Time delay = MicroSeconds (beacon.GetBeaconIntervalUs () * m_maxMissedBeacons);
515
          RestartBeaconWatchdog (delay);
539
          RestartBeaconWatchdog (delay);
516
          goodBeacon = true;
517
        }
518
      if (goodBeacon) 
519
        {
520
          SetBssid (hdr->GetAddr3 ());
540
          SetBssid (hdr->GetAddr3 ());
521
        }
541
        }
522
      if (goodBeacon && m_state == BEACON_MISSED) 
542
      if (goodBeacon && m_state == BEACON_MISSED) 

Return to bug 398