git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/hns3: fix Rx/Tx errors stats
[dpdk.git]
/
drivers
/
net
/
ena
/
ena_ethdev.c
diff --git
a/drivers/net/ena/ena_ethdev.c
b/drivers/net/ena/ena_ethdev.c
index
ae410d1
..
20ff365
100644
(file)
--- a/
drivers/net/ena/ena_ethdev.c
+++ b/
drivers/net/ena/ena_ethdev.c
@@
-27,7
+27,7
@@
#include <ena_eth_io_defs.h>
#define DRV_MODULE_VER_MAJOR 2
#include <ena_eth_io_defs.h>
#define DRV_MODULE_VER_MAJOR 2
-#define DRV_MODULE_VER_MINOR
1
+#define DRV_MODULE_VER_MINOR
2
#define DRV_MODULE_VER_SUBMINOR 0
#define ENA_IO_TXQ_IDX(q) (2 * (q))
#define DRV_MODULE_VER_SUBMINOR 0
#define ENA_IO_TXQ_IDX(q) (2 * (q))
@@
-140,8
+140,8
@@
static const struct ena_stats ena_stats_rx_strings[] = {
/** Vendor ID used by Amazon devices */
#define PCI_VENDOR_ID_AMAZON 0x1D0F
/** Amazon devices */
/** Vendor ID used by Amazon devices */
#define PCI_VENDOR_ID_AMAZON 0x1D0F
/** Amazon devices */
-#define PCI_DEVICE_ID_ENA_VF 0xEC20
-#define PCI_DEVICE_ID_ENA_
LLQ_VF
0xEC21
+#define PCI_DEVICE_ID_ENA_VF
0xEC20
+#define PCI_DEVICE_ID_ENA_
VF_RSERV0
0xEC21
#define ENA_TX_OFFLOAD_MASK (\
PKT_TX_L4_MASK | \
#define ENA_TX_OFFLOAD_MASK (\
PKT_TX_L4_MASK | \
@@
-155,7
+155,7
@@
static const struct ena_stats ena_stats_rx_strings[] = {
static const struct rte_pci_id pci_id_ena_map[] = {
{ RTE_PCI_DEVICE(PCI_VENDOR_ID_AMAZON, PCI_DEVICE_ID_ENA_VF) },
static const struct rte_pci_id pci_id_ena_map[] = {
{ RTE_PCI_DEVICE(PCI_VENDOR_ID_AMAZON, PCI_DEVICE_ID_ENA_VF) },
- { RTE_PCI_DEVICE(PCI_VENDOR_ID_AMAZON, PCI_DEVICE_ID_ENA_
LLQ_VF
) },
+ { RTE_PCI_DEVICE(PCI_VENDOR_ID_AMAZON, PCI_DEVICE_ID_ENA_
VF_RSERV0
) },
{ .device_id = 0 },
};
{ .device_id = 0 },
};
@@
-198,7
+198,7
@@
static void ena_init_rings(struct ena_adapter *adapter,
bool disable_meta_caching);
static int ena_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
static int ena_start(struct rte_eth_dev *dev);
bool disable_meta_caching);
static int ena_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
static int ena_start(struct rte_eth_dev *dev);
-static
void
ena_stop(struct rte_eth_dev *dev);
+static
int
ena_stop(struct rte_eth_dev *dev);
static int ena_close(struct rte_eth_dev *dev);
static int ena_dev_reset(struct rte_eth_dev *dev);
static int ena_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats);
static int ena_close(struct rte_eth_dev *dev);
static int ena_dev_reset(struct rte_eth_dev *dev);
static int ena_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats);
@@
-296,21
+296,23
@@
static inline void ena_rx_mbuf_prepare(struct rte_mbuf *mbuf,
else if (ena_rx_ctx->l4_proto == ENA_ETH_IO_L4_PROTO_UDP)
packet_type |= RTE_PTYPE_L4_UDP;
else if (ena_rx_ctx->l4_proto == ENA_ETH_IO_L4_PROTO_UDP)
packet_type |= RTE_PTYPE_L4_UDP;
- if (ena_rx_ctx->l3_proto == ENA_ETH_IO_L3_PROTO_IPV4)
+ if (ena_rx_ctx->l3_proto == ENA_ETH_IO_L3_PROTO_IPV4)
{
packet_type |= RTE_PTYPE_L3_IPV4;
packet_type |= RTE_PTYPE_L3_IPV4;
- else if (ena_rx_ctx->l3_proto == ENA_ETH_IO_L3_PROTO_IPV6)
+ if (unlikely(ena_rx_ctx->l3_csum_err))
+ ol_flags |= PKT_RX_IP_CKSUM_BAD;
+ else
+ ol_flags |= PKT_RX_IP_CKSUM_GOOD;
+ } else if (ena_rx_ctx->l3_proto == ENA_ETH_IO_L3_PROTO_IPV6) {
packet_type |= RTE_PTYPE_L3_IPV6;
packet_type |= RTE_PTYPE_L3_IPV6;
+ }
- if (!ena_rx_ctx->l4_csum_checked)
+ if (!ena_rx_ctx->l4_csum_checked
|| ena_rx_ctx->frag
)
ol_flags |= PKT_RX_L4_CKSUM_UNKNOWN;
else
ol_flags |= PKT_RX_L4_CKSUM_UNKNOWN;
else
- if (unlikely(ena_rx_ctx->l4_csum_err)
&& !ena_rx_ctx->frag
)
+ if (unlikely(ena_rx_ctx->l4_csum_err))
ol_flags |= PKT_RX_L4_CKSUM_BAD;
else
ol_flags |= PKT_RX_L4_CKSUM_BAD;
else
- ol_flags |= PKT_RX_L4_CKSUM_UNKNOWN;
-
- if (unlikely(ena_rx_ctx->l3_csum_err))
- ol_flags |= PKT_RX_IP_CKSUM_BAD;
+ ol_flags |= PKT_RX_L4_CKSUM_GOOD;
mbuf->ol_flags = ol_flags;
mbuf->packet_type = packet_type;
mbuf->ol_flags = ol_flags;
mbuf->packet_type = packet_type;
@@
-505,9
+507,13
@@
static int ena_close(struct rte_eth_dev *dev)
struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
struct ena_adapter *adapter = dev->data->dev_private;
struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
struct ena_adapter *adapter = dev->data->dev_private;
+ int ret = 0;
+
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ return 0;
if (adapter->state == ENA_ADAPTER_STATE_RUNNING)
if (adapter->state == ENA_ADAPTER_STATE_RUNNING)
- ena_stop(dev);
+
ret =
ena_stop(dev);
adapter->state = ENA_ADAPTER_STATE_CLOSED;
ena_rx_queue_release_all(dev);
adapter->state = ENA_ADAPTER_STATE_CLOSED;
ena_rx_queue_release_all(dev);
@@
-527,7
+533,7
@@
static int ena_close(struct rte_eth_dev *dev)
*/
dev->data->mac_addrs = NULL;
*/
dev->data->mac_addrs = NULL;
- return
0
;
+ return
ret
;
}
static int
}
static int
@@
-1097,7
+1103,7
@@
err_start_tx:
return rc;
}
return rc;
}
-static
void
ena_stop(struct rte_eth_dev *dev)
+static
int
ena_stop(struct rte_eth_dev *dev)
{
struct ena_adapter *adapter = dev->data->dev_private;
struct ena_com_dev *ena_dev = &adapter->ena_dev;
{
struct ena_adapter *adapter = dev->data->dev_private;
struct ena_com_dev *ena_dev = &adapter->ena_dev;
@@
-1115,6
+1121,9
@@
static void ena_stop(struct rte_eth_dev *dev)
++adapter->dev_stats.dev_stop;
adapter->state = ENA_ADAPTER_STATE_STOPPED;
++adapter->dev_stats.dev_stop;
adapter->state = ENA_ADAPTER_STATE_STOPPED;
+ dev->data->dev_started = 0;
+
+ return 0;
}
static int ena_create_io_queue(struct ena_ring *ring)
}
static int ena_create_io_queue(struct ena_ring *ring)
@@
-1772,6
+1781,8
@@
static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
return 0;
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
return 0;
+ eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
+
memset(adapter, 0, sizeof(struct ena_adapter));
ena_dev = &adapter->ena_dev;
memset(adapter, 0, sizeof(struct ena_adapter));
ena_dev = &adapter->ena_dev;
@@
-1952,11
+1963,6
@@
static int eth_ena_dev_uninit(struct rte_eth_dev *eth_dev)
ena_destroy_device(eth_dev);
ena_destroy_device(eth_dev);
- eth_dev->dev_ops = NULL;
- eth_dev->rx_pkt_burst = NULL;
- eth_dev->tx_pkt_burst = NULL;
- eth_dev->tx_pkt_prepare = NULL;
-
return 0;
}
return 0;
}
@@
-2720,7
+2726,7
@@
static int ena_xstats_get(struct rte_eth_dev *dev,
return 0;
for (stat = 0; stat < ENA_STATS_ARRAY_GLOBAL; stat++, count++) {
return 0;
for (stat = 0; stat < ENA_STATS_ARRAY_GLOBAL; stat++, count++) {
- stat_offset = ena_stats_
rx
_strings[stat].stat_offset;
+ stat_offset = ena_stats_
global
_strings[stat].stat_offset;
stats_begin = &adapter->dev_stats;
xstats[count].id = count;
stats_begin = &adapter->dev_stats;
xstats[count].id = count;