Apologies for coming a little late to this thread about the proposed new API for filtering etc.
I've reviewed it based on Solarflare's needs and hardware capabilities, and think the proposal is likely to be a big improvement on the current system. I worry slightly that the goal of having applications that are not aware of the hardware they are running on will be difficult to meet. My guess is that the different hardware platforms will have so little overlap in the functionality they support that to get best performance the applications will still be heavily tailored to the subsets of the API that the hardware they are using provides. The discussion of filter priorities is a good example of this: to get best performance the application will want to use the hardware's filtering capabilities to do all the heavy lifting, but the abilities of different NICs to support particular priorities and combinations of filters will mean what works very well for one NIC may well return "I can't do that" for another, and vice versa. One suggestion for extending the API further would be to allow it to also describe transmit filters as well as receive filters. There are also some filters that can prove very useful to our customers that while they could be achieved through the careful insertion of multiple filters with the right order and priorities, could be made more application-friendly by having a more meaningful alias. For example: - multicast-mismatch (all multicast traffic that doesn't match another filter and would otherwise be discarded) - unicast-mismatch (all unicast traffic that doesn't match another filter and would otherwise be discarded) - all-multicast (all multicast traffic) - all-unicast (all unicast traffic) Finally, I wonder if any thought has been given to dealing with situations where there is a conflict between different virtual or physical functions. E.g. attempting to insert a MAC filter on one VF that would steal traffic destined to a different VF. Will it be up to each driver to enforce these sorts of policies or will there be a general vendor-neutral framework to deal with this? I should reiterate that I think this will be a big improvement, so thank you for proposing it. Kieran The information contained in this message is confidential and is intended for the addressee(s) only. If you have received this message in error, please notify the sender immediately and delete the message. Unless you are an addressee (or authorized to receive for an addressee), you may not use, copy or disclose to anyone this message or any information contained in this message. The unauthorized use, disclosure, copying or alteration of this message is strictly prohibited.