Re: [PATCH 1/1] qlcnic: add wmb() call in transmit data path.

2016-07-01 Thread David Miller
From: Sony Chacko 
Date: Wed, 29 Jun 2016 17:51:34 -0400

> Call wmb() to ensure writes are complete before
> hardware fetches updated Tx descriptors.
> 
> Signed-off-by: Sony Chacko 

Applied, thanks.


RE: [PATCH 1/1] qlcnic: add wmb() call in transmit data path.

2016-06-30 Thread Sony Chacko
Subject: Re: [PATCH 1/1] qlcnic: add wmb() call in transmit data path.

>
>> +/* Ensure writes are complete before HW fetches Tx descriptors */
>> +wmb();
>>   qlcnic_update_cmd_producer(tx_ring);
>>
>>   return NETDEV_TX_OK;
>>
>
> Would not an mmiowb be more appropriate in this case?
>
> Regards,
> Lino

Sorry, this was nonsense.This should be "dma_wmb" not "mmiowb".

Lino,

The patch is based on this kernel documentation. 

https://www.kernel.org/doc/Documentation/memory-barriers.txt

/* force memory to sync before notifying device via MMIO */
wmb();

/* notify device of new descriptors */
writel(DESC_NOTIFY, doorbell);
}
The wmb() is needed to guarantee that the cache coherent memory writes have 
completed before attempting a write to the cache incoherent MMIO region.

Thanks,
Sony


Re: [PATCH 1/1] qlcnic: add wmb() call in transmit data path.

2016-06-30 Thread Lino Sanfilippo



On 30.06.2016 17:32, Lino Sanfilippo wrote:

Hi,

On 29.06.2016 23:51, Sony Chacko wrote:


+/* Ensure writes are complete before HW fetches Tx descriptors */
+wmb();
  qlcnic_update_cmd_producer(tx_ring);

  return NETDEV_TX_OK;



Would not an mmiowb be more appropriate in this case?

Regards,
Lino


Sorry, this was nonsense. This should be "dma_wmb" not "mmiowb".

Regards,
Lino


Re: [PATCH 1/1] qlcnic: add wmb() call in transmit data path.

2016-06-30 Thread Lino Sanfilippo

Hi,

On 29.06.2016 23:51, Sony Chacko wrote:


+   /* Ensure writes are complete before HW fetches Tx descriptors */
+   wmb();
qlcnic_update_cmd_producer(tx_ring);

return NETDEV_TX_OK;



Would not an mmiowb be more appropriate in this case?

Regards,
Lino  


[PATCH 1/1] qlcnic: add wmb() call in transmit data path.

2016-06-29 Thread Sony Chacko
Call wmb() to ensure writes are complete before
hardware fetches updated Tx descriptors.

Signed-off-by: Sony Chacko 
---
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c 
b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
index 607bb7d..87c642d 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
@@ -772,6 +772,8 @@ netdev_tx_t qlcnic_xmit_frame(struct sk_buff *skb, struct 
net_device *netdev)
tx_ring->tx_stats.tx_bytes += skb->len;
tx_ring->tx_stats.xmit_called++;
 
+   /* Ensure writes are complete before HW fetches Tx descriptors */
+   wmb();
qlcnic_update_cmd_producer(tx_ring);
 
return NETDEV_TX_OK;
-- 
1.7.1