Judging from the offsets, the "rootfs" partition is located within the "firmware" right after a compressed kernel image.
This is something we do in OpenWrt too in order to get the most out of the flash space.
So the kernel(+dtb)/FIT and the squashfs rootfs are packed right next to each other without the usual page alignment "gap". (This is because kernel+rootfs are read-only for the most part and only the
initial-install or later sysupgrade will write into these areas.)
Openwrt uses "mtdsplitter" (see target/linux/generic/files/drivers/mtd/mtdsplit/) for this. So you'll only need to specify a "firmware" partition (the "firmware" is a Magic) and place your kernel+rootfs in this "firmware" partition. The mtdsplit will then automatically create the kernel+rootfs and rootfs_data partitions when booting.
Hope this helps.
(Note: Do you know what rootfs_data is formatted with? It seems you have a ~128MiB of flash and the MT7621-NAND sounds like you have a NAND-Chip. The thing is that rootfs_data makes it sound like Linksys is still using JFFS2 for the volatile files?! This is bad if this is the case. UBI+UBIFS is a much better option for NAND)