After playing with DD-WRT for a while, I realized that what I actually need is DD-WRT running in "Client" mode, not "Client Bridge" mode. In client mode, router B is running as a client adapter with its WAN part connected wirelessly router A. Router B's WAN will be assigned an address by Router A's DHCP. Router B's LAN part can then be set to a different subnet. This way, computers connected to router A and computers connected to router B are running on 2 different subnets.
Since router B is still functioning as a router, it can have NAT / DHCP / Firewall running, the only problem is it loses its access point functionality since the wireless circuitry has been utilized to communicate to the router A. As a result, no laptops can be connected to router B wirelessly.
Router B's configuration is similar to those described in WRT Wiki.
Router B Settings
Setup ⇒ Basic Setup
- Network Setup ⇒ Local IP Address ⇒ 192.168.2.1
- Network Setup ⇒ Subnet Mask ⇒ 255.255.255.0
Router C here can be configured as a wireless access point by connecting an internet cable from router B's LAN port to C's LAN port. It is better to set Router C's address to 192.168.2.2 so that its GUI configuration web interface can be access. DHCP has to be disabled on Router C.
Router C Settings
Setup ⇒ Basic Setup
- Network Setup ⇒ Local IP Address ⇒ 192.168.2.2
- Network Setup ⇒ Subnet Mask ⇒ 255.255.255.0