summaryrefslogtreecommitdiffstats
path: root/net/irda
diff options
context:
space:
mode:
authorSamuel Ortiz <samuel@sortiz.org>2007-07-03 07:55:31 +0200
committerDavid S. Miller <davem@sunset.davemloft.net>2007-07-11 07:16:44 +0200
commit411725280bd0058ebb83c0e32133b7a94902c3a6 (patch)
tree7fc21a6c4b07ad80cf426c466400ed4679834e98 /net/irda
parent[IrDA]: Netlink layer. (diff)
downloadlinux-411725280bd0058ebb83c0e32133b7a94902c3a6.tar.xz
linux-411725280bd0058ebb83c0e32133b7a94902c3a6.zip
[IrDA]: Monitor mode.
Through the IrDA netlink set mode command, we switch to IrDA monitor mode, where one IrLAP instance receives all the packets on the media, without ever responding to them. Signed-off-by: Samuel Ortiz <samuel@sortiz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/irda')
-rw-r--r--net/irda/irlap_frame.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/net/irda/irlap_frame.c b/net/irda/irlap_frame.c
index 3013c49ab975..25a3444a9234 100644
--- a/net/irda/irlap_frame.c
+++ b/net/irda/irlap_frame.c
@@ -101,6 +101,13 @@ void irlap_queue_xmit(struct irlap_cb *self, struct sk_buff *skb)
irlap_insert_info(self, skb);
+ if (unlikely(self->mode & IRDA_MODE_MONITOR)) {
+ IRDA_DEBUG(3, "%s(): %s is in monitor mode\n", __FUNCTION__,
+ self->netdev->name);
+ dev_kfree_skb(skb);
+ return;
+ }
+
dev_queue_xmit(skb);
}