[ovs-dev] [PATCH v4 3/3] netdev-dpdk: Add TCP Segmentation Offload support

Stokes, Ian ian.stokes at intel.com
Fri Jan 17 21:41:21 UTC 2020



On 1/17/2020 9:37 PM, Flavio Leitner wrote:
> On Fri, Jan 17, 2020 at 12:37:56PM -0800, William Tu wrote:
>> On Fri, Jan 17, 2020 at 04:58:57PM -0300, Flavio Leitner wrote:
>>> On Fri, Jan 17, 2020 at 06:58:56PM +0100, Ilya Maximets wrote:
>>>> On 16.01.2020 18:00, Flavio Leitner wrote:
>   > [...]
>>>>> diff --git a/lib/userspace-tso.c b/lib/userspace-tso.c
>>>>> new file mode 100644
>>>>> index 000000000..f843c2a76
>>>>> --- /dev/null
>>>>> +++ b/lib/userspace-tso.c
>>>>> @@ -0,0 +1,48 @@
>>>>> +/*
>>>>> + * Copyright (c) 2020 Red Hat, Inc.
>>>>> + *
>>>>> + * Licensed under the Apache License, Version 2.0 (the "License");
>>>>> + * you may not use this file except in compliance with the License.
>>>>> + * You may obtain a copy of the License at:
>>>>> + *
>>>>> + *     http://www.apache.org/licenses/LICENSE-2.0
>>>>> + *
>>>>> + * Unless required by applicable law or agreed to in writing, software
>>>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>>>> + * See the License for the specific language governing permissions and
>>>>> + * limitations under the License.
>>>>> + */
>>>>> +
>>>>> +#include <config.h>
>>>>> +
>>>>> +#include "smap.h"
>>>>> +#include "ovs-thread.h"
>>>>> +#include "openvswitch/vlog.h"
>>>>> +#include "dpdk.h"
>>>>> +#include "userspace-tso.h"
>>>>> +#include "vswitch-idl.h"
>>>>> +
>>>>> +VLOG_DEFINE_THIS_MODULE(userspace_tso);
>>>>> +
>>>>> +static bool userspace_tso = false;
>>>>> +
>>>>> +void
>>>>> +userspace_tso_init(const struct smap *ovs_other_config)
>>>>> +{
>>>>> +    if (smap_get_bool(ovs_other_config, "userspace-tso-enable", false)) {
>>>>> +        static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER;
>>>>> +
>>>>> +        if (ovsthread_once_start(&once)) {
>>>>> +            VLOG_INFO("Userspace TCP Segmentation Offloading support enabled");
>>>>> +            userspace_tso = true;
>>>>
>>>> Since dp_packet functions has no implementation if OVS built without
>>>> DPDK support, I think, we need to restrict enabling the functionality.
>>>
>>> I will add the restriction back.
>>>
>> Hi Flavio,
>>
>> I took a look at the netdev-linux.c and related parts.
>> I think this patchset also work for non-DPDK case if we
>> implement the dp_packet_hwol_*?
> 
> That's correct.
> 
>> For af_packet, the change to netdev_linux_batch_rxq_recv_sock and
>> netdev_linux_sock_batch_send using vnet header makes rx/tx GSO packet
>> from/to kernel possible, and similar case for tap interface.
>>
>> Or am I missing something?
> 
> No, I think you're correct. However, I am adding the restriction
> back because at this moment I am focusing on DPDK and I haven't
> tested yet OvS without DPDK and TSO enabled.
> 
> Once we know it's okay, we can remove that restriction.

To be fair, this is an experimental function at the moment. Something we 
can fix up in the future.

BR
Ian
> 


More information about the dev mailing list