aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ena
diff options
context:
space:
mode:
authorMarcin Wojtas <mw@FreeBSD.org>2019-02-15 10:40:41 +0000
committerMarcin Wojtas <mw@FreeBSD.org>2019-02-15 10:40:41 +0000
commit1d65b4c095cdb9e511857c97556403851f517118 (patch)
tree7484f8e6c67feb00882095c13a3fd65e82903fd4 /sys/dev/ena
parentc51a229ca754eba7e83a4a5e8c18a3517263ba2f (diff)
downloadsrc-1d65b4c095cdb9e511857c97556403851f517118.tar.gz
src-1d65b4c095cdb9e511857c97556403851f517118.zip
Do not use ntc for obtaining buffer on Rx in the ENA
In out of order mode Rx buffer are accesses by req_id. Accessing and validating mbuf using ntc is causing false error. Increase driver revision after latest RX OOO completion fixes. Submitted by: Rafal Kozik <rk@semihalf.com> Obtained from: Semihalf Sponsored by: Amazon, Inc. MFC after: 1 week
Notes
Notes: svn path=/head/; revision=344151
Diffstat (limited to 'sys/dev/ena')
-rw-r--r--sys/dev/ena/ena.c10
-rw-r--r--sys/dev/ena/ena.h2
2 files changed, 5 insertions, 7 deletions
diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c
index 6a82d9a15fc6..49213d12b9d9 100644
--- a/sys/dev/ena/ena.c
+++ b/sys/dev/ena/ena.c
@@ -1473,12 +1473,6 @@ ena_rx_mbuf(struct ena_ring *rx_ring, struct ena_com_rx_buf_info *ena_bufs,
ntc = *next_to_clean;
adapter = rx_ring->adapter;
- rx_info = &rx_ring->rx_buffer_info[ntc];
-
- if (unlikely(rx_info->mbuf == NULL)) {
- device_printf(adapter->pdev, "NULL mbuf in rx_info");
- return (NULL);
- }
len = ena_bufs[buf].len;
req_id = ena_bufs[buf].req_id;
@@ -1487,6 +1481,10 @@ ena_rx_mbuf(struct ena_ring *rx_ring, struct ena_com_rx_buf_info *ena_bufs,
return (NULL);
rx_info = &rx_ring->rx_buffer_info[req_id];
+ if (unlikely(rx_info->mbuf == NULL)) {
+ device_printf(adapter->pdev, "NULL mbuf in rx_info");
+ return (NULL);
+ }
ena_trace(ENA_DBG | ENA_RXPTH, "rx_info %p, mbuf %p, paddr %jx",
rx_info, rx_info->mbuf, (uintmax_t)rx_info->ena_buf.paddr);
diff --git a/sys/dev/ena/ena.h b/sys/dev/ena/ena.h
index b0ef5e47d818..574cd57b9cda 100644
--- a/sys/dev/ena/ena.h
+++ b/sys/dev/ena/ena.h
@@ -41,7 +41,7 @@
#define DRV_MODULE_VER_MAJOR 0
#define DRV_MODULE_VER_MINOR 8
-#define DRV_MODULE_VER_SUBMINOR 2
+#define DRV_MODULE_VER_SUBMINOR 3
#define DRV_MODULE_NAME "ena"