Message ID | 20250228021227.871993-3-saeed@kernel.org (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | devlink, mlx5: Add new parameters for link management and SRIOV/eSwitch configurations | expand |
Fri, Feb 28, 2025 at 03:12:15AM +0100, saeed@kernel.org wrote: >From: Vlad Dumitrescu <vdumitrescu@nvidia.com> > >NICs are typically configured with total_vfs=0, forcing users to rely >on external tools to enable SR-IOV (a widely used and essential feature). > >Add total_vfs parameter to devlink for SR-IOV max VF configurability. >Enables standard kernel tools to manage SR-IOV, addressing the need for >flexible VF configuration. > >Signed-off-by: Vlad Dumitrescu <vdumitrescu@nvidia.com> >Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Reviewed-by: Jiri Pirko <jiri@nvidia.com>
On Thu, Feb 27, 2025 at 06:12:15PM -0800, Saeed Mahameed wrote: > From: Vlad Dumitrescu <vdumitrescu@nvidia.com> > > NICs are typically configured with total_vfs=0, forcing users to rely > on external tools to enable SR-IOV (a widely used and essential feature). > > Add total_vfs parameter to devlink for SR-IOV max VF configurability. > Enables standard kernel tools to manage SR-IOV, addressing the need for > flexible VF configuration. > > Signed-off-by: Vlad Dumitrescu <vdumitrescu@nvidia.com> > Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Tested-by: Kamal Heib <kheib@redhat.com> > --- > Documentation/networking/devlink/devlink-params.rst | 3 +++ > include/net/devlink.h | 4 ++++ > net/devlink/param.c | 5 +++++ > 3 files changed, 12 insertions(+) > > diff --git a/Documentation/networking/devlink/devlink-params.rst b/Documentation/networking/devlink/devlink-params.rst > index 4e01dc32bc08..f266da05ab0d 100644 > --- a/Documentation/networking/devlink/devlink-params.rst > +++ b/Documentation/networking/devlink/devlink-params.rst > @@ -137,3 +137,6 @@ own name. > * - ``event_eq_size`` > - u32 > - Control the size of asynchronous control events EQ. > + * - ``total_vfs`` > + - u32 > + - The total number of Virtual Functions (VFs) supported by the PF. > diff --git a/include/net/devlink.h b/include/net/devlink.h > index b8783126c1ed..eed1e4507d17 100644 > --- a/include/net/devlink.h > +++ b/include/net/devlink.h > @@ -520,6 +520,7 @@ enum devlink_param_generic_id { > DEVLINK_PARAM_GENERIC_ID_ENABLE_IWARP, > DEVLINK_PARAM_GENERIC_ID_IO_EQ_SIZE, > DEVLINK_PARAM_GENERIC_ID_EVENT_EQ_SIZE, > + DEVLINK_PARAM_GENERIC_ID_TOTAL_VFS, > > /* add new param generic ids above here*/ > __DEVLINK_PARAM_GENERIC_ID_MAX, > @@ -578,6 +579,9 @@ enum devlink_param_generic_id { > #define DEVLINK_PARAM_GENERIC_EVENT_EQ_SIZE_NAME "event_eq_size" > #define DEVLINK_PARAM_GENERIC_EVENT_EQ_SIZE_TYPE DEVLINK_PARAM_TYPE_U32 > > +#define DEVLINK_PARAM_GENERIC_TOTAL_VFS_NAME "total_vfs" > +#define DEVLINK_PARAM_GENERIC_TOTAL_VFS_TYPE DEVLINK_PARAM_TYPE_U32 > + > #define DEVLINK_PARAM_GENERIC(_id, _cmodes, _get, _set, _validate) \ > { \ > .id = DEVLINK_PARAM_GENERIC_ID_##_id, \ > diff --git a/net/devlink/param.c b/net/devlink/param.c > index e19d978dffa6..d163afbadab9 100644 > --- a/net/devlink/param.c > +++ b/net/devlink/param.c > @@ -92,6 +92,11 @@ static const struct devlink_param devlink_param_generic[] = { > .name = DEVLINK_PARAM_GENERIC_EVENT_EQ_SIZE_NAME, > .type = DEVLINK_PARAM_GENERIC_EVENT_EQ_SIZE_TYPE, > }, > + { > + .id = DEVLINK_PARAM_GENERIC_ID_TOTAL_VFS, > + .name = DEVLINK_PARAM_GENERIC_TOTAL_VFS_NAME, > + .type = DEVLINK_PARAM_GENERIC_TOTAL_VFS_TYPE, > + }, > }; > > static int devlink_param_generic_verify(const struct devlink_param *param) > -- > 2.48.1 > >
diff --git a/Documentation/networking/devlink/devlink-params.rst b/Documentation/networking/devlink/devlink-params.rst index 4e01dc32bc08..f266da05ab0d 100644 --- a/Documentation/networking/devlink/devlink-params.rst +++ b/Documentation/networking/devlink/devlink-params.rst @@ -137,3 +137,6 @@ own name. * - ``event_eq_size`` - u32 - Control the size of asynchronous control events EQ. + * - ``total_vfs`` + - u32 + - The total number of Virtual Functions (VFs) supported by the PF. diff --git a/include/net/devlink.h b/include/net/devlink.h index b8783126c1ed..eed1e4507d17 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -520,6 +520,7 @@ enum devlink_param_generic_id { DEVLINK_PARAM_GENERIC_ID_ENABLE_IWARP, DEVLINK_PARAM_GENERIC_ID_IO_EQ_SIZE, DEVLINK_PARAM_GENERIC_ID_EVENT_EQ_SIZE, + DEVLINK_PARAM_GENERIC_ID_TOTAL_VFS, /* add new param generic ids above here*/ __DEVLINK_PARAM_GENERIC_ID_MAX, @@ -578,6 +579,9 @@ enum devlink_param_generic_id { #define DEVLINK_PARAM_GENERIC_EVENT_EQ_SIZE_NAME "event_eq_size" #define DEVLINK_PARAM_GENERIC_EVENT_EQ_SIZE_TYPE DEVLINK_PARAM_TYPE_U32 +#define DEVLINK_PARAM_GENERIC_TOTAL_VFS_NAME "total_vfs" +#define DEVLINK_PARAM_GENERIC_TOTAL_VFS_TYPE DEVLINK_PARAM_TYPE_U32 + #define DEVLINK_PARAM_GENERIC(_id, _cmodes, _get, _set, _validate) \ { \ .id = DEVLINK_PARAM_GENERIC_ID_##_id, \ diff --git a/net/devlink/param.c b/net/devlink/param.c index e19d978dffa6..d163afbadab9 100644 --- a/net/devlink/param.c +++ b/net/devlink/param.c @@ -92,6 +92,11 @@ static const struct devlink_param devlink_param_generic[] = { .name = DEVLINK_PARAM_GENERIC_EVENT_EQ_SIZE_NAME, .type = DEVLINK_PARAM_GENERIC_EVENT_EQ_SIZE_TYPE, }, + { + .id = DEVLINK_PARAM_GENERIC_ID_TOTAL_VFS, + .name = DEVLINK_PARAM_GENERIC_TOTAL_VFS_NAME, + .type = DEVLINK_PARAM_GENERIC_TOTAL_VFS_TYPE, + }, }; static int devlink_param_generic_verify(const struct devlink_param *param)