You need the kernel module to simply have IPv6, because that's what implements the IPv6 stack in the OS.
iptables and ip6tables, aka "netfilter" is the firewall, which you really need also for security, but you can set things up and get them working without setting up a iptables policy.
I'm not super familiar with how the DD-WRT setup and config files work, but Linux is Linux, and if it has the "iproute2" tools the process of setting up an HE tunnel will be the same as other Linuxes.
You first need to set up the tunnel itself. You do it something like this:
ip tunnel add he-ipv6 mode sit remote <Server IPv4 address> local <Client IPv4 address> ttl 255
ip link set he-ipv6 up
ip addr add <Client IPv6 address> dev he-ipv6
ip route add ::/0 dev he-ipv6
You may need to do a "modprobe sit" first if it gives you trouble with the ip tunnel command. Also, if this router is behind a NAT, and doesn't have a public IPv4 address, you must use the real IP address that's on the interface for the client IPv4 address. E.g. If your IPv4 address is 192.168.1.1, use that if you're behind a NAT device not the public IPv4 address. Let the NAT device NAT it for you.
Also, don't mix up the routed /64 and the Server and Client IPv6 addresses. They look very similar but are different by one character.
Now you can ping the other side of the tunnel to see if the 6in4 tunnel is working.
ping6 -n <Server IPv6 Address>
If it works, your 6in4 tunnel works. Move on. If not, well, make sure 6in4 can pass your firewall, etc, etc. You just have to figure out what's stopping it from working.
Now you put an address from your routed /64 or a /64 subnet of your routed /48 on the inside interface of the router:
ip addr add <IPv6 address> dev <inside interface name>
For instance, if HE assigns you a routed /64 of something like "2001:db8:1234:56::/64", you might put the address "2001:db8:1234:56::1/64" on your network interface. If you want to use your routed /48 on the NIC instead, you can just carve a /64 out of it. i.e. you're given "2001:db8:1234::/48", you could use "subnet zero" of this, by putting an address like "2001:db8:1234::1/64" on the NIC.
If you're running radvd, it should already set the ipv6 forwarding stuff up. But to do it by hand you can do something like "sysctl -w net.ipv6.conf.all.forwarding=1".
You should now be able to ping this address from the outside, and ping outside hosts from this address (use something like ping6 -n -I 2001:db8:1234::1 <server IPv6 address or some other IPv6 address>.
If you're running multiple subnets, you either need to run a routing protocol through your whole routing domain, or add static routes for your subnets to the router. I.e., you have a LAN using subnet "2001:db8:1234:1::/64" that's on the other side of the router with IPv6 "2001:db8:1234::2", you would add a route like so: ip route add 2001:db8:1234:1::/64 via 2001:db8:1234::2".
That's about it. The rest is figuring out how to put this all in the DD-WRT configuration files, just like you would for any other linux distro. This is presuming this all can't be done in a GUI.
Hope this helps ...