Skip to content

Commit

Permalink
mac802154: Avoid delivering frames received in a non satisfying filte…
Browse files Browse the repository at this point in the history
…ring mode

We must avoid the situation where one interface disables address
filtering and AACK on the PHY while another interface expects to run
with AACK and address filtering enabled. Just ignore the frames on the
concerned interface if this happens.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Acked-by: Alexander Aring <aahringo@redhat.com>
Link: https://lore.kernel.org/r/20221007085310.503366-8-miquel.raynal@bootlin.com
Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
  • Loading branch information
miquelraynal authored and Stefan-Schmidt committed Oct 12, 2022
1 parent a4b5b4c commit 0218277
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions net/mac802154/rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,13 @@ __ieee802154_rx_handle_packet(struct ieee802154_local *local,
if (!ieee802154_sdata_running(sdata))
continue;

/* Do not deliver packets received on interfaces expecting
* AACK=1 if the address filters where disabled.
*/
if (local->hw.phy->filtering < IEEE802154_FILTERING_4_FRAME_FIELDS &&
sdata->required_filtering == IEEE802154_FILTERING_4_FRAME_FIELDS)
continue;

ieee802154_subif_frame(sdata, skb, &hdr);
skb = NULL;
break;
Expand Down Expand Up @@ -268,11 +275,6 @@ void ieee802154_rx(struct ieee802154_local *local, struct sk_buff *skb)

ieee802154_monitors_rx(local, skb);

/* TODO: Avoid delivering frames received at the level
* IEEE802154_FILTERING_NONE on interfaces not expecting it because of
* the missing auto ACK handling feature.
*/

/* TODO: Handle upcomming receive path where the PHY is at the
* IEEE802154_FILTERING_NONE level during a scan.
*/
Expand Down

0 comments on commit 0218277

Please sign in to comment.