provided zxdh dev close ops for resource released.<br /> <br />Signed-off-by: Junlong Wang <wang.junlong1@zte.com.cn> <br />---<br /> drivers/net/zxdh/zxdh_ethdev.c | 31 +++++++++++++++++++++++--------<br /> 1 file changed, 23 insertions(+), 8 deletions(-)<br /> <br />diff --git a/drivers/net/zxdh/zxdh_ethdev.c b/drivers/net/zxdh/zxdh_ethdev.c<br />index 54e51a31fa..c786198535 100644<br />--- a/drivers/net/zxdh/zxdh_ethdev.c<br />+++ b/drivers/net/zxdh/zxdh_ethdev.c<br />@@ -832,9 +832,32 @@ zxdh_dev_configure(struct rte_eth_dev *dev)<br />     return ret;<br /> }<br />  <br />+static int<br />+zxdh_dev_close(struct rte_eth_dev *dev)<br />+{<br />+    struct zxdh_hw *hw = dev->data->dev_private;<br />+    int ret = 0;<br />+<br />+    zxdh_intr_release(dev);<br />+    zxdh_pci_reset(hw);<br />+<br />+    zxdh_dev_free_mbufs(dev);<br />+    zxdh_free_queues(dev);<br />+<br />+    zxdh_bar_msg_chan_exit();<br />+<br />+    if (dev->data->mac_addrs != NULL) {<br />+        rte_free(dev->data->mac_addrs);<br />+        dev->data->mac_addrs = NULL;<br />+    }<br />+<br />+    return ret;<br />+}<br />+<br /> /* dev_ops for zxdh, bare necessities for basic operation */<br /> static const struct eth_dev_ops zxdh_eth_dev_ops = {<br />     .dev_configure             = zxdh_dev_configure,<br />+    .dev_close                 = zxdh_dev_close,<br />     .dev_infos_get             = zxdh_dev_infos_get,<br /> };<br />  <br />@@ -977,14 +1000,6 @@ zxdh_eth_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,<br />                         zxdh_eth_dev_init);<br /> }<br />  <br />-static int<br />-zxdh_dev_close(struct rte_eth_dev *dev __rte_unused)<br />-{<br />-    int ret = 0;<br />-<br />-    return ret;<br />-}<br />-<br /> static int<br /> zxdh_eth_dev_uninit(struct rte_eth_dev *eth_dev)<br /> {<br />--  <br />2.27.0<br />