From: Ed Swierk <eswierk@skyportsystems.com>
To: Aaro Koskinen <aaro.koskinen@iki.fi>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
David Daney <ddaney@caviumnetworks.com>,
driverdev-devel <devel@driverdev.osuosl.org>,
lkml <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 0/9] staging: octeon: multi rx group (queue) support
Date: Wed, 31 Aug 2016 09:20:07 -0700 [thread overview]
Message-ID: <57C703B7.6010900@skyportsystems.com> (raw)
In-Reply-To: <20160831062915.GD14316@raspberrypi.musicnaut.iki.fi>
Aaro Koskinen wrote:
> Oops, looks like I tested without CONFIG_NET_POLL_CONTROLLER enabled
> and that seems to be broken. Sorry.
I'm not using CONFIG_NET_POLL_CONTROLLER either; the problem is in the
normal cvm_oct_napi_poll() path.
Here's my workaround:
--- a/drivers/staging/octeon/ethernet-rx.c
+++ b/drivers/staging/octeon/ethernet-rx.c
@@ -159,7 +159,7 @@ static inline int cvm_oct_check_rcv_error(cvmx_wqe_t *work)
return 0;
}
-static int cvm_oct_poll(struct oct_rx_group *rx_group, int budget)
+static int cvm_oct_poll(int group, int budget)
{
const int coreid = cvmx_get_core_num();
u64 old_group_mask;
@@ -181,13 +181,13 @@ static int cvm_oct_poll(struct oct_rx_group *rx_group, int budget)
if (OCTEON_IS_MODEL(OCTEON_CN68XX)) {
old_group_mask = cvmx_read_csr(CVMX_SSO_PPX_GRP_MSK(coreid));
cvmx_write_csr(CVMX_SSO_PPX_GRP_MSK(coreid),
- BIT(rx_group->group));
+ BIT(group));
cvmx_read_csr(CVMX_SSO_PPX_GRP_MSK(coreid)); /* Flush */
} else {
old_group_mask = cvmx_read_csr(CVMX_POW_PP_GRP_MSKX(coreid));
cvmx_write_csr(CVMX_POW_PP_GRP_MSKX(coreid),
(old_group_mask & ~0xFFFFull) |
- BIT(rx_group->group));
+ BIT(group));
}
if (USE_ASYNC_IOBDMA) {
@@ -212,15 +212,15 @@ static int cvm_oct_poll(struct oct_rx_group *rx_group, int budget)
if (!work) {
if (OCTEON_IS_MODEL(OCTEON_CN68XX)) {
cvmx_write_csr(CVMX_SSO_WQ_IQ_DIS,
- BIT(rx_group->group));
+ BIT(group));
cvmx_write_csr(CVMX_SSO_WQ_INT,
- BIT(rx_group->group));
+ BIT(group));
} else {
union cvmx_pow_wq_int wq_int;
wq_int.u64 = 0;
- wq_int.s.iq_dis = BIT(rx_group->group);
- wq_int.s.wq_int = BIT(rx_group->group);
+ wq_int.s.iq_dis = BIT(group);
+ wq_int.s.wq_int = BIT(group);
cvmx_write_csr(CVMX_POW_WQ_INT, wq_int.u64);
}
break;
@@ -447,7 +447,7 @@ static int cvm_oct_napi_poll(struct napi_struct *napi, int budget)
napi);
int rx_count;
- rx_count = cvm_oct_poll(rx_group, budget);
+ rx_count = cvm_oct_poll(rx_group->group, budget);
if (rx_count < budget) {
/* No more work */
@@ -466,7 +466,7 @@ static int cvm_oct_napi_poll(struct napi_struct *napi, int budget)
*/
void cvm_oct_poll_controller(struct net_device *dev)
{
- cvm_oct_poll(oct_rx_group, 16);
+ cvm_oct_poll(oct_rx_group->group, 16);
}
#endif
> Can you see multiple ethernet IRQs in /proc/interrupts and their
> counters increasing?
>
> With receive_group_order=4 you should see 16 IRQs.
I see the 16 IRQs, and the first one does increase. But packets don't make
it to the application.
--Ed
next prev parent reply other threads:[~2016-08-31 16:19 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-30 18:47 [PATCH 0/9] staging: octeon: multi rx group (queue) support Aaro Koskinen
2016-08-30 18:47 ` [PATCH 1/9] staging: octeon: disable rx interrupts in oct_rx_shutdown Aaro Koskinen
2016-08-30 18:47 ` [PATCH 2/9] staging: octeon: use passed interrupt number in the handler Aaro Koskinen
2016-08-30 18:47 ` [PATCH 3/9] staging: octeon: pass the NAPI instance reference to irq handler Aaro Koskinen
2016-08-30 18:47 ` [PATCH 4/9] staging: octeon: move common poll code into a separate function Aaro Koskinen
2016-08-30 18:47 ` [PATCH 5/9] staging: octeon: create a struct for rx group specific data Aaro Koskinen
2016-08-30 18:47 ` [PATCH 6/9] staging: octeon: move irq into " Aaro Koskinen
2016-08-30 18:47 ` [PATCH 7/9] staging: octeon: move group number into rx group data Aaro Koskinen
2016-08-30 18:47 ` [PATCH 8/9] staging: octeon: support enabling multiple rx groups Aaro Koskinen
2016-08-30 18:47 ` [PATCH 9/9] staging: octeon: enable taking multiple rx groups into use Aaro Koskinen
2016-08-31 1:12 ` [PATCH 0/9] staging: octeon: multi rx group (queue) support Ed Swierk
2016-08-31 6:29 ` Aaro Koskinen
2016-08-31 16:20 ` Ed Swierk [this message]
2016-08-31 21:20 ` Aaro Koskinen
2016-09-01 1:52 ` Ed Swierk
2016-08-31 15:06 ` Aaro Koskinen
2016-08-31 16:10 ` David Daney
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=57C703B7.6010900@skyportsystems.com \
--to=eswierk@skyportsystems.com \
--cc=aaro.koskinen@iki.fi \
--cc=ddaney@caviumnetworks.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@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.