lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20220429110440.497350d0@kernel.org> Date: Fri, 29 Apr 2022 11:04:40 -0700 From: Jakub Kicinski <kuba@...nel.org> To: Bin Chen <bin.chen@...igine.com> Cc: Simon Horman <simon.horman@...igine.com>, David Miller <davem@...emloft.net>, "netdev@...r.kernel.org" <netdev@...r.kernel.org>, oss-drivers <oss-drivers@...igine.com> Subject: Re: [PATCH net-next] nfp: VF rate limit support On Fri, 29 Apr 2022 11:03:47 -0700 Jakub Kicinski wrote: > On Fri, 29 Apr 2022 08:54:53 +0000 Bin Chen wrote: > > We agree with your suggestion, thanks. We plan to do this in two steps: > > 1.The firmware that currently support this feature will reject the nonzero min_tx_rate configuration, so the check here will not step in. We will remove the check from driver site and upstream the patch. > > 2.We will do more investigation jobs and add an appropriate check in the core. > > What do you think? > > Sorry, I meant the second part of the condition only, basically > something like: I hit the wrong shortcut :) Here's the patch: diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 73f2cbc440c9..8de191cedaf7 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -2368,6 +2368,19 @@ static int handle_vf_guid(struct net_device *dev, struct ifla_vf_guid *ivt, int return handle_infiniband_guid(dev, ivt, guid_type); } +static int rtnl_set_vf_rate(struct net_device *dev, int vf, int min_tx_rate, + int max_tx_rate) +{ + int err; + + if (!ops->ndo_set_vf_rate) + return -EOPNOTSUPP; + if (min_tx_rate > max_tx_rate) + return -EINVAL; + + return ops->ndo_set_vf_rate(dev, vf, min_tx_rate, max_tx_rate); +} + static int do_setvfinfo(struct net_device *dev, struct nlattr **tb) { const struct net_device_ops *ops = dev->netdev_ops; @@ -2443,11 +2456,8 @@ static int do_setvfinfo(struct net_device *dev, struct nlattr **tb) if (err < 0) return err; - err = -EOPNOTSUPP; - if (ops->ndo_set_vf_rate) - err = ops->ndo_set_vf_rate(dev, ivt->vf, - ivf.min_tx_rate, - ivt->rate); + err = rtnl_set_vf_rate(dev, ivt->vf, + ivf.min_tx_rate, ivt->rate); if (err < 0) return err; } @@ -2457,11 +2467,8 @@ static int do_setvfinfo(struct net_device *dev, struct nlattr **tb) if (ivt->vf >= INT_MAX) return -EINVAL; - err = -EOPNOTSUPP; - if (ops->ndo_set_vf_rate) - err = ops->ndo_set_vf_rate(dev, ivt->vf, - ivt->min_tx_rate, - ivt->max_tx_rate); + err = rtnl_set_vf_rate(dev, ivt->vf, + ivt->min_tx_rate, ivt->max_tx_rate); if (err < 0) return err; }
Powered by blists - more mailing lists