浏览代码

be2net: Cleanup the VF interface handles

The PF needs to cleanup all the interface handles that it created for the VFs.

Signed-off-by: Ajit Khaparde <ajit.khaparde@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Ajit Khaparde 14 年之前
父节点
当前提交
7ab8b0b432
共有 1 个文件被更改,包括 9 次插入0 次删除
  1. 9 0
      drivers/net/benet/be_main.c

+ 9 - 0
drivers/net/benet/be_main.c

@@ -2340,6 +2340,8 @@ do_none:
 
 
 static int be_clear(struct be_adapter *adapter)
 static int be_clear(struct be_adapter *adapter)
 {
 {
+	int vf;
+
 	if (be_physfn(adapter) && adapter->sriov_enabled)
 	if (be_physfn(adapter) && adapter->sriov_enabled)
 		be_vf_eth_addr_rem(adapter);
 		be_vf_eth_addr_rem(adapter);
 
 
@@ -2347,6 +2349,13 @@ static int be_clear(struct be_adapter *adapter)
 	be_rx_queues_destroy(adapter);
 	be_rx_queues_destroy(adapter);
 	be_tx_queues_destroy(adapter);
 	be_tx_queues_destroy(adapter);
 
 
+	if (be_physfn(adapter) && adapter->sriov_enabled)
+		for (vf = 0; vf < num_vfs; vf++)
+			if (adapter->vf_cfg[vf].vf_if_handle)
+				be_cmd_if_destroy(adapter,
+					adapter->vf_cfg[vf].vf_if_handle,
+					vf + 1);
+
 	be_cmd_if_destroy(adapter, adapter->if_handle,  0);
 	be_cmd_if_destroy(adapter, adapter->if_handle,  0);
 
 
 	/* tell fw we're done with firing cmds */
 	/* tell fw we're done with firing cmds */