X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fnet%2Fe1000%2Fem_ethdev.c;h=8850957902a984197252793d3de56379beae81d2;hb=bdad90d12ec8eea8c9552880d715f10b0af93cc6;hp=fc01378c877b0d62a8cab48dfb2dacdef4e4c6c7;hpb=6bee9d5f456a61a427384c815f6827aad83e3c06;p=dpdk.git diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c index fc01378c87..8850957902 100644 --- a/drivers/net/e1000/em_ethdev.c +++ b/drivers/net/e1000/em_ethdev.c @@ -44,7 +44,7 @@ static int eth_em_link_update(struct rte_eth_dev *dev, static int eth_em_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *rte_stats); static void eth_em_stats_reset(struct rte_eth_dev *dev); -static void eth_em_infos_get(struct rte_eth_dev *dev, +static int eth_em_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); static int eth_em_flow_ctrl_get(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf); @@ -737,6 +737,11 @@ eth_em_stop(struct rte_eth_dev *dev) em_lsc_intr_disable(hw); e1000_reset_hw(hw); + + /* Flush desc rings for i219 */ + if (hw->mac.type == e1000_pch_spt || hw->mac.type == e1000_pch_cnp) + em_flush_desc_rings(dev); + if (hw->mac.type >= e1000_82544) E1000_WRITE_REG(hw, E1000_WUC, 0); @@ -1043,7 +1048,7 @@ em_get_max_pktlen(struct rte_eth_dev *dev) } } -static void +static int eth_em_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) { struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -1102,6 +1107,8 @@ eth_em_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) dev_info->default_txportconf.nb_queues = 1; dev_info->default_txportconf.ring_size = 256; dev_info->default_rxportconf.ring_size = 256; + + return 0; } /* return 0 means link status changed, -1 means not changed */ @@ -1771,8 +1778,12 @@ eth_em_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) struct e1000_hw *hw; uint32_t frame_size; uint32_t rctl; + int ret; + + ret = eth_em_infos_get(dev, &dev_info); + if (ret != 0) + return ret; - eth_em_infos_get(dev, &dev_info); frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + VLAN_TAG_SIZE;