* [net-2.6.22] [TCP]: Fix linkage errors. @ 2007-04-24 15:17 YOSHIFUJI Hideaki / 吉藤英明 2007-04-24 15:53 ` Adrian Bunk 0 siblings, 1 reply; 18+ messages in thread From: YOSHIFUJI Hideaki / 吉藤英明 @ 2007-04-24 15:17 UTC (permalink / raw) To: davem; +Cc: shemminger, netdev Recent ktime_t changes had introduced linkage errors. | WARNING: "__divdi3" [net/ipv4/tcp_veno.ko] undefined! | WARNING: "__divdi3" [net/ipv4/tcp_vegas.ko] undefined! | WARNING: "__divdi3" [net/ipv4/tcp_lp.ko] undefined! | WARNING: "__divdi3" [net/ipv4/tcp_illinois.ko] undefined! Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> --- diff --git a/net/ipv4/tcp_illinois.c b/net/ipv4/tcp_illinois.c index 8e31659..0cec615 100644 --- a/net/ipv4/tcp_illinois.c +++ b/net/ipv4/tcp_illinois.c @@ -87,10 +87,12 @@ static void tcp_illinois_acked(struct sock *sk, u32 pkts_acked, ktime_t last) { struct illinois *ca = inet_csk_ca(sk); u32 rtt; + struct timeval tv; ca->acked = pkts_acked; - rtt = ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC; + tv = ktime_to_timeval(net_timedelta(last)); + rtt = tv.tv_sec * USEC_PER_SEC + tv.tv_usec; /* ignore bogus values, this prevents wraparound in alpha math */ if (rtt > RTT_MAX) diff --git a/net/ipv4/tcp_lp.c b/net/ipv4/tcp_lp.c index b4e062a..0b990ea 100644 --- a/net/ipv4/tcp_lp.c +++ b/net/ipv4/tcp_lp.c @@ -265,8 +265,10 @@ static void tcp_lp_pkts_acked(struct sock *sk, u32 num_acked, ktime_t last) { struct tcp_sock *tp = tcp_sk(sk); struct lp *lp = inet_csk_ca(sk); + struct timeval tv; - tcp_lp_rtt_sample(sk, ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC); + tv = ktime_to_timeval(net_timedelta(last)); + tcp_lp_rtt_sample(sk, tv.tv_sec * USEC_PER_SEC + tv.tv_usec); /* calc inference */ if (tcp_time_stamp > tp->rx_opt.rcv_tsecr) diff --git a/net/ipv4/tcp_vegas.c b/net/ipv4/tcp_vegas.c index 0f0ee7f..c13dc16 100644 --- a/net/ipv4/tcp_vegas.c +++ b/net/ipv4/tcp_vegas.c @@ -116,9 +116,11 @@ void tcp_vegas_pkts_acked(struct sock *sk, u32 cnt, ktime_t last) { struct vegas *vegas = inet_csk_ca(sk); u32 vrtt; + struct timeval tv; /* Never allow zero rtt or baseRTT */ - vrtt = (ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC) + 1; + tv = ktime_to_timeval(net_timedelta(last)); + vrtt = tv.tv_sec * USEC_PER_SEC + tv.tv_usec; /* Filter to find propagation delay: */ if (vrtt < vegas->baseRTT) diff --git a/net/ipv4/tcp_veno.c b/net/ipv4/tcp_veno.c index 0b50d06..a439c49 100644 --- a/net/ipv4/tcp_veno.c +++ b/net/ipv4/tcp_veno.c @@ -73,9 +73,11 @@ static void tcp_veno_pkts_acked(struct sock *sk, u32 cnt, ktime_t last) { struct veno *veno = inet_csk_ca(sk); u32 vrtt; + struct timeval tv; /* Never allow zero rtt or baseRTT */ - vrtt = (ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC) + 1; + tv = ktime_to_timeval(net_timedelta(last)); + vrtt = tv.tv_sec * USEC_PER_SEC + tv.tv_usec; /* Filter to find propagation delay: */ if (vrtt < veno->basertt) -- YOSHIFUJI Hideaki @ USAGI Project <yoshfuji@linux-ipv6.org> GPG-FP : 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [net-2.6.22] [TCP]: Fix linkage errors. 2007-04-24 15:17 [net-2.6.22] [TCP]: Fix linkage errors YOSHIFUJI Hideaki / 吉藤英明 @ 2007-04-24 15:53 ` Adrian Bunk 2007-04-24 15:58 ` YOSHIFUJI Hideaki / 吉藤英明 2007-04-24 16:03 ` [net-2.6.22] [TCP]: Fix linkage errors Eric Dumazet 0 siblings, 2 replies; 18+ messages in thread From: Adrian Bunk @ 2007-04-24 15:53 UTC (permalink / raw) To: YOSHIFUJI Hideaki / 吉藤英明 Cc: davem, shemminger, netdev, Thomas Gleixner On Wed, Apr 25, 2007 at 12:17:43AM +0900, YOSHIFUJI Hideaki / 吉藤英明 wrote: > Recent ktime_t changes had introduced linkage errors. > > | WARNING: "__divdi3" [net/ipv4/tcp_veno.ko] undefined! > | WARNING: "__divdi3" [net/ipv4/tcp_vegas.ko] undefined! > | WARNING: "__divdi3" [net/ipv4/tcp_lp.ko] undefined! > | WARNING: "__divdi3" [net/ipv4/tcp_illinois.ko] undefined! > > Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> > > --- > diff --git a/net/ipv4/tcp_illinois.c b/net/ipv4/tcp_illinois.c > index 8e31659..0cec615 100644 > --- a/net/ipv4/tcp_illinois.c > +++ b/net/ipv4/tcp_illinois.c > @@ -87,10 +87,12 @@ static void tcp_illinois_acked(struct sock *sk, u32 pkts_acked, ktime_t last) > { > struct illinois *ca = inet_csk_ca(sk); > u32 rtt; > + struct timeval tv; > > ca->acked = pkts_acked; > > - rtt = ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC; > + tv = ktime_to_timeval(net_timedelta(last)); > + rtt = tv.tv_sec * USEC_PER_SEC + tv.tv_usec; > > /* ignore bogus values, this prevents wraparound in alpha math */ > if (rtt > RTT_MAX) >... Couldn't this be better solved by adding something like the following to include/linux/ktime.h ? static inline s64 ktime_to_us(const ktime_t kt) { return (s64) kt.tv.sec * USEC_PER_SEC + kt.tv.nsec / NSEC_PER_USEC; } cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [net-2.6.22] [TCP]: Fix linkage errors. 2007-04-24 15:53 ` Adrian Bunk @ 2007-04-24 15:58 ` YOSHIFUJI Hideaki / 吉藤英明 2007-04-24 16:10 ` YOSHIFUJI Hideaki / 吉藤英明 2007-04-24 16:03 ` [net-2.6.22] [TCP]: Fix linkage errors Eric Dumazet 1 sibling, 1 reply; 18+ messages in thread From: YOSHIFUJI Hideaki / 吉藤英明 @ 2007-04-24 15:58 UTC (permalink / raw) To: bunk; +Cc: davem, shemminger, netdev, tglx, yoshfuji In article <20070424155324.GL3468@stusta.de> (at Tue, 24 Apr 2007 17:53:24 +0200), Adrian Bunk <bunk@stusta.de> says: > On Wed, Apr 25, 2007 at 12:17:43AM +0900, YOSHIFUJI Hideaki / 吉藤英明 wrote: > > Recent ktime_t changes had introduced linkage errors. > > > > | WARNING: "__divdi3" [net/ipv4/tcp_veno.ko] undefined! > > | WARNING: "__divdi3" [net/ipv4/tcp_vegas.ko] undefined! > > | WARNING: "__divdi3" [net/ipv4/tcp_lp.ko] undefined! > > | WARNING: "__divdi3" [net/ipv4/tcp_illinois.ko] undefined! > > > > Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> > > > > --- > > diff --git a/net/ipv4/tcp_illinois.c b/net/ipv4/tcp_illinois.c > > index 8e31659..0cec615 100644 > > --- a/net/ipv4/tcp_illinois.c > > +++ b/net/ipv4/tcp_illinois.c > > @@ -87,10 +87,12 @@ static void tcp_illinois_acked(struct sock *sk, u32 pkts_acked, ktime_t last) > > { > > struct illinois *ca = inet_csk_ca(sk); > > u32 rtt; > > + struct timeval tv; > > > > ca->acked = pkts_acked; > > > > - rtt = ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC; > > + tv = ktime_to_timeval(net_timedelta(last)); > > + rtt = tv.tv_sec * USEC_PER_SEC + tv.tv_usec; > > > > /* ignore bogus values, this prevents wraparound in alpha math */ > > if (rtt > RTT_MAX) > >... > > Couldn't this be better solved by adding something like the following > to include/linux/ktime.h ? > > static inline s64 ktime_to_us(const ktime_t kt) > { > return (s64) kt.tv.sec * USEC_PER_SEC + kt.tv.nsec / NSEC_PER_USEC; > } > That will introduce same error, won't it? --yoshfuji ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [net-2.6.22] [TCP]: Fix linkage errors. 2007-04-24 15:58 ` YOSHIFUJI Hideaki / 吉藤英明 @ 2007-04-24 16:10 ` YOSHIFUJI Hideaki / 吉藤英明 2007-04-24 16:38 ` Eric Dumazet 0 siblings, 1 reply; 18+ messages in thread From: YOSHIFUJI Hideaki / 吉藤英明 @ 2007-04-24 16:10 UTC (permalink / raw) To: bunk; +Cc: davem, shemminger, netdev, tglx, yoshfuji In article <20070425.005845.113682267.yoshfuji@linux-ipv6.org> (at Wed, 25 Apr 2007 00:58:45 +0900 (JST)), YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org> says: > In article <20070424155324.GL3468@stusta.de> (at Tue, 24 Apr 2007 17:53:24 +0200), Adrian Bunk <bunk@stusta.de> says: > > > On Wed, Apr 25, 2007 at 12:17:43AM +0900, YOSHIFUJI Hideaki / 吉藤英明 wrote: > > > Recent ktime_t changes had introduced linkage errors. > > > > > > | WARNING: "__divdi3" [net/ipv4/tcp_veno.ko] undefined! > > > | WARNING: "__divdi3" [net/ipv4/tcp_vegas.ko] undefined! > > > | WARNING: "__divdi3" [net/ipv4/tcp_lp.ko] undefined! > > > | WARNING: "__divdi3" [net/ipv4/tcp_illinois.ko] undefined! > > > > > > Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> > > > > > > --- > > > diff --git a/net/ipv4/tcp_illinois.c b/net/ipv4/tcp_illinois.c > > > index 8e31659..0cec615 100644 > > > --- a/net/ipv4/tcp_illinois.c > > > +++ b/net/ipv4/tcp_illinois.c > > > @@ -87,10 +87,12 @@ static void tcp_illinois_acked(struct sock *sk, u32 pkts_acked, ktime_t last) > > > { > > > struct illinois *ca = inet_csk_ca(sk); > > > u32 rtt; > > > + struct timeval tv; > > > > > > ca->acked = pkts_acked; > > > > > > - rtt = ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC; > > > + tv = ktime_to_timeval(net_timedelta(last)); > > > + rtt = tv.tv_sec * USEC_PER_SEC + tv.tv_usec; > > > > > > /* ignore bogus values, this prevents wraparound in alpha math */ > > > if (rtt > RTT_MAX) > > >... > > > > Couldn't this be better solved by adding something like the following > > to include/linux/ktime.h ? > > > > static inline s64 ktime_to_us(const ktime_t kt) > > { > > return (s64) kt.tv.sec * USEC_PER_SEC + kt.tv.nsec / NSEC_PER_USEC; > > } > > > > That will introduce same error, won't it? How about this? Singed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> diff --git a/include/linux/ktime.h b/include/linux/ktime.h index 248305b..601a74e 100644 --- a/include/linux/ktime.h +++ b/include/linux/ktime.h @@ -259,6 +259,12 @@ static inline s64 ktime_to_ns(const ktime_t kt) #endif +static inline s64 ktime_to_us(const ktime_t kt) +{ + struct timeval tv = ktime_to_timeval(kt); + return tv.tv_sec * USEC_PER_SEC + tv.tv_usec; +} + /* * The resolution of the clocks. The resolution value is returned in * the clock_getres() system call to give application programmers an diff --git a/net/ipv4/tcp_illinois.c b/net/ipv4/tcp_illinois.c index 8e31659..4adc47c 100644 --- a/net/ipv4/tcp_illinois.c +++ b/net/ipv4/tcp_illinois.c @@ -90,7 +90,7 @@ static void tcp_illinois_acked(struct sock *sk, u32 pkts_acked, ktime_t last) ca->acked = pkts_acked; - rtt = ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC; + rtt = ktime_to_us(net_timedelta(last)); /* ignore bogus values, this prevents wraparound in alpha math */ if (rtt > RTT_MAX) diff --git a/net/ipv4/tcp_lp.c b/net/ipv4/tcp_lp.c index b4e062a..43294ad 100644 --- a/net/ipv4/tcp_lp.c +++ b/net/ipv4/tcp_lp.c @@ -266,7 +266,7 @@ static void tcp_lp_pkts_acked(struct sock *sk, u32 num_acked, ktime_t last) struct tcp_sock *tp = tcp_sk(sk); struct lp *lp = inet_csk_ca(sk); - tcp_lp_rtt_sample(sk, ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC); + tcp_lp_rtt_sample(sk, ktime_to_us(net_timedelta(last))); /* calc inference */ if (tcp_time_stamp > tp->rx_opt.rcv_tsecr) diff --git a/net/ipv4/tcp_vegas.c b/net/ipv4/tcp_vegas.c index 0f0ee7f..73e19cf 100644 --- a/net/ipv4/tcp_vegas.c +++ b/net/ipv4/tcp_vegas.c @@ -118,7 +118,7 @@ void tcp_vegas_pkts_acked(struct sock *sk, u32 cnt, ktime_t last) u32 vrtt; /* Never allow zero rtt or baseRTT */ - vrtt = (ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC) + 1; + vrtt = ktime_to_us(net_timedelta(last)) + 1; /* Filter to find propagation delay: */ if (vrtt < vegas->baseRTT) diff --git a/net/ipv4/tcp_veno.c b/net/ipv4/tcp_veno.c index 0b50d06..9edb340 100644 --- a/net/ipv4/tcp_veno.c +++ b/net/ipv4/tcp_veno.c @@ -75,7 +75,7 @@ static void tcp_veno_pkts_acked(struct sock *sk, u32 cnt, ktime_t last) u32 vrtt; /* Never allow zero rtt or baseRTT */ - vrtt = (ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC) + 1; + vrtt = ktime_to_us(net_timedelta(last)) + 1; /* Filter to find propagation delay: */ if (vrtt < veno->basertt) -- YOSHIFUJI Hideaki @ USAGI Project <yoshfuji@linux-ipv6.org> GPG-FP : 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [net-2.6.22] [TCP]: Fix linkage errors. 2007-04-24 16:10 ` YOSHIFUJI Hideaki / 吉藤英明 @ 2007-04-24 16:38 ` Eric Dumazet 2007-04-24 17:04 ` [PATCH] Fix build errors on 32bit platforms with new ktime Stephen Hemminger 0 siblings, 1 reply; 18+ messages in thread From: Eric Dumazet @ 2007-04-24 16:38 UTC (permalink / raw) To: YOSHIFUJI Hideaki / ____________; +Cc: bunk, davem, shemminger, netdev, tglx On Wed, 25 Apr 2007 01:10:28 +0900 (JST) YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> wrote: > How about this? > > > +static inline s64 ktime_to_us(const ktime_t kt) > +{ > + struct timeval tv = ktime_to_timeval(kt); > + return tv.tv_sec * USEC_PER_SEC + tv.tv_usec; > +} > + Well, I am afraid it's not 100% correct. If you really want to return s64 you should do return (s64) tv.tv_sec * USEC_PER_SEC + tv.tv_usec; But then it might be overkill to compute a full s64 for TCP use, since we use u32 vrtt ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH] Fix build errors on 32bit platforms with new ktime 2007-04-24 16:38 ` Eric Dumazet @ 2007-04-24 17:04 ` Stephen Hemminger 2007-04-24 18:19 ` Adrian Bunk ` (2 more replies) 0 siblings, 3 replies; 18+ messages in thread From: Stephen Hemminger @ 2007-04-24 17:04 UTC (permalink / raw) To: Eric Dumazet; +Cc: YOSHIFUJI Hideaki / ____________, bunk, davem, netdev, tglx Yoshifuji-san had the right idea, but ktime_to_us needs to be defined in a way that works on both 64 and 32bit platforms. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> --- include/linux/ktime.h | 13 +++++++++++++ net/ipv4/tcp_illinois.c | 2 +- net/ipv4/tcp_lp.c | 2 +- net/ipv4/tcp_vegas.c | 2 +- net/ipv4/tcp_veno.c | 2 +- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/include/linux/ktime.h b/include/linux/ktime.h index 248305b..c58683a 100644 --- a/include/linux/ktime.h +++ b/include/linux/ktime.h @@ -121,6 +121,8 @@ static inline ktime_t timeval_to_ktime(struct timeval tv) /* Convert ktime_t to nanoseconds - NOP in the scalar storage format: */ #define ktime_to_ns(kt) ((kt).tv64) +#define ktime_to_us(kt) ((kt).tv64 / NSEC_PER_SEC) + #else /* @@ -257,6 +259,17 @@ static inline s64 ktime_to_ns(const ktime_t kt) return (s64) kt.tv.sec * NSEC_PER_SEC + kt.tv.nsec; } +/** + * ktime_to_us - convert a ktime_t variable to scalar microseconds + * @kt: the ktime_t variable to convert + * + * Returns the scalar nanoseconds representation of @kt + */ +static inline s64 ktime_to_us(const ktime_t kt) +{ + return (s64) kt.tv_sec * USEC_PER_SEC + kt.tv_nsec / NSEC_PER_USEC; +} + #endif /* diff --git a/net/ipv4/tcp_illinois.c b/net/ipv4/tcp_illinois.c index 8e31659..4adc47c 100644 --- a/net/ipv4/tcp_illinois.c +++ b/net/ipv4/tcp_illinois.c @@ -90,7 +90,7 @@ static void tcp_illinois_acked(struct sock *sk, u32 pkts_acked, ktime_t last) ca->acked = pkts_acked; - rtt = ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC; + rtt = ktime_to_us(net_timedelta(last)); /* ignore bogus values, this prevents wraparound in alpha math */ if (rtt > RTT_MAX) diff --git a/net/ipv4/tcp_lp.c b/net/ipv4/tcp_lp.c index b4e062a..43294ad 100644 --- a/net/ipv4/tcp_lp.c +++ b/net/ipv4/tcp_lp.c @@ -266,7 +266,7 @@ static void tcp_lp_pkts_acked(struct sock *sk, u32 num_acked, ktime_t last) struct tcp_sock *tp = tcp_sk(sk); struct lp *lp = inet_csk_ca(sk); - tcp_lp_rtt_sample(sk, ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC); + tcp_lp_rtt_sample(sk, ktime_to_us(net_timedelta(last))); /* calc inference */ if (tcp_time_stamp > tp->rx_opt.rcv_tsecr) diff --git a/net/ipv4/tcp_vegas.c b/net/ipv4/tcp_vegas.c index 0f0ee7f..73e19cf 100644 --- a/net/ipv4/tcp_vegas.c +++ b/net/ipv4/tcp_vegas.c @@ -118,7 +118,7 @@ void tcp_vegas_pkts_acked(struct sock *sk, u32 cnt, ktime_t last) u32 vrtt; /* Never allow zero rtt or baseRTT */ - vrtt = (ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC) + 1; + vrtt = ktime_to_us(net_timedelta(last)) + 1; /* Filter to find propagation delay: */ if (vrtt < vegas->baseRTT) diff --git a/net/ipv4/tcp_veno.c b/net/ipv4/tcp_veno.c index 0b50d06..9edb340 100644 --- a/net/ipv4/tcp_veno.c +++ b/net/ipv4/tcp_veno.c @@ -75,7 +75,7 @@ static void tcp_veno_pkts_acked(struct sock *sk, u32 cnt, ktime_t last) u32 vrtt; /* Never allow zero rtt or baseRTT */ - vrtt = (ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC) + 1; + vrtt = ktime_to_us(net_timedelta(last)) + 1; /* Filter to find propagation delay: */ if (vrtt < veno->basertt) -- 1.5.0.6 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH] Fix build errors on 32bit platforms with new ktime 2007-04-24 17:04 ` [PATCH] Fix build errors on 32bit platforms with new ktime Stephen Hemminger @ 2007-04-24 18:19 ` Adrian Bunk 2007-04-24 18:48 ` Eric Dumazet 2007-04-24 21:55 ` YOSHIFUJI Hideaki / 吉藤英明 2 siblings, 0 replies; 18+ messages in thread From: Adrian Bunk @ 2007-04-24 18:19 UTC (permalink / raw) To: Stephen Hemminger; +Cc: Eric Dumazet, YOSHIFUJI Hideaki, davem, netdev, tglx On Tue, Apr 24, 2007 at 10:04:20AM -0700, Stephen Hemminger wrote: >... > +/** > + * ktime_to_us - convert a ktime_t variable to scalar microseconds > + * @kt: the ktime_t variable to convert > + * > + * Returns the scalar nanoseconds representation of @kt > + */ > +static inline s64 ktime_to_us(const ktime_t kt) > +{ > + return (s64) kt.tv_sec * USEC_PER_SEC + kt.tv_nsec / NSEC_PER_USEC; >... kt.tv.sec kt.tv.nsec cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] Fix build errors on 32bit platforms with new ktime 2007-04-24 17:04 ` [PATCH] Fix build errors on 32bit platforms with new ktime Stephen Hemminger 2007-04-24 18:19 ` Adrian Bunk @ 2007-04-24 18:48 ` Eric Dumazet 2007-04-24 21:54 ` David Miller 2007-04-24 21:55 ` YOSHIFUJI Hideaki / 吉藤英明 2 siblings, 1 reply; 18+ messages in thread From: Eric Dumazet @ 2007-04-24 18:48 UTC (permalink / raw) To: Stephen Hemminger Cc: YOSHIFUJI Hideaki / ____________, bunk, davem, netdev, tglx Stephen Hemminger a écrit : > > +#define ktime_to_us(kt) ((kt).tv64 / NSEC_PER_SEC) > + > #else Oh dear... how many bogus patches are going to be posted today ? ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] Fix build errors on 32bit platforms with new ktime 2007-04-24 18:48 ` Eric Dumazet @ 2007-04-24 21:54 ` David Miller 0 siblings, 0 replies; 18+ messages in thread From: David Miller @ 2007-04-24 21:54 UTC (permalink / raw) To: dada1; +Cc: shemminger, yoshfuji, bunk, netdev, tglx From: Eric Dumazet <dada1@cosmosbay.com> Date: Tue, 24 Apr 2007 20:48:22 +0200 > Stephen Hemminger a écrit : > > > > +#define ktime_to_us(kt) ((kt).tv64 / NSEC_PER_SEC) > > + > > #else > > Oh dear... how many bogus patches are going to be posted today ? Stephen please submit a working patch, thanks :-) ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] Fix build errors on 32bit platforms with new ktime 2007-04-24 17:04 ` [PATCH] Fix build errors on 32bit platforms with new ktime Stephen Hemminger 2007-04-24 18:19 ` Adrian Bunk 2007-04-24 18:48 ` Eric Dumazet @ 2007-04-24 21:55 ` YOSHIFUJI Hideaki / 吉藤英明 2007-04-24 21:57 ` Stephen Hemminger 2 siblings, 1 reply; 18+ messages in thread From: YOSHIFUJI Hideaki / 吉藤英明 @ 2007-04-24 21:55 UTC (permalink / raw) To: shemminger; +Cc: dada1, bunk, davem, netdev, tglx, yoshfuji In article <20070424100420.2860db68@dxpl.pdx.osdl.net> (at Tue, 24 Apr 2007 10:04:20 -0700), Stephen Hemminger <shemminger@linux-foundation.org> says: > Yoshifuji-san had the right idea, but ktime_to_us needs to be defined > in a way that works on both 64 and 32bit platforms. No, this does not cure. > > +#define ktime_to_us(kt) ((kt).tv64 / NSEC_PER_SEC) > + NSEC_PER_USEC? > +static inline s64 ktime_to_us(const ktime_t kt) > +{ > + return (s64) kt.tv_sec * USEC_PER_SEC + kt.tv_nsec / NSEC_PER_USEC; > +} > + Please do NOT use division here, which was the source of the linkage error, and the reason why I posted a patch to use ktime_to_timeval(). --yoshfuji ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] Fix build errors on 32bit platforms with new ktime 2007-04-24 21:55 ` YOSHIFUJI Hideaki / 吉藤英明 @ 2007-04-24 21:57 ` Stephen Hemminger 2007-04-24 22:12 ` Eric Dumazet 2007-04-24 22:15 ` Thomas Gleixner 0 siblings, 2 replies; 18+ messages in thread From: Stephen Hemminger @ 2007-04-24 21:57 UTC (permalink / raw) To: YOSHIFUJI Hideaki / 吉藤英明 Cc: dada1, bunk, davem, netdev, tglx, yoshfuji On Wed, 25 Apr 2007 06:55:39 +0900 (JST) YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org> wrote: > In article <20070424100420.2860db68@dxpl.pdx.osdl.net> (at Tue, 24 Apr 2007 10:04:20 -0700), Stephen Hemminger <shemminger@linux-foundation.org> says: > > > Yoshifuji-san had the right idea, but ktime_to_us needs to be defined > > in a way that works on both 64 and 32bit platforms. > > No, this does not cure. > > > > +#define ktime_to_us(kt) ((kt).tv64 / NSEC_PER_SEC) > > + > > NSEC_PER_USEC? On 64 bit platforms, ktime stores nano-seconds in a 64 bit value, so this is correct. > > > +static inline s64 ktime_to_us(const ktime_t kt) > > +{ > > + return (s64) kt.tv_sec * USEC_PER_SEC + kt.tv_nsec / NSEC_PER_USEC; > > +} > > + > > Please do NOT use division here, which was the source of the > linkage error, and the reason why I posted a patch to use > ktime_to_timeval(). On 32 bit platforms, ktime stores as two 32 bit values. Therefore the division is only 32bit and therefore okay. Corrected patch. --------------------------- From 04d3583fbb763deeb9d33c90239a8d35e66e0c1e Mon Sep 17 00:00:00 2001 From: Stephen Hemminger <shemminger@linux-foundation.org> Date: Tue, 24 Apr 2007 12:44:33 -0700 Subject: [PATCH] ktime_to_us: for TCP usage. Argh, Monday sucks. Sorry, need to build on 32bit every time... Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> --- include/linux/ktime.h | 13 +++++++++++++ net/ipv4/tcp_illinois.c | 2 +- net/ipv4/tcp_lp.c | 2 +- net/ipv4/tcp_vegas.c | 2 +- net/ipv4/tcp_veno.c | 2 +- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/include/linux/ktime.h b/include/linux/ktime.h index 248305b..3793490 100644 --- a/include/linux/ktime.h +++ b/include/linux/ktime.h @@ -121,6 +121,8 @@ static inline ktime_t timeval_to_ktime(struct timeval tv) /* Convert ktime_t to nanoseconds - NOP in the scalar storage format: */ #define ktime_to_ns(kt) ((kt).tv64) +#define ktime_to_us(kt) ((kt).tv64 / NSEC_PER_SEC) + #else /* @@ -257,6 +259,17 @@ static inline s64 ktime_to_ns(const ktime_t kt) return (s64) kt.tv.sec * NSEC_PER_SEC + kt.tv.nsec; } +/** + * ktime_to_us - convert a ktime_t variable to scalar microseconds + * @kt: the ktime_t variable to convert + * + * Returns the scalar nanoseconds representation of @kt + */ +static inline s64 ktime_to_us(const ktime_t kt) +{ + return (s64) kt.tv.sec * USEC_PER_SEC + kt.tv.nsec / NSEC_PER_USEC; +} + #endif /* diff --git a/net/ipv4/tcp_illinois.c b/net/ipv4/tcp_illinois.c index 8e31659..4adc47c 100644 --- a/net/ipv4/tcp_illinois.c +++ b/net/ipv4/tcp_illinois.c @@ -90,7 +90,7 @@ static void tcp_illinois_acked(struct sock *sk, u32 pkts_acked, ktime_t last) ca->acked = pkts_acked; - rtt = ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC; + rtt = ktime_to_us(net_timedelta(last)); /* ignore bogus values, this prevents wraparound in alpha math */ if (rtt > RTT_MAX) diff --git a/net/ipv4/tcp_lp.c b/net/ipv4/tcp_lp.c index b4e062a..43294ad 100644 --- a/net/ipv4/tcp_lp.c +++ b/net/ipv4/tcp_lp.c @@ -266,7 +266,7 @@ static void tcp_lp_pkts_acked(struct sock *sk, u32 num_acked, ktime_t last) struct tcp_sock *tp = tcp_sk(sk); struct lp *lp = inet_csk_ca(sk); - tcp_lp_rtt_sample(sk, ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC); + tcp_lp_rtt_sample(sk, ktime_to_us(net_timedelta(last))); /* calc inference */ if (tcp_time_stamp > tp->rx_opt.rcv_tsecr) diff --git a/net/ipv4/tcp_vegas.c b/net/ipv4/tcp_vegas.c index 0f0ee7f..73e19cf 100644 --- a/net/ipv4/tcp_vegas.c +++ b/net/ipv4/tcp_vegas.c @@ -118,7 +118,7 @@ void tcp_vegas_pkts_acked(struct sock *sk, u32 cnt, ktime_t last) u32 vrtt; /* Never allow zero rtt or baseRTT */ - vrtt = (ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC) + 1; + vrtt = ktime_to_us(net_timedelta(last)) + 1; /* Filter to find propagation delay: */ if (vrtt < vegas->baseRTT) diff --git a/net/ipv4/tcp_veno.c b/net/ipv4/tcp_veno.c index 0b50d06..9edb340 100644 --- a/net/ipv4/tcp_veno.c +++ b/net/ipv4/tcp_veno.c @@ -75,7 +75,7 @@ static void tcp_veno_pkts_acked(struct sock *sk, u32 cnt, ktime_t last) u32 vrtt; /* Never allow zero rtt or baseRTT */ - vrtt = (ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC) + 1; + vrtt = ktime_to_us(net_timedelta(last)) + 1; /* Filter to find propagation delay: */ if (vrtt < veno->basertt) -- 1.5.0.6 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH] Fix build errors on 32bit platforms with new ktime 2007-04-24 21:57 ` Stephen Hemminger @ 2007-04-24 22:12 ` Eric Dumazet 2007-04-24 22:29 ` Stephen Hemminger 2007-04-24 22:15 ` Thomas Gleixner 1 sibling, 1 reply; 18+ messages in thread From: Eric Dumazet @ 2007-04-24 22:12 UTC (permalink / raw) To: Stephen Hemminger Cc: YOSHIFUJI Hideaki / 吉藤英明, bunk, davem, netdev, tglx Stephen Hemminger a écrit : > On Wed, 25 Apr 2007 06:55:39 +0900 (JST) > YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org> wrote: > >> In article <20070424100420.2860db68@dxpl.pdx.osdl.net> (at Tue, 24 Apr 2007 10:04:20 -0700), Stephen Hemminger <shemminger@linux-foundation.org> says: >> >>> Yoshifuji-san had the right idea, but ktime_to_us needs to be defined >>> in a way that works on both 64 and 32bit platforms. >> No, this does not cure. >>> >>> +#define ktime_to_us(kt) ((kt).tv64 / NSEC_PER_SEC) >>> + >> NSEC_PER_USEC? > > On 64 bit platforms, ktime stores nano-seconds in a 64 bit value, so > this is correct. Really ? You introduce a 10^6 error and say it's correct ? We believe the correct divisor is 10^3 to get usec from nsec, not 10^9 ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] Fix build errors on 32bit platforms with new ktime 2007-04-24 22:12 ` Eric Dumazet @ 2007-04-24 22:29 ` Stephen Hemminger 0 siblings, 0 replies; 18+ messages in thread From: Stephen Hemminger @ 2007-04-24 22:29 UTC (permalink / raw) To: Eric Dumazet Cc: YOSHIFUJI Hideaki / 吉藤英明, bunk, davem, netdev, tglx On Wed, 25 Apr 2007 00:12:38 +0200 Eric Dumazet <dada1@cosmosbay.com> wrote: > Stephen Hemminger a écrit : > > On Wed, 25 Apr 2007 06:55:39 +0900 (JST) > > YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org> wrote: > > > >> In article <20070424100420.2860db68@dxpl.pdx.osdl.net> (at Tue, 24 Apr 2007 10:04:20 -0700), Stephen Hemminger <shemminger@linux-foundation.org> says: > >> > >>> Yoshifuji-san had the right idea, but ktime_to_us needs to be defined > >>> in a way that works on both 64 and 32bit platforms. > >> No, this does not cure. > >>> > >>> +#define ktime_to_us(kt) ((kt).tv64 / NSEC_PER_SEC) > >>> + > >> NSEC_PER_USEC? > > > > On 64 bit platforms, ktime stores nano-seconds in a 64 bit value, so > > this is correct. > > Really ? You introduce a 10^6 error and say it's correct ? > > We believe the correct divisor is 10^3 to get usec from nsec, not 10^9 > Uh, whimper, your right ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] Fix build errors on 32bit platforms with new ktime 2007-04-24 21:57 ` Stephen Hemminger 2007-04-24 22:12 ` Eric Dumazet @ 2007-04-24 22:15 ` Thomas Gleixner 2007-04-24 22:49 ` YOSHIFUJI Hideaki / 吉藤英明 1 sibling, 1 reply; 18+ messages in thread From: Thomas Gleixner @ 2007-04-24 22:15 UTC (permalink / raw) To: Stephen Hemminger Cc: YOSHIFUJI Hideaki / 吉藤英明, dada1, bunk, davem, netdev On Tue, 2007-04-24 at 14:57 -0700, Stephen Hemminger wrote: > On Wed, 25 Apr 2007 06:55:39 +0900 (JST) > YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org> wrote: > > > In article <20070424100420.2860db68@dxpl.pdx.osdl.net> (at Tue, 24 Apr 2007 10:04:20 -0700), Stephen Hemminger <shemminger@linux-foundation.org> says: > > > > > Yoshifuji-san had the right idea, but ktime_to_us needs to be defined > > > in a way that works on both 64 and 32bit platforms. > > > > No, this does not cure. > > > > > > +#define ktime_to_us(kt) ((kt).tv64 / NSEC_PER_SEC) > > > + > > > > NSEC_PER_USEC? > > On 64 bit platforms, ktime stores nano-seconds in a 64 bit value, so > this is correct. Err, nsec_value / NSEC_PER_SEC results in seconds AFAICS nsec_value / NSEC_PER_USEC gives you microseconds > > > > > +static inline s64 ktime_to_us(const ktime_t kt) > > > +{ > > > + return (s64) kt.tv_sec * USEC_PER_SEC + kt.tv_nsec / NSEC_PER_USEC; > > > +} > > > + > > > > Please do NOT use division here, which was the source of the > > linkage error, and the reason why I posted a patch to use > > ktime_to_timeval(). > > On 32 bit platforms, ktime stores as two 32 bit values. Therefore the > division is only 32bit and therefore okay. Nope. #if BITS_PER_LONG != 64 && !defined(CONFIG_KTIME_SCALAR) .... and on i386 config KTIME_SCALAR bool default y so you take the ktime_to_timeval is probably the right way for it. tglx ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] Fix build errors on 32bit platforms with new ktime 2007-04-24 22:15 ` Thomas Gleixner @ 2007-04-24 22:49 ` YOSHIFUJI Hideaki / 吉藤英明 2007-04-24 23:22 ` David Miller 0 siblings, 1 reply; 18+ messages in thread From: YOSHIFUJI Hideaki / 吉藤英明 @ 2007-04-24 22:49 UTC (permalink / raw) To: tglx, davem; +Cc: shemminger, dada1, bunk, netdev, yoshfuji In article <1177452915.30986.61.camel@localhost.localdomain> (at Wed, 25 Apr 2007 00:15:15 +0200), Thomas Gleixner <tglx@linutronix.de> says: > On Tue, 2007-04-24 at 14:57 -0700, Stephen Hemminger wrote: > > On Wed, 25 Apr 2007 06:55:39 +0900 (JST) > > YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org> wrote: > > > > > In article <20070424100420.2860db68@dxpl.pdx.osdl.net> (at Tue, 24 Apr 2007 10:04:20 -0700), Stephen Hemminger <shemminger@linux-foundation.org> says: > > > > > > > Yoshifuji-san had the right idea, but ktime_to_us needs to be defined > > > > in a way that works on both 64 and 32bit platforms. > > > > > > No, this does not cure. > > > > > > > > +#define ktime_to_us(kt) ((kt).tv64 / NSEC_PER_SEC) > > > > + > > > > > > NSEC_PER_USEC? > > > > On 64 bit platforms, ktime stores nano-seconds in a 64 bit value, so > > this is correct. > > Err, nsec_value / NSEC_PER_SEC results in seconds AFAICS > > nsec_value / NSEC_PER_USEC gives you microseconds > > > > > > > > +static inline s64 ktime_to_us(const ktime_t kt) > > > > +{ > > > > + return (s64) kt.tv_sec * USEC_PER_SEC + kt.tv_nsec / NSEC_PER_USEC; > > > > +} > > > > + > > > > > > Please do NOT use division here, which was the source of the > > > linkage error, and the reason why I posted a patch to use > > > ktime_to_timeval(). > > > > On 32 bit platforms, ktime stores as two 32 bit values. Therefore the > > division is only 32bit and therefore okay. > > Nope. > > #if BITS_PER_LONG != 64 && !defined(CONFIG_KTIME_SCALAR) > .... > > and on i386 > > config KTIME_SCALAR > bool > default y > > so you take the > > ktime_to_timeval is probably the right way for it. ---- [TCP]: Fix linkage errors on i386. To avoid raw division, use ktime_to_timeval() to get usec. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> -- diff --git a/include/linux/ktime.h b/include/linux/ktime.h index 248305b..81bb9c7 100644 --- a/include/linux/ktime.h +++ b/include/linux/ktime.h @@ -259,6 +259,12 @@ static inline s64 ktime_to_ns(const ktime_t kt) #endif +static inline s64 ktime_to_us(const ktime_t kt) +{ + struct timeval tv = ktime_to_timeval(kt); + return (s64) tv.tv_sec * USEC_PER_SEC + tv.tv_usec; +} + /* * The resolution of the clocks. The resolution value is returned in * the clock_getres() system call to give application programmers an diff --git a/net/ipv4/tcp_illinois.c b/net/ipv4/tcp_illinois.c index 8e31659..4adc47c 100644 --- a/net/ipv4/tcp_illinois.c +++ b/net/ipv4/tcp_illinois.c @@ -90,7 +90,7 @@ static void tcp_illinois_acked(struct sock *sk, u32 pkts_acked, ktime_t last) ca->acked = pkts_acked; - rtt = ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC; + rtt = ktime_to_us(net_timedelta(last)); /* ignore bogus values, this prevents wraparound in alpha math */ if (rtt > RTT_MAX) diff --git a/net/ipv4/tcp_lp.c b/net/ipv4/tcp_lp.c index b4e062a..43294ad 100644 --- a/net/ipv4/tcp_lp.c +++ b/net/ipv4/tcp_lp.c @@ -266,7 +266,7 @@ static void tcp_lp_pkts_acked(struct sock *sk, u32 num_acked, ktime_t last) struct tcp_sock *tp = tcp_sk(sk); struct lp *lp = inet_csk_ca(sk); - tcp_lp_rtt_sample(sk, ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC); + tcp_lp_rtt_sample(sk, ktime_to_us(net_timedelta(last))); /* calc inference */ if (tcp_time_stamp > tp->rx_opt.rcv_tsecr) diff --git a/net/ipv4/tcp_vegas.c b/net/ipv4/tcp_vegas.c index 0f0ee7f..73e19cf 100644 --- a/net/ipv4/tcp_vegas.c +++ b/net/ipv4/tcp_vegas.c @@ -118,7 +118,7 @@ void tcp_vegas_pkts_acked(struct sock *sk, u32 cnt, ktime_t last) u32 vrtt; /* Never allow zero rtt or baseRTT */ - vrtt = (ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC) + 1; + vrtt = ktime_to_us(net_timedelta(last)) + 1; /* Filter to find propagation delay: */ if (vrtt < vegas->baseRTT) diff --git a/net/ipv4/tcp_veno.c b/net/ipv4/tcp_veno.c index 0b50d06..9edb340 100644 --- a/net/ipv4/tcp_veno.c +++ b/net/ipv4/tcp_veno.c @@ -75,7 +75,7 @@ static void tcp_veno_pkts_acked(struct sock *sk, u32 cnt, ktime_t last) u32 vrtt; /* Never allow zero rtt or baseRTT */ - vrtt = (ktime_to_ns(net_timedelta(last)) / NSEC_PER_USEC) + 1; + vrtt = ktime_to_us(net_timedelta(last)) + 1; /* Filter to find propagation delay: */ if (vrtt < veno->basertt) -- YOSHIFUJI Hideaki @ USAGI Project <yoshfuji@linux-ipv6.org> GPG-FP : 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH] Fix build errors on 32bit platforms with new ktime 2007-04-24 22:49 ` YOSHIFUJI Hideaki / 吉藤英明 @ 2007-04-24 23:22 ` David Miller 0 siblings, 0 replies; 18+ messages in thread From: David Miller @ 2007-04-24 23:22 UTC (permalink / raw) To: yoshfuji; +Cc: tglx, shemminger, dada1, bunk, netdev From: YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org> Date: Wed, 25 Apr 2007 07:49:32 +0900 (JST) > [TCP]: Fix linkage errors on i386. > > To avoid raw division, use ktime_to_timeval() to get usec. > > Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> This one looks good to me, patch applied. Thanks. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [net-2.6.22] [TCP]: Fix linkage errors. 2007-04-24 15:53 ` Adrian Bunk 2007-04-24 15:58 ` YOSHIFUJI Hideaki / 吉藤英明 @ 2007-04-24 16:03 ` Eric Dumazet 2007-04-24 18:17 ` Adrian Bunk 1 sibling, 1 reply; 18+ messages in thread From: Eric Dumazet @ 2007-04-24 16:03 UTC (permalink / raw) To: Adrian Bunk Cc: YOSHIFUJI Hideaki / ____________, davem, shemminger, netdev, Thomas Gleixner On Tue, 24 Apr 2007 17:53:24 +0200 Adrian Bunk <bunk@stusta.de> wrote: > Couldn't this be better solved by adding something like the following > to include/linux/ktime.h ? > > static inline s64 ktime_to_us(const ktime_t kt) > { > return (s64) kt.tv.sec * USEC_PER_SEC + kt.tv.nsec / NSEC_PER_USEC; > } > Please check again include/linux/ktime.h tv struct is defined inside 'ktime_t' only if BITS_PER_LONG != 64 && !defined(CONFIG_KTIME_SCALAR) ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [net-2.6.22] [TCP]: Fix linkage errors. 2007-04-24 16:03 ` [net-2.6.22] [TCP]: Fix linkage errors Eric Dumazet @ 2007-04-24 18:17 ` Adrian Bunk 0 siblings, 0 replies; 18+ messages in thread From: Adrian Bunk @ 2007-04-24 18:17 UTC (permalink / raw) To: Eric Dumazet Cc: YOSHIFUJI Hideaki / ____________, davem, shemminger, netdev, Thomas Gleixner On Tue, Apr 24, 2007 at 06:03:48PM +0200, Eric Dumazet wrote: > On Tue, 24 Apr 2007 17:53:24 +0200 > Adrian Bunk <bunk@stusta.de> wrote: > > Couldn't this be better solved by adding something like the following > > to include/linux/ktime.h ? > > > > static inline s64 ktime_to_us(const ktime_t kt) > > { > > return (s64) kt.tv.sec * USEC_PER_SEC + kt.tv.nsec / NSEC_PER_USEC; > > } > > > > Please check again include/linux/ktime.h > > tv struct is defined inside 'ktime_t' only if BITS_PER_LONG != 64 && !defined(CONFIG_KTIME_SCALAR) That's the difference between a "what about" suggestion and an actual patch... I was merely suggesting solvin it through a ktime_to_us(), not presenting a complete and tested patch. cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2007-04-24 23:21 UTC | newest] Thread overview: 18+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-04-24 15:17 [net-2.6.22] [TCP]: Fix linkage errors YOSHIFUJI Hideaki / 吉藤英明 2007-04-24 15:53 ` Adrian Bunk 2007-04-24 15:58 ` YOSHIFUJI Hideaki / 吉藤英明 2007-04-24 16:10 ` YOSHIFUJI Hideaki / 吉藤英明 2007-04-24 16:38 ` Eric Dumazet 2007-04-24 17:04 ` [PATCH] Fix build errors on 32bit platforms with new ktime Stephen Hemminger 2007-04-24 18:19 ` Adrian Bunk 2007-04-24 18:48 ` Eric Dumazet 2007-04-24 21:54 ` David Miller 2007-04-24 21:55 ` YOSHIFUJI Hideaki / 吉藤英明 2007-04-24 21:57 ` Stephen Hemminger 2007-04-24 22:12 ` Eric Dumazet 2007-04-24 22:29 ` Stephen Hemminger 2007-04-24 22:15 ` Thomas Gleixner 2007-04-24 22:49 ` YOSHIFUJI Hideaki / 吉藤英明 2007-04-24 23:22 ` David Miller 2007-04-24 16:03 ` [net-2.6.22] [TCP]: Fix linkage errors Eric Dumazet 2007-04-24 18:17 ` Adrian Bunk
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).