From a51d6fb5dff5508dca3cdef6364f4d63760af72e Mon Sep 17 00:00:00 2001 From: DARAM SUDHA Date: Thu, 29 Jan 2015 19:55:14 +0530 Subject: [PATCH] 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 --- core/dp/txrx/ol_rx_pn.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/dp/txrx/ol_rx_pn.c b/core/dp/txrx/ol_rx_pn.c index 362616c71f2d..74ffdda985e9 100644 --- a/core/dp/txrx/ol_rx_pn.c +++ b/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);