When I am trying to delete a single tc filter (i.e. specifying its handle), it is deleting all the filters with the same priority/preference. i.e. it is ignoring the handle specified.
But, When I am doing similar activity in hashtable 800: it is deleting only the specified filter, i.e. it is behaving as expected. I am unable to comprehend the reason for this difference in behaviour. Infact, in kernel 2.6.32 all is working as expected. However, in kernel 3.1 and 4.1 it is having the behaviour as mentioned above. For example, following set of commands create a hashtable 15: and add 2 filters to it. tc filter add dev eth0 parent 1:0 prio 5 handle 15: protocol ip u32 divisor 256 tc filter add dev eth0 protocol ip parent 1: prio 5 handle 15:2:2 u32 ht 15:2: match ip src 10.0.0.2 flowid 1:10 tc filter add dev eth0 protocol ip parent 1: prio 5 handle 15:2:3 u32 ht 15:2: match ip src 10.0.0.3 flowid 1:10 Now following command DELETES ALL THE FILTERS, though it should only delete FILTER 15:2:3 ! tc filter del dev eth0 protocol ip parent 1: prio 5 handle 15:2:3 u32 O/p of tc filter show eth0 is this case is blank. As all filters are deleted. However, similar commands when executed for hashtable 800: is deleting only the specified filter tc filter add dev eth0 protocol ip parent 1: prio 5 handle 800:0:2 u32 ht 800:0: match ip src 10.0.0.2 flowid 1:10 tc filter add dev eth0 protocol ip parent 1: prio 5 handle 800:0:3 u32 ht 800:0: match ip src 10.0.0.3 flowid 1:10 tc filter del dev eth0 protocol ip parent 1: prio 5 handle 800:0:2 u32 Above mentioned command only deletes single filter. O/p of tc filter show eth0 is 2nd case is filter parent 1: protocol ip pref 5 u32 filter parent 1: protocol ip pref 5 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 5 u32 fh 800::3 order 3 key ht 800 bkt 0 flowid 1:10 match 0a000003/ffffffff at 12 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html