From ec0e44f63ca6a74625f052a06c4dff3efb47110e Mon Sep 17 00:00:00 2001 From: Mahesh Kumar Kalikot Veetil Date: Fri, 6 Nov 2015 14:27:28 -0800 Subject: [PATCH] qcacld-2.0: Fix intra-BSS forwarding qcacld-2.0 to qcacld-3.0 propagation When INTRA_BSS_FWD_OFFLOAD is enabled, FW will send all Rx packets to IPA uC, which needs to be forwarded to other interfaces. IPA driver will send back non-IP, broadcast and multicast packets to WLAN host driver in exception pipe with fw_desc field set by FW as: - FW_RX_DESC_FORWARD_M bit: Forward the packet to TX - FW_RX_DESC_DISCARD_M bit: Do not send the packet to network stack, which will be set of for intrabss unicast. Change-Id: Ie2826c8c7b578e3684133a2554ed086e721f67ae CRs-Fixed: 895662 --- core/hdd/src/wlan_hdd_ipa.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/core/hdd/src/wlan_hdd_ipa.c b/core/hdd/src/wlan_hdd_ipa.c index f56d2f0387f2..10d1acb16bde 100644 --- a/core/hdd/src/wlan_hdd_ipa.c +++ b/core/hdd/src/wlan_hdd_ipa.c @@ -2444,12 +2444,6 @@ static void hdd_ipa_w2i_cb(void *priv, enum ipa_dp_evt_type evt, */ fw_desc = (uint8_t)skb->cb[1]; - if (fw_desc & FW_RX_DESC_DISCARD_M) { - HDD_IPA_INCREASE_INTERNAL_DROP_COUNT(hdd_ipa); - hdd_ipa->ipa_rx_discard++; - cdf_nbuf_free(skb); - break; - } if (fw_desc & FW_RX_DESC_FORWARD_M) { HDD_IPA_LOG( @@ -2473,6 +2467,14 @@ static void hdd_ipa_w2i_cb(void *priv, enum ipa_dp_evt_type evt, } } } + + if (fw_desc & FW_RX_DESC_DISCARD_M) { + HDD_IPA_INCREASE_INTERNAL_DROP_COUNT(hdd_ipa); + hdd_ipa->ipa_rx_discard++; + cdf_nbuf_free(skb); + break; + } + } else { HDD_IPA_LOG(CDF_TRACE_LEVEL_INFO_HIGH, "Intra-BSS FWD is disabled-skip forward to Tx");