Hi, I have a Unifi Security Gateway that replaced an ER-8 because the latter was too loud after all. I have a 100/40 VDSL connection and in tests with pppoe and routing from cnmac0 to cnmac1 gets me ~90 Mbit/s download. I want to claim that last 10% somehow and I have hacked the if_pppoe.c driver a little but that didn't give me much more performance. In fact I just was able to get rid of an m_adj() which isn't all that much savings.
It seems to me in the cnmac driver that there is 4 bits set for ipoffp1 which is weirdly expressed as ETHER_HDR_LEN + 1 which I assume is 0xf or all bits turned on in 4 bits. These 4 bits are then OR'ed in cn30xxpko_cmd_word0() at bit 24, 25, 26 and 27. There is a gap before bit 31 starts making me hopeful that perhaps there is functionality for IP offloading aka CSUM_IPv4? I would be willing to explore this if someone who knows where the datasheet of the cnmac ethernet is, would tell me where to get it. Is it available? Also do you know why this is seemingly convoluted in the driver? It doesn't make sense to put ETHER_HDR_LEN + 1 in there does it? But turning on bits 1 through 4 does make sense to me somewhat. Is this practice common? Regards, -peter