From c165d7e77780a4222ed236c93450d99e9bcfe168 Mon Sep 17 00:00:00 2001 From: JasonHuang Date: Tue, 1 Nov 2022 02:55:11 -0500 Subject: [PATCH 129/296] non-upstream: vendor cmd addition for "wl amsdu" User can set/get amsdu through iw vendor subcmd 0xd. Signed-off-by: JasonHuang --- .../broadcom/brcm80211/brcmfmac/vendor.c | 7 ++++ .../broadcom/brcm80211/brcmfmac/vendor_ifx.c | 33 +++++++++++++++++++ .../broadcom/brcm80211/brcmfmac/vendor_ifx.h | 5 ++- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor.c index a3c6308caf09..ce01f6041c61 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor.c @@ -261,6 +261,13 @@ const struct wiphy_vendor_command brcmf_vendor_cmds[] = { VENDOR_CMD_RAW_DATA, ifx_cfg80211_vndr_cmds_muedca_opt) }, + { + IFX_SUBCMD(AMSDU, + (WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_NETDEV), + VENDOR_CMD_RAW_DATA, + ifx_cfg80211_vndr_cmds_amsdu) + }, { IFX_SUBCMD(TWT, (WIPHY_VENDOR_CMD_NEED_WDEV | diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor_ifx.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor_ifx.c index 57069b4cd578..94df8ea1ba32 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor_ifx.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor_ifx.c @@ -463,3 +463,36 @@ int ifx_cfg80211_vndr_cmds_muedca_opt(struct wiphy *wiphy, return ret; } + +int ifx_cfg80211_vndr_cmds_amsdu(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) +{ + int ret = 0; + struct brcmf_cfg80211_vif *vif; + struct brcmf_if *ifp; + int val = *(s32 *)data; + s32 get_amsdu = 0; + + vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev); + ifp = vif->ifp; + + if (val == 0xa) { + ret = brcmf_fil_iovar_int_get(ifp, "amsdu", &get_amsdu); + if (ret) { + brcmf_err("get amsdu error:%d\n", ret); + + return ret; + } + + brcmf_dbg(INFO, "get amsdu: %d\n", get_amsdu); + ifx_cfg80211_vndr_send_cmd_reply( + wiphy, &get_amsdu, sizeof(int)); + } else { + ret = brcmf_fil_iovar_int_set(ifp, "amsdu", val); + if (ret) + brcmf_err("set amsdu error:%d\n", ret); + } + + return ret; +} diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor_ifx.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor_ifx.h index 403972526c3b..2d418135d1b6 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor_ifx.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor_ifx.h @@ -82,7 +82,7 @@ enum ifx_nl80211_vendor_subcmds { SCMD(RSV10) = 10, SCMD(MUEDCA_OPT_ENABLE) = 11, SCMD(RSV12) = 12, - SCMD(RSV13) = 13, + SCMD(AMSDU) = 13, SCMD(TWT) = 14, SCMD(RSV15) = 15, SCMD(BSSCOLOR) = 16, @@ -484,6 +484,9 @@ int ifx_cfg80211_vndr_cmds_bsscolor(struct wiphy *wiphy, int ifx_cfg80211_vndr_cmds_muedca_opt(struct wiphy *wiphy, struct wireless_dev *wdev, const void *data, int len); +int ifx_cfg80211_vndr_cmds_amsdu(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len); #endif /* IFX_VENDOR_H */ -- 2.25.1