I previously wrote about building WiFi client routers instead of bridges; they get you broadcast domain isolation and a degree of conceptual simplicity (no L2 tricks). I finally ran into a requirement on a different project to build an actual bridge; here’s how I did it.

You can copy the hardware from the router post, or use what you’ve got; I don’t believe this is driver-specific.

Your access point, however, does require support for this to work. It needs to:

Bridging

Linux supports bridging. There’s a bridge-utils package in Ubuntu with the tools you need: