netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: John Fastabend <john.fastabend@gmail.com>
To: Jakub Kicinski <kubakici@wp.pl>,
	Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: davem@davemloft.net, netdev@vger.kernel.org, nhorman@redhat.com,
	sassmann@redhat.com, jogreene@redhat.com,
	John Fastabend <john.r.fastabend@intel.com>
Subject: Re: [net-next 03/11] ixgbe: add support for XDP_TX action
Date: Sat, 22 Apr 2017 20:40:22 -0700	[thread overview]
Message-ID: <58FC2226.3070207@gmail.com> (raw)
In-Reply-To: <20170422192411.1d85793a@cakuba.lan>

On 17-04-22 07:24 PM, Jakub Kicinski wrote:
> On Thu, 20 Apr 2017 18:50:21 -0700, Jeff Kirsher wrote:
>> +static int ixgbe_xdp_queues(struct ixgbe_adapter *adapter)
>> +{
>> +	if (nr_cpu_ids > MAX_XDP_QUEUES)
>> +		return 0;
>> +
>> +	return adapter->xdp_prog ? nr_cpu_ids : 0;
>> +}
> 
> Nit: AFAICT ixgbe_xdp_setup() will guarantee xdp_prog is not set if
> there are too many CPU ids.

Sure being a bit paranoid I guess.

> 
>> @@ -6120,10 +6193,21 @@ static int ixgbe_setup_all_tx_resources(struct ixgbe_adapter *adapter)
>>  		e_err(probe, "Allocation for Tx Queue %u failed\n", i);
>>  		goto err_setup_tx;
>>  	}
>> +	for (j = 0; j < adapter->num_xdp_queues; j++) {
>> +		err = ixgbe_setup_tx_resources(adapter->xdp_ring[j]);
>> +		if (!err)
>> +			continue;
>> +
>> +		e_err(probe, "Allocation for Tx Queue %u failed\n", j);
>> +		goto err_setup_tx;
>> +	}
>> +
>>  
> 
> Nit: extra line here

OK well I guess we can fix this if we need a respin anyways.

> 
>> @@ -9557,7 +9739,21 @@ static int ixgbe_xdp_setup(struct net_device *dev, struct bpf_prog *prog)
>>  			return -EINVAL;
>>  	}
>>  
>> +	if (nr_cpu_ids > MAX_XDP_QUEUES)
>> +		return -ENOMEM;
>> +
>>  	old_prog = xchg(&adapter->xdp_prog, prog);
>> +
>> +	/* If transitioning XDP modes reconfigure rings */
>> +	if (!!prog != !!old_prog) {
>> +		int err = ixgbe_setup_tc(dev, netdev_get_num_tc(dev));
>> +
>> +		if (err) {
>> +			rcu_assign_pointer(adapter->xdp_prog, old_prog);
>> +			return -EINVAL;
>> +		}
>> +	}
>> +
>>  	for (i = 0; i < adapter->num_rx_queues; i++)
>>  		xchg(&adapter->rx_ring[i]->xdp_prog, adapter->xdp_prog);
>>  
> 
> In case of disabling XDP I assume ixgbe_setup_tc() will free the rings
> before the xdp_prog on the rings is swapped to NULL.  Is there anything
> preventing TX in that time window?  I think usual ordering would be to
> install the prog after reconfig but uninstall before.
> 

Well in the ixgbe_setup_tc() case we set the rx_ring->xdp_prog in
ixgbe_setup_rx_resorources(), while the dma engine is disabled, so the for
loop is just doing another set on the rx_ring assigning it to the program
already set previously.

Its not really buggy its just extra useless work so I'll change it to this,

	if (!!prog != !!old_prog) {
		...
	} else {
		for ( ... )
			swap xdp prog
	}

Nice spot, thanks for reviewing. And I missed a build error so I'll roll these
fixes in a resend.

Thanks,
John

  reply	other threads:[~2017-04-23  3:40 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-21  1:50 [net-next 00/11][pull request] 10GbE Intel Wired LAN Driver Updates 2017-04-20 Jeff Kirsher
2017-04-21  1:50 ` [net-next 01/11] ixgbe: Acquire PHY semaphore before device reset Jeff Kirsher
2017-04-21  1:50 ` [net-next 02/11] ixgbe: add XDP support for pass and drop actions Jeff Kirsher
2017-04-21 16:52   ` Tantilov, Emil S
2017-04-21  1:50 ` [net-next 03/11] ixgbe: add support for XDP_TX action Jeff Kirsher
2017-04-23  2:24   ` Jakub Kicinski
2017-04-23  3:40     ` John Fastabend [this message]
2017-04-23  3:52       ` Jakub Kicinski
2017-04-21  1:50 ` [net-next 04/11] ixgbe: delay tail write to every 'n' packets Jeff Kirsher
2017-04-21  1:50 ` [net-next 05/11] ixgbe: clean macvlan MAC filter table on VF reset Jeff Kirsher
2017-04-21  1:50 ` [net-next 06/11] ixgbevf: fix size of queue stats length Jeff Kirsher
2017-04-21  1:50 ` [net-next 07/11] ixgbe: Allow setting zero MAC address for VF Jeff Kirsher
2017-04-21  1:50 ` [net-next 08/11] ixgbe: Add 1000Base-T device based on X550EM_X MAC Jeff Kirsher
2017-04-21  1:50 ` [net-next 09/11] ixgbe: Check for RSS key before setting value Jeff Kirsher
2017-04-21  1:50 ` [net-next 10/11] ixgbevf: Fix errors in retrieving RETA and RSS from PF Jeff Kirsher
2017-04-21  1:50 ` [net-next 11/11] ixgbevf: Check for RSS key before setting value Jeff Kirsher
2017-04-21 18:18 ` [net-next 00/11][pull request] 10GbE Intel Wired LAN Driver Updates 2017-04-20 David Miller
2017-04-23  3:41   ` John Fastabend

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=58FC2226.3070207@gmail.com \
    --to=john.fastabend@gmail.com \
    --cc=davem@davemloft.net \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=jogreene@redhat.com \
    --cc=john.r.fastabend@intel.com \
    --cc=kubakici@wp.pl \
    --cc=netdev@vger.kernel.org \
    --cc=nhorman@redhat.com \
    --cc=sassmann@redhat.com \
    /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).