From: Vlad Yasevich <vladislav.yasevich@hp.com>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: David Miller <davem@davemloft.net>,
Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
yjwei@cn.fujitsu.com, netdev@vger.kernel.org
Subject: Re: [PATCH] inet6: Fix paramater issue of inet6_csk_xmit
Date: Sun, 03 Aug 2008 21:03:08 -0400 [thread overview]
Message-ID: <4896554C.3040404@hp.com> (raw)
In-Reply-To: <20080801131453.GA19851@gondor.apana.org.au>
Hi Herbert
Herbert Xu wrote:
> diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
> index 535a18f..ab1c472 100644
> --- a/include/net/sctp/structs.h
> +++ b/include/net/sctp/structs.h
> @@ -524,8 +524,7 @@ static inline void sctp_ssn_skip(struct sctp_stream *stream, __u16 id,
> */
> struct sctp_af {
> int (*sctp_xmit) (struct sk_buff *skb,
> - struct sctp_transport *,
> - int ipfragok);
> + struct sctp_transport *);
> int (*setsockopt) (struct sock *sk,
> int level,
> int optname,
> diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
> index a238d68..11dab07 100644
> --- a/net/sctp/ipv6.c
> +++ b/net/sctp/ipv6.c
> @@ -195,8 +195,7 @@ out:
> }
>
> /* Based on tcp_v6_xmit() in tcp_ipv6.c. */
> -static int sctp_v6_xmit(struct sk_buff *skb, struct sctp_transport *transport,
> - int ipfragok)
> +static int sctp_v6_xmit(struct sk_buff *skb, struct sctp_transport *transport)
> {
> struct sock *sk = skb->sk;
> struct ipv6_pinfo *np = inet6_sk(sk);
> @@ -231,7 +230,10 @@ static int sctp_v6_xmit(struct sk_buff *skb, struct sctp_transport *transport,
>
> SCTP_INC_STATS(SCTP_MIB_OUTSCTPPACKS);
>
> - return ip6_xmit(sk, skb, &fl, np->opt, ipfragok);
> + if (!(tp->param_flags & SPP_PMTUD_ENABLE))
> + skb->local_df = 1;
> +
s/tp/transport. Otherwise, will not compile.
> + return ip6_xmit(sk, skb, &fl, np->opt, 0);
> }
>
> /* Returns the dst cache entry for the given source and destination ip
> diff --git a/net/sctp/output.c b/net/sctp/output.c
> index 4568464..0dc4a7d 100644
> --- a/net/sctp/output.c
> +++ b/net/sctp/output.c
> @@ -586,10 +586,8 @@ int sctp_packet_transmit(struct sctp_packet *packet)
> SCTP_DEBUG_PRINTK("***sctp_transmit_packet*** skb len %d\n",
> nskb->len);
>
> - if (tp->param_flags & SPP_PMTUD_ENABLE)
> - (*tp->af_specific->sctp_xmit)(nskb, tp, packet->ipfragok);
> - else
> - (*tp->af_specific->sctp_xmit)(nskb, tp, 1);
> + nskb->local_df = packet->ipfragok;
> + (*tp->af_specific->sctp_xmit)(nskb, tp);
>
> out:
> packet->size = packet->overhead;
> diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
> index a6e0818..80b8efb 100644
> --- a/net/sctp/protocol.c
> +++ b/net/sctp/protocol.c
> @@ -862,16 +862,25 @@ static int sctp_inet_supported_addrs(const struct sctp_sock *opt,
>
> /* Wrapper routine that calls the ip transmit routine. */
> static inline int sctp_v4_xmit(struct sk_buff *skb,
> - struct sctp_transport *transport, int ipfragok)
> + struct sctp_transport *transport)
> {
> + struct inet_sock *inet = inet_sk(skb->sk);
> +
> SCTP_DEBUG_PRINTK("%s: skb:%p, len:%d, "
> "src:%u.%u.%u.%u, dst:%u.%u.%u.%u\n",
> __func__, skb, skb->len,
> NIPQUAD(skb->rtable->rt_src),
> NIPQUAD(skb->rtable->rt_dst));
>
> + /*
> + * You'd think with a protocol this big they could afford
> + * a struct sock per transport.
> + */
Please change this comment to be descriptive of the code, or just
remove it.
> + inet->pmtudisc = transport->param_flags & SPP_PMTUD_ENABLE ?
> + IP_PMTUDISC_DO : IP_PMTUDISC_DONT;
> +
> SCTP_INC_STATS(SCTP_MIB_OUTSCTPPACKS);
> - return ip_queue_xmit(skb, ipfragok);
> + return ip_queue_xmit(skb, 0);
> }
>
> static struct sctp_af sctp_af_inet;
>
> Cheers,
Otherwise, all of my tests have passed.
Thanks
-vlad
next prev parent reply other threads:[~2008-08-04 1:03 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-31 9:56 [PATCH] inet6: Fix paramater issue of inet6_csk_xmit Wei Yongjun
2008-08-01 3:48 ` David Miller
2008-08-01 5:17 ` Wei Yongjun
2008-08-01 9:11 ` Herbert Xu
2008-08-01 9:18 ` David Miller
2008-08-01 9:25 ` Herbert Xu
2008-08-01 11:50 ` Herbert Xu
2008-08-01 13:14 ` Herbert Xu
2008-08-01 14:50 ` Vlad Yasevich
2008-08-02 0:30 ` Herbert Xu
2008-08-02 23:26 ` Vlad Yasevich
2008-08-03 2:01 ` Herbert Xu
2008-08-03 6:56 ` David Miller
2008-08-04 1:03 ` Vlad Yasevich [this message]
2008-08-04 1:55 ` Herbert Xu
2008-08-04 2:58 ` Wei Yongjun
2008-08-04 3:05 ` Herbert Xu
2008-08-04 4:16 ` David Miller
2008-08-04 4:15 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4896554C.3040404@hp.com \
--to=vladislav.yasevich@hp.com \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=kuznet@ms2.inr.ac.ru \
--cc=netdev@vger.kernel.org \
--cc=yjwei@cn.fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.