What you need to do is to apply a Berkeley Packet Filter (BPF) to the monitor socket. You can compile BPF filter expressions using tcpdump (it will write C code for you)  and that will ensure the kernel returns only those frames of interest. This article is a pretty good starting point.

Hope that helps,