All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wright Feng <wright.feng@cypress.com>
To: linux-wireless@vger.kernel.org,
	Arend van Spriel <arend.vanspriel@broadcom.com>,
	Kalle Valo <kvalo@codeaurora.org>,
	chi-hsien.lin@cypress.com
Cc: wright.feng@cypress.com, brcm80211-dev-list@broadcom.com,
	brcm80211-dev-list@cypress.com,
	Franky Lin <franky.lin@broadcom.com>,
	Hante Meuleman <hante.meuleman@broadcom.com>,
	Ting-Ying Li <tingying.li@cypress.com>
Subject: [PATCH v2 4/4] brcmfmac: add a variable for packet forwarding condition
Date: Mon, 19 Oct 2020 21:28:12 -0500	[thread overview]
Message-ID: <20201020022812.37064-5-wright.feng@cypress.com> (raw)
In-Reply-To: <20201020022812.37064-1-wright.feng@cypress.com>

From: Ting-Ying Li <tingying.li@cypress.com>

When the "ap_isolate" function is not set by the host,
host-based packet forwarding will be enabled if the packet
forwarding mechanism is not offloaded to the lower layer.

Signed-off-by: Ting-Ying Li <tingying.li@cypress.com>
Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
Signed-off-by: Wright Feng <wright.feng@cypress.com>
---
v4: Change conditional statements
---
 .../broadcom/brcm80211/brcmfmac/cfg80211.c      | 17 +++++++++++++++--
 .../wireless/broadcom/brcm80211/brcmfmac/core.h |  1 +
 .../broadcom/brcm80211/brcmfmac/msgbuf.c        |  2 +-
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 5e49ac3d82b9..063cbb09d751 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -5484,8 +5484,8 @@ brcmf_cfg80211_change_bss(struct wiphy *wiphy, struct net_device *dev,
 			  struct bss_parameters *params)
 {
 	struct brcmf_if *ifp;
-	int ret = 0;
-	u32 ap_isolate;
+	int ret = 0, result = 0;
+	u32 ap_isolate, val;
 
 	brcmf_dbg(TRACE, "Enter\n");
 	ifp = netdev_priv(dev);
@@ -5496,6 +5496,19 @@ brcmf_cfg80211_change_bss(struct wiphy *wiphy, struct net_device *dev,
 			brcmf_err("ap_isolate iovar failed: ret=%d\n", ret);
 	}
 
+	/* Get ap_isolate value from firmware to detemine whether fmac */
+	/* driver enables packet forwarding. */
+	result = brcmf_fil_iovar_int_get(ifp, "ap_isolate", &val);
+	if (result == 0 &&
+	    params->ap_isolate == 0 &&
+	    val == 1) {
+		ifp->fmac_pkt_fwd_en = true;
+	} else {
+		if (result < 0)
+			brcmf_err("get ap_isolate iovar failed: result=%d\n", result);
+		ifp->fmac_pkt_fwd_en = false;
+	}
+
 	return ret;
 }
 
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
index 9ebafe0b2117..30b29053d133 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
@@ -195,6 +195,7 @@ struct brcmf_if {
 	bool fwil_fwerr;
 	struct list_head sta_list;              /* sll of associated stations */
 	spinlock_t sta_list_lock;
+	bool fmac_pkt_fwd_en;
 };
 
 struct ether_addr {
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
index b98cf5e2d0a8..2d7e77097209 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
@@ -1192,7 +1192,7 @@ brcmf_msgbuf_process_rx_complete(struct brcmf_msgbuf *msgbuf, void *buf)
 	}
 
 	eh = (struct ethhdr *)(skb->data);
-	if (brcmf_is_apmode(ifp->vif)) {
+	if (brcmf_is_apmode(ifp->vif) && ifp->fmac_pkt_fwd_en) {
 		skb_set_network_header(skb, sizeof(struct ethhdr));
 		skb->protocol = eh->h_proto;
 		skb->priority = cfg80211_classify8021d(skb, NULL);
-- 
2.25.0


      parent reply	other threads:[~2020-10-20  2:30 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-20  2:28 [PATCH v2 0/4] brcmfmac: Add few features in AP mode Wright Feng
2020-10-20  2:28 ` [PATCH v2 1/4] brcmfmac: add change_bss to support AP isolation Wright Feng
2020-10-22  7:20   ` Arend Van Spriel
2020-11-07 16:17   ` Kalle Valo
2020-10-20  2:28 ` [PATCH v2 2/4] brcmfmac: don't allow arp/nd offload to be enabled if ap mode exists Wright Feng
2020-10-22  7:27   ` Arend Van Spriel
2020-10-20  2:28 ` [PATCH v2 3/4] brcmfmac: support the forwarding packet Wright Feng
2020-10-22  7:38   ` Arend Van Spriel
2020-10-20  2:28 ` Wright Feng [this message]

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=20201020022812.37064-5-wright.feng@cypress.com \
    --to=wright.feng@cypress.com \
    --cc=arend.vanspriel@broadcom.com \
    --cc=brcm80211-dev-list@broadcom.com \
    --cc=brcm80211-dev-list@cypress.com \
    --cc=chi-hsien.lin@cypress.com \
    --cc=franky.lin@broadcom.com \
    --cc=hante.meuleman@broadcom.com \
    --cc=kvalo@codeaurora.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=tingying.li@cypress.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.