netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ben Hutchings <bhutchings@solarflare.com>
To: Michael Chan <mchan@broadcom.com>
Cc: <davem@davemloft.net>, <netdev@vger.kernel.org>
Subject: Re: [PATCH 1/3 net-next] bnx2: Add support for ethtool --show-channels|--set-channels
Date: Tue, 7 Feb 2012 22:36:27 +0000	[thread overview]
Message-ID: <1328654187.3549.40.camel@bwh-desktop> (raw)
In-Reply-To: <1328652088.3549.30.camel@bwh-desktop>

On Tue, 2012-02-07 at 22:01 +0000, Ben Hutchings wrote:
> On Tue, 2012-02-07 at 12:58 -0800, Michael Chan wrote:
> > On Tue, 2012-02-07 at 20:19 +0000, Ben Hutchings wrote:
> > > On Sun, 2012-02-05 at 17:24 -0800, Michael Chan wrote:
> > > > Allow the user to override the default number of RSS/TSS rings.
> > > > 
> > > > Signed-off-by: Michael Chan <mchan@broadcom.com>
> > > > ---
> > > >  drivers/net/ethernet/broadcom/bnx2.c |   99 ++++++++++++++++++++++++++++++---
> > > >  drivers/net/ethernet/broadcom/bnx2.h |    3 +
> > > >  2 files changed, 93 insertions(+), 9 deletions(-)
> > > > 
> > > > diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
> > > > index 0a4c540..2ab31da 100644
> > > > --- a/drivers/net/ethernet/broadcom/bnx2.c
> > > > +++ b/drivers/net/ethernet/broadcom/bnx2.c
> > > > @@ -6246,7 +6246,16 @@ static int
> > > >  bnx2_setup_int_mode(struct bnx2 *bp, int dis_msi)
> > > >  {
> > > >  	int cpus = num_online_cpus();
> > > > -	int msix_vecs = min(cpus + 1, RX_MAX_RINGS);
> > > > +	int msix_vecs;
> > > > +
> > > > +	if (!bp->num_req_rx_rings)
> > > > +		msix_vecs = max(cpus + 1, bp->num_req_tx_rings);
> > > > +	else if (!bp->num_req_tx_rings)
> > > > +		msix_vecs = max(cpus, bp->num_req_rx_rings);
> > > > +	else
> > > > +		msix_vecs = max(bp->num_req_rx_rings, bp->num_req_tx_rings);
> > > > +
> > > > +	msix_vecs = min(msix_vecs, RX_MAX_RINGS);
> > > 
> > > If I read this correctly, IRQs may be shared between RX and TX queues
> > > i.e. there may be 'combined channels'.
> > 
> > It is true that an IRQ can have a TX and a RX queue, but they don't both
> > have to be enabled.  Because of that, it is easier to treat them as
> > independent queues.  They are independent in all aspects except the IRQ.
> 
> Given that these numbers can be set independently, I can see that
> treating TX and RX queues as having separate sets of channels might make
> the set_channels operation easier to understand.
> 
> The kernel-doc actually committed for struct ethtool_channels is not at
> all clear on what is meant by a 'channel', but it was certainly my
> intent that a channel should correspond to one IRQ and the total number
> of IRQs used by a device would be equal to the sum of
> {rx,tx,other,combined}_count.  Which is certainly not the case for the
> implementation in bnx2.

It doesn't seem to be true for the original implementation in qlcnic
either.  That has 1 IRQ shared between RX and TX, with additional IRQs
for RX only, but it reports them as all separate.  (It also seems to
report the number of TX channels to be what the firmware reports as the
maximum, despite the fact the driver only uses 1.)

There really should be some way to report, and potentially change,
whether IRQs are shared between RX and TX queues.  I wonder if it isn't
too late to rename and redefine the max_combined and combined_count
fields...

Ben.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.

  reply	other threads:[~2012-02-07 22:36 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-06  1:24 [PATCH 1/3 net-next] bnx2: Add support for ethtool --show-channels|--set-channels Michael Chan
2012-02-06  1:24 ` [PATCH 2/3 net-next] bnx2: Add missing memory barrier in bnx2_start_xmit() Michael Chan
2012-02-06  1:24   ` [PATCH 3/3 net-next] cnic: Add FCoE parity error recovery Michael Chan
2012-02-06  3:46     ` David Miller
2012-02-06  3:46   ` [PATCH 2/3 net-next] bnx2: Add missing memory barrier in bnx2_start_xmit() David Miller
2012-02-06  3:46 ` [PATCH 1/3 net-next] bnx2: Add support for ethtool --show-channels|--set-channels David Miller
2012-02-07 20:19 ` Ben Hutchings
2012-02-07 20:58   ` Michael Chan
2012-02-07 22:01     ` Ben Hutchings
2012-02-07 22:36       ` Ben Hutchings [this message]
2012-02-08  1:19         ` Jesse Brandeburg

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=1328654187.3549.40.camel@bwh-desktop \
    --to=bhutchings@solarflare.com \
    --cc=davem@davemloft.net \
    --cc=mchan@broadcom.com \
    --cc=netdev@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 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).