Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c +4 −6 Original line number Diff line number Diff line Loading @@ -389,14 +389,12 @@ static int rmnet_changelink(struct net_device *dev, struct nlattr *tb[], } if (data[IFLA_RMNET_UL_AGG_PARAMS]) { void *agg_params; unsigned long irq_flags; struct rmnet_egress_agg_params *agg_params; agg_params = nla_data(data[IFLA_RMNET_UL_AGG_PARAMS]); spin_lock_irqsave(&port->agg_lock, irq_flags); memcpy(&port->egress_agg_params, agg_params, sizeof(port->egress_agg_params)); spin_unlock_irqrestore(&port->agg_lock, irq_flags); rmnet_map_update_ul_agg_config(port, agg_params->agg_size, agg_params->agg_count, agg_params->agg_time); } return 0; Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_map.h +2 −0 Original line number Diff line number Diff line Loading @@ -261,6 +261,8 @@ int rmnet_map_tx_agg_skip(struct sk_buff *skb, int offset); void rmnet_map_tx_aggregate(struct sk_buff *skb, struct rmnet_port *port); void rmnet_map_tx_aggregate_init(struct rmnet_port *port); void rmnet_map_tx_aggregate_exit(struct rmnet_port *port); void rmnet_map_update_ul_agg_config(struct rmnet_port *port, u16 size, u16 count, u32 time); void rmnet_map_dl_hdr_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_hdr *dl_hdr); void rmnet_map_dl_hdr_notify_v2(struct rmnet_port *port, Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c +20 −5 Original line number Diff line number Diff line Loading @@ -1250,6 +1250,11 @@ static void rmnet_map_linearize_copy(struct sk_buff *dst, struct sk_buff *src) } } static struct sk_buff *rmnet_map_build_skb(struct rmnet_port *port) { return alloc_skb(port->egress_agg_params.agg_size, GFP_ATOMIC); } void rmnet_map_tx_aggregate(struct sk_buff *skb, struct rmnet_port *port) { struct timespec diff, last; Loading Loading @@ -1277,8 +1282,7 @@ void rmnet_map_tx_aggregate(struct sk_buff *skb, struct rmnet_port *port) return; } port->agg_skb = alloc_skb(port->egress_agg_params.agg_size, GFP_ATOMIC); port->agg_skb = rmnet_map_build_skb(port); if (!port->agg_skb) { port->agg_skb = 0; port->agg_count = 0; Loading Loading @@ -1328,15 +1332,26 @@ void rmnet_map_tx_aggregate(struct sk_buff *skb, struct rmnet_port *port) spin_unlock_irqrestore(&port->agg_lock, flags); } void rmnet_map_update_ul_agg_config(struct rmnet_port *port, u16 size, u16 count, u32 time) { unsigned long irq_flags; spin_lock_irqsave(&port->agg_lock, irq_flags); port->egress_agg_params.agg_size = size; port->egress_agg_params.agg_count = count; port->egress_agg_params.agg_time = time; spin_unlock_irqrestore(&port->agg_lock, irq_flags); } void rmnet_map_tx_aggregate_init(struct rmnet_port *port) { hrtimer_init(&port->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); port->hrtimer.function = rmnet_map_flush_tx_packet_queue; port->egress_agg_params.agg_size = 8192; port->egress_agg_params.agg_count = 20; port->egress_agg_params.agg_time = 3000000; spin_lock_init(&port->agg_lock); rmnet_map_update_ul_agg_config(port, 8192, 20, 3000000); INIT_WORK(&port->agg_wq, rmnet_map_flush_tx_packet_work); } Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c +6 −0 Original line number Diff line number Diff line Loading @@ -276,6 +276,7 @@ static int rmnet_stats_reset(struct net_device *dev) { struct rmnet_priv *priv = netdev_priv(dev); struct rmnet_port_priv_stats *stp; struct rmnet_priv_stats *st; struct rmnet_port *port; port = rmnet_get_port(priv->real_dev); Loading @@ -285,6 +286,11 @@ static int rmnet_stats_reset(struct net_device *dev) stp = &port->stats; memset(stp, 0, sizeof(*stp)); st = &priv->stats; memset(st, 0, sizeof(*st)); return 0; } Loading Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c +4 −6 Original line number Diff line number Diff line Loading @@ -389,14 +389,12 @@ static int rmnet_changelink(struct net_device *dev, struct nlattr *tb[], } if (data[IFLA_RMNET_UL_AGG_PARAMS]) { void *agg_params; unsigned long irq_flags; struct rmnet_egress_agg_params *agg_params; agg_params = nla_data(data[IFLA_RMNET_UL_AGG_PARAMS]); spin_lock_irqsave(&port->agg_lock, irq_flags); memcpy(&port->egress_agg_params, agg_params, sizeof(port->egress_agg_params)); spin_unlock_irqrestore(&port->agg_lock, irq_flags); rmnet_map_update_ul_agg_config(port, agg_params->agg_size, agg_params->agg_count, agg_params->agg_time); } return 0; Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_map.h +2 −0 Original line number Diff line number Diff line Loading @@ -261,6 +261,8 @@ int rmnet_map_tx_agg_skip(struct sk_buff *skb, int offset); void rmnet_map_tx_aggregate(struct sk_buff *skb, struct rmnet_port *port); void rmnet_map_tx_aggregate_init(struct rmnet_port *port); void rmnet_map_tx_aggregate_exit(struct rmnet_port *port); void rmnet_map_update_ul_agg_config(struct rmnet_port *port, u16 size, u16 count, u32 time); void rmnet_map_dl_hdr_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_hdr *dl_hdr); void rmnet_map_dl_hdr_notify_v2(struct rmnet_port *port, Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c +20 −5 Original line number Diff line number Diff line Loading @@ -1250,6 +1250,11 @@ static void rmnet_map_linearize_copy(struct sk_buff *dst, struct sk_buff *src) } } static struct sk_buff *rmnet_map_build_skb(struct rmnet_port *port) { return alloc_skb(port->egress_agg_params.agg_size, GFP_ATOMIC); } void rmnet_map_tx_aggregate(struct sk_buff *skb, struct rmnet_port *port) { struct timespec diff, last; Loading Loading @@ -1277,8 +1282,7 @@ void rmnet_map_tx_aggregate(struct sk_buff *skb, struct rmnet_port *port) return; } port->agg_skb = alloc_skb(port->egress_agg_params.agg_size, GFP_ATOMIC); port->agg_skb = rmnet_map_build_skb(port); if (!port->agg_skb) { port->agg_skb = 0; port->agg_count = 0; Loading Loading @@ -1328,15 +1332,26 @@ void rmnet_map_tx_aggregate(struct sk_buff *skb, struct rmnet_port *port) spin_unlock_irqrestore(&port->agg_lock, flags); } void rmnet_map_update_ul_agg_config(struct rmnet_port *port, u16 size, u16 count, u32 time) { unsigned long irq_flags; spin_lock_irqsave(&port->agg_lock, irq_flags); port->egress_agg_params.agg_size = size; port->egress_agg_params.agg_count = count; port->egress_agg_params.agg_time = time; spin_unlock_irqrestore(&port->agg_lock, irq_flags); } void rmnet_map_tx_aggregate_init(struct rmnet_port *port) { hrtimer_init(&port->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); port->hrtimer.function = rmnet_map_flush_tx_packet_queue; port->egress_agg_params.agg_size = 8192; port->egress_agg_params.agg_count = 20; port->egress_agg_params.agg_time = 3000000; spin_lock_init(&port->agg_lock); rmnet_map_update_ul_agg_config(port, 8192, 20, 3000000); INIT_WORK(&port->agg_wq, rmnet_map_flush_tx_packet_work); } Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c +6 −0 Original line number Diff line number Diff line Loading @@ -276,6 +276,7 @@ static int rmnet_stats_reset(struct net_device *dev) { struct rmnet_priv *priv = netdev_priv(dev); struct rmnet_port_priv_stats *stp; struct rmnet_priv_stats *st; struct rmnet_port *port; port = rmnet_get_port(priv->real_dev); Loading @@ -285,6 +286,11 @@ static int rmnet_stats_reset(struct net_device *dev) stp = &port->stats; memset(stp, 0, sizeof(*stp)); st = &priv->stats; memset(st, 0, sizeof(*st)); return 0; } Loading