Ejemplo n.º 1
0
void change_igmp_snooping_control(u32 igmp_snooping_enabled)
{
	if (igmp_snooping_enabled) igmp_snooping_enabled = 1;

	if (g_igmp_snooping_enabled != igmp_snooping_enabled)
	{
		printk("%s - IGMP/MLD snooping: %d\n", RTL8367_DEVNAME, igmp_snooping_enabled);
		
		g_igmp_snooping_enabled = igmp_snooping_enabled;
		if (!igmp_snooping_enabled) {
			del_timer_sync(&g_membership_expired_timer);
			
			spin_lock_bh(&g_lut_lock);
			asic_enum_mcast_table(1);
			spin_unlock_bh(&g_lut_lock);
			
			spin_lock_bh(&g_mtb_lock);
			mcast_table_clear();
			spin_unlock_bh(&g_mtb_lock);
		} else {
			/* set expired timer at least group_expired time */
			mod_timer(&g_membership_expired_timer, jiffies + (MCAST_GROUP_MEMBERSHIP_EXPIRED + 10 * HZ));
		}
	}
}
Ejemplo n.º 2
0
void dump_mcast_table(void)
{
	printk("%s - dump multicast LUT table:\n", RTL8367_DEVNAME);

	spin_lock_bh(&g_lut_lock);
	asic_enum_mcast_table(0);
	spin_unlock_bh(&g_lut_lock);
}
Ejemplo n.º 3
0
void
igmp_sn_dump_mcast_table(void)
{
	printk("%s - dump multicast LUT table:\n", RTL8367_DEVNAME);

	mutex_lock(&g_lut_lock);
	asic_enum_mcast_table(0);
	mutex_unlock(&g_lut_lock);
}
Ejemplo n.º 4
0
static void
mcast_reset_table_and_cancel(void)
{
	del_timer_sync(&g_membership_expired_timer);
	cancel_work_sync(&g_membership_expired_work);

	mutex_lock(&g_lut_lock);
	asic_enum_mcast_table(1);
	mutex_unlock(&g_lut_lock);

	mutex_lock(&g_mtb_lock);
	mcast_table_clear();
	mutex_unlock(&g_mtb_lock);
}
Ejemplo n.º 5
0
void reset_igmp_snooping_table(void)
{
	if (!g_igmp_snooping_enabled)
		return;

	del_timer_sync(&g_membership_expired_timer);

	spin_lock_bh(&g_lut_lock);
	asic_enum_mcast_table(1);
	spin_unlock_bh(&g_lut_lock);

	spin_lock_bh(&g_mtb_lock);
	mcast_table_clear();
	spin_unlock_bh(&g_mtb_lock);

	/* set expired timer at least group_expired time */
	mod_timer(&g_membership_expired_timer, jiffies + (MCAST_GROUP_MEMBERSHIP_EXPIRED + 10 * HZ));

	printk("%s - reset IGMP/MLD table and static LUT entries\n", RTL8367_DEVNAME);
}