> On May 29, 2019, at 2:06 PM, Jakub Kicinski <jakub.kicin...@netronome.com> 
> wrote:
> 
> 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?
> 
Yeah, it doesn’t make much sense to run ETF in software mode but it can be 
done. What about naming it txtime-assist instead?
>> 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?
> 
Yes. This patch seems to have a few really silly mistakes. I apologize for 
that. I willl clean it up and send another version of the series. There is no 
unused code anywhere else in the series.
> +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;
> +}

Reply via email to