forked from Minki/linux
47505b8bcf
Based on 1 normalized pattern(s): this sctp implementation is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 or at your option any later version this sctp implementation is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with gnu cc see the file copying if not see http www gnu org licenses extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 42 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org> Reviewed-by: Richard Fontana <rfontana@redhat.com> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190523091649.683323110@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
63 lines
2.3 KiB
C
63 lines
2.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/* SCTP kernel implementation
|
|
* (C) Copyright Red Hat Inc. 2017
|
|
*
|
|
* These are definitions used by the stream schedulers, defined in RFC
|
|
* draft ndata (https://tools.ietf.org/html/draft-ietf-tsvwg-sctp-ndata-11)
|
|
*
|
|
* Please send any bug reports or fixes you make to the
|
|
* email addresses:
|
|
* lksctp developers <linux-sctp@vger.kernel.org>
|
|
*
|
|
* Written or modified by:
|
|
* Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
|
|
*/
|
|
|
|
#ifndef __sctp_stream_sched_h__
|
|
#define __sctp_stream_sched_h__
|
|
|
|
struct sctp_sched_ops {
|
|
/* Property handling for a given stream */
|
|
int (*set)(struct sctp_stream *stream, __u16 sid, __u16 value,
|
|
gfp_t gfp);
|
|
int (*get)(struct sctp_stream *stream, __u16 sid, __u16 *value);
|
|
|
|
/* Init the specific scheduler */
|
|
int (*init)(struct sctp_stream *stream);
|
|
/* Init a stream */
|
|
int (*init_sid)(struct sctp_stream *stream, __u16 sid, gfp_t gfp);
|
|
/* Frees the entire thing */
|
|
void (*free)(struct sctp_stream *stream);
|
|
|
|
/* Enqueue a chunk */
|
|
void (*enqueue)(struct sctp_outq *q, struct sctp_datamsg *msg);
|
|
/* Dequeue a chunk */
|
|
struct sctp_chunk *(*dequeue)(struct sctp_outq *q);
|
|
/* Called only if the chunk fit the packet */
|
|
void (*dequeue_done)(struct sctp_outq *q, struct sctp_chunk *chunk);
|
|
/* Sched all chunks already enqueued */
|
|
void (*sched_all)(struct sctp_stream *steam);
|
|
/* Unched all chunks already enqueued */
|
|
void (*unsched_all)(struct sctp_stream *steam);
|
|
};
|
|
|
|
int sctp_sched_set_sched(struct sctp_association *asoc,
|
|
enum sctp_sched_type sched);
|
|
int sctp_sched_get_sched(struct sctp_association *asoc);
|
|
int sctp_sched_set_value(struct sctp_association *asoc, __u16 sid,
|
|
__u16 value, gfp_t gfp);
|
|
int sctp_sched_get_value(struct sctp_association *asoc, __u16 sid,
|
|
__u16 *value);
|
|
void sctp_sched_dequeue_done(struct sctp_outq *q, struct sctp_chunk *ch);
|
|
|
|
void sctp_sched_dequeue_common(struct sctp_outq *q, struct sctp_chunk *ch);
|
|
int sctp_sched_init_sid(struct sctp_stream *stream, __u16 sid, gfp_t gfp);
|
|
struct sctp_sched_ops *sctp_sched_ops_from_stream(struct sctp_stream *stream);
|
|
|
|
void sctp_sched_ops_register(enum sctp_sched_type sched,
|
|
struct sctp_sched_ops *sched_ops);
|
|
void sctp_sched_ops_prio_init(void);
|
|
void sctp_sched_ops_rr_init(void);
|
|
|
|
#endif /* __sctp_stream_sched_h__ */
|