/* Set or clear the multicast filter for this adapter num_addrs == -1 Promiscuous mode, receive all packets num_addrs == 0 Normal mode, filter out multicast packets num_addrs > 0 Multicast mode, receive normal and MC packets  */
static void enc28j60_set_multicast_list(struct net_device *dev)
/* Set or clear the multicast filter for this adapter num_addrs == -1 Promiscuous mode, receive all packets num_addrs == 0 Normal mode, filter out multicast packets num_addrs > 0 Multicast mode, receive normal and MC packets  */
static void enc28j60_set_multicast_list(struct net_device *dev)
{
	struct enc28j60_net *priv = netdev_priv(dev);
	int oldfilter = priv->rxfilter;
	if (dev->flags & IFF_PROMISC) {
		if (netif_msg_link(priv))
			dev_info(&dev->dev, "promiscuous mode\n");
		priv->rxfilter = RXFILTER_PROMISC;
	} else if ((dev->flags & IFF_ALLMULTI) || dev->mc_count) {
		if (netif_msg_link(priv))
			dev_info(&dev->dev, "%smulticast mode\n",
				(dev->flags & IFF_ALLMULTI) ? "all-" : "");
		priv->rxfilter = RXFILTER_MULTI;
	} else {
		if (netif_msg_link(priv))
			dev_info(&dev->dev, "normal mode\n");
		priv->rxfilter = RXFILTER_NORMAL;
	}
	if (oldfilter != priv->rxfilter)
		schedule_work(&priv->setrx_work);
}