That is perfectly correct behaviour and is considered the process of "filtering" in bridging/switching terminology. Consider the following example: you have an ethernet hub connected to port 0/1 of a switch. There are two devices on the hub, with MAC addresses A and B. If A sends a frame to packet B, then the hub will forward that frame to all other ports on the hub (which is how hubs work), which means it will get to B. It will also reach the switch on port 0/1. There is no need for the switch to forward the frame anywhere since B has already received it.
This is a fairly old issue but could not help knowing how the switch would know that the B wiil receive the frame. Only way switch would know is to check its CAM to see whether the B is in the CAM. Will the switch has a list of all the MACs of devices attached to the HUB. Is so how would it(switch) learn/build its CAM to include those addresses.