From 48032024a3ab5894895966fc1ab951b5fd05db6d Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Thu, 4 Jun 2015 09:19:59 -0500 Subject: [PATCH] wctc4xxp: Clear packet error count when reloading firmware. When the firmware is reloaded and reset, the packet error count is not. This can create a condition where the firmware could report an error like the following if a channel was closed without any new errors: wctc4xxp 0000:07:08.0: 18446744073709551597 errored receive packets wcdte.packet_errors is also renamed to wcdte.reported_packet_errors to not conflict with the packet_errors member of the descriptor lists. Signed-off-by: Shaun Ruffell Signed-off-by: Russ Meyerriecks (cherry picked from commit d5f13c5116fa284230190783d160616b90c65564) --- drivers/dahdi/wctc4xxp/base.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/dahdi/wctc4xxp/base.c b/drivers/dahdi/wctc4xxp/base.c index 20a03f3..068f741 100644 --- a/drivers/dahdi/wctc4xxp/base.c +++ b/drivers/dahdi/wctc4xxp/base.c @@ -375,7 +375,7 @@ struct wcdte { #endif struct timer_list watchdog; u16 open_channels; - unsigned long packet_errors; + unsigned long reported_packet_errors; }; struct wcdte_netdev_priv { @@ -2024,12 +2024,12 @@ static void wctc4xxp_check_for_rx_errors(struct wcdte *wc) unsigned long errors = wctc4xxp_get_packet_errors(wc->rxd); /* Print warning when the number of errors changes */ - if (wc->packet_errors != errors) { + if (wc->reported_packet_errors != errors) { if (printk_ratelimit()) { dev_err(&wc->pdev->dev, "%lu errored receive packets.\n", - errors - wc->packet_errors); - wc->packet_errors = errors; + errors - wc->reported_packet_errors); + wc->reported_packet_errors = errors; } } } @@ -3870,6 +3870,7 @@ static int wctc4xxp_reset_driver_state(struct wcdte *wc) release_firmware(firmware); spin_lock_irqsave(&wc->rxd->lock, flags); wc->rxd->packet_errors = 0; + wc->reported_packet_errors = 0; spin_unlock_irqrestore(&wc->rxd->lock, flags); return res; }