Message ID | 20210909085612.570229-1-david.m.ertman@intel.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] ice: Correctly deal with PFs that do not support RDMA | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for net |
netdev/subject_prefix | success | Link |
netdev/cc_maintainers | success | CCed 8 of 8 maintainers |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | success | Errors and warnings before: 2 this patch: 0 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 25 lines checked |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 2 this patch: 0 |
netdev/header_inline | success | Link |
On Thu, 9 Sep 2021 01:56:12 -0700 Dave Ertman wrote: > There are two cases where the current PF does not support RDMA > functionality. The first is if the NVM loaded on the device is set > to not support RDMA (common_caps.rdma is false). The second is if > the kernel bonding driver has included the current PF in an active > link aggregate. > > When the driver has determined that this PF does not support RDMA, then > auxiliary devices should not be created on the auxiliary bus. Without > a device on the auxiliary bus, even if the irdma driver is present, there > will be no RDMA activity attempted on this PF. > > Currently, in the reset flow, an attempt to create auxiliary devices is > performed without regard to the ability of the PF. There needs to be a > check in ice_aux_plug_dev (as the central point that creates auxiliary > devices) to see if the PF is in a state to support the functionality. > > When disabling and re-enabling RDMA due to the inclusion/removal of the PF > in a link aggregate, we also need to set/clear the bit which controls > auxiliary device creation so that a reset recovery in a link aggregate > situation doesn't try to create auxiliary devices when it shouldn't. > > Fixes: f9f5301e7e2d ("ice: Register auxiliary device to provide RDMA") > Reported-by: Yongxin Liu <yongxin.liu@windriver.com> > Signed-off-by: Dave Ertman <david.m.ertman@intel.com> > Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Why CC lkml but not CC RDMA or Leon?
> -----Original Message----- > From: Jakub Kicinski <kuba@kernel.org> > Sent: Thursday, September 9, 2021 2:49 PM > To: Ertman, David M <david.m.ertman@intel.com> > Cc: davem@davemloft.net; yongxin.liu@windriver.com; Saleem, Shiraz > <shiraz.saleem@intel.com>; Nguyen, Anthony L > <anthony.l.nguyen@intel.com>; netdev@vger.kernel.org; linux- > kernel@vger.kernel.org; Brandeburg, Jesse <jesse.brandeburg@intel.com>; > intel-wired-lan@lists.osuosl.org > Subject: Re: [PATCH net] ice: Correctly deal with PFs that do not support > RDMA > > On Thu, 9 Sep 2021 01:56:12 -0700 Dave Ertman wrote: > > There are two cases where the current PF does not support RDMA > > functionality. The first is if the NVM loaded on the device is set > > to not support RDMA (common_caps.rdma is false). The second is if > > the kernel bonding driver has included the current PF in an active > > link aggregate. > > > > When the driver has determined that this PF does not support RDMA, then > > auxiliary devices should not be created on the auxiliary bus. Without > > a device on the auxiliary bus, even if the irdma driver is present, there > > will be no RDMA activity attempted on this PF. > > > > Currently, in the reset flow, an attempt to create auxiliary devices is > > performed without regard to the ability of the PF. There needs to be a > > check in ice_aux_plug_dev (as the central point that creates auxiliary > > devices) to see if the PF is in a state to support the functionality. > > > > When disabling and re-enabling RDMA due to the inclusion/removal of the > PF > > in a link aggregate, we also need to set/clear the bit which controls > > auxiliary device creation so that a reset recovery in a link aggregate > > situation doesn't try to create auxiliary devices when it shouldn't. > > > > Fixes: f9f5301e7e2d ("ice: Register auxiliary device to provide RDMA") > > Reported-by: Yongxin Liu <yongxin.liu@windriver.com> > > Signed-off-by: Dave Ertman <david.m.ertman@intel.com> > > Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> > > Why CC lkml but not CC RDMA or Leon? Oversight on my part - thought I had cut-n-pasted all of the address in my git send-email command. Will send again and correct issue
diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h index eadcb9958346..3c4f08d20414 100644 --- a/drivers/net/ethernet/intel/ice/ice.h +++ b/drivers/net/ethernet/intel/ice/ice.h @@ -695,6 +695,7 @@ static inline void ice_set_rdma_cap(struct ice_pf *pf) { if (pf->hw.func_caps.common_cap.rdma && pf->num_rdma_msix) { set_bit(ICE_FLAG_RDMA_ENA, pf->flags); + set_bit(ICE_FLAG_AUX_ENA, pf->flags); ice_plug_aux_dev(pf); } } @@ -707,5 +708,6 @@ static inline void ice_clear_rdma_cap(struct ice_pf *pf) { ice_unplug_aux_dev(pf); clear_bit(ICE_FLAG_RDMA_ENA, pf->flags); + clear_bit(ICE_FLAG_AUX_ENA, pf->flags); } #endif /* _ICE_H_ */ diff --git a/drivers/net/ethernet/intel/ice/ice_idc.c b/drivers/net/ethernet/intel/ice/ice_idc.c index 1f2afdf6cd48..adcc9a251595 100644 --- a/drivers/net/ethernet/intel/ice/ice_idc.c +++ b/drivers/net/ethernet/intel/ice/ice_idc.c @@ -271,6 +271,12 @@ int ice_plug_aux_dev(struct ice_pf *pf) struct auxiliary_device *adev; int ret; + /* if this PF doesn't support a technology that requires auxiliary + * devices, then gracefully exit + */ + if (!ice_is_aux_ena(pf)) + return 0; + iadev = kzalloc(sizeof(*iadev), GFP_KERNEL); if (!iadev) return -ENOMEM;