On Wed, 29 May 2019 20:05:16 +0000, Patel, Vedang wrote: > [Sending the email again since the last one was rejected by netdev because it > was html.] > > > On May 29, 2019, at 12:14 PM, Jakub Kicinski <jakub.kicin...@netronome.com> > > wrote: > > > > On Wed, 29 May 2019 17:06:49 +0000, Patel, Vedang wrote: > >>> On May 28, 2019, at 3:45 PM, Jakub Kicinski > >>> <jakub.kicin...@netronome.com> wrote: > >>> On Tue, 28 May 2019 10:46:44 -0700, Vedang Patel wrote: > >>>> From: Vinicius Costa Gomes <vinicius.go...@intel.com> > >>>> > >>>> This adds the UAPI and the core bits necessary for userspace to > >>>> request hardware offloading to be enabled. > >>>> > >>>> The future commits will enable hybrid or full offloading for taprio. This > >>>> commit sets up the infrastructure to enable it via the netlink interface. > >>>> > >>>> Signed-off-by: Vinicius Costa Gomes <vinicius.go...@intel.com> > >>>> Signed-off-by: Vedang Patel <vedang.pa...@intel.com> > >>> > >>> Other qdiscs offload by default, this offload-level selection here is a > >>> little bit inconsistent with that :( > >>> > >> There are 2 different offload modes introduced in this patch. > >> > >> 1. Txtime offload mode: This mode depends on skip_sock_check flag being > >> set in the etf qdisc. Also, it requires some manual configuration which > >> might be specific to the network adapter card. For example, for the i210 > >> card, the user will have to route all the traffic to the highest priority > >> queue and install etf qdisc with offload enabled on that queue. So, I > >> don’t think this mode should be enabled by default. > > > > Excellent, it looks like there will be driver patches necessary for > > this offload to function, also it seems your offload enable function > > still contains this after the series: > > > > /* FIXME: enable offloading */ > > > > Please only post offload infrastructure when fully fleshed out and with > > driver patches making use of it. > > The above comment refers to the full offload mode described below. It > is not needed for txtime offload mode. Txtime offload mode is > essentially setting the transmit time for each packet depending on > what interval it is going to be transmitted instead of relying on the > hrtimers to open gates and send packets. More details about why > exactly this is done is mentioned in patch #5[1] of this series.
From looking at this set it looks like I can add that qdisc to any netdev now *with* offload, and as long as the driver has _any_ ndo_setup_tc implementation taprio will not return an error. Perhaps this mode of operation should not be called offload? Can't the ETF qdisc underneath run in software mode? > What we can do is just add the txtime offload related flag and add > the full offload flag whenever the driver bits are ready. Does that > address your concern? That would be a step in the right direction. And please remove all the other unused code from the series. AFAICT this is what the enable offload function looks like after your set - what's the point of the 'err' variable? +static int taprio_enable_offload(struct net_device *dev, + struct tc_mqprio_qopt *mqprio, + struct taprio_sched *q, + struct sched_gate_list *sched, + struct netlink_ext_ack *extack, + u32 offload_flags) +{ + const struct net_device_ops *ops = dev->netdev_ops; + int err = 0; + + if (TXTIME_OFFLOAD_IS_ON(offload_flags)) + goto done; + + if (!FULL_OFFLOAD_IS_ON(offload_flags)) { + NL_SET_ERR_MSG(extack, "Offload mode is not supported"); + return -EOPNOTSUPP; + } + + if (!ops->ndo_setup_tc) { + NL_SET_ERR_MSG(extack, "Specified device does not support taprio offload"); + return -EOPNOTSUPP; + } + + /* FIXME: enable offloading */ + +done: + if (err == 0) { + q->dequeue = taprio_dequeue_offload; + q->peek = taprio_peek_offload; + q->offload_flags = offload_flags; + } + + return err; +}