Don't use iface name in GetIfaceMaxHWHeaderLength
GetIfaceMaxHWHeaderLength is using interface name to find hardware header length. This fails in system such as fedora or *BSD which are not using the same naming schema. The consequence is that the biggest hw header length is chosen causing a few more bits to be used for each packet.
It will be better to be able to get the hw header length from an other method. Doing something like pcap is a good idea.