Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 567ec874 authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller
Browse files

net: convert multiple drivers to use netdev_for_each_mc_addr, part6

parent f9dcbcc9
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -1341,7 +1341,6 @@ static void smc911x_set_multicast_list(struct net_device *dev)
	 * within that register.
	 */
	else if (!netdev_mc_empty(dev)) {
		int i;
		struct dev_mc_list *cur_addr;

		/* Set the Hash perfec mode */
@@ -1350,8 +1349,7 @@ static void smc911x_set_multicast_list(struct net_device *dev)
		/* start with a table of all zeros: reject all */
		memset(multicast_table, 0, sizeof(multicast_table));

		cur_addr = dev->mc_list;
		for (i = 0; i < netdev_mc_count(dev); i++, cur_addr = cur_addr->next) {
		netdev_for_each_mc_addr(cur_addr, dev) {
			u32 position;

			/* do we have a pointer here? */
+5 −5
Original line number Diff line number Diff line
@@ -434,7 +434,8 @@ static void smc_shutdown( int ioaddr )
*/


static void smc_setmulticast( int ioaddr, int count, struct dev_mc_list * addrs ) {
static void smc_setmulticast(int ioaddr, struct net_device *dev)
{
	int			i;
	unsigned char		multicast_table[ 8 ];
	struct dev_mc_list *cur_addr;
@@ -444,8 +445,7 @@ static void smc_setmulticast( int ioaddr, int count, struct dev_mc_list * addrs
	/* start with a table of all zeros: reject all */
	memset( multicast_table, 0, sizeof( multicast_table ) );

	cur_addr = addrs;
	for ( i = 0; i < count ; i ++, cur_addr = cur_addr->next  ) {
	netdev_for_each_mc_addr(cur_addr, dev) {
		int position;

		/* do we have a pointer here? */
@@ -1550,7 +1550,7 @@ static void smc_set_multicast_list(struct net_device *dev)
			ioaddr + RCR );
		/* NOTE: this has to set the bank, so make sure it is the
		   last thing called.  The bank is set to zero at the top */
		smc_setmulticast(ioaddr, netdev_mc_count(dev), dev->mc_list);
		smc_setmulticast(ioaddr, dev);
	}
	else  {
		outw( inw( ioaddr + RCR ) & ~(RCR_PROMISC | RCR_ALMUL),
+1 −6
Original line number Diff line number Diff line
@@ -1413,7 +1413,6 @@ static void smc_set_multicast_list(struct net_device *dev)
	 * within that register.
	 */
	else if (!netdev_mc_empty(dev)) {
		int i;
		struct dev_mc_list *cur_addr;

		/* table for flipping the order of 3 bits */
@@ -1422,13 +1421,9 @@ static void smc_set_multicast_list(struct net_device *dev)
		/* start with a table of all zeros: reject all */
		memset(multicast_table, 0, sizeof(multicast_table));

		cur_addr = dev->mc_list;
		for (i = 0; i < netdev_mc_count(dev); i++, cur_addr = cur_addr->next) {
		netdev_for_each_mc_addr(cur_addr, dev) {
			int position;

			/* do we have a pointer here? */
			if (!cur_addr)
				break;
			/* make sure this is a multicast address -
		   	   shouldn't this be a given if we have it here ? */
			if (!(*cur_addr->dmi_addr & 1))
+1 −2
Original line number Diff line number Diff line
@@ -1825,8 +1825,7 @@ static void set_rx_mode(struct net_device *dev)
		__le16 mc_filter[32] __attribute__ ((aligned(sizeof(long))));	/* Multicast hash filter */

		memset(mc_filter, 0, sizeof(mc_filter));
		for (i = 0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev);
		     i++, mclist = mclist->next) {
		netdev_for_each_mc_addr(mclist, dev) {
			/* The chip uses the upper 9 CRC bits
			   as index into the hash table */
			int bit_nr = ether_crc_le(ETH_ALEN, mclist->dmi_addr) >> 23;
+4 −4
Original line number Diff line number Diff line
@@ -1945,18 +1945,18 @@ tc35815_set_multicast_list(struct net_device *dev)
		/* Disable promiscuous mode, use normal mode. */
		tc_writel(CAM_CompEn | CAM_BroadAcc | CAM_GroupAcc, &tr->CAM_Ctl);
	} else if (!netdev_mc_empty(dev)) {
		struct dev_mc_list *cur_addr = dev->mc_list;
		struct dev_mc_list *cur_addr;
		int i;
		int ena_bits = CAM_Ena_Bit(CAM_ENTRY_SOURCE);

		tc_writel(0, &tr->CAM_Ctl);
		/* Walk the address list, and load the filter */
		for (i = 0; i < netdev_mc_count(dev); i++, cur_addr = cur_addr->next) {
			if (!cur_addr)
				break;
		i = 0;
		netdev_for_each_mc_addr(cur_addr, dev) {
			/* entry 0,1 is reserved. */
			tc35815_set_cam_entry(dev, i + 2, cur_addr->dmi_addr);
			ena_bits |= CAM_Ena_Bit(i + 2);
			i++;
		}
		tc_writel(ena_bits, &tr->CAM_Ena);
		tc_writel(CAM_CompEn | CAM_BroadAcc, &tr->CAM_Ctl);
Loading