From: Stephen Hemminger <stephen@networkplumber.org>
To: "Rafał Miłecki" <zajec5@gmail.com>
Cc: "James Hughes" <james.hughes@raspberrypi.org>,
"Arend van Spriel" <arend.vanspriel@broadcom.com>,
netdev@vger.kernel.org,
"Chi-Hsien Lin" <chi-hsien.lin@cypress.com>,
bridge@lists.linux-foundation.org,
linux-wireless@vger.kernel.org,
"Hante Meuleman" <hante.meuleman@broadcom.com>,
"Pieter-Paul Giesberts" <pieter-paul.giesberts@broadcom.com>,
brcm80211-dev-list.pdl@broadcom.com,
"Wright Feng" <wright.feng@cypress.com>,
"Rafał Miłecki" <rafal@milecki.pl>,
"Felix Fietkau" <nbd@nbd.name>,
brcm80211-dev-list@cypress.com,
"Kalle Valo" <kvalo@codeaurora.org>,
"Franky Lin" <franky.lin@broadcom.com>
Subject: Re: [Bridge] [PATCH] brcmfmac: drop Inter-Access Point Protocol packets by default
Date: Wed, 14 Mar 2018 08:08:31 -0700 [thread overview]
Message-ID: <20180314080831.35cac09c@xeon-e3> (raw)
In-Reply-To: <20180314110119.13631-1-zajec5@gmail.com>
On Wed, 14 Mar 2018 12:01:19 +0100
Rafał Miłecki <zajec5@gmail.com> wrote:
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> index 19048526b4af..db6987015fb1 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> @@ -230,6 +230,34 @@ static void brcmf_netdev_set_multicast_list(struct net_device *ndev)
> schedule_work(&ifp->multicast_work);
> }
>
> +/**
> + * brcmf_skb_is_iapp - checks if skb is an IAPP packet
> + *
> + * @skb: skb to check
> + */
> +static bool brcmf_skb_is_iapp(struct sk_buff *skb)
> +{
> + const u8 iapp_l2_update_packet[6] __aligned(2) = {
> + 0x00, 0x01, 0xaf, 0x81, 0x01, 0x00,
> + };
> + unsigned char *eth_data = skb_mac_header(skb) + ETH_HLEN;
> +#if !defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
> + const u16 *a = (const u16 *)eth_data;
> + const u16 *b = (const u16 *)iapp_l2_update_packet;
> +#endif
> +
> + if (skb->len - skb->mac_len != 6 ||
> + !is_multicast_ether_addr(eth_hdr(skb)->h_dest))
> + return false;
> +
> +#if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
> + return !(((*(const u32 *)eth_data) ^ (*(const u32 *)iapp_l2_update_packet)) |
> + ((*(const u16 *)(eth_data + 4)) ^ (*(const u16 *)(iapp_l2_update_packet + 4))));
> +#else
> + return !((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2]));
> +#endif
> +}
> +
> static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb,
> struct net_device *ndev)
> {
> @@ -250,6 +278,12 @@ static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb,
> goto done;
> }
>
> + if (!IS_ENABLED(CONFIG_BRCMFMAC_IAPP) && brcmf_skb_is_iapp(skb)) {
> + dev_kfree_skb(skb);
> + ret = -EINVAL;
> + goto done;
> + }
> +
The usual way to handle config options in kernel is either inline
stub function or #define
#ifdef CONFIG_BRFMMAC_IAPP
static bool brcmf_skb_is_app(...) {
real code
}
#else
#define brcmf_skb_is_app (false)
#endif
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Hemminger <stephen@networkplumber.org>
To: "Rafał Miłecki" <zajec5@gmail.com>
Cc: "Kalle Valo" <kvalo@codeaurora.org>,
"Arend van Spriel" <arend.vanspriel@broadcom.com>,
"Franky Lin" <franky.lin@broadcom.com>,
"Hante Meuleman" <hante.meuleman@broadcom.com>,
"Chi-Hsien Lin" <chi-hsien.lin@cypress.com>,
"Wright Feng" <wright.feng@cypress.com>,
"Pieter-Paul Giesberts" <pieter-paul.giesberts@broadcom.com>,
"James Hughes" <james.hughes@raspberrypi.org>,
linux-wireless@vger.kernel.org,
brcm80211-dev-list.pdl@broadcom.com,
brcm80211-dev-list@cypress.com, netdev@vger.kernel.org,
"Linus Lüssing" <linus.luessing@c0d3.blue>,
"Felix Fietkau" <nbd@nbd.name>,
bridge@lists.linux-foundation.org,
"Rafał Miłecki" <rafal@milecki.pl>
Subject: Re: [PATCH] brcmfmac: drop Inter-Access Point Protocol packets by default
Date: Wed, 14 Mar 2018 08:08:31 -0700 [thread overview]
Message-ID: <20180314080831.35cac09c@xeon-e3> (raw)
In-Reply-To: <20180314110119.13631-1-zajec5@gmail.com>
On Wed, 14 Mar 2018 12:01:19 +0100
Rafa=C5=82 Mi=C5=82ecki <zajec5@gmail.com> wrote:
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/dr=
ivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> index 19048526b4af..db6987015fb1 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> @@ -230,6 +230,34 @@ static void brcmf_netdev_set_multicast_list(struct n=
et_device *ndev)
> schedule_work(&ifp->multicast_work);
> }
> =20
> +/**
> + * brcmf_skb_is_iapp - checks if skb is an IAPP packet
> + *
> + * @skb: skb to check
> + */
> +static bool brcmf_skb_is_iapp(struct sk_buff *skb)
> +{
> + const u8 iapp_l2_update_packet[6] __aligned(2) =3D {
> + 0x00, 0x01, 0xaf, 0x81, 0x01, 0x00,
> + };
> + unsigned char *eth_data =3D skb_mac_header(skb) + ETH_HLEN;
> +#if !defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
> + const u16 *a =3D (const u16 *)eth_data;
> + const u16 *b =3D (const u16 *)iapp_l2_update_packet;
> +#endif
> +
> + if (skb->len - skb->mac_len !=3D 6 ||
> + !is_multicast_ether_addr(eth_hdr(skb)->h_dest))
> + return false;
> +
> +#if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
> + return !(((*(const u32 *)eth_data) ^ (*(const u32 *)iapp_l2_update_pack=
et)) |
> + ((*(const u16 *)(eth_data + 4)) ^ (*(const u16 *)(iapp_l2_update_pack=
et + 4))));
> +#else
> + return !((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2]));
> +#endif
> +}
> +
> static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb,
> struct net_device *ndev)
> {
> @@ -250,6 +278,12 @@ static netdev_tx_t brcmf_netdev_start_xmit(struct sk=
_buff *skb,
> goto done;
> }
> =20
> + if (!IS_ENABLED(CONFIG_BRCMFMAC_IAPP) && brcmf_skb_is_iapp(skb)) {
> + dev_kfree_skb(skb);
> + ret =3D -EINVAL;
> + goto done;
> + }
> +
The usual way to handle config options in kernel is either inline
stub function or #define
#ifdef CONFIG_BRFMMAC_IAPP
static bool brcmf_skb_is_app(...) {
real code
}
#else
#define brcmf_skb_is_app (false)
#endif
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Hemminger <stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
To: "Rafał Miłecki" <zajec5-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: "Kalle Valo" <kvalo-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
"Arend van Spriel"
<arend.vanspriel-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>,
"Franky Lin" <franky.lin-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>,
"Hante Meuleman"
<hante.meuleman-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>,
"Chi-Hsien Lin"
<chi-hsien.lin-+wT8y+m8/X5BDgjK7y7TUQ@public.gmane.org>,
"Wright Feng"
<wright.feng-+wT8y+m8/X5BDgjK7y7TUQ@public.gmane.org>,
"Pieter-Paul Giesberts"
<pieter-paul.giesberts-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>,
"James Hughes"
<james.hughes-FnsA7b+Nu9XbIbC87yuRow@public.gmane.org>,
linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
brcm80211-dev-list.pdl-dY08KVG/lbpWk0Htik3J/w@public.gmane.org,
brcm80211-dev-list-+wT8y+m8/X5BDgjK7y7TUQ@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
"Linus Lüssing"
<linus.luessing-djzkFPsfvsizQB+pC5nmwQ@public.gmane.org>,
"Felix Fietkau" <nbd-Vt+b4OUoWG0@public.gmane.org>,
bridge-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
"Rafał Miłecki" <rafal-g1n6cQUeyibVItvQsEIGlw@public.gmane.org>
Subject: Re: [PATCH] brcmfmac: drop Inter-Access Point Protocol packets by default
Date: Wed, 14 Mar 2018 08:08:31 -0700 [thread overview]
Message-ID: <20180314080831.35cac09c@xeon-e3> (raw)
In-Reply-To: <20180314110119.13631-1-zajec5-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
On Wed, 14 Mar 2018 12:01:19 +0100
Rafał Miłecki <zajec5-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> index 19048526b4af..db6987015fb1 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> @@ -230,6 +230,34 @@ static void brcmf_netdev_set_multicast_list(struct net_device *ndev)
> schedule_work(&ifp->multicast_work);
> }
>
> +/**
> + * brcmf_skb_is_iapp - checks if skb is an IAPP packet
> + *
> + * @skb: skb to check
> + */
> +static bool brcmf_skb_is_iapp(struct sk_buff *skb)
> +{
> + const u8 iapp_l2_update_packet[6] __aligned(2) = {
> + 0x00, 0x01, 0xaf, 0x81, 0x01, 0x00,
> + };
> + unsigned char *eth_data = skb_mac_header(skb) + ETH_HLEN;
> +#if !defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
> + const u16 *a = (const u16 *)eth_data;
> + const u16 *b = (const u16 *)iapp_l2_update_packet;
> +#endif
> +
> + if (skb->len - skb->mac_len != 6 ||
> + !is_multicast_ether_addr(eth_hdr(skb)->h_dest))
> + return false;
> +
> +#if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
> + return !(((*(const u32 *)eth_data) ^ (*(const u32 *)iapp_l2_update_packet)) |
> + ((*(const u16 *)(eth_data + 4)) ^ (*(const u16 *)(iapp_l2_update_packet + 4))));
> +#else
> + return !((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2]));
> +#endif
> +}
> +
> static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb,
> struct net_device *ndev)
> {
> @@ -250,6 +278,12 @@ static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb,
> goto done;
> }
>
> + if (!IS_ENABLED(CONFIG_BRCMFMAC_IAPP) && brcmf_skb_is_iapp(skb)) {
> + dev_kfree_skb(skb);
> + ret = -EINVAL;
> + goto done;
> + }
> +
The usual way to handle config options in kernel is either inline
stub function or #define
#ifdef CONFIG_BRFMMAC_IAPP
static bool brcmf_skb_is_app(...) {
real code
}
#else
#define brcmf_skb_is_app (false)
#endif
next prev parent reply other threads:[~2018-03-14 15:08 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-14 11:01 [PATCH] brcmfmac: drop Inter-Access Point Protocol packets by default Rafał Miłecki
2018-03-14 11:01 ` [Bridge] " Rafał Miłecki
2018-03-14 11:01 ` Rafał Miłecki
2018-03-14 12:58 ` Arend van Spriel
2018-03-14 12:58 ` [Bridge] " Arend van Spriel
2018-03-14 12:58 ` Arend van Spriel
2018-03-14 15:39 ` Rafał Miłecki
2018-03-14 16:58 ` [Bridge] " Rafał Miłecki
2018-03-14 15:39 ` Rafał Miłecki
2018-03-14 15:40 ` Rafał Miłecki
2018-03-14 15:58 ` [Bridge] " Rafał Miłecki
2018-03-14 15:40 ` Rafał Miłecki
2018-03-14 15:57 ` Rafał Miłecki
2018-03-14 20:43 ` [Bridge] " Rafał Miłecki
2018-03-14 15:57 ` Rafał Miłecki
2018-03-14 20:44 ` Arend van Spriel
2018-03-14 20:44 ` [Bridge] " Arend van Spriel
2018-03-14 20:44 ` Arend van Spriel
2018-03-14 14:24 ` Kalle Valo
2018-03-14 14:24 ` [Bridge] " Kalle Valo
2018-03-14 14:24 ` Kalle Valo
2018-03-14 14:44 ` Arend van Spriel
2018-03-14 14:44 ` [Bridge] " Arend van Spriel
2018-03-14 14:44 ` Arend van Spriel
2018-03-14 15:08 ` Kalle Valo
2018-03-14 15:08 ` [Bridge] " Kalle Valo
2018-03-14 15:08 ` Kalle Valo
2018-03-14 15:27 ` [Bridge] " Stephen Hemminger
2018-03-14 15:27 ` Stephen Hemminger
2018-03-14 15:27 ` Stephen Hemminger
2018-03-14 15:28 ` Rafał Miłecki
2018-03-14 17:57 ` [Bridge] " Rafał Miłecki
2018-03-14 15:28 ` Rafał Miłecki
2018-03-14 15:44 ` Rafał Miłecki
2018-03-14 15:45 ` [Bridge] " Rafał Miłecki
2018-03-14 15:44 ` Rafał Miłecki
2018-03-14 16:10 ` Kalle Valo
2018-03-14 16:10 ` [Bridge] " Kalle Valo
2018-03-14 16:10 ` Kalle Valo
2018-03-14 20:55 ` Arend van Spriel
2018-03-14 20:55 ` [Bridge] " Arend van Spriel
2018-03-14 20:55 ` Arend van Spriel
2018-03-15 9:23 ` Kalle Valo
2018-03-15 9:23 ` [Bridge] " Kalle Valo
2018-03-15 9:23 ` Kalle Valo
2018-03-14 15:08 ` Stephen Hemminger [this message]
2018-03-14 15:08 ` Stephen Hemminger
2018-03-14 15:08 ` Stephen Hemminger
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=20180314080831.35cac09c@xeon-e3 \
--to=stephen@networkplumber.org \
--cc=arend.vanspriel@broadcom.com \
--cc=brcm80211-dev-list.pdl@broadcom.com \
--cc=brcm80211-dev-list@cypress.com \
--cc=bridge@lists.linux-foundation.org \
--cc=chi-hsien.lin@cypress.com \
--cc=franky.lin@broadcom.com \
--cc=hante.meuleman@broadcom.com \
--cc=james.hughes@raspberrypi.org \
--cc=kvalo@codeaurora.org \
--cc=linux-wireless@vger.kernel.org \
--cc=nbd@nbd.name \
--cc=netdev@vger.kernel.org \
--cc=pieter-paul.giesberts@broadcom.com \
--cc=rafal@milecki.pl \
--cc=wright.feng@cypress.com \
--cc=zajec5@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.