Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 194776
b: refs/heads/master
c: 62538d2
h: refs/heads/master
v: v3
  • Loading branch information
David Daney authored and David S. Miller committed May 6, 2010
1 parent 1026620 commit 48d98d3
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 11 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: 7f01648aa32185b8047aea384237ad58e430e07f
refs/heads/master: 62538d2490d071e822d85651445c8a0bb4ed5a4b
15 changes: 5 additions & 10 deletions trunk/drivers/net/octeon/octeon_mgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -475,39 +475,34 @@ static void octeon_mgmt_set_rx_filtering(struct net_device *netdev)
unsigned int multicast_mode = 1; /* 1 - Reject all multicast. */
struct octeon_mgmt_cam_state cam_state;
struct netdev_hw_addr *ha;
struct list_head *pos;
int available_cam_entries;

memset(&cam_state, 0, sizeof(cam_state));

if ((netdev->flags & IFF_PROMISC) || netdev->dev_addrs.count > 7) {
if ((netdev->flags & IFF_PROMISC) || netdev->uc.count > 7) {
cam_mode = 0;
available_cam_entries = 8;
} else {
/*
* One CAM entry for the primary address, leaves seven
* for the secondary addresses.
*/
available_cam_entries = 7 - netdev->dev_addrs.count;
available_cam_entries = 7 - netdev->uc.count;
}

if (netdev->flags & IFF_MULTICAST) {
if (cam_mode == 0 || (netdev->flags & IFF_ALLMULTI) ||
netdev_mc_count(netdev) > available_cam_entries)
multicast_mode = 2; /* 1 - Accept all multicast. */
multicast_mode = 2; /* 2 - Accept all multicast. */
else
multicast_mode = 0; /* 0 - Use CAM. */
}

if (cam_mode == 1) {
/* Add primary address. */
octeon_mgmt_cam_state_add(&cam_state, netdev->dev_addr);
list_for_each(pos, &netdev->dev_addrs.list) {
struct netdev_hw_addr *hw_addr;
hw_addr = list_entry(pos, struct netdev_hw_addr, list);
octeon_mgmt_cam_state_add(&cam_state, hw_addr->addr);
list = list->next;
}
netdev_for_each_uc_addr(ha, netdev)
octeon_mgmt_cam_state_add(&cam_state, ha->addr);
}
if (multicast_mode == 0) {
netdev_for_each_mc_addr(ha, netdev)
Expand Down

0 comments on commit 48d98d3

Please sign in to comment.