diff options
Diffstat (limited to 'include/net/pkt_sched.h')
| -rw-r--r-- | include/net/pkt_sched.h | 30 | 
1 files changed, 29 insertions, 1 deletions
diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index a16fbe9a2a67..6a70845bd9ab 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h @@ -118,7 +118,12 @@ void __qdisc_run(struct Qdisc *q);  static inline void qdisc_run(struct Qdisc *q)  {  	if (qdisc_run_begin(q)) { -		__qdisc_run(q); +		/* NOLOCK qdisc must check 'state' under the qdisc seqlock +		 * to avoid racing with dev_qdisc_reset() +		 */ +		if (!(q->flags & TCQ_F_NOLOCK) || +		    likely(!test_bit(__QDISC_STATE_DEACTIVATED, &q->state))) +			__qdisc_run(q);  		qdisc_run_end(q);  	}  } @@ -161,4 +166,27 @@ struct tc_etf_qopt_offload {  	s32 queue;  }; +struct tc_taprio_sched_entry { +	u8 command; /* TC_TAPRIO_CMD_* */ + +	/* The gate_mask in the offloading side refers to traffic classes */ +	u32 gate_mask; +	u32 interval; +}; + +struct tc_taprio_qopt_offload { +	u8 enable; +	ktime_t base_time; +	u64 cycle_time; +	u64 cycle_time_extension; + +	size_t num_entries; +	struct tc_taprio_sched_entry entries[0]; +}; + +/* Reference counting */ +struct tc_taprio_qopt_offload *taprio_offload_get(struct tc_taprio_qopt_offload +						  *offload); +void taprio_offload_free(struct tc_taprio_qopt_offload *offload); +  #endif  |