netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Alexander Aring <alex.aring@gmail.com>,
	Stefan Schmidt <stefan@datenfreihafen.org>,
	linux-wpan@vger.kernel.org
Cc: "David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Eric Dumazet <edumazet@google.com>,
	netdev@vger.kernel.org, David Girault <david.girault@qorvo.com>,
	Romuald Despres <romuald.despres@qorvo.com>,
	Frederic Blain <frederic.blain@qorvo.com>,
	Nicolas Schodet <nico@ni.fr.eu.org>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	Miquel Raynal <miquel.raynal@bootlin.com>
Subject: [PATCH wpan/next v3 6/9] net: mac802154: Add promiscuous software filtering
Date: Mon,  5 Sep 2022 22:34:09 +0200	[thread overview]
Message-ID: <20220905203412.1322947-7-miquel.raynal@bootlin.com> (raw)
In-Reply-To: <20220905203412.1322947-1-miquel.raynal@bootlin.com>

Currently, the promiscuous mode was not as open as it should. It was not
a big deal because until now promiscuous modes were only used on monitor
interfaces, which would never go this far in the filtering. But as we
might now use this promiscuous mode with NODEs or COORDs, it becomes
necessary to really forward the packets to the upper layers without
additional filtering when relevant. Let's add the necessary logic to
handle this situation.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
 net/mac802154/rx.c | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/net/mac802154/rx.c b/net/mac802154/rx.c
index bd1a92fceef7..8a8c5a4a2f28 100644
--- a/net/mac802154/rx.c
+++ b/net/mac802154/rx.c
@@ -196,10 +196,31 @@ __ieee802154_rx_handle_packet(struct ieee802154_local *local,
 	int ret;
 	struct ieee802154_sub_if_data *sdata;
 	struct ieee802154_hdr hdr;
+	struct sk_buff *skb2;
 
+	/* Level 2 filtering: Avoid further processing in IEEE 802.15.4 promiscuous modes */
+	list_for_each_entry_rcu(sdata, &local->interfaces, list) {
+		if (!ieee802154_sdata_running(sdata))
+			continue;
+
+		if (sdata->required_filtering < IEEE802154_FILTERING_1_FCS ||
+		    sdata->required_filtering > IEEE802154_FILTERING_2_PROMISCUOUS)
+			continue;
+
+		skb2 = skb_clone(skb, GFP_ATOMIC);
+		if (skb2) {
+			skb2->dev = sdata->dev;
+			ieee802154_deliver_skb(skb2);
+
+			sdata->dev->stats.rx_packets++;
+			sdata->dev->stats.rx_bytes += skb->len;
+		}
+	}
+
+	/* Common filtering between level 3 and 4: frame headers validity */
 	ret = ieee802154_parse_frame_start(skb, &hdr);
 	if (ret) {
-		pr_debug("got invalid frame\n");
+		dev_dbg(&sdata->dev->dev, "invalid frame headers\n");
 		kfree_skb(skb);
 		return;
 	}
@@ -208,7 +229,7 @@ __ieee802154_rx_handle_packet(struct ieee802154_local *local,
 		if (!ieee802154_sdata_running(sdata))
 			continue;
 
-		if (sdata->required_filtering == IEEE802154_FILTERING_NONE)
+		if (sdata->required_filtering <= IEEE802154_FILTERING_2_PROMISCUOUS)
 			continue;
 
 		ieee802154_subif_frame(sdata, skb, &hdr);
-- 
2.34.1


  parent reply	other threads:[~2022-09-05 20:34 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-05 20:34 [PATCH wpan/next v3 0/9] net: ieee802154: Support scanning/beaconing Miquel Raynal
2022-09-05 20:34 ` [PATCH wpan/next v3 1/9] net: mac802154: Introduce filtering levels Miquel Raynal
2022-09-05 20:34 ` [PATCH wpan/next v3 2/9] net: mac802154: move receive parameters above start Miquel Raynal
2022-09-05 20:34 ` [PATCH wpan/next v3 3/9] net: mac802154: set filter at drv_start() Miquel Raynal
2022-09-05 20:34 ` [PATCH wpan/next v3 4/9] net: mac802154: Don't limit the FILTER_NONE level to monitors Miquel Raynal
2022-09-05 20:34 ` [PATCH wpan/next v3 5/9] net: mac802154: Drop IEEE802154_HW_RX_DROP_BAD_CKSUM Miquel Raynal
2022-09-09  0:49   ` Alexander Aring
2022-09-21 15:49     ` Miquel Raynal
2022-09-24 19:50       ` Alexander Aring
2022-09-05 20:34 ` Miquel Raynal [this message]
2022-09-09  0:44   ` [PATCH wpan/next v3 6/9] net: mac802154: Add promiscuous software filtering Alexander Aring
2022-09-05 20:34 ` [PATCH wpan/next v3 7/9] net: mac802154: Ensure proper scan-level filtering Miquel Raynal
2022-09-05 20:34 ` [PATCH wpan/next v3 8/9] net: mac802154: Ensure proper general purpose frame filtering Miquel Raynal
2022-09-09  1:00   ` Alexander Aring
2022-09-09  1:02     ` Alexander Aring
2022-09-21 15:59     ` Miquel Raynal
2022-09-25 22:27       ` Alexander Aring
2022-09-28  0:23         ` Alexander Aring
2022-09-05 20:34 ` [PATCH wpan/next v3 9/9] ieee802154: atusb: add support for trac feature Miquel Raynal
2022-10-12 17:50   ` Stefan Schmidt
2022-09-08  1:40 ` [PATCH wpan/next v3 0/9] net: ieee802154: Support scanning/beaconing Alexander Aring
2022-09-08  7:36   ` Miquel Raynal
2022-09-09  0:41     ` Alexander Aring
2022-09-21 15:45       ` Miquel Raynal
2022-09-25 18:56         ` Alexander Aring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220905203412.1322947-7-miquel.raynal@bootlin.com \
    --to=miquel.raynal@bootlin.com \
    --cc=alex.aring@gmail.com \
    --cc=davem@davemloft.net \
    --cc=david.girault@qorvo.com \
    --cc=edumazet@google.com \
    --cc=frederic.blain@qorvo.com \
    --cc=kuba@kernel.org \
    --cc=linux-wpan@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nico@ni.fr.eu.org \
    --cc=pabeni@redhat.com \
    --cc=romuald.despres@qorvo.com \
    --cc=stefan@datenfreihafen.org \
    --cc=thomas.petazzoni@bootlin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).