Skip to content

Commit

Permalink
chelsio: convert to use netdev_for_each_mc_addr
Browse files Browse the repository at this point in the history
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jiri Pirko authored and David S. Miller committed Feb 17, 2010
1 parent 0988d26 commit 305b016
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 19 deletions.
16 changes: 2 additions & 14 deletions drivers/net/chelsio/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,25 +90,13 @@
typedef struct adapter adapter_t;

struct t1_rx_mode {
struct net_device *dev;
u32 idx;
struct dev_mc_list *list;
struct net_device *dev;
};

#define t1_rx_mode_promisc(rm) (rm->dev->flags & IFF_PROMISC)
#define t1_rx_mode_allmulti(rm) (rm->dev->flags & IFF_ALLMULTI)
#define t1_rx_mode_mc_cnt(rm) (netdev_mc_count(rm->dev))

static inline u8 *t1_get_next_mcaddr(struct t1_rx_mode *rm)
{
u8 *addr = NULL;

if (rm->idx++ < t1_rx_mode_mc_cnt(rm)) {
addr = rm->list->dmi_addr;
rm->list = rm->list->next;
}
return addr;
}
#define t1_get_netdev(rm) (rm->dev)

#define MAX_NPORTS 4
#define PORT_MASK ((1 << MAX_NPORTS) - 1)
Expand Down
2 changes: 0 additions & 2 deletions drivers/net/chelsio/cxgb2.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,6 @@ static void t1_set_rxmode(struct net_device *dev)
struct t1_rx_mode rm;

rm.dev = dev;
rm.idx = 0;
rm.list = dev->mc_list;
mac->ops->set_rx_mode(mac, &rm);
}

Expand Down
6 changes: 3 additions & 3 deletions drivers/net/chelsio/pm3393.c
Original file line number Diff line number Diff line change
Expand Up @@ -375,12 +375,12 @@ static int pm3393_set_rx_mode(struct cmac *cmac, struct t1_rx_mode *rm)
rx_mode |= SUNI1x10GEXP_BITMSK_RXXG_MHASH_EN;
} else if (t1_rx_mode_mc_cnt(rm)) {
/* Accept one or more multicast(s). */
u8 *addr;
struct dev_mc_list *dmi;
int bit;
u16 mc_filter[4] = { 0, };

while ((addr = t1_get_next_mcaddr(rm))) {
bit = (ether_crc(ETH_ALEN, addr) >> 23) & 0x3f; /* bit[23:28] */
netdev_for_each_mc_addr(dmi, t1_get_netdev(rm)) {
bit = (ether_crc(ETH_ALEN, dmi->dmi_addr) >> 23) & 0x3f; /* bit[23:28] */
mc_filter[bit >> 4] |= 1 << (bit & 0xf);
}
pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_MULTICAST_HASH_LOW, mc_filter[0]);
Expand Down

0 comments on commit 305b016

Please sign in to comment.