Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 187969
b: refs/heads/master
c: 9ab17b3
h: refs/heads/master
i:
  187967: 4d4a899
v: v3
  • Loading branch information
Sucheta Chakraborty authored and David S. Miller committed Mar 8, 2010
1 parent 756f4d4 commit d4c5253
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 26 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8bfe8b91b8b877066c8ac788f59a40324eaac6d8
refs/heads/master: 9ab17b3968f9521bb4fffd8767953d2b0148aad0
31 changes: 6 additions & 25 deletions trunk/drivers/net/qlcnic/qlcnic_hw.c
Original file line number Diff line number Diff line change
Expand Up @@ -398,20 +398,16 @@ qlcnic_sre_macaddr_change(struct qlcnic_adapter *adapter, u8 *addr,
return qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1);
}

static int qlcnic_nic_add_mac(struct qlcnic_adapter *adapter,
u8 *addr, struct list_head *del_list)
static int qlcnic_nic_add_mac(struct qlcnic_adapter *adapter, u8 *addr)
{
struct list_head *head;
struct qlcnic_mac_list_s *cur;

/* look up if already exists */
list_for_each(head, del_list) {
list_for_each(head, &adapter->mac_list) {
cur = list_entry(head, struct qlcnic_mac_list_s, list);

if (memcmp(addr, cur->mac_addr, ETH_ALEN) == 0) {
list_move_tail(head, &adapter->mac_list);
if (memcmp(addr, cur->mac_addr, ETH_ALEN) == 0)
return 0;
}
}

cur = kzalloc(sizeof(struct qlcnic_mac_list_s), GFP_ATOMIC);
Expand All @@ -433,14 +429,9 @@ void qlcnic_set_multi(struct net_device *netdev)
struct dev_mc_list *mc_ptr;
u8 bcast_addr[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
u32 mode = VPORT_MISS_MODE_DROP;
LIST_HEAD(del_list);
struct list_head *head;
struct qlcnic_mac_list_s *cur;

list_splice_tail_init(&adapter->mac_list, &del_list);

qlcnic_nic_add_mac(adapter, adapter->mac_addr, &del_list);
qlcnic_nic_add_mac(adapter, bcast_addr, &del_list);
qlcnic_nic_add_mac(adapter, adapter->mac_addr);
qlcnic_nic_add_mac(adapter, bcast_addr);

if (netdev->flags & IFF_PROMISC) {
mode = VPORT_MISS_MODE_ACCEPT_ALL;
Expand All @@ -455,22 +446,12 @@ void qlcnic_set_multi(struct net_device *netdev)

if (!netdev_mc_empty(netdev)) {
netdev_for_each_mc_addr(mc_ptr, netdev) {
qlcnic_nic_add_mac(adapter, mc_ptr->dmi_addr,
&del_list);
qlcnic_nic_add_mac(adapter, mc_ptr->dmi_addr);
}
}

send_fw_cmd:
qlcnic_nic_set_promisc(adapter, mode);
head = &del_list;
while (!list_empty(head)) {
cur = list_entry(head->next, struct qlcnic_mac_list_s, list);

qlcnic_sre_macaddr_change(adapter,
cur->mac_addr, QLCNIC_MAC_DEL);
list_del(&cur->list);
kfree(cur);
}
}

int qlcnic_nic_set_promisc(struct qlcnic_adapter *adapter, u32 mode)
Expand Down

0 comments on commit d4c5253

Please sign in to comment.