Explorar o código

qcacmn: Add intra-bss check for NAWDS in tx path

In NAWDS, if ast for self bridge is present in AST table,
then the mcast arp frames are getting dropped if peerid
for nawds peer is matching ast peerid of self bridge.
To fix this, add intra-bss check for NAWDS in tx path.

Change-Id: I6f1b44634536c558520aaf0bd0c0155c4b2a4e28
Neha Bisht %!s(int64=3) %!d(string=hai) anos
pai
achega
8fb88793e5
Modificáronse 1 ficheiros con 10 adicións e 8 borrados
  1. 10 8
      dp/wifi3.0/dp_tx.c

+ 10 - 8
dp/wifi3.0/dp_tx.c

@@ -3122,14 +3122,16 @@ void dp_tx_nawds_handler(struct dp_soc *soc, struct dp_vdev *vdev,
 	qdf_ether_header_t *eh = (qdf_ether_header_t *)qdf_nbuf_data(nbuf);
 
 	if (!soc->ast_offload_support) {
-		qdf_spin_lock_bh(&soc->ast_lock);
-		ast_entry = dp_peer_ast_hash_find_by_pdevid
-					(soc,
-					(uint8_t *)(eh->ether_shost),
-					vdev->pdev->pdev_id);
-		if (ast_entry)
-			sa_peer_id = ast_entry->peer_id;
-		qdf_spin_unlock_bh(&soc->ast_lock);
+		if (qdf_nbuf_get_tx_ftype(nbuf) == CB_FTYPE_INTRABSS_FWD) {
+			qdf_spin_lock_bh(&soc->ast_lock);
+			ast_entry = dp_peer_ast_hash_find_by_pdevid
+				(soc,
+				 (uint8_t *)(eh->ether_shost),
+				 vdev->pdev->pdev_id);
+			if (ast_entry)
+				sa_peer_id = ast_entry->peer_id;
+			qdf_spin_unlock_bh(&soc->ast_lock);
+		}
 	} else {
 		if ((qdf_nbuf_get_tx_ftype(nbuf) == CB_FTYPE_INTRABSS_FWD) &&
 		    qdf_nbuf_get_tx_fctx(nbuf))