diff options
| author | Dimitris Michailidis <dm@chelsio.com> | 2010-07-11 08:01:16 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-07-11 20:07:45 -0400 |
| commit | 065463915c3a2a2ce142f64ed3ed591d72ad88b1 (patch) | |
| tree | 79b66e4ea1f7b78993055ddfa1c7a2fe930b01c2 | |
| parent | f7cabcdd51480282b58c09e5fe1c4835aaf98a66 (diff) | |
cxgb4: avoid duplicating some resource freeing code
Currently there are two copies of some resource freeing code, turn it into
a function and call it.
Signed-off-by: Dimitris Michailidis <dm@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/cxgb4/cxgb4_main.c | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/drivers/net/cxgb4/cxgb4_main.c b/drivers/net/cxgb4/cxgb4_main.c index 743dc6faec56..653bb546edd3 100644 --- a/drivers/net/cxgb4/cxgb4_main.c +++ b/drivers/net/cxgb4/cxgb4_main.c | |||
| @@ -3364,6 +3364,29 @@ static void __devinit print_port_info(struct adapter *adap) | |||
| 3364 | } | 3364 | } |
| 3365 | } | 3365 | } |
| 3366 | 3366 | ||
| 3367 | /* | ||
| 3368 | * Free the following resources: | ||
| 3369 | * - memory used for tables | ||
| 3370 | * - MSI/MSI-X | ||
| 3371 | * - net devices | ||
| 3372 | * - resources FW is holding for us | ||
| 3373 | */ | ||
| 3374 | static void free_some_resources(struct adapter *adapter) | ||
| 3375 | { | ||
| 3376 | unsigned int i; | ||
| 3377 | |||
| 3378 | t4_free_mem(adapter->l2t); | ||
| 3379 | t4_free_mem(adapter->tids.tid_tab); | ||
| 3380 | disable_msi(adapter); | ||
| 3381 | |||
| 3382 | for_each_port(adapter, i) | ||
| 3383 | if (adapter->port[i]) | ||
| 3384 | free_netdev(adapter->port[i]); | ||
| 3385 | |||
| 3386 | if (adapter->flags & FW_OK) | ||
| 3387 | t4_fw_bye(adapter, 0); | ||
| 3388 | } | ||
| 3389 | |||
| 3367 | #define VLAN_FEAT (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO | NETIF_F_TSO6 |\ | 3390 | #define VLAN_FEAT (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO | NETIF_F_TSO6 |\ |
| 3368 | NETIF_F_IPV6_CSUM | NETIF_F_HIGHDMA) | 3391 | NETIF_F_IPV6_CSUM | NETIF_F_HIGHDMA) |
| 3369 | 3392 | ||
| @@ -3564,14 +3587,7 @@ sriov: | |||
| 3564 | return 0; | 3587 | return 0; |
| 3565 | 3588 | ||
| 3566 | out_free_dev: | 3589 | out_free_dev: |
| 3567 | t4_free_mem(adapter->tids.tid_tab); | 3590 | free_some_resources(adapter); |
| 3568 | t4_free_mem(adapter->l2t); | ||
| 3569 | for_each_port(adapter, i) | ||
| 3570 | if (adapter->port[i]) | ||
| 3571 | free_netdev(adapter->port[i]); | ||
| 3572 | if (adapter->flags & FW_OK) | ||
| 3573 | t4_fw_bye(adapter, 0); | ||
| 3574 | disable_msi(adapter); | ||
| 3575 | out_unmap_bar: | 3591 | out_unmap_bar: |
| 3576 | iounmap(adapter->regs); | 3592 | iounmap(adapter->regs); |
| 3577 | out_free_adapter: | 3593 | out_free_adapter: |
| @@ -3606,16 +3622,8 @@ static void __devexit remove_one(struct pci_dev *pdev) | |||
| 3606 | 3622 | ||
| 3607 | if (adapter->flags & FULL_INIT_DONE) | 3623 | if (adapter->flags & FULL_INIT_DONE) |
| 3608 | cxgb_down(adapter); | 3624 | cxgb_down(adapter); |
| 3609 | t4_free_mem(adapter->l2t); | ||
| 3610 | t4_free_mem(adapter->tids.tid_tab); | ||
| 3611 | disable_msi(adapter); | ||
| 3612 | |||
| 3613 | for_each_port(adapter, i) | ||
| 3614 | if (adapter->port[i]) | ||
| 3615 | free_netdev(adapter->port[i]); | ||
| 3616 | 3625 | ||
| 3617 | if (adapter->flags & FW_OK) | 3626 | free_some_resources(adapter); |
| 3618 | t4_fw_bye(adapter, 0); | ||
| 3619 | iounmap(adapter->regs); | 3627 | iounmap(adapter->regs); |
| 3620 | kfree(adapter); | 3628 | kfree(adapter); |
| 3621 | pci_disable_pcie_error_reporting(pdev); | 3629 | pci_disable_pcie_error_reporting(pdev); |
