X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsoftnic%2Frte_eth_softnic.c;h=f64023256db11dbdf114e32f3a90f6887b262747;hb=7fbbc981d54fa59fb5f3242d0bf3210e9d23137b;hp=e3ad241618cce8bc86472d710acba27850c2f4db;hpb=5eb676d74fc8a15ed677fba7b7b3f5efb2af5fae;p=dpdk.git diff --git a/drivers/net/softnic/rte_eth_softnic.c b/drivers/net/softnic/rte_eth_softnic.c index e3ad241618..f64023256d 100644 --- a/drivers/net/softnic/rte_eth_softnic.c +++ b/drivers/net/softnic/rte_eth_softnic.c @@ -6,8 +6,8 @@ #include #include -#include -#include +#include +#include #include #include #include @@ -80,19 +80,21 @@ static const struct softnic_conn_params conn_params_default = { .msg_handle_arg = NULL, }; -static int pmd_softnic_logtype; +RTE_LOG_REGISTER_DEFAULT(pmd_softnic_logtype, NOTICE); #define PMD_LOG(level, fmt, args...) \ rte_log(RTE_LOG_ ## level, pmd_softnic_logtype, \ "%s(): " fmt "\n", __func__, ##args) -static void +static int pmd_dev_infos_get(struct rte_eth_dev *dev __rte_unused, struct rte_eth_dev_info *dev_info) { dev_info->max_rx_pktlen = UINT32_MAX; dev_info->max_rx_queues = UINT16_MAX; dev_info->max_tx_queues = UINT16_MAX; + + return 0; } static int @@ -176,7 +178,7 @@ pmd_dev_start(struct rte_eth_dev *dev) return 0; } -static void +static int pmd_dev_stop(struct rte_eth_dev *dev) { struct pmd_internals *p = dev->data->dev_private; @@ -197,12 +199,45 @@ pmd_dev_stop(struct rte_eth_dev *dev) tm_hierarchy_free(p); softnic_mtr_free(p); + + return 0; } static void -pmd_dev_close(struct rte_eth_dev *dev __rte_unused) +pmd_free(struct pmd_internals *p) { - return; + if (p == NULL) + return; + + if (p->params.conn_port) + softnic_conn_free(p->conn); + + softnic_thread_free(p); + softnic_pipeline_free(p); + softnic_table_action_profile_free(p); + softnic_port_in_action_profile_free(p); + softnic_tap_free(p); + softnic_tmgr_free(p); + softnic_link_free(p); + softnic_swq_free(p); + softnic_mempool_free(p); + + tm_hierarchy_free(p); + softnic_mtr_free(p); + + rte_free(p); +} + +static int +pmd_dev_close(struct rte_eth_dev *dev) +{ + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + + pmd_free(dev->data->dev_private); + dev->data->dev_private = NULL; /* already freed */ + dev->data->mac_addrs = NULL; /* statically allocated */ + return 0; } static int @@ -213,18 +248,11 @@ pmd_link_update(struct rte_eth_dev *dev __rte_unused, } static int -pmd_filter_ctrl(struct rte_eth_dev *dev __rte_unused, - enum rte_filter_type filter_type, - enum rte_filter_op filter_op, - void *arg) +pmd_flow_ops_get(struct rte_eth_dev *dev __rte_unused, + const struct rte_flow_ops **ops) { - if (filter_type == RTE_ETH_FILTER_GENERIC && - filter_op == RTE_ETH_FILTER_GET) { - *(const void **)arg = &pmd_flow_ops; - return 0; - } - - return -ENOTSUP; + *ops = &pmd_flow_ops; + return 0; } static int @@ -252,7 +280,7 @@ static const struct eth_dev_ops pmd_ops = { .dev_infos_get = pmd_dev_infos_get, .rx_queue_setup = pmd_rx_queue_setup, .tx_queue_setup = pmd_tx_queue_setup, - .filter_ctrl = pmd_filter_ctrl, + .flow_ops_get = pmd_flow_ops_get, .tm_ops_get = pmd_tm_ops_get, .mtr_ops_get = pmd_mtr_ops_get, }; @@ -333,31 +361,6 @@ pmd_init(struct pmd_params *params) return p; } -static void -pmd_free(struct pmd_internals *p) -{ - if (p == NULL) - return; - - if (p->params.conn_port) - softnic_conn_free(p->conn); - - softnic_thread_free(p); - softnic_pipeline_free(p); - softnic_table_action_profile_free(p); - softnic_port_in_action_profile_free(p); - softnic_tap_free(p); - softnic_tmgr_free(p); - softnic_link_free(p); - softnic_swq_free(p); - softnic_mempool_free(p); - - tm_hierarchy_free(p); - softnic_mtr_free(p); - - rte_free(p); -} - static struct rte_ether_addr eth_addr = { .addr_bytes = {0}, }; @@ -389,7 +392,6 @@ pmd_ethdev_register(struct rte_vdev_device *vdev, dev->data->dev_link.link_status = ETH_LINK_DOWN; dev->data->mac_addrs = ð_addr; dev->data->promiscuous = 1; - dev->data->kdrv = RTE_KDRV_NONE; dev->data->numa_node = params->cpu_id; rte_eth_dev_probing_finish(dev); @@ -651,12 +653,9 @@ pmd_remove(struct rte_vdev_device *vdev) /* Find the ethdev entry */ dev = rte_eth_dev_allocated(rte_vdev_device_name(vdev)); if (dev == NULL) - return -ENODEV; + return 0; /* port already released */ - /* Free device data structures*/ - pmd_free(dev->data->dev_private); - dev->data->dev_private = NULL; /* already freed */ - dev->data->mac_addrs = NULL; /* statically allocated */ + pmd_dev_close(dev); rte_eth_dev_release_port(dev); return 0; @@ -688,14 +687,6 @@ RTE_PMD_REGISTER_PARAM_STRING(net_softnic, PMD_PARAM_TM_QSIZE12 "=" ); - -RTE_INIT(pmd_softnic_init_log) -{ - pmd_softnic_logtype = rte_log_register("pmd.net.softnic"); - if (pmd_softnic_logtype >= 0) - rte_log_set_level(pmd_softnic_logtype, RTE_LOG_NOTICE); -} - int rte_pmd_softnic_manage(uint16_t port_id) {