diff options
| author | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
|---|---|---|
| committer | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
| commit | 79828b4fa835f73cdaf4bffa48696abdcbea9d02 (patch) | |
| tree | 5e0fa7156acb75ba603022bc807df8f2fedb97a8 /net/core/pktgen.c | |
| parent | 721b51fcf91898299d96f4b72cb9434cda29dce6 (diff) | |
| parent | 8c1a9d6323abf0fb1e5dad96cf3f1c783505ea5a (diff) | |
Merge remote-tracking branch 'asoc/fix/rt5645' into asoc-fix-rt5645
Diffstat (limited to 'net/core/pktgen.c')
| -rw-r--r-- | net/core/pktgen.c | 17 | 
1 files changed, 4 insertions, 13 deletions
diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 05badbb58865..de8d5cc5eb24 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -273,7 +273,6 @@ struct pktgen_dev {  	/* runtime counters relating to clone_skb */ -	__u64 allocated_skbs;  	__u32 clone_count;  	int last_ok;		/* Was last skb sent?  				 * Or a failed transmit of some sort? @@ -2279,7 +2278,7 @@ static void spin(struct pktgen_dev *pkt_dev, ktime_t spin_until)  static inline void set_pkt_overhead(struct pktgen_dev *pkt_dev)  { -	pkt_dev->pkt_overhead = 0; +	pkt_dev->pkt_overhead = LL_RESERVED_SPACE(pkt_dev->odev);  	pkt_dev->pkt_overhead += pkt_dev->nr_labels*sizeof(u32);  	pkt_dev->pkt_overhead += VLAN_TAG_SIZE(pkt_dev);  	pkt_dev->pkt_overhead += SVLAN_TAG_SIZE(pkt_dev); @@ -2788,6 +2787,7 @@ static struct sk_buff *pktgen_alloc_skb(struct net_device *dev,  	} else {  		 skb = __netdev_alloc_skb(dev, size, GFP_NOWAIT);  	} +	skb_reserve(skb, LL_RESERVED_SPACE(dev));  	return skb;  } @@ -3397,7 +3397,6 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev)  			return;  		}  		pkt_dev->last_pkt_size = pkt_dev->skb->len; -		pkt_dev->allocated_skbs++;  		pkt_dev->clone_count = 0;	/* reset counter */  	} @@ -3514,8 +3513,6 @@ static int pktgen_thread_worker(void *arg)  	set_freezable(); -	__set_current_state(TASK_RUNNING); -  	while (!kthread_should_stop()) {  		pkt_dev = next_to_run(t); @@ -3560,7 +3557,6 @@ static int pktgen_thread_worker(void *arg)  		try_to_freeze();  	} -	set_current_state(TASK_INTERRUPTIBLE);  	pr_debug("%s stopping all device\n", t->tsk->comm);  	pktgen_stop(t); @@ -3571,13 +3567,6 @@ static int pktgen_thread_worker(void *arg)  	pr_debug("%s removing thread\n", t->tsk->comm);  	pktgen_rem_thread(t); -	/* Wait for kthread_stop */ -	while (!kthread_should_stop()) { -		set_current_state(TASK_INTERRUPTIBLE); -		schedule(); -	} -	__set_current_state(TASK_RUNNING); -  	return 0;  } @@ -3769,6 +3758,7 @@ static int __net_init pktgen_create_thread(int cpu, struct pktgen_net *pn)  	}  	t->net = pn; +	get_task_struct(p);  	wake_up_process(p);  	wait_for_completion(&t->start_done); @@ -3891,6 +3881,7 @@ static void __net_exit pg_net_exit(struct net *net)  		t = list_entry(q, struct pktgen_thread, th_list);  		list_del(&t->th_list);  		kthread_stop(t->tsk); +		put_task_struct(t->tsk);  		kfree(t);  	}  |