i40e: Detection and recovery of TX queue hung logic moved to service_task from tx_timeout
authorKiran Patil <kiran.patil@intel.com>
Fri, 6 Nov 2015 23:26:02 +0000 (15:26 -0800)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Thu, 3 Dec 2015 10:23:31 +0000 (02:23 -0800)
commit9c6c12595b73e580f103b0812837f015034d460e
tree08c5a9ea8b32e9be73b40f69ceb99cac6810547c
parent05281eb8e1754688ecf07a63844c56c9f76b38ad
i40e: Detection and recovery of TX queue hung logic moved to service_task from tx_timeout

This patch contains following changes:
   - detection and recovery logic (issue SW interrupt) has been moved to
     service_task from timeout function.
   - added some more debug info from tx_timeout.

Logic to detect and recover TX queue hung is now two step process:
  - service_task detects TX queue hung and sets a bit(hung_detected) if
    it was not set.
  - if bit was set (means this is back-back hung condition detected),
    issue SW interrupt and clear the bit.
  - napi_poll clears the bit unconditionally since it cleans TX/RX queues.

Change-ID: Ieed03a48927c845a988b3ff375090bf37caeb903
Signed-off-by: Kiran Patil <kiran.patil@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e.h
drivers/net/ethernet/intel/i40e/i40e_main.c
drivers/net/ethernet/intel/i40e/i40e_txrx.c
drivers/net/ethernet/intel/i40evf/i40e_txrx.c
drivers/net/ethernet/intel/i40evf/i40e_txrx.h