]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - src/patches/suse-2.6.27.31/patches.drivers/netxen-cleanup-mac-list-on-driver-unload.patch
Merge branch 'master' of git://git.ipfire.org/ipfire-2.x
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.drivers / netxen-cleanup-mac-list-on-driver-unload.patch
1 From 06e9d9f9783860fe4c602ef491f47211804ccc96 Mon Sep 17 00:00:00 2001
2 From: Dhananjay Phadke <dhananjay@netxen.com>
3 Date: Wed, 14 Jan 2009 20:49:22 -0800
4 Subject: netxen: cleanup mac list on driver unload
5 Acked-by: Karsten Keil <kkeil@novell.com>
6 Reference: bnc#472416
7
8 This fixes a tiny memory leak when driver is unloaded. The mac
9 address list maintained in netxen_adapter needs to deleted when
10 driver is going down.
11
12 Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
13 Signed-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
20 Index: 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
32 Index: 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 /*
56 Index: 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)