RE: [PATCH net 1/7] qlge: Fixed packet transmit errors due to potential driver errors.
From: Jitendra Kalsaria <hidden>
Date: 2012-07-03 19:38:15
-----Original Message-----
From: David Miller [mailto:davem@davemloft.net] Sent: Monday, July 02, 2012 6:42 PM To: Jitendra Kalsaria Cc: netdev; Ron Mercer; Dept-NX Linux NIC Driver Subject: Re: [PATCH net 1/7] qlge: Fixed packet transmit errors due to potential driver errors. From: David Miller <davem@davemloft.net> Date: Mon, 02 Jul 2012 18:38:26 -0700 (PDT)quoted
From: Jitendra Kalsaria <redacted> Date: Mon, 2 Jul 2012 18:30:47 -0700quoted
As per your comments, TX ring full is not expected behavior? All I can think of increasing the TX queue to 1024 and clean-up in timer instead of interrupt?Your transmit function should never be invoked when the queue is full, logic elsewhere in your driver should have stopped the queue therefore preventing further invocations of your transmit function until you wake the queue when space is liberated in the TX ring.BTW, did it even occur to you that there is a kernel log message here in this code path for a reason? That log message is there because this event is unexpected and a driver error.
I think my patch description might have been misleading. We are not fixing a logical problem but rather a statistics reporting problem. Our transmit function is not getting called when queue is full but when we stop the queue it increment tx_error statistic and one of our customers is running a test that deliberately floods the queue causing it to periodically be stopped. The customer has not reported logical problem with the test were driver perform very well but they merely pointed out that we were incorrectly reporting the queue full condition as a tx_error. This patch was intended to remove the line that increments the tx_error statistic when the queue is correctly stopped.