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
This commit is contained in:
Mahesh Kumar Kalikot Veetil 2015-11-06 14:27:28 -08:00 committed by Prakash Dhavali
parent ec932147b0
commit 221dc67394

View File

@ -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");