[dpdk-dev] net/nfp: fix barrier location
Checks
Commit Message
The barrier needs to be after reading the DD bit. It has not been
a problem because the potential reads which can not happen before
reading the DD bit seem to be far enough, so the compiler is not
rescheduling them. However, a refactoring could make this problem
to arise.
Fixes: b812daadad0d ("nfp: add Rx and Tx")
Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
drivers/net/nfp/nfp_net.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Comments
On 2/22/2018 11:30 AM, Alejandro Lucero wrote:
> The barrier needs to be after reading the DD bit. It has not been
> a problem because the potential reads which can not happen before
> reading the DD bit seem to be far enough, so the compiler is not
> rescheduling them. However, a refactoring could make this problem
> to arise.
>
> Fixes: b812daadad0d ("nfp: add Rx and Tx")
Cc: stable@dpdk.org
>
> Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Applied to dpdk-next-net/master, thanks.
Unrelated to this patch but nfp driver is still missing:
1- SPDX licensing tags
2- new offloading API.
Can you please plan for them for this release? Specially second one is important
because missing it may break the driver for this release.
Thanks,
ferruh
@@ -2019,16 +2019,16 @@ enum nfp_qcp_ptr {
break;
}
+ rxds = &rxq->rxds[rxq->rd_p];
+ if ((rxds->rxd.meta_len_dd & PCIE_DESC_RX_DD) == 0)
+ break;
+
/*
* Memory barrier to ensure that we won't do other
* reads before the DD bit.
*/
rte_rmb();
- rxds = &rxq->rxds[rxq->rd_p];
- if ((rxds->rxd.meta_len_dd & PCIE_DESC_RX_DD) == 0)
- break;
-
/*
* We got a packet. Let's alloc a new mbuff for refilling the
* free descriptor ring as soon as possible