> From: Francesco Dolcini <francesco@xxxxxxxxxx> > Sent: Wednesday, February 28, 2024 1:53 AM > To: David Lin <yu-hao.lin@xxxxxxx> > Cc: linux-wireless@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > briannorris@xxxxxxxxxxxx; kvalo@xxxxxxxxxx; francesco@xxxxxxxxxx; Pete > Hsieh <tsung-hsien.hsieh@xxxxxxx> > Subject: [EXT] Re: [PATCH v8 2/2] wifi: mwifiex: add host mlme for AP mode > > 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 Fri, Dec 22, 2023 at 11:21:23AM +0800, David Lin wrote: > > Add host based MLME to enable WPA3 functionalities in AP mode. > > This feature required a firmware with the corresponding V2 Key API > > support. The feature (WPA3) is currently enabled and verified only on > > IW416. Also, verified no regression with change when host MLME is > > disabled. > > > > Signed-off-by: David Lin <yu-hao.lin@xxxxxxx> > > Reviewed-by: Francesco Dolcini <francesco.dolcini@xxxxxxxxxxx> > > with the same disclaimer from patch 1/2, I'm not a wireless driver expert. > > > --- > > > > v8: > > - first full and complete patch to support host based MLME for AP > > mode. > > > > --- > > .../net/wireless/marvell/mwifiex/cfg80211.c | 79 +++++++- > > drivers/net/wireless/marvell/mwifiex/cmdevt.c | 2 + > > drivers/net/wireless/marvell/mwifiex/fw.h | 21 +++ > > drivers/net/wireless/marvell/mwifiex/ioctl.h | 5 + > > .../wireless/marvell/mwifiex/sta_cmdresp.c | 2 + > > .../net/wireless/marvell/mwifiex/uap_cmd.c | 171 > ++++++++++++++++++ > > drivers/net/wireless/marvell/mwifiex/util.c | 24 +++ > > 7 files changed, 301 insertions(+), 3 deletions(-) > > > > ... > > > diff --git a/drivers/net/wireless/marvell/mwifiex/uap_cmd.c > > b/drivers/net/wireless/marvell/mwifiex/uap_cmd.c > > index e78a201cd150..1e7f4afe9960 100644 > > --- a/drivers/net/wireless/marvell/mwifiex/uap_cmd.c > > +++ b/drivers/net/wireless/marvell/mwifiex/uap_cmd.c > > @@ -760,6 +786,144 @@ static int mwifiex_cmd_uap_sta_deauth(struct > mwifiex_private *priv, > > return 0; > > } > > > > +/* This function prepares AP specific add station command. > > + */ > > +static int mwifiex_cmd_uap_add_station(struct mwifiex_private *priv, > > + struct > host_cmd_ds_command *cmd, > > + u16 cmd_action, void > *data_buf) { > > + struct host_cmd_ds_add_station *new_sta = > &cmd->params.sta_info; > > + struct mwifiex_sta_info *add_sta = (struct mwifiex_sta_info > *)data_buf; > > + struct station_parameters *params = add_sta->params; > > + struct mwifiex_sta_node *sta_ptr; > > + u8 *pos; > > + u8 qos_capa; > > + u16 header_len = sizeof(struct mwifiex_ie_types_header); > > + u16 tlv_len; > > + int size; > > + struct mwifiex_ie_types_data *tlv; > > + struct mwifiex_ie_types_sta_flag *sta_flag; > > + int i; > > + > > + cmd->command = > cpu_to_le16(HostCmd_CMD_ADD_NEW_STATION); > > + new_sta->action = cpu_to_le16(cmd_action); > > + size = sizeof(struct host_cmd_ds_add_station) + S_DS_GEN; > > + > > + if (cmd_action == HostCmd_ACT_ADD_STA) > > + sta_ptr = mwifiex_add_sta_entry(priv, > add_sta->peer_mac); > > + else > > + sta_ptr = mwifiex_get_sta_entry(priv, > > + add_sta->peer_mac); > > + > > + if (!sta_ptr) > > + return -1; > > + > > + memcpy(new_sta->peer_mac, add_sta->peer_mac, ETH_ALEN); > > + > > + if (cmd_action == HostCmd_ACT_REMOVE_STA) > > + goto done; > > This goto here, skipping lot of code, just to do > > cmd->size = cpu_to_le16(size); > return 0; > > is not really nice for my personal taste, but fine like that. > > Francesco Modify the code in patch v9. Thanks. David