diff options
author | Rick Farrington <ricardo.farrington@cavium.com> | 2018-08-28 21:32:55 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-08-30 05:47:52 +0300 |
commit | b943f17e06493fd2c7fd00743093ad5dcdb90e7f (patch) | |
tree | c11e87c4f0720b3b86a99c01a19b24b58f162606 /drivers/net/ethernet/cavium/liquidio/octeon_iq.h | |
parent | 9ecc660ea1a7a5cebf403fb74ad363400d645463 (diff) | |
download | linux-b943f17e06493fd2c7fd00743093ad5dcdb90e7f.tar.xz |
liquidio: fix race condition in instruction completion processing
In lio_enable_irq, the pkt_in_done count register was being cleared to
zero. However, there could be some completed instructions which were not
yet processed due to budget and limit constraints.
So, only write this register with the number of actual completions
that were processed.
Signed-off-by: Rick Farrington <ricardo.farrington@cavium.com>
Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/cavium/liquidio/octeon_iq.h')
-rw-r--r-- | drivers/net/ethernet/cavium/liquidio/octeon_iq.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_iq.h b/drivers/net/ethernet/cavium/liquidio/octeon_iq.h index 2327062e8af6..aecd0d36d634 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_iq.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_iq.h @@ -94,6 +94,8 @@ struct octeon_instr_queue { u32 pkt_in_done; + u32 pkts_processed; + /** A spinlock to protect access to the input ring.*/ spinlock_t iq_flush_running_lock; |