On Thu, Mar 11, 2010 at 07:10:43PM -0500, Mariano Alvira wrote:
> 
> Is there anyway to set a mode were all the traffic is indicated?


The following patch is a proof-of-concept that passes up all received
data, bad or otherwise.

Would you guys take a patch that sets this mode as a module option? 

-Mar.




---
 net/mac802154/dev.c |   42 ++++++++++++++++++++++++------------------
 1 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/net/mac802154/dev.c b/net/mac802154/dev.c
index cdd0f78..f0171e9 100644
--- a/net/mac802154/dev.c
+++ b/net/mac802154/dev.c
@@ -643,21 +643,24 @@ static int ieee802154_subif_frame(struct 
ieee802154_sub_if_data *sdata,
                dev_warn(&sdata->dev->dev,
                        "ACK requested, however AACK not supported.\n");
 
-       switch (mac_cb_type(skb)) {
-       case IEEE802154_FC_TYPE_BEACON:
-               return ieee802154_process_beacon(sdata->dev, skb);
-       case IEEE802154_FC_TYPE_ACK:
-               return ieee802154_process_ack(sdata->dev, skb);
-       case IEEE802154_FC_TYPE_MAC_CMD:
-               return ieee802154_process_cmd(sdata->dev, skb);
-       case IEEE802154_FC_TYPE_DATA:
-               return ieee802154_process_data(sdata->dev, skb);
-       default:
-               pr_warning("ieee802154: Bad frame received (type = %d)\n",
-                               mac_cb_type(skb));
-               kfree_skb(skb);
-               return NET_RX_DROP;
-       }
+       /* when sniffing, treat everything like data */
+       return ieee802154_process_data(sdata->dev, skb);
+
+/*     switch (mac_cb_type(skb)) { */
+/*     case IEEE802154_FC_TYPE_BEACON: */
+/*             return ieee802154_process_beacon(sdata->dev, skb); */
+/*     case IEEE802154_FC_TYPE_ACK: */
+/*             return ieee802154_process_ack(sdata->dev, skb); */
+/*     case IEEE802154_FC_TYPE_MAC_CMD: */
+/*             return ieee802154_process_cmd(sdata->dev, skb); */
+/*     case IEEE802154_FC_TYPE_DATA: */
+/*             return ieee802154_process_data(sdata->dev, skb); */
+/*     default: */
+/*             pr_warning("ieee802154: Bad frame received (type = %d)\n", */
+/*                             mac_cb_type(skb)); */
+/*             kfree_skb(skb); */
+/*             return NET_RX_DROP; */
+/*     } */
 }
 
 static u8 fetch_skb_u8(struct sk_buff *skb)
@@ -824,12 +827,14 @@ void ieee802154_subif_rx(struct ieee802154_dev *hw, 
struct sk_buff *skb)
 
                if (skb->len < 2) {
                        pr_debug("%s(): Got invalid frame\n", __func__);
-                       goto out;
+                       /* don't bail if sniffing */
+                       //goto out;
                }
                crc = crc_ccitt(0, skb->data, skb->len);
                if (crc) {
                        pr_debug("%s(): CRC mismatch\n", __func__);
-                       goto out;
+                       /* don't bail if sniffing */
+                       //goto out;
                }
                skb_trim(skb, skb->len - 2); /* CRC */
        }
@@ -837,7 +842,8 @@ void ieee802154_subif_rx(struct ieee802154_dev *hw, struct 
sk_buff *skb)
        ret = parse_frame_start(skb); /* 3 bytes pulled after this */
        if (ret) {
                pr_debug("%s(): Got invalid frame\n", __func__);
-               goto out;
+               /* don't bail if sniffing */
+               //goto out;
        }
 
        pr_debug("%s() frame %d\n", __func__, mac_cb_type(skb));
-- 
1.6.3.1


------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Linux-zigbee-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel

Reply via email to