Commit bcec9ecb authored by Alex Elder's avatar Alex Elder Committed by David S. Miller

net: ipa: derive channel from transaction

In gsi_channel_tx_queued(), we report when a transaction gets passed
to hardware.  Change that function so it takes transaction rather
than a channel as its argument, and derive the channel from the
transaction.  Rename the function accordingly.

Delete the header comments above the function definition; the ones
above the declaration in "gsi_private.h" should suffice.  In
addition, the comments above gsi_channel_tx_update() do a fine job
of explaining what's going on.
Signed-off-by: default avatarAlex Elder <elder@linaro.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7dd9558f
...@@ -991,36 +991,22 @@ void gsi_resume(struct gsi *gsi) ...@@ -991,36 +991,22 @@ void gsi_resume(struct gsi *gsi)
enable_irq(gsi->irq); enable_irq(gsi->irq);
} }
/** void gsi_trans_tx_queued(struct gsi_trans *trans)
* gsi_channel_tx_queued() - Report queued TX transfers for a channel
* @channel: Channel for which to report
*
* Report to the network stack the number of bytes and transactions that
* have been queued to hardware since last call. This and the next function
* supply information used by the network stack for throttling.
*
* For each channel we track the number of transactions used and bytes of
* data those transactions represent. We also track what those values are
* each time this function is called. Subtracting the two tells us
* the number of bytes and transactions that have been added between
* successive calls.
*
* Calling this each time we ring the channel doorbell allows us to
* provide accurate information to the network stack about how much
* work we've given the hardware at any point in time.
*/
void gsi_channel_tx_queued(struct gsi_channel *channel)
{ {
u32 channel_id = trans->channel_id;
struct gsi *gsi = trans->gsi;
struct gsi_channel *channel;
u32 trans_count; u32 trans_count;
u32 byte_count; u32 byte_count;
channel = &gsi->channel[channel_id];
byte_count = channel->byte_count - channel->queued_byte_count; byte_count = channel->byte_count - channel->queued_byte_count;
trans_count = channel->trans_count - channel->queued_trans_count; trans_count = channel->trans_count - channel->queued_trans_count;
channel->queued_byte_count = channel->byte_count; channel->queued_byte_count = channel->byte_count;
channel->queued_trans_count = channel->trans_count; channel->queued_trans_count = channel->trans_count;
ipa_gsi_channel_tx_queued(channel->gsi, gsi_channel_id(channel), ipa_gsi_channel_tx_queued(gsi, channel_id, trans_count, byte_count);
trans_count, byte_count);
} }
/** /**
......
...@@ -105,14 +105,12 @@ void gsi_channel_doorbell(struct gsi_channel *channel); ...@@ -105,14 +105,12 @@ void gsi_channel_doorbell(struct gsi_channel *channel);
void *gsi_ring_virt(struct gsi_ring *ring, u32 index); void *gsi_ring_virt(struct gsi_ring *ring, u32 index);
/** /**
* gsi_channel_tx_queued() - Report the number of bytes queued to hardware * gsi_trans_tx_queued() - Report a queued TX channel transaction
* @channel: Channel whose bytes have been queued * @trans: Transaction being passed to hardware
* *
* This arranges for the the number of transactions and bytes for * Report to the network stack that a TX transaction is being supplied
* transfer that have been queued to hardware to be reported. It * to the hardware.
* passes this information up the network stack so it can be used to
* throttle transmissions.
*/ */
void gsi_channel_tx_queued(struct gsi_channel *channel); void gsi_trans_tx_queued(struct gsi_trans *trans);
#endif /* _GSI_PRIVATE_H_ */ #endif /* _GSI_PRIVATE_H_ */
...@@ -603,7 +603,7 @@ static void __gsi_trans_commit(struct gsi_trans *trans, bool ring_db) ...@@ -603,7 +603,7 @@ static void __gsi_trans_commit(struct gsi_trans *trans, bool ring_db)
if (ring_db || !atomic_read(&channel->trans_info.tre_avail)) { if (ring_db || !atomic_read(&channel->trans_info.tre_avail)) {
/* Report what we're handing off to hardware for TX channels */ /* Report what we're handing off to hardware for TX channels */
if (channel->toward_ipa) if (channel->toward_ipa)
gsi_channel_tx_queued(channel); gsi_trans_tx_queued(trans);
gsi_channel_doorbell(channel); gsi_channel_doorbell(channel);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment