问题说明
对于pptp/l2tp设备接口,FC驱动不应该设置NETIF_F_HW_CSUM,因为HW不支持计算pptp/l2tp头封装的tcp/udp校验和。 它提供了一个函数来设置哪个设备接口不设置 NETIF_F_HW_CSUM
解决方案
文件路径
rtl819x/linux-4.4.x/drivers/net/ethernet/realtek/rtl86900/FleetConntrackDriver/src/rtk_fc_helper_ps.c
int rtk_set_hw_csum(char *dev_name)
{
// It does not support hw checksum feature for wlan and pptp/l2tp interface
// for RTK use application: PPP9~12 are used for PPTP/L2TP, hw checksum offload didn't
support inner header update so we must NOT turn on it.
if(strncmp(dev_name, "wlan", 4) && strncmp(dev_name, "ppp9", 4) && strncmp(dev_name,
"ppp10", 5) && strncmp(dev_name, "ppp11", 5) && strncmp(dev_name, "ppp12", 5))
return TRUE;
else
return FALSE;
}
SDK,pptp/l2tp 设备接口名称为 ppp9~ppp12。 所以如果修改pptp/l2tp设备接口名(不是ppp9~ppp12),也要修改函数rtk_set_hw_csum()。