Loading drivers/net/ethernet/qualcomm/rmnet/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ menuconfig RMNET tristate "RmNet MAP driver" default n select GRO_CELLS ---help--- If you select this, you will enable the RMNET module which is used for handling data in the multiplexing and aggregation protocol (MAP) Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_config.h +2 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ */ #include <linux/skbuff.h> #include <net/gro_cells.h> #ifndef _RMNET_CONFIG_H_ #define _RMNET_CONFIG_H_ Loading Loading @@ -58,6 +59,7 @@ struct rmnet_priv { u8 mux_id; struct net_device *real_dev; struct rmnet_pcpu_stats __percpu *pcpu_stats; struct gro_cells gro_cells; }; struct rmnet_port *rmnet_get_port(struct net_device *real_dev); Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c +3 −1 Original line number Diff line number Diff line Loading @@ -46,13 +46,15 @@ static void rmnet_set_skb_proto(struct sk_buff *skb) static void rmnet_deliver_skb(struct sk_buff *skb) { struct rmnet_priv *priv = netdev_priv(skb->dev); skb_reset_transport_header(skb); skb_reset_network_header(skb); rmnet_vnd_rx_fixup(skb, skb->dev); skb->pkt_type = PACKET_HOST; skb_set_mac_header(skb, 0); netif_receive_skb(skb); gro_cells_receive(&priv->gro_cells, skb); } /* MAP handler */ Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c +8 −0 Original line number Diff line number Diff line Loading @@ -87,11 +87,18 @@ static int rmnet_vnd_get_iflink(const struct net_device *dev) static int rmnet_vnd_init(struct net_device *dev) { struct rmnet_priv *priv = netdev_priv(dev); int err; priv->pcpu_stats = alloc_percpu(struct rmnet_pcpu_stats); if (!priv->pcpu_stats) return -ENOMEM; err = gro_cells_init(&priv->gro_cells, dev); if (err) { free_percpu(priv->pcpu_stats); return err; } return 0; } Loading @@ -99,6 +106,7 @@ static void rmnet_vnd_uninit(struct net_device *dev) { struct rmnet_priv *priv = netdev_priv(dev); gro_cells_destroy(&priv->gro_cells); free_percpu(priv->pcpu_stats); } Loading Loading
drivers/net/ethernet/qualcomm/rmnet/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ menuconfig RMNET tristate "RmNet MAP driver" default n select GRO_CELLS ---help--- If you select this, you will enable the RMNET module which is used for handling data in the multiplexing and aggregation protocol (MAP) Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.h +2 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ */ #include <linux/skbuff.h> #include <net/gro_cells.h> #ifndef _RMNET_CONFIG_H_ #define _RMNET_CONFIG_H_ Loading Loading @@ -58,6 +59,7 @@ struct rmnet_priv { u8 mux_id; struct net_device *real_dev; struct rmnet_pcpu_stats __percpu *pcpu_stats; struct gro_cells gro_cells; }; struct rmnet_port *rmnet_get_port(struct net_device *real_dev); Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c +3 −1 Original line number Diff line number Diff line Loading @@ -46,13 +46,15 @@ static void rmnet_set_skb_proto(struct sk_buff *skb) static void rmnet_deliver_skb(struct sk_buff *skb) { struct rmnet_priv *priv = netdev_priv(skb->dev); skb_reset_transport_header(skb); skb_reset_network_header(skb); rmnet_vnd_rx_fixup(skb, skb->dev); skb->pkt_type = PACKET_HOST; skb_set_mac_header(skb, 0); netif_receive_skb(skb); gro_cells_receive(&priv->gro_cells, skb); } /* MAP handler */ Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c +8 −0 Original line number Diff line number Diff line Loading @@ -87,11 +87,18 @@ static int rmnet_vnd_get_iflink(const struct net_device *dev) static int rmnet_vnd_init(struct net_device *dev) { struct rmnet_priv *priv = netdev_priv(dev); int err; priv->pcpu_stats = alloc_percpu(struct rmnet_pcpu_stats); if (!priv->pcpu_stats) return -ENOMEM; err = gro_cells_init(&priv->gro_cells, dev); if (err) { free_percpu(priv->pcpu_stats); return err; } return 0; } Loading @@ -99,6 +106,7 @@ static void rmnet_vnd_uninit(struct net_device *dev) { struct rmnet_priv *priv = netdev_priv(dev); gro_cells_destroy(&priv->gro_cells); free_percpu(priv->pcpu_stats); } Loading