From: Arnaldo Carvalho de Melo <acme@redhat.com>
To: dccp@vger.kernel.org
Subject: Re: [PATCH 5/8] [TFRC]: Loss interval code needs the
Date: Sat, 08 Dec 2007 18:47:11 +0000 [thread overview]
Message-ID: <20071208184711.GF3180@ghostprotocols.net> (raw)
In-Reply-To: <11971083883727-git-send-email-gerrit@erg.abdn.ac.uk>
Em Sat, Dec 08, 2007 at 10:06:25AM +0000, Gerrit Renker escreveu:
> This moves the inlines (which were previously declared as macros) back into packet_history.h since
> the loss detection code needs to be able to read entries from the RX history in order to create the
> relevant loss entries: it needs at least tfrc_rx_hist_loss_prev() and tfrc_rx_hist_last_rcv(), which
> in turn require the definition of the other inlines (macros).
>
> Additionally, inn one case the use of inlines instead of a macro broke the algorithm: rx_hist_swap()
> (introduced in next patch) needs to be able to swap the history entries; when using an inline returning
> a pointer instead, one gets compilation errors such as:
>
> distcc[24516] ERROR: compile /root/.ccache/packet_his.tmp.aspire.home.net.24512.i on _tiptop failed
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c: In function '__one_after_loss':
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c:266: error: lvalue required as unary '&' operand
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c:267: error: lvalue required as unary '&' operand
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c: In function '__two_after_loss':
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c:298: error: lvalue required as unary '&' operand
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c:299: error: lvalue required as unary '&' operand
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c:336: error: lvalue required as unary '&' operand
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c:337: error: lvalue required as unary '&' operand
> make[4]: *** [net/dccp/ccids/lib/packet_history.o] Error 1
> make[3]: *** [net/dccp/ccids/lib] Error 2
> make[2]: *** [net/dccp/ccids] Error 2
> make[1]: *** [net/dccp/] Error 2
> make: *** [sub-make] Error 2
Because you do it this way:
tfrc_rx_hist_swap(&TFRC_RX_HIST_ENTRY(h, 0), &TFRC_RX_HIST_ENTRY(h, 3));
I checked and at least in this patch series all uses are of this type,
so why not do it using just the indexes, which would be simpler:
tfrc_rx_hist_swap(h, 0, 3);
With this implementation:
static void tfrc_rx_hist_swap(struct tfrc_rx_hist *h, const int a, const int b)
{
const int idx_a = tfrc_rx_hist_index(h, a),
int idx_b = tfrc_rx_hist_index(h, b);
struct tfrc_rx_hist_entry *tmp = h->ring[idx_a];
h->ring[idx_a] = h->ring[idx_b];
h->ring[idx_b] = tmp;
}
- Arnaldo
WARNING: multiple messages have this Message-ID (diff)
From: Arnaldo Carvalho de Melo <acme@redhat.com>
To: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Cc: dccp@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH 5/8] [TFRC]: Loss interval code needs the macros/inlines that were moved
Date: Sat, 8 Dec 2007 16:47:11 -0200 [thread overview]
Message-ID: <20071208184711.GF3180@ghostprotocols.net> (raw)
In-Reply-To: <11971083883727-git-send-email-gerrit@erg.abdn.ac.uk>
Em Sat, Dec 08, 2007 at 10:06:25AM +0000, Gerrit Renker escreveu:
> This moves the inlines (which were previously declared as macros) back into packet_history.h since
> the loss detection code needs to be able to read entries from the RX history in order to create the
> relevant loss entries: it needs at least tfrc_rx_hist_loss_prev() and tfrc_rx_hist_last_rcv(), which
> in turn require the definition of the other inlines (macros).
>
> Additionally, inn one case the use of inlines instead of a macro broke the algorithm: rx_hist_swap()
> (introduced in next patch) needs to be able to swap the history entries; when using an inline returning
> a pointer instead, one gets compilation errors such as:
>
> distcc[24516] ERROR: compile /root/.ccache/packet_his.tmp.aspire.home.net.24512.i on _tiptop failed
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c: In function '__one_after_loss':
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c:266: error: lvalue required as unary '&' operand
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c:267: error: lvalue required as unary '&' operand
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c: In function '__two_after_loss':
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c:298: error: lvalue required as unary '&' operand
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c:299: error: lvalue required as unary '&' operand
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c:336: error: lvalue required as unary '&' operand
> /usr/src/davem-2.6/net/dccp/ccids/lib/packet_history.c:337: error: lvalue required as unary '&' operand
> make[4]: *** [net/dccp/ccids/lib/packet_history.o] Error 1
> make[3]: *** [net/dccp/ccids/lib] Error 2
> make[2]: *** [net/dccp/ccids] Error 2
> make[1]: *** [net/dccp/] Error 2
> make: *** [sub-make] Error 2
Because you do it this way:
tfrc_rx_hist_swap(&TFRC_RX_HIST_ENTRY(h, 0), &TFRC_RX_HIST_ENTRY(h, 3));
I checked and at least in this patch series all uses are of this type,
so why not do it using just the indexes, which would be simpler:
tfrc_rx_hist_swap(h, 0, 3);
With this implementation:
static void tfrc_rx_hist_swap(struct tfrc_rx_hist *h, const int a, const int b)
{
const int idx_a = tfrc_rx_hist_index(h, a),
int idx_b = tfrc_rx_hist_index(h, b);
struct tfrc_rx_hist_entry *tmp = h->ring[idx_a];
h->ring[idx_a] = h->ring[idx_b];
h->ring[idx_b] = tmp;
}
- Arnaldo
next prev parent reply other threads:[~2007-12-08 18:47 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-08 10:06 [PATCH 5/8] [TFRC]: Loss interval code needs the macros/inlines that were moved Gerrit Renker
2007-12-08 10:06 ` Gerrit Renker
2007-12-08 18:47 ` Arnaldo Carvalho de Melo [this message]
2007-12-08 18:47 ` Arnaldo Carvalho de Melo
2007-12-10 11:31 ` Gerrit Renker
2007-12-10 11:31 ` Gerrit Renker
2007-12-10 11:48 ` [PATCH 5/8] [TFRC]: Loss interval code needs the Arnaldo Carvalho de Melo
2007-12-10 11:48 ` [PATCH 5/8] [TFRC]: Loss interval code needs the macros/inlines that were moved Arnaldo Carvalho de Melo
-- strict thread matches above, loose matches on Subject: below --
2007-12-08 10:06 [PATCH 8/8] [PATCH v2] [CCID3]: Interface CCID3 code with newer Loss Intervals Database Gerrit Renker
2007-12-08 10:06 ` Gerrit Renker
2007-12-10 21:04 ` [PATCH 8/8] [PATCH v2] [CCID3]: Interface CCID3 code with Arnaldo Carvalho de Melo
2007-12-10 21:04 ` [PATCH 8/8] [PATCH v2] [CCID3]: Interface CCID3 code with newer Loss Intervals Database Arnaldo Carvalho de Melo
2007-12-11 9:42 ` Gerrit Renker
2007-12-11 9:42 ` Gerrit Renker
2007-12-11 17:22 ` [PATCH 8/8] [PATCH v2] [CCID3]: Interface CCID3 code with Arnaldo Carvalho de Melo
2007-12-11 17:22 ` [PATCH 8/8] [PATCH v2] [CCID3]: Interface CCID3 code with newer Loss Intervals Database Arnaldo Carvalho de Melo
2007-12-12 16:56 ` Gerrit Renker
2007-12-12 16:56 ` Gerrit Renker
2007-12-12 17:05 ` [PATCH 8/8] [PATCH v2] [CCID3]: Interface CCID3 code with Arnaldo Carvalho de Melo
2007-12-12 17:05 ` [PATCH 8/8] [PATCH v2] [CCID3]: Interface CCID3 code with newer Loss Intervals Database Arnaldo Carvalho de Melo
2007-12-12 17:21 ` Gerrit Renker
2007-12-12 17:21 ` Gerrit Renker
2007-12-08 10:06 [PATCH 7/8] [TFRC]: CCID3 (and CCID4) needs to access these inlines Gerrit Renker
2007-12-08 10:06 ` Gerrit Renker
2007-12-08 10:06 [PATCH 6/8] [PATCH v2] [TFRC]: Ringbuffer to track loss interval history Gerrit Renker
2007-12-08 10:06 ` Gerrit Renker
2007-12-08 10:06 [PATCH 4/8] [TFRC]: Need separate entry_from_skb routine Gerrit Renker
2007-12-08 10:06 ` Gerrit Renker
2007-12-08 10:06 [PATCH 3/8] [TFRC/CCID3]: Remove now unused functions / function calls Gerrit Renker
2007-12-08 10:06 ` Gerrit Renker
2007-12-08 17:16 ` [PATCH 3/8] [TFRC/CCID3]: Remove now unused functions / Arnaldo Carvalho de Melo
2007-12-08 17:16 ` [PATCH 3/8] [TFRC/CCID3]: Remove now unused functions / function calls Arnaldo Carvalho de Melo
2007-12-08 10:06 [PATCH 2/8] [TFRC]: Put RX/TX initialisation into tfrc.c Gerrit Renker
2007-12-08 10:06 ` Gerrit Renker
2007-12-08 17:13 ` Arnaldo Carvalho de Melo
2007-12-08 17:13 ` Arnaldo Carvalho de Melo
2007-12-10 10:56 ` Gerrit Renker
2007-12-10 10:56 ` Gerrit Renker
2007-12-08 10:06 [PATCH 1/8] [TFRC]: Whitespace cleanups Gerrit Renker
2007-12-08 10:06 ` Gerrit Renker
2007-12-08 17:08 ` Arnaldo Carvalho de Melo
2007-12-08 17:08 ` Arnaldo Carvalho de Melo
2007-12-08 10:06 [PATCH 0/8] [DCCP]: Updates and fixes to ensure code works with recent changes Gerrit Renker
2007-12-08 10:06 ` Gerrit Renker
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=20071208184711.GF3180@ghostprotocols.net \
--to=acme@redhat.com \
--cc=dccp@vger.kernel.org \
/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.