qcacmn: cdp: Convergence of cdp_bus_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 bus_ops - bus_suspend - bus_resume CRs-Fixed: 2539826 Change-Id: Id4d6ba16beae89f4052e72024ef8ce891ea33715
Этот коммит содержится в:

коммит произвёл
nshrivas

родитель
dc1517ec8c
Коммит
1d4d12e0e9
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2017 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2016-2017, 2019 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -25,15 +25,15 @@
|
||||
|
||||
/**
|
||||
* cdp_bus_suspend() - suspend bus
|
||||
* @soc - data path soc handle
|
||||
* @ppdev: data path pdev handle
|
||||
* @soc: data path soc handle
|
||||
* @pdev_id: id of dp pdev handle
|
||||
*
|
||||
* suspend bus
|
||||
*
|
||||
* return QDF_STATUS_SUCCESS suspend is not implemented or suspend done
|
||||
*/
|
||||
static inline QDF_STATUS cdp_bus_suspend(ol_txrx_soc_handle soc,
|
||||
struct cdp_pdev *ppdev)
|
||||
uint8_t pdev_id)
|
||||
{
|
||||
if (!soc || !soc->ops || !soc->ops->bus_ops) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
|
||||
@@ -42,21 +42,21 @@ static inline QDF_STATUS cdp_bus_suspend(ol_txrx_soc_handle soc,
|
||||
}
|
||||
|
||||
if (soc->ops->bus_ops->bus_suspend)
|
||||
return soc->ops->bus_ops->bus_suspend(ppdev);
|
||||
return soc->ops->bus_ops->bus_suspend(soc, pdev_id);
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
|
||||
/**
|
||||
* cdp_bus_resume() - resume bus
|
||||
* @soc - data path soc handle
|
||||
* @ppdev: data path pdev handle
|
||||
* @soc: data path soc handle
|
||||
* @pdev_id: id of dp pdev handle
|
||||
*
|
||||
* resume bus
|
||||
*
|
||||
* return QDF_STATUS_SUCCESS resume is not implemented or suspend done
|
||||
*/
|
||||
static inline QDF_STATUS cdp_bus_resume(ol_txrx_soc_handle soc,
|
||||
struct cdp_pdev *ppdev)
|
||||
uint8_t pdev_id)
|
||||
{
|
||||
if (!soc || !soc->ops || !soc->ops->bus_ops) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
|
||||
@@ -65,7 +65,7 @@ static inline QDF_STATUS cdp_bus_resume(ol_txrx_soc_handle soc,
|
||||
}
|
||||
|
||||
if (soc->ops->bus_ops->bus_resume)
|
||||
return soc->ops->bus_ops->bus_resume(ppdev);
|
||||
return soc->ops->bus_ops->bus_resume(soc, pdev_id);
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
|
||||
|
Ссылка в новой задаче
Block a user