diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/net/sctp/checksum.h | 13 | ||||
| -rw-r--r-- | include/net/sctp/sctp.h | 5 | ||||
| -rw-r--r-- | include/net/sctp/stream_sched.h | 5 | 
3 files changed, 17 insertions, 6 deletions
diff --git a/include/net/sctp/checksum.h b/include/net/sctp/checksum.h index 4a5b9a306c69..32ee65a30aff 100644 --- a/include/net/sctp/checksum.h +++ b/include/net/sctp/checksum.h @@ -48,31 +48,32 @@ static inline __wsum sctp_csum_update(const void *buff, int len, __wsum sum)  	/* This uses the crypto implementation of crc32c, which is either  	 * implemented w/ hardware support or resolves to __crc32c_le().  	 */ -	return crc32c(sum, buff, len); +	return (__force __wsum)crc32c((__force __u32)sum, buff, len);  }  static inline __wsum sctp_csum_combine(__wsum csum, __wsum csum2,  				       int offset, int len)  { -	return __crc32c_le_combine(csum, csum2, len); +	return (__force __wsum)__crc32c_le_combine((__force __u32)csum, +						   (__force __u32)csum2, len);  }  static inline __le32 sctp_compute_cksum(const struct sk_buff *skb,  					unsigned int offset)  {  	struct sctphdr *sh = sctp_hdr(skb); -        __le32 ret, old = sh->checksum;  	const struct skb_checksum_ops ops = {  		.update  = sctp_csum_update,  		.combine = sctp_csum_combine,  	}; +	__le32 old = sh->checksum; +	__wsum new;  	sh->checksum = 0; -	ret = cpu_to_le32(~__skb_checksum(skb, offset, skb->len - offset, -					  ~(__u32)0, &ops)); +	new = ~__skb_checksum(skb, offset, skb->len - offset, ~(__wsum)0, &ops);  	sh->checksum = old; -	return ret; +	return cpu_to_le32((__force __u32)new);  }  #endif /* __sctp_checksum_h__ */ diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 749a42882437..906a9c0efa71 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h @@ -195,6 +195,11 @@ void sctp_remaddr_proc_exit(struct net *net);  int sctp_offload_init(void);  /* + * sctp/stream_sched.c + */ +void sctp_sched_ops_init(void); + +/*   * sctp/stream.c   */  int sctp_send_reset_streams(struct sctp_association *asoc, diff --git a/include/net/sctp/stream_sched.h b/include/net/sctp/stream_sched.h index c676550a4c7d..5c5da48f65e7 100644 --- a/include/net/sctp/stream_sched.h +++ b/include/net/sctp/stream_sched.h @@ -69,4 +69,9 @@ 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__ */  | 
