2023-12-01 10:15:42

by Francesco Dolcini

[permalink] [raw]
Subject: Re: [PATCH v7 02/12] wifi: mwifiex: fixed group rekey issue for WPA3.

On Tue, Nov 28, 2023 at 04:31:05PM +0800, David Lin wrote:
> If host mlme is enabled, gropu rekey offload should be disabled.
>
> Signed-off-by: David Lin <[email protected]>
> ---
> drivers/net/wireless/marvell/mwifiex/cfg80211.c | 3 +++
> drivers/net/wireless/marvell/mwifiex/main.c | 4 ++++
> drivers/net/wireless/marvell/mwifiex/util.c | 7 +++++++
> 3 files changed, 14 insertions(+)
>
> diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> index 40c39e4765f7..3d59e6a441b9 100644
> --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> @@ -3657,6 +3657,9 @@ static int mwifiex_set_rekey_data(struct wiphy *wiphy, struct net_device *dev,
> if (!ISSUPP_FIRMWARE_SUPPLICANT(priv->adapter->fw_cap_info))
> return -EOPNOTSUPP;
>
> + if (priv->adapter->host_mlme)
> + return 0;

this is a fixup of the previous patch, you should not introduce an issue
and fix it in the following patch. Please make it correct in the first
place fixing up that patch.


> +
> return mwifiex_send_cmd(priv, HostCmd_CMD_GTK_REKEY_OFFLOAD_CFG,
> HostCmd_ACT_GEN_SET, 0, data, true);
> }
> diff --git a/drivers/net/wireless/marvell/mwifiex/main.c b/drivers/net/wireless/marvell/mwifiex/main.c
> index d99127dc466e..3bebb6c37604 100644
> --- a/drivers/net/wireless/marvell/mwifiex/main.c
> +++ b/drivers/net/wireless/marvell/mwifiex/main.c
> @@ -802,6 +802,10 @@ mwifiex_bypass_tx_queue(struct mwifiex_private *priv,
> "bypass txqueue; eth type %#x, mgmt %d\n",
> ntohs(eth_hdr->h_proto),
> mwifiex_is_skb_mgmt_frame(skb));
> + if (ntohs(eth_hdr->h_proto) == ETH_P_PAE)
> + mwifiex_dbg(priv->adapter, MSG,
> + "key: send EAPOL to %pM\n",
> + eth_hdr->h_dest);

this is just debug code, at a first glance not sure i
> diff --git a/drivers/net/wireless/marvell/mwifiex/util.c b/drivers/net/wireless/marvell/mwifiex/util.c
> index 23675c1cecae..ff1b2f162c30 100644
> --- a/drivers/net/wireless/marvell/mwifiex/util.c
> +++ b/drivers/net/wireless/marvell/mwifiex/util.c
> @@ -482,8 +482,15 @@ mwifiex_process_mgmt_packet(struct mwifiex_private *priv,
> return 0;
>
> if (ieee80211_is_deauth(ieee_hdr->frame_control)) {
> + mwifiex_dbg(priv->adapter, MSG,
> + "auth: receive deauth from %pM\n",
> + ieee_hdr->addr3);
ditto

> priv->auth_flag = 0;
> priv->auth_alg = 0xFFFF;
> + } else {
> + mwifiex_dbg(priv->adapter, MSG,
> + "assoc: receive disasso from %pM\n",
> + ieee_hdr->addr3);
ditto



2023-12-01 15:05:24

by Jeff Johnson

[permalink] [raw]
Subject: Re: [PATCH v7 02/12] wifi: mwifiex: fixed group rekey issue for WPA3.

On 12/1/2023 2:15 AM, Francesco Dolcini wrote:
> On Tue, Nov 28, 2023 at 04:31:05PM +0800, David Lin wrote:

>> diff --git a/drivers/net/wireless/marvell/mwifiex/main.c b/drivers/net/wireless/marvell/mwifiex/main.c
>> index d99127dc466e..3bebb6c37604 100644
>> --- a/drivers/net/wireless/marvell/mwifiex/main.c
>> +++ b/drivers/net/wireless/marvell/mwifiex/main.c
>> @@ -802,6 +802,10 @@ mwifiex_bypass_tx_queue(struct mwifiex_private *priv,
>> "bypass txqueue; eth type %#x, mgmt %d\n",
>> ntohs(eth_hdr->h_proto),
>> mwifiex_is_skb_mgmt_frame(skb));
>> + if (ntohs(eth_hdr->h_proto) == ETH_P_PAE)
>> + mwifiex_dbg(priv->adapter, MSG,
>> + "key: send EAPOL to %pM\n",
>> + eth_hdr->h_dest);
>
> this is just debug code, at a first glance not sure i

not only that, the usual pattern is:
if (eth_hdr->h_proto == htons(ETH_P_PAE))

you want to do endian conversion on a constant when possible since that
is a compile-time conversion and not a runtime conversion


2023-12-01 22:42:00

by David Lin

[permalink] [raw]
Subject: RE: [EXT] Re: [PATCH v7 02/12] wifi: mwifiex: fixed group rekey issue for WPA3.

> From: Francesco Dolcini <[email protected]>
> Sent: Friday, December 1, 2023 6:16 PM
> To: David Lin <[email protected]>
> Cc: [email protected]; [email protected];
> [email protected]; [email protected]; [email protected]; Pete
> Hsieh <[email protected]>
> Subject: [EXT] Re: [PATCH v7 02/12] wifi: mwifiex: fixed group rekey issue for
> WPA3.
>
> Caution: This is an external email. Please take care when clicking links or
> opening attachments. When in doubt, report the message using the 'Report
> this email' button
>
>
> On Tue, Nov 28, 2023 at 04:31:05PM +0800, David Lin wrote:
> > If host mlme is enabled, gropu rekey offload should be disabled.
> >
> > Signed-off-by: David Lin <[email protected]>
> > ---
> > drivers/net/wireless/marvell/mwifiex/cfg80211.c | 3 +++
> > drivers/net/wireless/marvell/mwifiex/main.c | 4 ++++
> > drivers/net/wireless/marvell/mwifiex/util.c | 7 +++++++
> > 3 files changed, 14 insertions(+)
> >
> > diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> > b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> > index 40c39e4765f7..3d59e6a441b9 100644
> > --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> > +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> > @@ -3657,6 +3657,9 @@ static int mwifiex_set_rekey_data(struct wiphy
> *wiphy, struct net_device *dev,
> > if (!ISSUPP_FIRMWARE_SUPPLICANT(priv->adapter->fw_cap_info))
> > return -EOPNOTSUPP;
> >
> > + if (priv->adapter->host_mlme)
> > + return 0;
>
> this is a fixup of the previous patch, you should not introduce an issue and
> fix it in the following patch. Please make it correct in the first place fixing up
> that patch.
>

This is the main fix for this issue. If host mlme is enabled, there is no need for firmware to do group rekey off load.

>
> > +
> > return mwifiex_send_cmd(priv,
> HostCmd_CMD_GTK_REKEY_OFFLOAD_CFG,
> > HostCmd_ACT_GEN_SET, 0, data,
> true); }
> > diff --git a/drivers/net/wireless/marvell/mwifiex/main.c
> > b/drivers/net/wireless/marvell/mwifiex/main.c
> > index d99127dc466e..3bebb6c37604 100644
> > --- a/drivers/net/wireless/marvell/mwifiex/main.c
> > +++ b/drivers/net/wireless/marvell/mwifiex/main.c
> > @@ -802,6 +802,10 @@ mwifiex_bypass_tx_queue(struct mwifiex_private
> *priv,
> > "bypass txqueue; eth type %#x, mgmt
> %d\n",
> > ntohs(eth_hdr->h_proto),
> > mwifiex_is_skb_mgmt_frame(skb));
> > + if (ntohs(eth_hdr->h_proto) == ETH_P_PAE)
> > + mwifiex_dbg(priv->adapter, MSG,
> > + "key: send EAPOL to %pM\n",
> > + eth_hdr->h_dest);
>
> this is just debug code, at a first glance not sure i

It will be helpful for driver to print out authentication, association and EAPoL key handshaking.
This kind of information will only be printed out when station is associated to AP. It won't affect
TP of driver.

> > diff --git a/drivers/net/wireless/marvell/mwifiex/util.c
> > b/drivers/net/wireless/marvell/mwifiex/util.c
> > index 23675c1cecae..ff1b2f162c30 100644
> > --- a/drivers/net/wireless/marvell/mwifiex/util.c
> > +++ b/drivers/net/wireless/marvell/mwifiex/util.c
> > @@ -482,8 +482,15 @@ mwifiex_process_mgmt_packet(struct
> mwifiex_private *priv,
> > return 0;
> >
> > if
> > (ieee80211_is_deauth(ieee_hdr->frame_control)) {
> > + mwifiex_dbg(priv->adapter, MSG,
> > + "auth: receive deauth
> from %pM\n",
> > + ieee_hdr->addr3);
> ditto
>
> > priv->auth_flag = 0;
> > priv->auth_alg = 0xFFFF;
> > + } else {
> > + mwifiex_dbg(priv->adapter, MSG,
> > + "assoc: receive disasso
> from %pM\n",
> > + ieee_hdr->addr3);
> ditto


2023-12-01 23:18:55

by David Lin

[permalink] [raw]
Subject: RE: [EXT] Re: [PATCH v7 02/12] wifi: mwifiex: fixed group rekey issue for WPA3.

> From: Jeff Johnson <[email protected]>
> Sent: Friday, December 1, 2023 11:05 PM
> To: Francesco Dolcini <[email protected]>; David Lin
> <[email protected]>
> Cc: [email protected]; [email protected];
> [email protected]; [email protected]; Pete Hsieh
> <[email protected]>
> Subject: [EXT] Re: [PATCH v7 02/12] wifi: mwifiex: fixed group rekey issue for
> WPA3.
>
> Caution: This is an external email. Please take care when clicking links or
> opening attachments. When in doubt, report the message using the 'Report
> this email' button
>
>
> On 12/1/2023 2:15 AM, Francesco Dolcini wrote:
> > On Tue, Nov 28, 2023 at 04:31:05PM +0800, David Lin wrote:
>
> >> diff --git a/drivers/net/wireless/marvell/mwifiex/main.c
> >> b/drivers/net/wireless/marvell/mwifiex/main.c
> >> index d99127dc466e..3bebb6c37604 100644
> >> --- a/drivers/net/wireless/marvell/mwifiex/main.c
> >> +++ b/drivers/net/wireless/marvell/mwifiex/main.c
> >> @@ -802,6 +802,10 @@ mwifiex_bypass_tx_queue(struct
> mwifiex_private *priv,
> >> "bypass txqueue; eth type %#x, mgmt
> %d\n",
> >> ntohs(eth_hdr->h_proto),
> >> mwifiex_is_skb_mgmt_frame(skb));
> >> + if (ntohs(eth_hdr->h_proto) == ETH_P_PAE)
> >> + mwifiex_dbg(priv->adapter, MSG,
> >> + "key: send EAPOL to %pM\n",
> >> + eth_hdr->h_dest);
> >
> > this is just debug code, at a first glance not sure i
>
> not only that, the usual pattern is:
> if (eth_hdr->h_proto == htons(ETH_P_PAE))
>
> you want to do endian conversion on a constant when possible since that is
> a compile-time conversion and not a runtime conversion

Thanks. I will fix it for next patch.