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/softnic: fix useless address check
[dpdk.git]
/
drivers
/
net
/
enetc
/
enetc_ethdev.c
diff --git
a/drivers/net/enetc/enetc_ethdev.c
b/drivers/net/enetc/enetc_ethdev.c
index
1716e11
..
246aff4
100644
(file)
--- a/
drivers/net/enetc/enetc_ethdev.c
+++ b/
drivers/net/enetc/enetc_ethdev.c
@@
-3,15
+3,13
@@
*/
#include <stdbool.h>
*/
#include <stdbool.h>
-#include <
rte_
ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_random.h>
#include <dpaax_iova_table.h>
#include "enetc_logs.h"
#include "enetc.h"
#include <rte_random.h>
#include <dpaax_iova_table.h>
#include "enetc_logs.h"
#include "enetc.h"
-int enetc_logtype_pmd;
-
static int
enetc_dev_start(struct rte_eth_dev *dev)
{
static int
enetc_dev_start(struct rte_eth_dev *dev)
{
@@
-47,7
+45,7
@@
enetc_dev_start(struct rte_eth_dev *dev)
return 0;
}
return 0;
}
-static
void
+static
int
enetc_dev_stop(struct rte_eth_dev *dev)
{
struct enetc_eth_hw *hw =
enetc_dev_stop(struct rte_eth_dev *dev)
{
struct enetc_eth_hw *hw =
@@
-56,6
+54,7
@@
enetc_dev_stop(struct rte_eth_dev *dev)
uint32_t val;
PMD_INIT_FUNC_TRACE();
uint32_t val;
PMD_INIT_FUNC_TRACE();
+ dev->data->dev_started = 0;
/* Disable port */
val = enetc_port_rd(enetc_hw, ENETC_PMR);
enetc_port_wr(enetc_hw, ENETC_PMR, val & (~ENETC_PMR_EN));
/* Disable port */
val = enetc_port_rd(enetc_hw, ENETC_PMR);
enetc_port_wr(enetc_hw, ENETC_PMR, val & (~ENETC_PMR_EN));
@@
-63,6
+62,8
@@
enetc_dev_stop(struct rte_eth_dev *dev)
val = enetc_port_rd(enetc_hw, ENETC_PM0_CMD_CFG);
enetc_port_wr(enetc_hw, ENETC_PM0_CMD_CFG,
val & (~(ENETC_PM0_TX_EN | ENETC_PM0_RX_EN)));
val = enetc_port_rd(enetc_hw, ENETC_PM0_CMD_CFG);
enetc_port_wr(enetc_hw, ENETC_PM0_CMD_CFG,
val & (~(ENETC_PM0_TX_EN | ENETC_PM0_RX_EN)));
+
+ return 0;
}
static const uint32_t *
}
static const uint32_t *
@@
-324,8
+325,10
@@
fail:
}
static void
}
static void
-enetc_tx_queue_release(
void *txq
)
+enetc_tx_queue_release(
struct rte_eth_dev *dev, uint16_t qid
)
{
{
+ void *txq = dev->data->tx_queues[qid];
+
if (txq == NULL)
return;
if (txq == NULL)
return;
@@
-472,8
+475,10
@@
fail:
}
static void
}
static void
-enetc_rx_queue_release(
void *rxq
)
+enetc_rx_queue_release(
struct rte_eth_dev *dev, uint16_t qid
)
{
{
+ void *rxq = dev->data->rx_queues[qid];
+
if (rxq == NULL)
return;
if (rxq == NULL)
return;
@@
-547,25
+552,34
@@
enetc_stats_reset(struct rte_eth_dev *dev)
return 0;
}
return 0;
}
-static
void
+static
int
enetc_dev_close(struct rte_eth_dev *dev)
{
uint16_t i;
enetc_dev_close(struct rte_eth_dev *dev)
{
uint16_t i;
+ int ret;
PMD_INIT_FUNC_TRACE();
PMD_INIT_FUNC_TRACE();
- enetc_dev_stop(dev);
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ return 0;
+
+ ret = enetc_dev_stop(dev);
for (i = 0; i < dev->data->nb_rx_queues; i++) {
for (i = 0; i < dev->data->nb_rx_queues; i++) {
- enetc_rx_queue_release(dev
->data->rx_queues[i]
);
+ enetc_rx_queue_release(dev
, i
);
dev->data->rx_queues[i] = NULL;
}
dev->data->nb_rx_queues = 0;
for (i = 0; i < dev->data->nb_tx_queues; i++) {
dev->data->rx_queues[i] = NULL;
}
dev->data->nb_rx_queues = 0;
for (i = 0; i < dev->data->nb_tx_queues; i++) {
- enetc_tx_queue_release(dev
->data->tx_queues[i]
);
+ enetc_tx_queue_release(dev
, i
);
dev->data->tx_queues[i] = NULL;
}
dev->data->nb_tx_queues = 0;
dev->data->tx_queues[i] = NULL;
}
dev->data->nb_tx_queues = 0;
+
+ if (rte_eal_iova_mode() == RTE_IOVA_PA)
+ dpaax_iova_table_depopulate();
+
+ return ret;
}
static int
}
static int
@@
-667,7
+681,7
@@
enetc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
return -EINVAL;
}
return -EINVAL;
}
- if (frame_size >
RTE_ETHER
_MAX_LEN)
+ if (frame_size >
ENETC_ETH
_MAX_LEN)
dev->data->dev_conf.rxmode.offloads &=
DEV_RX_OFFLOAD_JUMBO_FRAME;
else
dev->data->dev_conf.rxmode.offloads &=
DEV_RX_OFFLOAD_JUMBO_FRAME;
else
@@
-875,6
+889,8
@@
enetc_dev_init(struct rte_eth_dev *eth_dev)
eth_dev->rx_pkt_burst = &enetc_recv_pkts;
eth_dev->tx_pkt_burst = &enetc_xmit_pkts;
eth_dev->rx_pkt_burst = &enetc_recv_pkts;
eth_dev->tx_pkt_burst = &enetc_xmit_pkts;
+ eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
+
/* Retrieving and storing the HW base address of device */
hw->hw.reg = (void *)pci_dev->mem_resource[0].addr;
hw->device_id = pci_dev->id.device_id;
/* Retrieving and storing the HW base address of device */
hw->hw.reg = (void *)pci_dev->mem_resource[0].addr;
hw->device_id = pci_dev->id.device_id;
@@
-916,14
+932,11
@@
enetc_dev_init(struct rte_eth_dev *eth_dev)
}
static int
}
static int
-enetc_dev_uninit(struct rte_eth_dev *eth_dev
__rte_unused
)
+enetc_dev_uninit(struct rte_eth_dev *eth_dev)
{
PMD_INIT_FUNC_TRACE();
{
PMD_INIT_FUNC_TRACE();
- if (rte_eal_iova_mode() == RTE_IOVA_PA)
- dpaax_iova_table_depopulate();
-
- return 0;
+ return enetc_dev_close(eth_dev);
}
static int
}
static int
@@
-951,10
+964,4
@@
static struct rte_pci_driver rte_enetc_pmd = {
RTE_PMD_REGISTER_PCI(net_enetc, rte_enetc_pmd);
RTE_PMD_REGISTER_PCI_TABLE(net_enetc, pci_id_enetc_map);
RTE_PMD_REGISTER_KMOD_DEP(net_enetc, "* vfio-pci");
RTE_PMD_REGISTER_PCI(net_enetc, rte_enetc_pmd);
RTE_PMD_REGISTER_PCI_TABLE(net_enetc, pci_id_enetc_map);
RTE_PMD_REGISTER_KMOD_DEP(net_enetc, "* vfio-pci");
-
-RTE_INIT(enetc_pmd_init_log)
-{
- enetc_logtype_pmd = rte_log_register("pmd.net.enetc");
- if (enetc_logtype_pmd >= 0)
- rte_log_set_level(enetc_logtype_pmd, RTE_LOG_NOTICE);
-}
+RTE_LOG_REGISTER_DEFAULT(enetc_logtype_pmd, NOTICE);