Call next ion->reg_tx_done() before tx_done() callback ?

I’m writing net filter (QNX 6.3.2) and (I hope) this is my lasy question:

Should I call ion->reg_tx_done() always before ion->tx_down()
or
should I call ion->reg_tx_done() just befor first ion->tx_down()
and than call ion->tx_down() without preceding ion->reg_tx_done()
right up to tx_done() callback, and after that tx_done()
call ion->reg_tx_done() (of course before ion->tx_down())
?

Q <no@spam.pl> wrote:

I’m writing net filter (QNX 6.3.2) and (I hope) this is my lasy question:

Should I call ion->reg_tx_done() always before ion->tx_down()

Yes.

or
should I call ion->reg_tx_done() just befor first ion->tx_down()
and than call ion->tx_down() without preceding ion->reg_tx_done()
right up to tx_done() callback, and after that tx_done()
call ion->reg_tx_done() (of course before ion->tx_down())
?

Q <no@spam.pl> wrote:

I’m writing net filter (QNX 6.3.2) and (I hope) this is my lasy question:

Should I call ion->reg_tx_done() always before ion->tx_down()
or
should I call ion->reg_tx_done() just befor first ion->tx_down()
and than call ion->tx_down() without preceding ion->reg_tx_done()
right up to tx_done() callback, and after that tx_done()
call ion->reg_tx_done() (of course before ion->tx_down())
?

re-reading this, if you’re using the same packet over and
over this amounts to the same thing; however if you inject
new packets into the mix this latter opens the window where
they could be sent without reg_tx_done() so the former is
safer.

-seanb