All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH net-next 4/4] net/mlx5e: Support HTB offload
Date: Thu, 10 Dec 2020 07:54:31 +0800	[thread overview]
Message-ID: <202012100734.bev99ZnD-lkp@intel.com> (raw)
In-Reply-To: <20201209160251.19054-5-maximmi@mellanox.com>

[-- Attachment #1: Type: text/plain, Size: 10094 bytes --]

Hi Maxim,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Maxim-Mikityanskiy/HTB-offload/20201210-000703
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git afae3cc2da100ead3cd6ef4bb1fb8bc9d4b817c5
config: x86_64-randconfig-s021-20201210 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-179-ga00755aa-dirty
        # https://github.com/0day-ci/linux/commit/2b06403da63c880ec87d0bcee80b8936116935c6
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Maxim-Mikityanskiy/HTB-offload/20201210-000703
        git checkout 2b06403da63c880ec87d0bcee80b8936116935c6
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


"sparse warnings: (new ones prefixed by >>)"
>> drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:135:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct mlx5e_txqsq **qos_sqs @@     got struct mlx5e_txqsq [noderef] __rcu ** @@
   drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:135:17: sparse:     expected struct mlx5e_txqsq **qos_sqs
   drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:135:17: sparse:     got struct mlx5e_txqsq [noderef] __rcu **
>> drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:149:50: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:149:50: sparse:    struct mlx5e_txqsq [noderef] __rcu *
>> drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:149:50: sparse:    struct mlx5e_txqsq *
   drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:211:50: sparse: sparse: incompatible types in comparison expression (different address spaces):
   drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:211:50: sparse:    struct mlx5e_txqsq [noderef] __rcu *
   drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:211:50: sparse:    struct mlx5e_txqsq *
--
>> drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:174:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct mlx5e_txqsq **qos_sqs @@     got struct mlx5e_txqsq [noderef] __rcu ** @@
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:174:17: sparse:     expected struct mlx5e_txqsq **qos_sqs
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:174:17: sparse:     got struct mlx5e_txqsq [noderef] __rcu **
>> drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:175:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:175:16: sparse:    struct mlx5e_txqsq [noderef] __rcu *
>> drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:175:16: sparse:    struct mlx5e_txqsq *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:225:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct mlx5e_txqsq **qos_sqs @@     got struct mlx5e_txqsq [noderef] __rcu ** @@
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:225:17: sparse:     expected struct mlx5e_txqsq **qos_sqs
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:225:17: sparse:     got struct mlx5e_txqsq [noderef] __rcu **
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:245:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:245:9: sparse:    struct mlx5e_txqsq [noderef] __rcu *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:245:9: sparse:    struct mlx5e_txqsq *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:301:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct mlx5e_txqsq **qos_sqs @@     got struct mlx5e_txqsq [noderef] __rcu ** @@
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:302:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:302:14: sparse:    struct mlx5e_txqsq [noderef] __rcu *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:302:14: sparse:    struct mlx5e_txqsq *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:302:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:302:14: sparse:    struct mlx5e_txqsq [noderef] __rcu *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:302:14: sparse:    struct mlx5e_txqsq *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:326:22: sparse: sparse: incompatible types in comparison expression (different address spaces):
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:326:22: sparse:    struct mlx5e_txqsq [noderef] __rcu *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:326:22: sparse:    struct mlx5e_txqsq *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:423:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct mlx5e_txqsq **qos_sqs @@     got struct mlx5e_txqsq [noderef] __rcu ** @@
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:423:17: sparse:     expected struct mlx5e_txqsq **qos_sqs
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:423:17: sparse:     got struct mlx5e_txqsq [noderef] __rcu **
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:431:22: sparse: sparse: incompatible types in comparison expression (different address spaces):
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:431:22: sparse:    struct mlx5e_txqsq [noderef] __rcu *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:431:22: sparse:    struct mlx5e_txqsq *

vim +135 drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c

   115	
   116	int mlx5e_napi_poll(struct napi_struct *napi, int budget)
   117	{
   118		struct mlx5e_channel *c = container_of(napi, struct mlx5e_channel,
   119						       napi);
   120		struct mlx5e_ch_stats *ch_stats = c->stats;
   121		struct mlx5e_xdpsq *xsksq = &c->xsksq;
   122		struct mlx5e_rq *xskrq = &c->xskrq;
   123		struct mlx5e_rq *rq = &c->rq;
   124		struct mlx5e_txqsq **qos_sqs;
   125		bool aff_change = false;
   126		bool busy_xsk = false;
   127		bool busy = false;
   128		int work_done = 0;
   129		u16 qos_sqs_size;
   130		bool xsk_open;
   131		int i;
   132	
   133		rcu_read_lock();
   134	
 > 135		qos_sqs = rcu_dereference(c->qos_sqs);
   136	
   137		xsk_open = test_bit(MLX5E_CHANNEL_STATE_XSK, c->state);
   138	
   139		ch_stats->poll++;
   140	
   141		for (i = 0; i < c->num_tc; i++)
   142			busy |= mlx5e_poll_tx_cq(&c->sq[i].cq, budget);
   143	
   144		if (unlikely(qos_sqs)) {
   145			smp_rmb(); /* Pairs with mlx5e_qos_alloc_queues. */
   146			qos_sqs_size = READ_ONCE(c->qos_sqs_size);
   147	
   148			for (i = 0; i < qos_sqs_size; i++) {
 > 149				struct mlx5e_txqsq *sq = rcu_dereference(qos_sqs[i]);
   150	
   151				if (sq)
   152					busy |= mlx5e_poll_tx_cq(&sq->cq, budget);
   153			}
   154		}
   155	
   156		busy |= mlx5e_poll_xdpsq_cq(&c->xdpsq.cq);
   157	
   158		if (c->xdp)
   159			busy |= mlx5e_poll_xdpsq_cq(&c->rq_xdpsq.cq);
   160	
   161		if (likely(budget)) { /* budget=0 means: don't poll rx rings */
   162			if (xsk_open)
   163				work_done = mlx5e_poll_rx_cq(&xskrq->cq, budget);
   164	
   165			if (likely(budget - work_done))
   166				work_done += mlx5e_poll_rx_cq(&rq->cq, budget - work_done);
   167	
   168			busy |= work_done == budget;
   169		}
   170	
   171		mlx5e_poll_ico_cq(&c->icosq.cq);
   172		if (mlx5e_poll_ico_cq(&c->async_icosq.cq))
   173			/* Don't clear the flag if nothing was polled to prevent
   174			 * queueing more WQEs and overflowing the async ICOSQ.
   175			 */
   176			clear_bit(MLX5E_SQ_STATE_PENDING_XSK_TX, &c->async_icosq.state);
   177	
   178		busy |= INDIRECT_CALL_2(rq->post_wqes,
   179					mlx5e_post_rx_mpwqes,
   180					mlx5e_post_rx_wqes,
   181					rq);
   182		if (xsk_open) {
   183			busy |= mlx5e_poll_xdpsq_cq(&xsksq->cq);
   184			busy_xsk |= mlx5e_napi_xsk_post(xsksq, xskrq);
   185		}
   186	
   187		busy |= busy_xsk;
   188	
   189		if (busy) {
   190			if (likely(mlx5e_channel_no_affinity_change(c))) {
   191				work_done = budget;
   192				goto out;
   193			}
   194			ch_stats->aff_change++;
   195			aff_change = true;
   196			if (budget && work_done == budget)
   197				work_done--;
   198		}
   199	
   200		if (unlikely(!napi_complete_done(napi, work_done)))
   201			goto out;
   202	
   203		ch_stats->arm++;
   204	
   205		for (i = 0; i < c->num_tc; i++) {
   206			mlx5e_handle_tx_dim(&c->sq[i]);
   207			mlx5e_cq_arm(&c->sq[i].cq);
   208		}
   209		if (unlikely(qos_sqs)) {
   210			for (i = 0; i < qos_sqs_size; i++) {
   211				struct mlx5e_txqsq *sq = rcu_dereference(qos_sqs[i]);
   212	
   213				if (sq) {
   214					mlx5e_handle_tx_dim(sq);
   215					mlx5e_cq_arm(&sq->cq);
   216				}
   217			}
   218		}
   219	
   220		mlx5e_handle_rx_dim(rq);
   221	
   222		mlx5e_cq_arm(&rq->cq);
   223		mlx5e_cq_arm(&c->icosq.cq);
   224		mlx5e_cq_arm(&c->async_icosq.cq);
   225		mlx5e_cq_arm(&c->xdpsq.cq);
   226	
   227		if (xsk_open) {
   228			mlx5e_handle_rx_dim(xskrq);
   229			mlx5e_cq_arm(&xsksq->cq);
   230			mlx5e_cq_arm(&xskrq->cq);
   231		}
   232	
   233		if (unlikely(aff_change && busy_xsk)) {
   234			mlx5e_trigger_irq(&c->icosq);
   235			ch_stats->force_irq++;
   236		}
   237	
   238	out:
   239		rcu_read_unlock();
   240	
   241		return work_done;
   242	}
   243	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 37905 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Maxim Mikityanskiy <maximmi@mellanox.com>,
	"David S. Miller" <davem@davemloft.net>,
	Jamal Hadi Salim <jhs@mojatatu.com>,
	Cong Wang <xiyou.wangcong@gmail.com>,
	Jiri Pirko <jiri@resnulli.us>
Cc: kbuild-all@lists.01.org, netdev@vger.kernel.org,
	Saeed Mahameed <saeedm@nvidia.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Tariq Toukan <tariqt@mellanox.com>,
	Maxim Mikityanskiy <maximmi@nvidia.com>
Subject: Re: [PATCH net-next 4/4] net/mlx5e: Support HTB offload
Date: Thu, 10 Dec 2020 07:54:31 +0800	[thread overview]
Message-ID: <202012100734.bev99ZnD-lkp@intel.com> (raw)
In-Reply-To: <20201209160251.19054-5-maximmi@mellanox.com>

[-- Attachment #1: Type: text/plain, Size: 9893 bytes --]

Hi Maxim,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Maxim-Mikityanskiy/HTB-offload/20201210-000703
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git afae3cc2da100ead3cd6ef4bb1fb8bc9d4b817c5
config: x86_64-randconfig-s021-20201210 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-179-ga00755aa-dirty
        # https://github.com/0day-ci/linux/commit/2b06403da63c880ec87d0bcee80b8936116935c6
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Maxim-Mikityanskiy/HTB-offload/20201210-000703
        git checkout 2b06403da63c880ec87d0bcee80b8936116935c6
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


"sparse warnings: (new ones prefixed by >>)"
>> drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:135:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct mlx5e_txqsq **qos_sqs @@     got struct mlx5e_txqsq [noderef] __rcu ** @@
   drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:135:17: sparse:     expected struct mlx5e_txqsq **qos_sqs
   drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:135:17: sparse:     got struct mlx5e_txqsq [noderef] __rcu **
>> drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:149:50: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:149:50: sparse:    struct mlx5e_txqsq [noderef] __rcu *
>> drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:149:50: sparse:    struct mlx5e_txqsq *
   drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:211:50: sparse: sparse: incompatible types in comparison expression (different address spaces):
   drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:211:50: sparse:    struct mlx5e_txqsq [noderef] __rcu *
   drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c:211:50: sparse:    struct mlx5e_txqsq *
--
>> drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:174:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct mlx5e_txqsq **qos_sqs @@     got struct mlx5e_txqsq [noderef] __rcu ** @@
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:174:17: sparse:     expected struct mlx5e_txqsq **qos_sqs
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:174:17: sparse:     got struct mlx5e_txqsq [noderef] __rcu **
>> drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:175:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:175:16: sparse:    struct mlx5e_txqsq [noderef] __rcu *
>> drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:175:16: sparse:    struct mlx5e_txqsq *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:225:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct mlx5e_txqsq **qos_sqs @@     got struct mlx5e_txqsq [noderef] __rcu ** @@
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:225:17: sparse:     expected struct mlx5e_txqsq **qos_sqs
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:225:17: sparse:     got struct mlx5e_txqsq [noderef] __rcu **
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:245:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:245:9: sparse:    struct mlx5e_txqsq [noderef] __rcu *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:245:9: sparse:    struct mlx5e_txqsq *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:301:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct mlx5e_txqsq **qos_sqs @@     got struct mlx5e_txqsq [noderef] __rcu ** @@
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:302:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:302:14: sparse:    struct mlx5e_txqsq [noderef] __rcu *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:302:14: sparse:    struct mlx5e_txqsq *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:302:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:302:14: sparse:    struct mlx5e_txqsq [noderef] __rcu *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:302:14: sparse:    struct mlx5e_txqsq *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:326:22: sparse: sparse: incompatible types in comparison expression (different address spaces):
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:326:22: sparse:    struct mlx5e_txqsq [noderef] __rcu *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:326:22: sparse:    struct mlx5e_txqsq *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:423:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct mlx5e_txqsq **qos_sqs @@     got struct mlx5e_txqsq [noderef] __rcu ** @@
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:423:17: sparse:     expected struct mlx5e_txqsq **qos_sqs
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:423:17: sparse:     got struct mlx5e_txqsq [noderef] __rcu **
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:431:22: sparse: sparse: incompatible types in comparison expression (different address spaces):
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:431:22: sparse:    struct mlx5e_txqsq [noderef] __rcu *
   drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:431:22: sparse:    struct mlx5e_txqsq *

vim +135 drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c

   115	
   116	int mlx5e_napi_poll(struct napi_struct *napi, int budget)
   117	{
   118		struct mlx5e_channel *c = container_of(napi, struct mlx5e_channel,
   119						       napi);
   120		struct mlx5e_ch_stats *ch_stats = c->stats;
   121		struct mlx5e_xdpsq *xsksq = &c->xsksq;
   122		struct mlx5e_rq *xskrq = &c->xskrq;
   123		struct mlx5e_rq *rq = &c->rq;
   124		struct mlx5e_txqsq **qos_sqs;
   125		bool aff_change = false;
   126		bool busy_xsk = false;
   127		bool busy = false;
   128		int work_done = 0;
   129		u16 qos_sqs_size;
   130		bool xsk_open;
   131		int i;
   132	
   133		rcu_read_lock();
   134	
 > 135		qos_sqs = rcu_dereference(c->qos_sqs);
   136	
   137		xsk_open = test_bit(MLX5E_CHANNEL_STATE_XSK, c->state);
   138	
   139		ch_stats->poll++;
   140	
   141		for (i = 0; i < c->num_tc; i++)
   142			busy |= mlx5e_poll_tx_cq(&c->sq[i].cq, budget);
   143	
   144		if (unlikely(qos_sqs)) {
   145			smp_rmb(); /* Pairs with mlx5e_qos_alloc_queues. */
   146			qos_sqs_size = READ_ONCE(c->qos_sqs_size);
   147	
   148			for (i = 0; i < qos_sqs_size; i++) {
 > 149				struct mlx5e_txqsq *sq = rcu_dereference(qos_sqs[i]);
   150	
   151				if (sq)
   152					busy |= mlx5e_poll_tx_cq(&sq->cq, budget);
   153			}
   154		}
   155	
   156		busy |= mlx5e_poll_xdpsq_cq(&c->xdpsq.cq);
   157	
   158		if (c->xdp)
   159			busy |= mlx5e_poll_xdpsq_cq(&c->rq_xdpsq.cq);
   160	
   161		if (likely(budget)) { /* budget=0 means: don't poll rx rings */
   162			if (xsk_open)
   163				work_done = mlx5e_poll_rx_cq(&xskrq->cq, budget);
   164	
   165			if (likely(budget - work_done))
   166				work_done += mlx5e_poll_rx_cq(&rq->cq, budget - work_done);
   167	
   168			busy |= work_done == budget;
   169		}
   170	
   171		mlx5e_poll_ico_cq(&c->icosq.cq);
   172		if (mlx5e_poll_ico_cq(&c->async_icosq.cq))
   173			/* Don't clear the flag if nothing was polled to prevent
   174			 * queueing more WQEs and overflowing the async ICOSQ.
   175			 */
   176			clear_bit(MLX5E_SQ_STATE_PENDING_XSK_TX, &c->async_icosq.state);
   177	
   178		busy |= INDIRECT_CALL_2(rq->post_wqes,
   179					mlx5e_post_rx_mpwqes,
   180					mlx5e_post_rx_wqes,
   181					rq);
   182		if (xsk_open) {
   183			busy |= mlx5e_poll_xdpsq_cq(&xsksq->cq);
   184			busy_xsk |= mlx5e_napi_xsk_post(xsksq, xskrq);
   185		}
   186	
   187		busy |= busy_xsk;
   188	
   189		if (busy) {
   190			if (likely(mlx5e_channel_no_affinity_change(c))) {
   191				work_done = budget;
   192				goto out;
   193			}
   194			ch_stats->aff_change++;
   195			aff_change = true;
   196			if (budget && work_done == budget)
   197				work_done--;
   198		}
   199	
   200		if (unlikely(!napi_complete_done(napi, work_done)))
   201			goto out;
   202	
   203		ch_stats->arm++;
   204	
   205		for (i = 0; i < c->num_tc; i++) {
   206			mlx5e_handle_tx_dim(&c->sq[i]);
   207			mlx5e_cq_arm(&c->sq[i].cq);
   208		}
   209		if (unlikely(qos_sqs)) {
   210			for (i = 0; i < qos_sqs_size; i++) {
   211				struct mlx5e_txqsq *sq = rcu_dereference(qos_sqs[i]);
   212	
   213				if (sq) {
   214					mlx5e_handle_tx_dim(sq);
   215					mlx5e_cq_arm(&sq->cq);
   216				}
   217			}
   218		}
   219	
   220		mlx5e_handle_rx_dim(rq);
   221	
   222		mlx5e_cq_arm(&rq->cq);
   223		mlx5e_cq_arm(&c->icosq.cq);
   224		mlx5e_cq_arm(&c->async_icosq.cq);
   225		mlx5e_cq_arm(&c->xdpsq.cq);
   226	
   227		if (xsk_open) {
   228			mlx5e_handle_rx_dim(xskrq);
   229			mlx5e_cq_arm(&xsksq->cq);
   230			mlx5e_cq_arm(&xskrq->cq);
   231		}
   232	
   233		if (unlikely(aff_change && busy_xsk)) {
   234			mlx5e_trigger_irq(&c->icosq);
   235			ch_stats->force_irq++;
   236		}
   237	
   238	out:
   239		rcu_read_unlock();
   240	
   241		return work_done;
   242	}
   243	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 37905 bytes --]

  reply	other threads:[~2020-12-09 23:54 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-09 16:02 [PATCH net-next 0/4] HTB offload Maxim Mikityanskiy
2020-12-09 16:02 ` [PATCH net-next 1/4] net: sched: Add multi-queue support to sch_tree_lock Maxim Mikityanskiy
2020-12-09 16:02 ` [PATCH net-next 2/4] sch_htb: Hierarchical QoS hardware offload Maxim Mikityanskiy
2020-12-09 16:02 ` [PATCH net-next 3/4] sch_htb: Stats for offloaded HTB Maxim Mikityanskiy
2020-12-10  8:28   ` Dan Carpenter
2020-12-10  8:28     ` Dan Carpenter
2020-12-10  8:28     ` Dan Carpenter
2020-12-10 15:07     ` Maxim Mikityanskiy
2020-12-10 15:07       ` Maxim Mikityanskiy
2020-12-11  8:41       ` Dan Carpenter
2020-12-11  8:41         ` Dan Carpenter
2020-12-11  8:41         ` Dan Carpenter
2020-12-11 15:25         ` Maxim Mikityanskiy
2020-12-11 15:25           ` Maxim Mikityanskiy
2020-12-09 16:02 ` [PATCH net-next 4/4] net/mlx5e: Support HTB offload Maxim Mikityanskiy
2020-12-09 23:54   ` kernel test robot [this message]
2020-12-09 23:54     ` kernel test robot

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=202012100734.bev99ZnD-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.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.