--- a/src/click/examples/nsclick-udp-client-server-wifi.cc Tue Jul 05 11:05:53 2011 +0100
+++ b/src/click/examples/nsclick-udp-client-server-wifi.cc Tue Jul 05 11:16:40 2011 +0100
@@ -17,17 +17,23 @@
// Adaptation of examples/udp/udp-client-server.cc for
// Click based nodes running wifi.
//
-// Network topology
+// Network topology:
+//
+// (1.4)
+// (( n4 ))
//
// 172.16.1.0/24
+//
// (1.1) (1.2) (1.3)
// n0 )) (( n1 )) (( n2
// WLAN
//
-// - UDP flows from n0 to n1
+// - UDP flows from n0 to n1 and n2 to n1.
// - All nodes are Click based.
// - The single ethernet interface that each node
// uses is named 'eth0' in the Click file.
+// - Node 4 is running in promiscuous mode and can listen in on
+// the packets being exchanged between n0-n1 and n2-n1.
//
#include <fstream>
@@ -59,16 +65,6 @@
// Access the handler
NS_LOG_INFO (clickRouter->WriteHandler ("wifi/arpquerier", "insert", "172.16.1.2 00:00:00:00:00:02"));
}
-
-void SetPromisc (Ptr<Ipv4ClickRouting> clickRouter)
-{
- // 4th node can listen to traffic in promisc mode
- // Note: Promiscuous mode support for Click has
- // been added ahead of the official Wifi support
- // for promiscuous mode. Thus, the below line will
- // not work until then.
- clickRouter->SetPromiscuous ("eth0");
-}
#endif
int
@@ -142,7 +138,14 @@
// Install Click on the nodes
//
ClickInternetStackHelper clickinternet;
- clickinternet.SetClickFile (n, "src/click/examples/nsclick-wifi-single-interface.click");
+ clickinternet.SetClickFile (n.Get (0), "src/click/examples/nsclick-wifi-single-interface.click");
+ clickinternet.SetClickFile (n.Get (1), "src/click/examples/nsclick-wifi-single-interface.click");
+ clickinternet.SetClickFile (n.Get (2), "src/click/examples/nsclick-wifi-single-interface.click");
+
+ // Node 4 is to run in promiscuous mode. This can be verified
+ // from the pcap trace Node4_in_eth0.pcap generated after running
+ // this script.
+ clickinternet.SetClickFile (n.Get (3), "src/click/examples/nsclick-wifi-single-interface-promisc.click");
clickinternet.SetRoutingTableElement (n, "rt");
clickinternet.Install (n);
Ipv4AddressHelper ipv4;
@@ -180,9 +183,6 @@
wifiPhy.EnablePcap ("nsclick-udp-client-server-wifi", d);
- // Call SetPromiscuous mode on Click Router for node 4
- Simulator::Schedule (Seconds (0.1), &SetPromisc, n.Get (3)->GetObject<Ipv4ClickRouting> ());
-
// Force the MAC address of the second node: The current ARP
// implementation of Click sends only one ARP request per incoming
// packet for an unknown destination and does not retransmit if no
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/click/examples/nsclick-wifi-single-interface-promisc.click Tue Jul 05 11:16:40 2011 +0100
@@ -0,0 +1,114 @@
+// nsclick-wifi-single-interface.click
+//
+// Copyright (c) 2011, Deutsche Telekom Laboratories
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License version
+// 2 as published by the Free Software Foundation;
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// Author: Ruben Merz <ruben@net.t-labs.tu-berlin.de>
+//
+// This is a single host Click configuration for wifi.
+// Sets the interface in promiscuous mode
+// The node broadcasts ARP requests if it wants to find a destination
+// address, and it responds to ARP requests made for it.
+
+elementclass WiFiSimHost {
+ $ipaddr, $hwaddr |
+
+ cl::Classifier(12/0806 20/0001,12/0806 20/0002, -);
+ forhost::IPClassifier(dst host $ipaddr,-);
+ arpquerier::ARPQuerier(eth0);
+ arpresponder::ARPResponder(eth0);
+
+ ethout::Queue
+ -> ToDump(out_eth0.pcap,PER_NODE 1)
+ -> ToSimDevice(eth0);
+
+ // All packets received on eth0 are silently
+ // dropped if they are destined for another location
+ FromSimDevice(eth0,SNAPLEN 4096,PROMISC true)
+ -> ToDump(in_eth0.pcap,PER_NODE 1,ENCAP ETHER)
+ -> cl;
+
+ // ARP queries from other nodes go to the ARP responder element
+ cl[0] -> arpresponder;
+
+ // ARP responses go to our ARP query element
+ cl[1] -> [1]arpquerier;
+
+ // All other packets get checked whether they are meant for us
+ cl[2]
+ -> Strip (14)
+ -> CheckIPHeader2
+ -> MarkIPHeader
+ -> GetIPAddress(16) // Sets destination IP address annotation from packet data
+ -> forhost;
+
+ // Packets for us are pushed outside
+ forhost[0]
+ ->[0]output;
+
+ // Packets for other folks or broadcast packets get sent to output 1
+ forhost[1]
+ -> ToDump(discard.pcap,2000,PER_NODE 1,ENCAP IP)
+ -> [1]output;
+
+ // Incoming packets get pushed into the ARP query module
+ input[0]
+ -> arpquerier;
+
+ // Both the ARP query and response modules send data out to
+ // the simulated network device, eth0.
+ arpquerier
+ -> ToDump(out_arpquery.pcap,PER_NODE 1)
+ -> ethout;
+
+ arpresponder
+ -> ToDump(out_arprespond.pcap,PER_NODE 1)
+ -> ethout;
+
+}
+
+elementclass TapSimHost {
+ $dev |
+
+ // Packets go to "tap0" which sends them to the kernel
+ input[0]
+ -> ToDump(tokernel.pcap,2000,IP,PER_NODE 1)
+ -> ToSimDevice($dev,IP);
+
+ // Packets sent out by the "kernel" get pushed outside
+ FromSimDevice($dev,SNAPLEN 4096)
+ -> CheckIPHeader2
+ -> ToDump(fromkernel.pcap,2000,IP,PER_NODE 1)
+ -> GetIPAddress(16)
+ -> [0]output;
+}
+
+// Instantiate elements
+wifi::WiFiSimHost(eth0:ip,eth0:eth);
+kernel::TapSimHost(tap0);
+
+// Users can do some processing between the two elements
+wifi[0] -> kernel;
+kernel -> wifi;
+// Packets not for us are discarded
+wifi[1] -> Discard;
+
+// It is mandatory to use an IPRouteTable element with ns-3-click
+// (but we do not use it in this example)
+rt :: LinearIPLookup (172.16.1.0/24 0.0.0.0 1);
+// We are actually not using the routing table
+Idle () -> rt;
+rt[0] -> Discard;
+rt[1] -> Discard;
--- a/src/click/model/ipv4-click-routing.cc Tue Jul 05 11:05:53 2011 +0100
+++ b/src/click/model/ipv4-click-routing.cc Tue Jul 05 11:16:40 2011 +0100
@@ -388,14 +388,11 @@
}
void
-Ipv4ClickRouting::SetPromiscuous (std::string ifName)
+Ipv4ClickRouting::SetPromisc (int ifid)
{
Ptr<Ipv4L3ClickProtocol> ipv4l3 = DynamicCast<Ipv4L3ClickProtocol> (m_ipv4);
- NS_ASSERT (ipv4l3);
- // Interface ethN gets index 1+N, but netdevice will start at 0
- // To ensure this, install a Click stack on a node only after
- // all NetDevices have been installed.
- ipv4l3->SetPromisc (GetInterfaceId (ifName.c_str ()) - 1);
+ NS_ASSERT(ipv4l3);
+ ipv4l3->SetPromisc (ifid);
}
Ptr<Ipv4Route>
@@ -628,6 +625,16 @@
break;
}
+ case SIMCLICK_IF_PROMISC:
+ {
+ int ifid = va_arg(val, int);
+ clickInstance->SetPromisc (ifid);
+
+ retval = 0;
+ NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_IF_PROMISC: " << ifid << " " << ns3::Simulator::Now ());
+ break;
+ }
+
case SIMCLICK_IF_READY:
{
int ifid = va_arg (val, int); // Commented out so that optimized build works
--- a/src/click/model/ipv4-click-routing.h Tue Jul 05 11:05:53 2011 +0100
+++ b/src/click/model/ipv4-click-routing.h Tue Jul 05 11:16:40 2011 +0100
@@ -108,7 +108,8 @@
*
* \brief Sets an interface to run on promiscuous mode.
*/
- void SetPromiscuous (std::string ifName);
+ void SetPromisc (int ifid);
+
private:
simclick_node_t *m_simNode;
--- a/src/click/model/ipv4-l3-click-protocol.cc Tue Jul 05 11:05:53 2011 +0100
+++ b/src/click/model/ipv4-l3-click-protocol.cc Tue Jul 05 11:16:40 2011 +0100
@@ -574,35 +574,22 @@
void
Ipv4L3ClickProtocol::SetPromisc (uint32_t i)
{
- NS_ASSERT (i <= m_node->GetNDevices ());
- if (i > m_promiscDeviceList.size ())
- {
- m_promiscDeviceList.resize (i);
- }
- std::vector<bool>::iterator it = m_promiscDeviceList.begin ();
- std::advance (it, i);
- m_promiscDeviceList.insert (it, true);
+ NS_ASSERT(i <= m_node->GetNDevices ());
+ Ptr<NetDevice> netdev = GetNetDevice (i);
+ NS_ASSERT (netdev);
+ Ptr<Node> node = GetObject<Node> ();
+ NS_ASSERT (node);
+ node->RegisterProtocolHandler (MakeCallback (&Ipv4L3ClickProtocol::Receive, this),
+ 0, netdev,true);
}
uint32_t
Ipv4L3ClickProtocol::AddInterface (Ptr<NetDevice> device)
{
NS_LOG_FUNCTION (this << &device);
-
Ptr<Node> node = GetObject<Node> ();
- NS_LOG_DEBUG ("Size:" << m_promiscDeviceList.size () << " Interface index" << device->GetIfIndex ());
- if (m_promiscDeviceList.size () > 0
- && (m_promiscDeviceList.size () >= device->GetIfIndex ())
- && (m_promiscDeviceList[device->GetIfIndex ()]))
- {
- node->RegisterProtocolHandler (MakeCallback (&Ipv4L3ClickProtocol::Receive, this),
- 0, device,true);
- }
- else
- {
- node->RegisterProtocolHandler (MakeCallback (&Ipv4L3ClickProtocol::Receive, this),
- Ipv4L3ClickProtocol::PROT_NUMBER, device);
- }
+ node->RegisterProtocolHandler (MakeCallback (&Ipv4L3ClickProtocol::Receive, this),
+ Ipv4L3ClickProtocol::PROT_NUMBER, device);
node->RegisterProtocolHandler (MakeCallback (&Ipv4L3ClickProtocol::Receive, this),
ArpL3Protocol::PROT_NUMBER, device);
--- a/src/wifi/doc/wifi.rst Tue Jul 05 11:05:53 2011 +0100
+++ b/src/wifi/doc/wifi.rst Tue Jul 05 11:16:40 2011 +0100
@@ -318,7 +318,7 @@
*SNIR function over time.*
-From the SNIR function we can derive the Bit Error Rate (BER) and Packet Error Rate (PER) for the modulation and coding scheme being used for the transmission. Please refer to [pei80211validation]_ and [lacage2006yans]_ for a detailed description of the available BER/PER models.
+From the SNIR function we can derive the Bit Error Rate (BER) and Packet Error Rate (PER) for the modulation and coding scheme being used for the transmission. Please refer to [pei80211ofdm]_, [pei80211b]_ and [lacage2006yans]_ for a detailed description of the available BER/PER models.
WifiChannel configuration
@@ -365,7 +365,9 @@
.. [ieee80211] IEEE Std 802.11-2007 *Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications*
-.. [pei80211validation] \G. Pei and Tom Henderson, `Validation of ns-3 802.11b PHY model* <http://www.nsnam.org/~pei/80211b.pdf>`__
+.. [pei80211b] \G. Pei and Tom Henderson, `Validation of ns-3 802.11b PHY model <http://www.nsnam.org/~pei/80211b.pdf>`__
+
+.. [pei80211ofdm] \G. Pei and Tom Henderson, `Validation of OFDM error rate model in ns-3 <http://www.nsnam.org/~pei/80211ofdm.pdf>`__
.. [lacage2006yans] \M. Lacage and T. Henderson, `Yet another Network Simulator <http://cutebugs.net/files/wns2-yans.pdf>`__
--- a/src/wifi/helper/yans-wifi-helper.cc Tue Jul 05 11:05:53 2011 +0100
+++ b/src/wifi/helper/yans-wifi-helper.cc Tue Jul 05 11:16:40 2011 +0100
@@ -444,8 +444,8 @@
Ptr<PcapFileWrapper> file = pcapHelper.CreateFile (filename, std::ios::out, m_pcapDlt);
- phy->TraceConnectWithoutContext ("PromiscSnifferTx", MakeBoundCallback (&PcapSniffTxEvent, file));
- phy->TraceConnectWithoutContext ("PromiscSnifferRx", MakeBoundCallback (&PcapSniffRxEvent, file));
+ phy->TraceConnectWithoutContext ("MonitorSnifferTx", MakeBoundCallback (&PcapSniffTxEvent, file));
+ phy->TraceConnectWithoutContext ("MonitorSnifferRx", MakeBoundCallback (&PcapSniffRxEvent, file));
}
void
--- a/src/wifi/model/mac-low.cc Tue Jul 05 11:05:53 2011 +0100
+++ b/src/wifi/model/mac-low.cc Tue Jul 05 11:16:40 2011 +0100
@@ -366,6 +366,7 @@
NS_LOG_FUNCTION (this);
m_lastNavDuration = Seconds (0);
m_lastNavStart = Seconds (0);
+ m_promisc = false;
}
MacLow::~MacLow ()
@@ -522,6 +523,11 @@
{
m_bssid = bssid;
}
+void
+MacLow::SetPromisc (void)
+{
+ m_promisc = true;
+}
Mac48Address
MacLow::GetAddress (void) const
{
@@ -893,6 +899,14 @@
// DROP
}
}
+ else if (m_promisc)
+ {
+ NS_ASSERT (hdr.GetAddr1 () != m_self);
+ if (hdr.IsData ())
+ {
+ goto rxPacket;
+ }
+ }
else
{
//NS_LOG_DEBUG_VERBOSE ("rx not-for-me from %d", GetSource (packet));
--- a/src/wifi/model/mac-low.h Tue Jul 05 11:05:53 2011 +0100
+++ b/src/wifi/model/mac-low.h Tue Jul 05 11:16:40 2011 +0100
@@ -388,6 +388,7 @@
void SetSlotTime (Time slotTime);
void SetPifs (Time pifs);
void SetBssid (Mac48Address ad);
+ void SetPromisc (void);
Mac48Address GetAddress (void) const;
Time GetAckTimeout (void) const;
Time GetBasicBlockAckTimeout () const;
@@ -632,6 +633,8 @@
Time m_lastNavStart;
Time m_lastNavDuration;
+ bool m_promisc;
+
// Listerner needed to monitor when a channel switching occurs.
class PhyMacLowListener * m_phyMacLowListener;
--- a/src/wifi/model/regular-wifi-mac.cc Tue Jul 05 11:05:53 2011 +0100
+++ b/src/wifi/model/regular-wifi-mac.cc Tue Jul 05 11:16:40 2011 +0100
@@ -391,6 +391,12 @@
}
void
+RegularWifiMac::SetPromisc (void)
+{
+ m_low->SetPromisc ();
+}
+
+void
RegularWifiMac::Enqueue (Ptr<const Packet> packet,
Mac48Address to, Mac48Address from)
{
--- a/src/wifi/model/regular-wifi-mac.h Tue Jul 05 11:05:53 2011 +0100
+++ b/src/wifi/model/regular-wifi-mac.h Tue Jul 05 11:16:40 2011 +0100
@@ -130,6 +130,14 @@
* \returns the bssid of the network this device belongs to.
*/
virtual Mac48Address GetBssid (void) const;
+ /**
+ * \brief Sets the interface in promiscuous mode.
+ *
+ * Enables promiscuous mode on the interface. Note that any further
+ * filtering on the incoming frame path may affect the overall
+ * behavior.
+ */
+ virtual void SetPromisc (void);
/**
* \param packet the packet to send.
--- a/src/wifi/model/wifi-mac.h Tue Jul 05 11:05:53 2011 +0100
+++ b/src/wifi/model/wifi-mac.h Tue Jul 05 11:16:40 2011 +0100
@@ -133,6 +133,14 @@
* \returns the bssid of the network this device belongs to.
*/
virtual Mac48Address GetBssid (void) const = 0;
+ /**
+ * \brief Sets the interface in promiscuous mode.
+ *
+ * Enables promiscuous mode on the interface. Note that any further
+ * filtering on the incoming frame path may affect the overall
+ * behavior.
+ */
+ virtual void SetPromisc (void) = 0;
/**
* \param packet the packet to send.
--- a/src/wifi/model/wifi-net-device.cc Tue Jul 05 11:05:53 2011 +0100
+++ b/src/wifi/model/wifi-net-device.cc Tue Jul 05 11:16:40 2011 +0100
@@ -356,6 +356,7 @@
WifiNetDevice::SetPromiscReceiveCallback (PromiscReceiveCallback cb)
{
m_promiscRx = cb;
+ m_mac->SetPromisc();
}
bool
--- a/src/wifi/model/wifi-phy.cc Tue Jul 05 11:05:53 2011 +0100
+++ b/src/wifi/model/wifi-phy.cc Tue Jul 05 11:16:40 2011 +0100
@@ -74,12 +74,12 @@
.AddTraceSource ("PhyRxDrop",
"Trace source indicating a packet has been dropped by the device during reception",
MakeTraceSourceAccessor (&WifiPhy::m_phyRxDropTrace))
- .AddTraceSource ("PromiscSnifferRx",
+ .AddTraceSource ("MonitorSnifferRx",
"Trace source simulating a wifi device in monitor mode sniffing all received frames",
- MakeTraceSourceAccessor (&WifiPhy::m_phyPromiscSniffRxTrace))
- .AddTraceSource ("PromiscSnifferTx",
+ MakeTraceSourceAccessor (&WifiPhy::m_phyMonitorSniffRxTrace))
+ .AddTraceSource ("MonitorSnifferTx",
"Trace source simulating the capability of a wifi device in monitor mode to sniff all frames being transmitted",
- MakeTraceSourceAccessor (&WifiPhy::m_phyPromiscSniffTxTrace))
+ MakeTraceSourceAccessor (&WifiPhy::m_phyMonitorSniffTxTrace))
;
return tid;
}
@@ -338,15 +338,15 @@
}
void
-WifiPhy::NotifyPromiscSniffRx (Ptr<const Packet> packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble, double signalDbm, double noiseDbm)
+WifiPhy::NotifyMonitorSniffRx (Ptr<const Packet> packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble, double signalDbm, double noiseDbm)
{
- m_phyPromiscSniffRxTrace (packet, channelFreqMhz, channelNumber, rate, isShortPreamble, signalDbm, noiseDbm);
+ m_phyMonitorSniffRxTrace (packet, channelFreqMhz, channelNumber, rate, isShortPreamble, signalDbm, noiseDbm);
}
void
-WifiPhy::NotifyPromiscSniffTx (Ptr<const Packet> packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble)
+WifiPhy::NotifyMonitorSniffTx (Ptr<const Packet> packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble)
{
- m_phyPromiscSniffTxTrace (packet, channelFreqMhz, channelNumber, rate, isShortPreamble);
+ m_phyMonitorSniffTxTrace (packet, channelFreqMhz, channelNumber, rate, isShortPreamble);
}
--- a/src/wifi/model/wifi-phy.h Tue Jul 05 11:05:53 2011 +0100
+++ b/src/wifi/model/wifi-phy.h Tue Jul 05 11:16:40 2011 +0100
@@ -415,7 +415,7 @@
/**
*
- * Public method used to fire a PromiscSniffer trace for a wifi packet being received. Implemented for encapsulation
+ * Public method used to fire a MonitorSniffer trace for a wifi packet being received. Implemented for encapsulation
* purposes.
*
* @param packet the packet being received
@@ -433,12 +433,12 @@
* @param signalDbm signal power in dBm
* @param noiseDbm noise power in dBm
*/
- void NotifyPromiscSniffRx (Ptr<const Packet> packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble,
+ void NotifyMonitorSniffRx (Ptr<const Packet> packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble,
double signalDbm, double noiseDbm);
/**
*
- * Public method used to fire a PromiscSniffer trace for a wifi packet being transmitted. Implemented for encapsulation
+ * Public method used to fire a MonitorSniffer trace for a wifi packet being transmitted. Implemented for encapsulation
* purposes.
*
* @param packet the packet being transmitted
@@ -449,7 +449,7 @@
* units used both for the radiotap and for the prism header)
* @param isShortPreamble true if short preamble is used, false otherwise
*/
- void NotifyPromiscSniffTx (Ptr<const Packet> packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble);
+ void NotifyMonitorSniffTx (Ptr<const Packet> packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble);
private:
@@ -510,7 +510,7 @@
*
* \see class CallBackTraceSource
*/
- TracedCallback<Ptr<const Packet>, uint16_t, uint16_t, uint32_t, bool, double, double> m_phyPromiscSniffRxTrace;
+ TracedCallback<Ptr<const Packet>, uint16_t, uint16_t, uint32_t, bool, double, double> m_phyMonitorSniffRxTrace;
/**
* A trace source that emulates a wifi device in monitor mode
@@ -522,7 +522,7 @@
*
* \see class CallBackTraceSource
*/
- TracedCallback<Ptr<const Packet>, uint16_t, uint16_t, uint32_t, bool> m_phyPromiscSniffTxTrace;
+ TracedCallback<Ptr<const Packet>, uint16_t, uint16_t, uint32_t, bool> m_phyMonitorSniffTxTrace;
};
--- a/src/wifi/model/yans-wifi-phy.cc Tue Jul 05 11:05:53 2011 +0100
+++ b/src/wifi/model/yans-wifi-phy.cc Tue Jul 05 11:16:40 2011 +0100
@@ -516,7 +516,7 @@
NotifyTxBegin (packet);
uint32_t dataRate500KbpsUnits = txMode.GetDataRate () / 500000;
bool isShortPreamble = (WIFI_PREAMBLE_SHORT == preamble);
- NotifyPromiscSniffTx (packet, (uint16_t)GetChannelFrequencyMhz (), GetChannelNumber (), dataRate500KbpsUnits, isShortPreamble);
+ NotifyMonitorSniffTx (packet, (uint16_t)GetChannelFrequencyMhz (), GetChannelNumber (), dataRate500KbpsUnits, isShortPreamble);
m_state->SwitchToTx (txDuration, packet, txMode, preamble, txPower);
m_channel->Send (this, packet, GetPowerDbm (txPower) + m_txGainDb, txMode, preamble);
}
@@ -787,7 +787,7 @@
bool isShortPreamble = (WIFI_PREAMBLE_SHORT == event->GetPreambleType ());
double signalDbm = RatioToDb (event->GetRxPowerW ()) + 30;
double noiseDbm = RatioToDb (event->GetRxPowerW () / snrPer.snr) - GetRxNoiseFigure () + 30;
- NotifyPromiscSniffRx (packet, (uint16_t)GetChannelFrequencyMhz (), GetChannelNumber (), dataRate500KbpsUnits, isShortPreamble, signalDbm, noiseDbm);
+ NotifyMonitorSniffRx (packet, (uint16_t)GetChannelFrequencyMhz (), GetChannelNumber (), dataRate500KbpsUnits, isShortPreamble, signalDbm, noiseDbm);
m_state->SwitchFromRxEndOk (packet, snrPer.snr, event->GetPayloadMode (), event->GetPreambleType ());
}
else