Browse Source

qcacld-3.0: disable pn check for ibss network, in security mode

qcacld-2.0 to qcacld-3.0 propagation

Multicast packets using different sequence number space
gets dropped on the host due to the existing logic of
running duplicate detection check and out-of-order packet check
on all non-aggregation (legacy) TIDs, since f/w uses a
special (non-aggregation) TID (18) to indicate these packets
to the host, irrespective of sequence number space.

The fix is in 2 parts:

1) Do only duplicate detection on mcast packets & not out-of-order check
   (Also do dup-detection only if retry bit is set)
2) Instead of using mcast TID indicated by f/w, use the actual
   packet TID from the Rx descriptor to perform the duplicate detection
   and use a separate (new) field in rx_reorder_array to store
   the last successful mcast sequence number. On the next mcast packet
   perform the duplicate detection against mcast sequence number, rather
   than the ucast sequence number.

Change-Id: I4c3542e82a1917b4ed27513e9244702bb212df88
CRs-FIXED: 788954
DARAM SUDHA 10 years ago
parent
commit
a51d6fb5df
1 changed files with 3 additions and 1 deletions
  1. 3 1
      core/dp/txrx/ol_rx_pn.c

+ 3 - 1
core/dp/txrx/ol_rx_pn.c

@@ -96,8 +96,10 @@ ol_rx_pn_check_base(struct ol_txrx_vdev_t *vdev,
 	int last_pn_valid;
 
 	/* Make sure host pn check is not redundant */
-	if (cdf_atomic_read(&peer->fw_pn_check))
+	if ((cdf_atomic_read(&peer->fw_pn_check)) ||
+		(vdev->opmode == wlan_op_mode_ibss)) {
 		return msdu_list;
+	}
 
 	/* First, check whether the PN check applies */
 	rx_desc = htt_rx_msdu_desc_retrieve(pdev->htt_pdev, msdu_list);