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® 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