aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authoramit salecha <amit.salecha@qlogic.com>2010-10-26 13:53:07 -0400
committerDavid S. Miller <davem@davemloft.net>2010-10-27 15:21:53 -0400
commite5edb7b19fd207f78adfdf4d9d5e1dd74a7eabd3 (patch)
tree2bf861e9ec8cb407892b6271289a22925af6ae27 /drivers
parente5ccd96110d5ac0f73b695ba606feb6d69472f26 (diff)
qlcnic: fix mac learning
In failover bonding case, same mac address can be programmed on other slave function. Fw will delete old entry (original func) associated with that mac address. Need to reporgram mac address, if failover again happen to original function. Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/qlcnic/qlcnic.h1
-rw-r--r--drivers/net/qlcnic/qlcnic_main.c5
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/qlcnic/qlcnic.h b/drivers/net/qlcnic/qlcnic.h
index 26c37d3a5868..a60ff17eafd8 100644
--- a/drivers/net/qlcnic/qlcnic.h
+++ b/drivers/net/qlcnic/qlcnic.h
@@ -942,6 +942,7 @@ struct qlcnic_ipaddr {
942#define QLCNIC_LOOPBACK_TEST 2 942#define QLCNIC_LOOPBACK_TEST 2
943 943
944#define QLCNIC_FILTER_AGE 80 944#define QLCNIC_FILTER_AGE 80
945#define QLCNIC_READD_AGE 20
945#define QLCNIC_LB_MAX_FILTERS 64 946#define QLCNIC_LB_MAX_FILTERS 64
946 947
947struct qlcnic_filter { 948struct qlcnic_filter {
diff --git a/drivers/net/qlcnic/qlcnic_main.c b/drivers/net/qlcnic/qlcnic_main.c
index f047c7c48314..5a3ce084c391 100644
--- a/drivers/net/qlcnic/qlcnic_main.c
+++ b/drivers/net/qlcnic/qlcnic_main.c
@@ -1860,6 +1860,11 @@ qlcnic_send_filter(struct qlcnic_adapter *adapter,
1860 hlist_for_each_entry_safe(tmp_fil, tmp_hnode, n, head, fnode) { 1860 hlist_for_each_entry_safe(tmp_fil, tmp_hnode, n, head, fnode) {
1861 if (!memcmp(tmp_fil->faddr, &src_addr, ETH_ALEN) && 1861 if (!memcmp(tmp_fil->faddr, &src_addr, ETH_ALEN) &&
1862 tmp_fil->vlan_id == vlan_id) { 1862 tmp_fil->vlan_id == vlan_id) {
1863
1864 if (jiffies >
1865 (QLCNIC_READD_AGE * HZ + tmp_fil->ftime))
1866 qlcnic_change_filter(adapter, src_addr, vlan_id,
1867 tx_ring);
1863 tmp_fil->ftime = jiffies; 1868 tmp_fil->ftime = jiffies;
1864 return; 1869 return;
1865 } 1870 }