summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_plcr.c
diff options
context:
space:
mode:
authorMandy Lavi <mandy.lavi@freescale.com>2014-03-27 11:51:52 (GMT)
committerJose Rivera <German.Rivera@freescale.com>2014-04-03 17:19:57 (GMT)
commitc617aa4aa3e4509ef581243872a8151661a5da42 (patch)
tree960d2649c14d51eb8a850b0c553206e0fb6f7ea9 /drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_plcr.c
parent591db9ed6e7c05681969a416be2e2770a37bc5a1 (diff)
downloadlinux-fsl-qoriq-c617aa4aa3e4509ef581243872a8151661a5da42.tar.xz
fmd: Handled clearing of plcr profile and scheme for re-use
Change-Id: I0058a7152ec34038961bdfb7598d280b7ec47777 Signed-off-by: Mandy Lavi <mandy.lavi@freescale.com> Reviewed-on: http://git.am.freescale.net:8181/10411 Reviewed-by: Jose Rivera <German.Rivera@freescale.com> Tested-by: Jose Rivera <German.Rivera@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_plcr.c')
-rw-r--r--drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_plcr.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_plcr.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_plcr.c
index d08293a..e4eeddc 100644
--- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_plcr.c
+++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_plcr.c
@@ -596,7 +596,10 @@ static void UpdateRequiredActionFlag(t_Handle h_FmPcd, uint16_t absoluteProfileI
if (set)
p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].requiredActionFlag = TRUE;
else
+ {
+ p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].requiredAction = 0;
p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].requiredActionFlag = FALSE;
+ }
}
/*********************************************/
@@ -1637,6 +1640,7 @@ t_Handle FM_PCD_PlcrProfileSet(t_Handle h_FmPcd,
/* initialize profile struct */
p_Profile = &p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId];
+
p_Profile->h_FmPcd = p_FmPcd;
p_Profile->absoluteProfileId = absoluteProfileId;
@@ -1761,10 +1765,13 @@ t_Error FM_PCD_PlcrProfileDelete(t_Handle h_Profile)
WritePar(p_FmPcd, tmpReg32);
PlcrHwUnlock(p_FmPcd->p_FmPcdPlcr, intFlags);
+
if (p_Profile->p_Lock)
/* release allocated Profile lock */
FmPcdReleaseLock(p_FmPcd, p_Profile->p_Lock);
+ /* we do not memset profile as all its fields are being re-initialized at "set",
+ * plus its allocation information is still valid. */
return E_OK;
}