X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fnet%2Fhinic%2Fhinic_pmd_ethdev.c;h=1a72401546685fa37b6511b0eb06d830a76f819f;hb=f1893715ce88c405b99860043468466b2e89ca02;hp=378f2c810b5be1be90828ac4cad88c131212e74b;hpb=511b7371d32b61a6f761f16fefd931241cef60ee;p=dpdk.git diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c index 378f2c810b..1a72401546 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.c +++ b/drivers/net/hinic/hinic_pmd_ethdev.c @@ -4,7 +4,7 @@ #include #include -#include +#include #include #include #include @@ -69,12 +69,6 @@ #define HINIC_VLAN_FILTER_EN (1U << 0) -#define HINIC_MTU_TO_PKTLEN(mtu) \ - ((mtu) + ETH_HLEN + ETH_CRC_LEN) - -#define HINIC_PKTLEN_TO_MTU(pktlen) \ - ((pktlen) - (ETH_HLEN + ETH_CRC_LEN)) - /* lro numer limit for one packet */ #define HINIC_LRO_WQE_NUM_DEFAULT 8 @@ -939,13 +933,6 @@ static int hinic_dev_set_link_up(struct rte_eth_dev *dev) struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); int ret; - ret = hinic_set_xsfp_tx_status(nic_dev->hwdev, true); - if (ret) { - PMD_DRV_LOG(ERR, "Enable port tx xsfp failed, dev_name: %s, port_id: %d", - nic_dev->proc_dev_name, dev->data->port_id); - return ret; - } - /* link status follow phy port status, up will open pma */ ret = hinic_set_port_enable(nic_dev->hwdev, true); if (ret) @@ -969,13 +956,6 @@ static int hinic_dev_set_link_down(struct rte_eth_dev *dev) struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); int ret; - ret = hinic_set_xsfp_tx_status(nic_dev->hwdev, false); - if (ret) { - PMD_DRV_LOG(ERR, "Disable port tx xsfp failed, dev_name: %s, port_id: %d", - nic_dev->proc_dev_name, dev->data->port_id); - return ret; - } - /* link status follow phy port status, up will close pma */ ret = hinic_set_port_enable(nic_dev->hwdev, false); if (ret) @@ -1570,7 +1550,7 @@ static int hinic_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) /* update max frame size */ frame_size = HINIC_MTU_TO_PKTLEN(mtu); - if (frame_size > RTE_ETHER_MAX_LEN) + if (frame_size > HINIC_ETH_MAX_LEN) dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; else @@ -1628,6 +1608,9 @@ static int hinic_vlan_filter_set(struct rte_eth_dev *dev, if (vlan_id > RTE_ETHER_MAX_VLAN_ID) return -EINVAL; + if (vlan_id == 0) + return 0; + func_id = hinic_global_func_id(nic_dev->hwdev); if (enable) { @@ -2515,42 +2498,20 @@ allmulti: } /** - * DPDK callback to manage filter control operations + * DPDK callback to get flow operations * * @param dev * Pointer to Ethernet device structure. - * @param filter_type - * Filter type, which just supports generic type. - * @param filter_op - * Filter operation to perform. - * @param arg + * @param ops * Pointer to operation-specific structure. * * @return * 0 on success, negative error value otherwise. */ -static int hinic_dev_filter_ctrl(struct rte_eth_dev *dev, - enum rte_filter_type filter_type, - enum rte_filter_op filter_op, - void *arg) +static int hinic_dev_flow_ops_get(struct rte_eth_dev *dev __rte_unused, + const struct rte_flow_ops **ops) { - struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); - int func_id = hinic_global_func_id(nic_dev->hwdev); - - switch (filter_type) { - case RTE_ETH_FILTER_GENERIC: - if (filter_op != RTE_ETH_FILTER_GET) - return -EINVAL; - *(const void **)arg = &hinic_flow_ops; - break; - default: - PMD_DRV_LOG(INFO, "Filter type (%d) not supported", - filter_type); - return -EINVAL; - } - - PMD_DRV_LOG(INFO, "Set filter_ctrl succeed, func_id: 0x%x, filter_type: 0x%x," - "filter_op: 0x%x.", func_id, filter_type, filter_op); + *ops = &hinic_flow_ops; return 0; } @@ -3058,7 +3019,7 @@ static const struct eth_dev_ops hinic_pmd_ops = { .mac_addr_remove = hinic_mac_addr_remove, .mac_addr_add = hinic_mac_addr_add, .set_mc_addr_list = hinic_set_mc_addr_list, - .filter_ctrl = hinic_dev_filter_ctrl, + .flow_ops_get = hinic_dev_flow_ops_get, }; static const struct eth_dev_ops hinic_pmd_vf_ops = { @@ -3093,7 +3054,11 @@ static const struct eth_dev_ops hinic_pmd_vf_ops = { .mac_addr_remove = hinic_mac_addr_remove, .mac_addr_add = hinic_mac_addr_add, .set_mc_addr_list = hinic_set_mc_addr_list, - .filter_ctrl = hinic_dev_filter_ctrl, + .flow_ops_get = hinic_dev_flow_ops_get, +}; + +static const struct eth_dev_ops hinic_dev_sec_ops = { + .dev_infos_get = hinic_dev_infos_get, }; static int hinic_func_init(struct rte_eth_dev *eth_dev) @@ -3110,6 +3075,7 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev) /* EAL is SECONDARY and eth_dev is already created */ if (rte_eal_process_type() != RTE_PROC_PRIMARY) { + eth_dev->dev_ops = &hinic_dev_sec_ops; PMD_DRV_LOG(INFO, "Initialize %s in secondary process", eth_dev->data->name); @@ -3294,4 +3260,4 @@ static struct rte_pci_driver rte_hinic_pmd = { RTE_PMD_REGISTER_PCI(net_hinic, rte_hinic_pmd); RTE_PMD_REGISTER_PCI_TABLE(net_hinic, pci_id_hinic_map); -RTE_LOG_REGISTER(hinic_logtype, pmd.net.hinic, INFO); +RTE_LOG_REGISTER_DEFAULT(hinic_logtype, INFO);