]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - src/patches/suse-2.6.27.25/patches.drivers/netxen-cleanup-mac-list-on-driver-unload.patch
Reenabled linux-xen and xen-image build
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.drivers / netxen-cleanup-mac-list-on-driver-unload.patch
CommitLineData
00e5a55c
BS
1From 06e9d9f9783860fe4c602ef491f47211804ccc96 Mon Sep 17 00:00:00 2001
2From: Dhananjay Phadke <dhananjay@netxen.com>
3Date: Wed, 14 Jan 2009 20:49:22 -0800
4Subject: netxen: cleanup mac list on driver unload
5Acked-by: Karsten Keil <kkeil@novell.com>
6Reference: bnc#472416
7
8This fixes a tiny memory leak when driver is unloaded. The mac
9address list maintained in netxen_adapter needs to deleted when
10driver is going down.
11
12Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
13Signed-off-by: David S. Miller <davem@davemloft.net>
14---
15 drivers/net/netxen/netxen_nic.h | 1 +
16 drivers/net/netxen/netxen_nic_hw.c | 13 +++++++++++++
17 drivers/net/netxen/netxen_nic_main.c | 3 +++
18 3 files changed, 17 insertions(+), 0 deletions(-)
19
20Index: linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic.h
21===================================================================
22--- linux-2.6.27-kketmp.orig/drivers/net/netxen/netxen_nic.h
23+++ linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic.h
24@@ -1478,6 +1478,7 @@ int netxen_process_cmd_ring(struct netxe
25 u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max);
26 void netxen_p2_nic_set_multi(struct net_device *netdev);
27 void netxen_p3_nic_set_multi(struct net_device *netdev);
28+void netxen_p3_free_mac_list(struct netxen_adapter *adapter);
29 int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32);
30 int netxen_config_intr_coalesce(struct netxen_adapter *adapter);
31
32Index: linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_hw.c
33===================================================================
34--- linux-2.6.27-kketmp.orig/drivers/net/netxen/netxen_nic_hw.c
35+++ linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_hw.c
36@@ -627,6 +627,19 @@ int netxen_p3_nic_set_promisc(struct net
37 (struct cmd_desc_type0 *)&req, 1);
38 }
39
40+void netxen_p3_free_mac_list(struct netxen_adapter *adapter)
41+{
42+ nx_mac_list_t *cur, *next;
43+
44+ cur = adapter->mac_list;
45+
46+ while (cur) {
47+ next = cur->next;
48+ kfree(cur);
49+ cur = next;
50+ }
51+}
52+
53 #define NETXEN_CONFIG_INTR_COALESCE 3
54
55 /*
56Index: linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_main.c
57===================================================================
58--- linux-2.6.27-kketmp.orig/drivers/net/netxen/netxen_nic_main.c
59+++ linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_main.c
60@@ -975,6 +975,9 @@ static void __devexit netxen_nic_remove(
61 netxen_free_hw_resources(adapter);
62 netxen_release_rx_buffers(adapter);
63 netxen_free_sw_resources(adapter);
64+
65+ if (NX_IS_REVISION_P3(adapter->ahw.revision_id))
66+ netxen_p3_free_mac_list(adapter);
67 }
68
69 if (adapter->portnum == 0)