Bläddra i källkod

qcacmn: cdp: Convergence of cdp_mob_stats_ops

Currently the cdp apis are given pdev/vdev/peer
handle as its arguments, which is directly
accessed in those APIs. This can cause a
race-condition in access of the respective
handles if it has been deleted in parallel.

Hence as a part of cdp convergence, pass only
the pdev/vdev id or peer mac address, which will be
used to get the respective handles, and hence
avoiding the unwanted access of the handles if
it has been deleted.

Converged mob_stats_ops
- clear_stats

CRs-Fixed: 2539824
Change-Id: Id424b939c8ef77bd9fae55eaa4c08023efc32093
Rakesh Pillai 5 år sedan
förälder
incheckning
2b88f071f9
3 ändrade filer med 10 tillägg och 11 borttagningar
  1. 5 5
      dp/inc/cdp_txrx_ops.h
  2. 2 3
      dp/inc/cdp_txrx_stats.h
  3. 3 3
      dp/wifi3.0/dp_main.c

+ 5 - 5
dp/inc/cdp_txrx_ops.h

@@ -1165,13 +1165,13 @@ struct cdp_peer_ops {
 };
 
 /**
- * struct cdp_ocb_ops - mcl ocb ops
- * @clear_stats:
- * @stats:
+ * struct cdp_mob_stats_ops - mcl mob stats ops
+ * @clear_stats: handler to clear ol txrx stats
+ * @stats: handler to update ol txrx stats
  */
 struct cdp_mob_stats_ops {
-	QDF_STATUS
-		(*clear_stats)(struct cdp_soc *soc, uint8_t bitmap);
+	QDF_STATUS(*clear_stats)(struct cdp_soc_t *soc_hdl,
+				 uint8_t pdev_id, uint8_t bitmap);
 	int (*stats)(uint8_t vdev_id, char *buffer, unsigned buf_len);
 };
 

+ 2 - 3
dp/inc/cdp_txrx_stats.h

@@ -26,7 +26,7 @@
 #include <cdp_txrx_ops.h>
 
 static inline QDF_STATUS
-cdp_clear_stats(ol_txrx_soc_handle soc, uint8_t bitmap)
+cdp_clear_stats(ol_txrx_soc_handle soc, uint8_t pdev_id, uint8_t bitmap)
 {
 
 	if (!soc || !soc->ops) {
@@ -40,8 +40,7 @@ cdp_clear_stats(ol_txrx_soc_handle soc, uint8_t bitmap)
 	    !soc->ops->mob_stats_ops->clear_stats)
 		return QDF_STATUS_E_INVAL;
 
-	return soc->ops->mob_stats_ops->clear_stats((struct cdp_soc *)soc,
-						    bitmap);
+	return soc->ops->mob_stats_ops->clear_stats(soc, pdev_id, bitmap);
 }
 
 static inline int

+ 3 - 3
dp/wifi3.0/dp_main.c

@@ -8414,10 +8414,10 @@ static QDF_STATUS dp_txrx_dump_stats(void *psoc, uint16_t value,
  * Return: 0 - Success, non-zero - failure
  */
 static
-QDF_STATUS dp_txrx_clear_dump_stats(struct cdp_soc *psoc, uint8_t value)
+QDF_STATUS dp_txrx_clear_dump_stats(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
+				    uint8_t value)
 {
-	struct dp_soc *soc =
-		(struct dp_soc *)psoc;
+	struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
 
 	if (!soc) {