Loading include/uapi/linux/msm_rmnet.h +2 −1 Original line number Diff line number Diff line Loading @@ -59,7 +59,8 @@ enum rmnet_ioctl_extended_cmds_e { RMNET_IOCTL_SET_SLEEP_STATE = 0x0014, /* Set sleep state */ RMNET_IOCTL_SET_XLAT_DEV_INFO = 0x0015, /* xlat dev name */ RMNET_IOCTL_DEREGISTER_DEV = 0x0016, /* Dereg a net dev */ RMNET_IOCTL_EXTENDED_MAX = 0x0017 RMNET_IOCTL_GET_SG_SUPPORT = 0x0017, /* Query sg support*/ RMNET_IOCTL_EXTENDED_MAX = 0x0018 }; /* Return values for the RMNET_IOCTL_GET_SUPPORTED_FEATURES IOCTL */ Loading net/rmnet_data/rmnet_data_vnd.c +6 −0 Original line number Diff line number Diff line Loading @@ -615,6 +615,12 @@ int rmnet_vnd_create_dev(int id, struct net_device **new_device, NETIF_F_IPV6_UDP_CSUM; /* Configuring GRO on rmnet_data interfaces */ dev->hw_features |= NETIF_F_GRO; /* Configuring Scatter-Gather on rmnet_data interfaces */ dev->hw_features |= NETIF_F_SG; /* Configuring GSO on rmnet_data interfaces */ dev->hw_features |= NETIF_F_GSO; dev->hw_features |= NETIF_F_GSO_UDP_TUNNEL; dev->hw_features |= NETIF_F_GSO_UDP_TUNNEL_CSUM; } rc = register_netdevice(dev); Loading net/rmnet_data/rmnet_map_data.c +10 −0 Original line number Diff line number Diff line Loading @@ -99,6 +99,15 @@ struct rmnet_map_header_s *rmnet_map_add_map_header(struct sk_buff *skb, padding = ALIGN(map_datalen, 4) - map_datalen; if (padding == 0) goto done; if ((skb->dev->features & NETIF_F_GSO) && skb_is_nonlinear(skb) && unlikely((padding != 0))) { LOGE("pad:%d required for non linear skb", padding); BUG(); } if (skb_tailroom(skb) < padding) return 0; Loading @@ -106,6 +115,7 @@ struct rmnet_map_header_s *rmnet_map_add_map_header(struct sk_buff *skb, LOGD("pad: %d", padding); memset(padbytes, 0, padding); done: map_header->pkt_len = htons(map_datalen + padding); map_header->pad_len = padding&0x3F; Loading Loading
include/uapi/linux/msm_rmnet.h +2 −1 Original line number Diff line number Diff line Loading @@ -59,7 +59,8 @@ enum rmnet_ioctl_extended_cmds_e { RMNET_IOCTL_SET_SLEEP_STATE = 0x0014, /* Set sleep state */ RMNET_IOCTL_SET_XLAT_DEV_INFO = 0x0015, /* xlat dev name */ RMNET_IOCTL_DEREGISTER_DEV = 0x0016, /* Dereg a net dev */ RMNET_IOCTL_EXTENDED_MAX = 0x0017 RMNET_IOCTL_GET_SG_SUPPORT = 0x0017, /* Query sg support*/ RMNET_IOCTL_EXTENDED_MAX = 0x0018 }; /* Return values for the RMNET_IOCTL_GET_SUPPORTED_FEATURES IOCTL */ Loading
net/rmnet_data/rmnet_data_vnd.c +6 −0 Original line number Diff line number Diff line Loading @@ -615,6 +615,12 @@ int rmnet_vnd_create_dev(int id, struct net_device **new_device, NETIF_F_IPV6_UDP_CSUM; /* Configuring GRO on rmnet_data interfaces */ dev->hw_features |= NETIF_F_GRO; /* Configuring Scatter-Gather on rmnet_data interfaces */ dev->hw_features |= NETIF_F_SG; /* Configuring GSO on rmnet_data interfaces */ dev->hw_features |= NETIF_F_GSO; dev->hw_features |= NETIF_F_GSO_UDP_TUNNEL; dev->hw_features |= NETIF_F_GSO_UDP_TUNNEL_CSUM; } rc = register_netdevice(dev); Loading
net/rmnet_data/rmnet_map_data.c +10 −0 Original line number Diff line number Diff line Loading @@ -99,6 +99,15 @@ struct rmnet_map_header_s *rmnet_map_add_map_header(struct sk_buff *skb, padding = ALIGN(map_datalen, 4) - map_datalen; if (padding == 0) goto done; if ((skb->dev->features & NETIF_F_GSO) && skb_is_nonlinear(skb) && unlikely((padding != 0))) { LOGE("pad:%d required for non linear skb", padding); BUG(); } if (skb_tailroom(skb) < padding) return 0; Loading @@ -106,6 +115,7 @@ struct rmnet_map_header_s *rmnet_map_add_map_header(struct sk_buff *skb, LOGD("pad: %d", padding); memset(padbytes, 0, padding); done: map_header->pkt_len = htons(map_datalen + padding); map_header->pad_len = padding&0x3F; Loading