* [PATCH net 3/3] ice: Fix PF with enabled XDP going no-carrier after reset
[not found] <20231218192708.3397702-1-anthony.l.nguyen@intel.com>
@ 2023-12-18 19:27 ` Tony Nguyen
2023-12-19 16:43 ` Maciej Fijalkowski
2023-12-20 0:09 ` Nelson, Shannon
0 siblings, 2 replies; 7+ messages in thread
From: Tony Nguyen @ 2023-12-18 19:27 UTC (permalink / raw)
To: davem, kuba, pabeni, edumazet, netdev
Cc: Larysa Zaremba, anthony.l.nguyen, maciej.fijalkowski,
magnus.karlsson, ast, daniel, hawk, john.fastabend, bpf,
Przemek Kitszel, Simon Horman, Chandan Kumar Rout
From: Larysa Zaremba <larysa.zaremba@intel.com>
Commit 6624e780a577fc596788 ("ice: split ice_vsi_setup into smaller
functions") has refactored a bunch of code involved in PFR. In this
process, TC queue number adjustment for XDP was lost. Bring it back.
Lack of such adjustment causes interface to go into no-carrier after a
reset, if XDP program is attached, with the following message:
ice 0000:b1:00.0: Failed to set LAN Tx queue context, error: -22
ice 0000:b1:00.0 ens801f0np0: Failed to open VSI 0x0006 on switch 0x0001
ice 0000:b1:00.0: enable VSI failed, err -22, VSI index 0, type ICE_VSI_PF
ice 0000:b1:00.0: PF VSI rebuild failed: -22
ice 0000:b1:00.0: Rebuild failed, unload and reload driver
Fixes: 6624e780a577 ("ice: split ice_vsi_setup into smaller functions")
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
drivers/net/ethernet/intel/ice/ice_lib.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
index de7ba87af45d..1bad6e17f9be 100644
--- a/drivers/net/ethernet/intel/ice/ice_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_lib.c
@@ -2371,6 +2371,9 @@ static int ice_vsi_cfg_tc_lan(struct ice_pf *pf, struct ice_vsi *vsi)
} else {
max_txqs[i] = vsi->alloc_txq;
}
+
+ if (vsi->type == ICE_VSI_PF)
+ max_txqs[i] += vsi->num_xdp_txq;
}
dev_dbg(dev, "vsi->tc_cfg.ena_tc = %d\n", vsi->tc_cfg.ena_tc);
--
2.41.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH net 3/3] ice: Fix PF with enabled XDP going no-carrier after reset
2023-12-18 19:27 ` [PATCH net 3/3] ice: Fix PF with enabled XDP going no-carrier after reset Tony Nguyen
@ 2023-12-19 16:43 ` Maciej Fijalkowski
2023-12-20 0:09 ` Nelson, Shannon
1 sibling, 0 replies; 7+ messages in thread
From: Maciej Fijalkowski @ 2023-12-19 16:43 UTC (permalink / raw)
To: Tony Nguyen
Cc: davem, kuba, pabeni, edumazet, netdev, Larysa Zaremba,
magnus.karlsson, ast, daniel, hawk, john.fastabend, bpf,
Przemek Kitszel, Simon Horman, Chandan Kumar Rout
On Mon, Dec 18, 2023 at 11:27:06AM -0800, Tony Nguyen wrote:
> From: Larysa Zaremba <larysa.zaremba@intel.com>
>
> Commit 6624e780a577fc596788 ("ice: split ice_vsi_setup into smaller
> functions") has refactored a bunch of code involved in PFR. In this
> process, TC queue number adjustment for XDP was lost. Bring it back.
>
> Lack of such adjustment causes interface to go into no-carrier after a
> reset, if XDP program is attached, with the following message:
>
> ice 0000:b1:00.0: Failed to set LAN Tx queue context, error: -22
> ice 0000:b1:00.0 ens801f0np0: Failed to open VSI 0x0006 on switch 0x0001
> ice 0000:b1:00.0: enable VSI failed, err -22, VSI index 0, type ICE_VSI_PF
> ice 0000:b1:00.0: PF VSI rebuild failed: -22
> ice 0000:b1:00.0: Rebuild failed, unload and reload driver
>
> Fixes: 6624e780a577 ("ice: split ice_vsi_setup into smaller functions")
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
> Reviewed-by: Simon Horman <horms@kernel.org>
> Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> ---
> drivers/net/ethernet/intel/ice/ice_lib.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
> index de7ba87af45d..1bad6e17f9be 100644
> --- a/drivers/net/ethernet/intel/ice/ice_lib.c
> +++ b/drivers/net/ethernet/intel/ice/ice_lib.c
> @@ -2371,6 +2371,9 @@ static int ice_vsi_cfg_tc_lan(struct ice_pf *pf, struct ice_vsi *vsi)
> } else {
> max_txqs[i] = vsi->alloc_txq;
> }
> +
> + if (vsi->type == ICE_VSI_PF)
> + max_txqs[i] += vsi->num_xdp_txq;
Nit: typically we always preceded this with ice_is_xdp_ena_vsi() call.
However, in this case I suppose it doesn't matter much, as if XDP prog is
not present then this value will just be 0.
Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
> }
>
> dev_dbg(dev, "vsi->tc_cfg.ena_tc = %d\n", vsi->tc_cfg.ena_tc);
> --
> 2.41.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net 3/3] ice: Fix PF with enabled XDP going no-carrier after reset
2023-12-18 19:27 ` [PATCH net 3/3] ice: Fix PF with enabled XDP going no-carrier after reset Tony Nguyen
2023-12-19 16:43 ` Maciej Fijalkowski
@ 2023-12-20 0:09 ` Nelson, Shannon
2023-12-20 9:23 ` Larysa Zaremba
1 sibling, 1 reply; 7+ messages in thread
From: Nelson, Shannon @ 2023-12-20 0:09 UTC (permalink / raw)
To: Tony Nguyen, davem, kuba, pabeni, edumazet, netdev
Cc: Larysa Zaremba, maciej.fijalkowski, magnus.karlsson, ast, daniel,
hawk, john.fastabend, bpf, Przemek Kitszel, Simon Horman,
Chandan Kumar Rout
On 12/18/2023 11:27 AM, Tony Nguyen wrote:
> Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.
>
>
> From: Larysa Zaremba <larysa.zaremba@intel.com>
>
> Commit 6624e780a577fc596788 ("ice: split ice_vsi_setup into smaller
> functions") has refactored a bunch of code involved in PFR. In this
> process, TC queue number adjustment for XDP was lost. Bring it back.
>
> Lack of such adjustment causes interface to go into no-carrier after a
> reset, if XDP program is attached, with the following message:
>
> ice 0000:b1:00.0: Failed to set LAN Tx queue context, error: -22
> ice 0000:b1:00.0 ens801f0np0: Failed to open VSI 0x0006 on switch 0x0001
> ice 0000:b1:00.0: enable VSI failed, err -22, VSI index 0, type ICE_VSI_PF
> ice 0000:b1:00.0: PF VSI rebuild failed: -22
> ice 0000:b1:00.0: Rebuild failed, unload and reload driver
>
> Fixes: 6624e780a577 ("ice: split ice_vsi_setup into smaller functions")
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
> Reviewed-by: Simon Horman <horms@kernel.org>
> Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> ---
> drivers/net/ethernet/intel/ice/ice_lib.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
> index de7ba87af45d..1bad6e17f9be 100644
> --- a/drivers/net/ethernet/intel/ice/ice_lib.c
> +++ b/drivers/net/ethernet/intel/ice/ice_lib.c
> @@ -2371,6 +2371,9 @@ static int ice_vsi_cfg_tc_lan(struct ice_pf *pf, struct ice_vsi *vsi)
> } else {
> max_txqs[i] = vsi->alloc_txq;
> }
> +
> + if (vsi->type == ICE_VSI_PF)
> + max_txqs[i] += vsi->num_xdp_txq;
Since this new code is coming right after an existing
if (vsi->type == ICE_VSI_CHNL)
it looks like it would make sense to make it an 'else if' in that last
block, e.g.:
if (vsi->type == ICE_VSI_CHNL) {
if (!vsi->alloc_txq && vsi->num_txq)
max_txqs[i] = vsi->num_txq;
else
max_txqs[i] = pf->num_lan_tx;
} else if (vsi->type == ICE_VSI_PF) {
max_txqs[i] += vsi->num_xdp_txq;
} else {
max_txqs[i] = vsi->alloc_txq;
}
Of course this begins to verge on the switch/case/default format.
sln
> }
>
> dev_dbg(dev, "vsi->tc_cfg.ena_tc = %d\n", vsi->tc_cfg.ena_tc);
> --
> 2.41.0
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net 3/3] ice: Fix PF with enabled XDP going no-carrier after reset
2023-12-20 0:09 ` Nelson, Shannon
@ 2023-12-20 9:23 ` Larysa Zaremba
2023-12-20 17:04 ` Nelson, Shannon
0 siblings, 1 reply; 7+ messages in thread
From: Larysa Zaremba @ 2023-12-20 9:23 UTC (permalink / raw)
To: Nelson, Shannon
Cc: Tony Nguyen, davem, kuba, pabeni, edumazet, netdev,
maciej.fijalkowski, magnus.karlsson, ast, daniel, hawk,
john.fastabend, bpf, Przemek Kitszel, Simon Horman,
Chandan Kumar Rout
On Tue, Dec 19, 2023 at 04:09:09PM -0800, Nelson, Shannon wrote:
> On 12/18/2023 11:27 AM, Tony Nguyen wrote:
> > Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.
> >
> >
> > From: Larysa Zaremba <larysa.zaremba@intel.com>
> >
> > Commit 6624e780a577fc596788 ("ice: split ice_vsi_setup into smaller
> > functions") has refactored a bunch of code involved in PFR. In this
> > process, TC queue number adjustment for XDP was lost. Bring it back.
> >
> > Lack of such adjustment causes interface to go into no-carrier after a
> > reset, if XDP program is attached, with the following message:
> >
> > ice 0000:b1:00.0: Failed to set LAN Tx queue context, error: -22
> > ice 0000:b1:00.0 ens801f0np0: Failed to open VSI 0x0006 on switch 0x0001
> > ice 0000:b1:00.0: enable VSI failed, err -22, VSI index 0, type ICE_VSI_PF
> > ice 0000:b1:00.0: PF VSI rebuild failed: -22
> > ice 0000:b1:00.0: Rebuild failed, unload and reload driver
> >
> > Fixes: 6624e780a577 ("ice: split ice_vsi_setup into smaller functions")
> > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> > Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
> > Reviewed-by: Simon Horman <horms@kernel.org>
> > Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
> > Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> > ---
> > drivers/net/ethernet/intel/ice/ice_lib.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
> > index de7ba87af45d..1bad6e17f9be 100644
> > --- a/drivers/net/ethernet/intel/ice/ice_lib.c
> > +++ b/drivers/net/ethernet/intel/ice/ice_lib.c
> > @@ -2371,6 +2371,9 @@ static int ice_vsi_cfg_tc_lan(struct ice_pf *pf, struct ice_vsi *vsi)
> > } else {
> > max_txqs[i] = vsi->alloc_txq;
> > }
> > +
> > + if (vsi->type == ICE_VSI_PF)
> > + max_txqs[i] += vsi->num_xdp_txq;
>
> Since this new code is coming right after an existing
> if (vsi->type == ICE_VSI_CHNL)
> it looks like it would make sense to make it an 'else if' in that last
> block, e.g.:
>
> if (vsi->type == ICE_VSI_CHNL) {
> if (!vsi->alloc_txq && vsi->num_txq)
> max_txqs[i] = vsi->num_txq;
> else
> max_txqs[i] = pf->num_lan_tx;
> } else if (vsi->type == ICE_VSI_PF) {
> max_txqs[i] += vsi->num_xdp_txq;
Would need to be
max_txqs[i] = vsi->alloc_txq + vsi->num_xdp_txq;
> } else {
> max_txqs[i] = vsi->alloc_txq;
> }
>
> Of course this begins to verge on the switch/case/default format.
>
> sln
>
I was going for logic: assign default values first, adjust based on enabled
features (well, a single feature) second. The thing that in my opinion would
make it more clear would be replacing 'vsi->type == ICE_VSI_PF' with
ice_is_xdp_ena_vsi(). Do you think this is worth doing?
>
> > }
> >
> > dev_dbg(dev, "vsi->tc_cfg.ena_tc = %d\n", vsi->tc_cfg.ena_tc);
> > --
> > 2.41.0
> >
> >
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net 3/3] ice: Fix PF with enabled XDP going no-carrier after reset
2023-12-20 9:23 ` Larysa Zaremba
@ 2023-12-20 17:04 ` Nelson, Shannon
2023-12-21 7:23 ` Paolo Abeni
0 siblings, 1 reply; 7+ messages in thread
From: Nelson, Shannon @ 2023-12-20 17:04 UTC (permalink / raw)
To: Larysa Zaremba
Cc: Tony Nguyen, davem, kuba, pabeni, edumazet, netdev,
maciej.fijalkowski, magnus.karlsson, ast, daniel, hawk,
john.fastabend, bpf, Przemek Kitszel, Simon Horman,
Chandan Kumar Rout
On 12/20/2023 1:23 AM, Larysa Zaremba wrote:
>
> On Tue, Dec 19, 2023 at 04:09:09PM -0800, Nelson, Shannon wrote:
>> On 12/18/2023 11:27 AM, Tony Nguyen wrote:
>>> Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.
>>>
>>>
>>> From: Larysa Zaremba <larysa.zaremba@intel.com>
>>>
>>> Commit 6624e780a577fc596788 ("ice: split ice_vsi_setup into smaller
>>> functions") has refactored a bunch of code involved in PFR. In this
>>> process, TC queue number adjustment for XDP was lost. Bring it back.
>>>
>>> Lack of such adjustment causes interface to go into no-carrier after a
>>> reset, if XDP program is attached, with the following message:
>>>
>>> ice 0000:b1:00.0: Failed to set LAN Tx queue context, error: -22
>>> ice 0000:b1:00.0 ens801f0np0: Failed to open VSI 0x0006 on switch 0x0001
>>> ice 0000:b1:00.0: enable VSI failed, err -22, VSI index 0, type ICE_VSI_PF
>>> ice 0000:b1:00.0: PF VSI rebuild failed: -22
>>> ice 0000:b1:00.0: Rebuild failed, unload and reload driver
>>>
>>> Fixes: 6624e780a577 ("ice: split ice_vsi_setup into smaller functions")
>>> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
>>> Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
>>> Reviewed-by: Simon Horman <horms@kernel.org>
>>> Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
>>> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
>>> ---
>>> drivers/net/ethernet/intel/ice/ice_lib.c | 3 +++
>>> 1 file changed, 3 insertions(+)
>>>
>>> diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
>>> index de7ba87af45d..1bad6e17f9be 100644
>>> --- a/drivers/net/ethernet/intel/ice/ice_lib.c
>>> +++ b/drivers/net/ethernet/intel/ice/ice_lib.c
>>> @@ -2371,6 +2371,9 @@ static int ice_vsi_cfg_tc_lan(struct ice_pf *pf, struct ice_vsi *vsi)
>>> } else {
>>> max_txqs[i] = vsi->alloc_txq;
>>> }
>>> +
>>> + if (vsi->type == ICE_VSI_PF)
>>> + max_txqs[i] += vsi->num_xdp_txq;
>>
>> Since this new code is coming right after an existing
>> if (vsi->type == ICE_VSI_CHNL)
>> it looks like it would make sense to make it an 'else if' in that last
>> block, e.g.:
>>
>> if (vsi->type == ICE_VSI_CHNL) {
>> if (!vsi->alloc_txq && vsi->num_txq)
>> max_txqs[i] = vsi->num_txq;
>> else
>> max_txqs[i] = pf->num_lan_tx;
>> } else if (vsi->type == ICE_VSI_PF) {
>> max_txqs[i] += vsi->num_xdp_txq;
>
> Would need to be
> max_txqs[i] = vsi->alloc_txq + vsi->num_xdp_txq;
>
>> } else {
>> max_txqs[i] = vsi->alloc_txq;
>> }
>>
>> Of course this begins to verge on the switch/case/default format.
>>
>> sln
>>
>
> I was going for logic: assign default values first, adjust based on enabled
> features (well, a single feature) second. The thing that in my opinion would
> make it more clear would be replacing 'vsi->type == ICE_VSI_PF' with
> ice_is_xdp_ena_vsi(). Do you think this is worth doing?
Hmm... I made a dumb error in a quick read of the code. This suggests
that making the intent of the code more clear would be a good idea. I
think that the ice_is_xdp_ena_vsi() would definitely make it more clear
as opposed to the bare ICE_VCSI_PF.
sln
>
>>
>>> }
>>>
>>> dev_dbg(dev, "vsi->tc_cfg.ena_tc = %d\n", vsi->tc_cfg.ena_tc);
>>> --
>>> 2.41.0
>>>
>>>
>>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net 3/3] ice: Fix PF with enabled XDP going no-carrier after reset
2023-12-20 17:04 ` Nelson, Shannon
@ 2023-12-21 7:23 ` Paolo Abeni
2023-12-21 9:05 ` Larysa Zaremba
0 siblings, 1 reply; 7+ messages in thread
From: Paolo Abeni @ 2023-12-21 7:23 UTC (permalink / raw)
To: Nelson, Shannon, Larysa Zaremba
Cc: Tony Nguyen, davem, kuba, edumazet, netdev, maciej.fijalkowski,
magnus.karlsson, ast, daniel, hawk, john.fastabend, bpf,
Przemek Kitszel, Simon Horman, Chandan Kumar Rout
On Wed, 2023-12-20 at 09:04 -0800, Nelson, Shannon wrote:
> On 12/20/2023 1:23 AM, Larysa Zaremba wrote:
> >
> > On Tue, Dec 19, 2023 at 04:09:09PM -0800, Nelson, Shannon wrote:
> > > On 12/18/2023 11:27 AM, Tony Nguyen wrote:
> > > > Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.
> > > >
> > > >
> > > > From: Larysa Zaremba <larysa.zaremba@intel.com>
> > > >
> > > > Commit 6624e780a577fc596788 ("ice: split ice_vsi_setup into smaller
> > > > functions") has refactored a bunch of code involved in PFR. In this
> > > > process, TC queue number adjustment for XDP was lost. Bring it back.
> > > >
> > > > Lack of such adjustment causes interface to go into no-carrier after a
> > > > reset, if XDP program is attached, with the following message:
> > > >
> > > > ice 0000:b1:00.0: Failed to set LAN Tx queue context, error: -22
> > > > ice 0000:b1:00.0 ens801f0np0: Failed to open VSI 0x0006 on switch 0x0001
> > > > ice 0000:b1:00.0: enable VSI failed, err -22, VSI index 0, type ICE_VSI_PF
> > > > ice 0000:b1:00.0: PF VSI rebuild failed: -22
> > > > ice 0000:b1:00.0: Rebuild failed, unload and reload driver
> > > >
> > > > Fixes: 6624e780a577 ("ice: split ice_vsi_setup into smaller functions")
> > > > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> > > > Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
> > > > Reviewed-by: Simon Horman <horms@kernel.org>
> > > > Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
> > > > Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> > > > ---
> > > > drivers/net/ethernet/intel/ice/ice_lib.c | 3 +++
> > > > 1 file changed, 3 insertions(+)
> > > >
> > > > diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
> > > > index de7ba87af45d..1bad6e17f9be 100644
> > > > --- a/drivers/net/ethernet/intel/ice/ice_lib.c
> > > > +++ b/drivers/net/ethernet/intel/ice/ice_lib.c
> > > > @@ -2371,6 +2371,9 @@ static int ice_vsi_cfg_tc_lan(struct ice_pf *pf, struct ice_vsi *vsi)
> > > > } else {
> > > > max_txqs[i] = vsi->alloc_txq;
> > > > }
> > > > +
> > > > + if (vsi->type == ICE_VSI_PF)
> > > > + max_txqs[i] += vsi->num_xdp_txq;
> > >
> > > Since this new code is coming right after an existing
> > > if (vsi->type == ICE_VSI_CHNL)
> > > it looks like it would make sense to make it an 'else if' in that last
> > > block, e.g.:
> > >
> > > if (vsi->type == ICE_VSI_CHNL) {
> > > if (!vsi->alloc_txq && vsi->num_txq)
> > > max_txqs[i] = vsi->num_txq;
> > > else
> > > max_txqs[i] = pf->num_lan_tx;
> > > } else if (vsi->type == ICE_VSI_PF) {
> > > max_txqs[i] += vsi->num_xdp_txq;
> >
> > Would need to be
> > max_txqs[i] = vsi->alloc_txq + vsi->num_xdp_txq;
> >
> > > } else {
> > > max_txqs[i] = vsi->alloc_txq;
> > > }
> > >
> > > Of course this begins to verge on the switch/case/default format.
> > >
> > > sln
> > >
> >
> > I was going for logic: assign default values first, adjust based on enabled
> > features (well, a single feature) second. The thing that in my opinion would
> > make it more clear would be replacing 'vsi->type == ICE_VSI_PF' with
> > ice_is_xdp_ena_vsi(). Do you think this is worth doing?
>
> Hmm... I made a dumb error in a quick read of the code. This suggests
> that making the intent of the code more clear would be a good idea. I
> think that the ice_is_xdp_ena_vsi() would definitely make it more clear
> as opposed to the bare ICE_VCSI_PF.
I think that the current patch fits well for stable, and the issue
looks relevant enough that we should prefer have it fixed in this
cycle. Any refactoring/change would not allow such result due to the
timing.
I'll apply the series as-is, please follow-up on net-next as needed (no
rush).
Cheers,
Paolo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net 3/3] ice: Fix PF with enabled XDP going no-carrier after reset
2023-12-21 7:23 ` Paolo Abeni
@ 2023-12-21 9:05 ` Larysa Zaremba
0 siblings, 0 replies; 7+ messages in thread
From: Larysa Zaremba @ 2023-12-21 9:05 UTC (permalink / raw)
To: Paolo Abeni
Cc: Nelson, Shannon, Tony Nguyen, davem, kuba, edumazet, netdev,
maciej.fijalkowski, magnus.karlsson, ast, daniel, hawk,
john.fastabend, bpf, Przemek Kitszel, Simon Horman,
Chandan Kumar Rout
On Thu, Dec 21, 2023 at 08:23:39AM +0100, Paolo Abeni wrote:
> On Wed, 2023-12-20 at 09:04 -0800, Nelson, Shannon wrote:
> > On 12/20/2023 1:23 AM, Larysa Zaremba wrote:
> > >
> > > On Tue, Dec 19, 2023 at 04:09:09PM -0800, Nelson, Shannon wrote:
> > > > On 12/18/2023 11:27 AM, Tony Nguyen wrote:
> > > > > Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.
> > > > >
> > > > >
> > > > > From: Larysa Zaremba <larysa.zaremba@intel.com>
> > > > >
> > > > > Commit 6624e780a577fc596788 ("ice: split ice_vsi_setup into smaller
> > > > > functions") has refactored a bunch of code involved in PFR. In this
> > > > > process, TC queue number adjustment for XDP was lost. Bring it back.
> > > > >
> > > > > Lack of such adjustment causes interface to go into no-carrier after a
> > > > > reset, if XDP program is attached, with the following message:
> > > > >
> > > > > ice 0000:b1:00.0: Failed to set LAN Tx queue context, error: -22
> > > > > ice 0000:b1:00.0 ens801f0np0: Failed to open VSI 0x0006 on switch 0x0001
> > > > > ice 0000:b1:00.0: enable VSI failed, err -22, VSI index 0, type ICE_VSI_PF
> > > > > ice 0000:b1:00.0: PF VSI rebuild failed: -22
> > > > > ice 0000:b1:00.0: Rebuild failed, unload and reload driver
> > > > >
> > > > > Fixes: 6624e780a577 ("ice: split ice_vsi_setup into smaller functions")
> > > > > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> > > > > Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
> > > > > Reviewed-by: Simon Horman <horms@kernel.org>
> > > > > Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
> > > > > Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> > > > > ---
> > > > > drivers/net/ethernet/intel/ice/ice_lib.c | 3 +++
> > > > > 1 file changed, 3 insertions(+)
> > > > >
> > > > > diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
> > > > > index de7ba87af45d..1bad6e17f9be 100644
> > > > > --- a/drivers/net/ethernet/intel/ice/ice_lib.c
> > > > > +++ b/drivers/net/ethernet/intel/ice/ice_lib.c
> > > > > @@ -2371,6 +2371,9 @@ static int ice_vsi_cfg_tc_lan(struct ice_pf *pf, struct ice_vsi *vsi)
> > > > > } else {
> > > > > max_txqs[i] = vsi->alloc_txq;
> > > > > }
> > > > > +
> > > > > + if (vsi->type == ICE_VSI_PF)
> > > > > + max_txqs[i] += vsi->num_xdp_txq;
> > > >
> > > > Since this new code is coming right after an existing
> > > > if (vsi->type == ICE_VSI_CHNL)
> > > > it looks like it would make sense to make it an 'else if' in that last
> > > > block, e.g.:
> > > >
> > > > if (vsi->type == ICE_VSI_CHNL) {
> > > > if (!vsi->alloc_txq && vsi->num_txq)
> > > > max_txqs[i] = vsi->num_txq;
> > > > else
> > > > max_txqs[i] = pf->num_lan_tx;
> > > > } else if (vsi->type == ICE_VSI_PF) {
> > > > max_txqs[i] += vsi->num_xdp_txq;
> > >
> > > Would need to be
> > > max_txqs[i] = vsi->alloc_txq + vsi->num_xdp_txq;
> > >
> > > > } else {
> > > > max_txqs[i] = vsi->alloc_txq;
> > > > }
> > > >
> > > > Of course this begins to verge on the switch/case/default format.
> > > >
> > > > sln
> > > >
> > >
> > > I was going for logic: assign default values first, adjust based on enabled
> > > features (well, a single feature) second. The thing that in my opinion would
> > > make it more clear would be replacing 'vsi->type == ICE_VSI_PF' with
> > > ice_is_xdp_ena_vsi(). Do you think this is worth doing?
> >
> > Hmm... I made a dumb error in a quick read of the code. This suggests
> > that making the intent of the code more clear would be a good idea. I
> > think that the ice_is_xdp_ena_vsi() would definitely make it more clear
> > as opposed to the bare ICE_VCSI_PF.
>
> I think that the current patch fits well for stable, and the issue
> looks relevant enough that we should prefer have it fixed in this
> cycle. Any refactoring/change would not allow such result due to the
> timing.
>
> I'll apply the series as-is, please follow-up on net-next as needed (no
> rush).
Ok, thanks a lot.
>
> Cheers,
>
> Paolo
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-12-21 9:06 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20231218192708.3397702-1-anthony.l.nguyen@intel.com>
2023-12-18 19:27 ` [PATCH net 3/3] ice: Fix PF with enabled XDP going no-carrier after reset Tony Nguyen
2023-12-19 16:43 ` Maciej Fijalkowski
2023-12-20 0:09 ` Nelson, Shannon
2023-12-20 9:23 ` Larysa Zaremba
2023-12-20 17:04 ` Nelson, Shannon
2023-12-21 7:23 ` Paolo Abeni
2023-12-21 9:05 ` Larysa Zaremba
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox