Message ID | 4d57c072ca7d12034a1be4d9284e2be5988e1330.1698929590.git.hengqi@linux.alibaba.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | virtio-net: support dynamic coalescing moderation | expand |
On Thu, Nov 2, 2023 at 9:10 PM Heng Qi <hengqi@linux.alibaba.com> wrote: > > We do not currently support tx dim, so respond to -EOPNOTSUPP. > > Signed-off-by: Heng Qi <hengqi@linux.alibaba.com> > --- > v1->v2: > - Use -EOPNOTSUPP instead of specific implementation. > > drivers/net/virtio_net.c | 29 ++++++++++++++++++++++++++--- > 1 file changed, 26 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index 5473aa1ee5cd..03edeadd0725 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -3364,9 +3364,15 @@ static int virtnet_get_link_ksettings(struct net_device *dev, > static int virtnet_send_tx_notf_coal_cmds(struct virtnet_info *vi, > struct ethtool_coalesce *ec) > { > + bool tx_ctrl_dim_on = !!ec->use_adaptive_tx_coalesce; > struct scatterlist sgs_tx; > int i; > > + if (tx_ctrl_dim_on) { > + pr_debug("Failed to enable adaptive-tx, which is not supported\n"); > + return -EOPNOTSUPP; > + } When can we hit this? Thanks > + > vi->ctrl->coal_tx.tx_usecs = cpu_to_le32(ec->tx_coalesce_usecs); > vi->ctrl->coal_tx.tx_max_packets = cpu_to_le32(ec->tx_max_coalesced_frames); > sg_init_one(&sgs_tx, &vi->ctrl->coal_tx, sizeof(vi->ctrl->coal_tx)); > @@ -3497,6 +3503,25 @@ static int virtnet_send_rx_notf_coal_vq_cmds(struct virtnet_info *vi, > return 0; > } > > +static int virtnet_send_tx_notf_coal_vq_cmds(struct virtnet_info *vi, > + struct ethtool_coalesce *ec, > + u16 queue) > +{ > + bool tx_ctrl_dim_on = !!ec->use_adaptive_tx_coalesce; > + int err; > + > + if (tx_ctrl_dim_on) { > + pr_debug("Enabling adaptive-tx for txq%d is not supported\n", queue); > + return -EOPNOTSUPP; > + } > + > + err = virtnet_send_tx_ctrl_coal_vq_cmd(vi, queue, > + ec->tx_coalesce_usecs, > + ec->tx_max_coalesced_frames); > + > + return err; > +} > + > static int virtnet_send_notf_coal_vq_cmds(struct virtnet_info *vi, > struct ethtool_coalesce *ec, > u16 queue) > @@ -3507,9 +3532,7 @@ static int virtnet_send_notf_coal_vq_cmds(struct virtnet_info *vi, > if (err) > return err; > > - err = virtnet_send_tx_ctrl_coal_vq_cmd(vi, queue, > - ec->tx_coalesce_usecs, > - ec->tx_max_coalesced_frames); > + err = virtnet_send_tx_notf_coal_vq_cmds(vi, ec, queue); > if (err) > return err; > > -- > 2.19.1.6.gb485710b >
在 2023/11/9 下午12:45, Jason Wang 写道: > On Thu, Nov 2, 2023 at 9:10 PM Heng Qi <hengqi@linux.alibaba.com> wrote: >> We do not currently support tx dim, so respond to -EOPNOTSUPP. >> >> Signed-off-by: Heng Qi <hengqi@linux.alibaba.com> >> --- >> v1->v2: >> - Use -EOPNOTSUPP instead of specific implementation. >> >> drivers/net/virtio_net.c | 29 ++++++++++++++++++++++++++--- >> 1 file changed, 26 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c >> index 5473aa1ee5cd..03edeadd0725 100644 >> --- a/drivers/net/virtio_net.c >> +++ b/drivers/net/virtio_net.c >> @@ -3364,9 +3364,15 @@ static int virtnet_get_link_ksettings(struct net_device *dev, >> static int virtnet_send_tx_notf_coal_cmds(struct virtnet_info *vi, >> struct ethtool_coalesce *ec) >> { >> + bool tx_ctrl_dim_on = !!ec->use_adaptive_tx_coalesce; >> struct scatterlist sgs_tx; >> int i; >> >> + if (tx_ctrl_dim_on) { >> + pr_debug("Failed to enable adaptive-tx, which is not supported\n"); >> + return -EOPNOTSUPP; >> + } > When can we hit this? When user tries to enable tx dim using following cmd: 'ethtool -C eth0 adaptive-tx on' Thanks! > > Thanks > >> + >> vi->ctrl->coal_tx.tx_usecs = cpu_to_le32(ec->tx_coalesce_usecs); >> vi->ctrl->coal_tx.tx_max_packets = cpu_to_le32(ec->tx_max_coalesced_frames); >> sg_init_one(&sgs_tx, &vi->ctrl->coal_tx, sizeof(vi->ctrl->coal_tx)); >> @@ -3497,6 +3503,25 @@ static int virtnet_send_rx_notf_coal_vq_cmds(struct virtnet_info *vi, >> return 0; >> } >> >> +static int virtnet_send_tx_notf_coal_vq_cmds(struct virtnet_info *vi, >> + struct ethtool_coalesce *ec, >> + u16 queue) >> +{ >> + bool tx_ctrl_dim_on = !!ec->use_adaptive_tx_coalesce; >> + int err; >> + >> + if (tx_ctrl_dim_on) { >> + pr_debug("Enabling adaptive-tx for txq%d is not supported\n", queue); >> + return -EOPNOTSUPP; >> + } >> + >> + err = virtnet_send_tx_ctrl_coal_vq_cmd(vi, queue, >> + ec->tx_coalesce_usecs, >> + ec->tx_max_coalesced_frames); >> + >> + return err; >> +} >> + >> static int virtnet_send_notf_coal_vq_cmds(struct virtnet_info *vi, >> struct ethtool_coalesce *ec, >> u16 queue) >> @@ -3507,9 +3532,7 @@ static int virtnet_send_notf_coal_vq_cmds(struct virtnet_info *vi, >> if (err) >> return err; >> >> - err = virtnet_send_tx_ctrl_coal_vq_cmd(vi, queue, >> - ec->tx_coalesce_usecs, >> - ec->tx_max_coalesced_frames); >> + err = virtnet_send_tx_notf_coal_vq_cmds(vi, ec, queue); >> if (err) >> return err; >> >> -- >> 2.19.1.6.gb485710b >>
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 5473aa1ee5cd..03edeadd0725 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -3364,9 +3364,15 @@ static int virtnet_get_link_ksettings(struct net_device *dev, static int virtnet_send_tx_notf_coal_cmds(struct virtnet_info *vi, struct ethtool_coalesce *ec) { + bool tx_ctrl_dim_on = !!ec->use_adaptive_tx_coalesce; struct scatterlist sgs_tx; int i; + if (tx_ctrl_dim_on) { + pr_debug("Failed to enable adaptive-tx, which is not supported\n"); + return -EOPNOTSUPP; + } + vi->ctrl->coal_tx.tx_usecs = cpu_to_le32(ec->tx_coalesce_usecs); vi->ctrl->coal_tx.tx_max_packets = cpu_to_le32(ec->tx_max_coalesced_frames); sg_init_one(&sgs_tx, &vi->ctrl->coal_tx, sizeof(vi->ctrl->coal_tx)); @@ -3497,6 +3503,25 @@ static int virtnet_send_rx_notf_coal_vq_cmds(struct virtnet_info *vi, return 0; } +static int virtnet_send_tx_notf_coal_vq_cmds(struct virtnet_info *vi, + struct ethtool_coalesce *ec, + u16 queue) +{ + bool tx_ctrl_dim_on = !!ec->use_adaptive_tx_coalesce; + int err; + + if (tx_ctrl_dim_on) { + pr_debug("Enabling adaptive-tx for txq%d is not supported\n", queue); + return -EOPNOTSUPP; + } + + err = virtnet_send_tx_ctrl_coal_vq_cmd(vi, queue, + ec->tx_coalesce_usecs, + ec->tx_max_coalesced_frames); + + return err; +} + static int virtnet_send_notf_coal_vq_cmds(struct virtnet_info *vi, struct ethtool_coalesce *ec, u16 queue) @@ -3507,9 +3532,7 @@ static int virtnet_send_notf_coal_vq_cmds(struct virtnet_info *vi, if (err) return err; - err = virtnet_send_tx_ctrl_coal_vq_cmd(vi, queue, - ec->tx_coalesce_usecs, - ec->tx_max_coalesced_frames); + err = virtnet_send_tx_notf_coal_vq_cmds(vi, ec, queue); if (err) return err;
We do not currently support tx dim, so respond to -EOPNOTSUPP. Signed-off-by: Heng Qi <hengqi@linux.alibaba.com> --- v1->v2: - Use -EOPNOTSUPP instead of specific implementation. drivers/net/virtio_net.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-)