> >"Kavanagh, Mark B" <mark.b.kavan...@intel.com> writes: > >>>Hi Mark, >>> >>>Mark Kavanagh <mark.b.kavan...@intel.com> writes: >>> >>>> TCP Segmentation Offload (TSO) is a feature which enables >>>> the TCP/IP network stack to delegate segmentation of a TCP >>>> segment to the NIC, thus saving compute resources. >>>> >>>> This commit adds support for TSO in the DPDK vHost-User backend, >>>> to OvS v2.6.1; this enables a guest to offload segmentation of >>>> TCP segments that it sends to OvS. >>>> >>>> This patch is not intended for upstreaming, but rather was produced >>>> in response to requests for an updated version of the initial TSO RFC >>>> patch posted here: >>>> https://mail.openvswitch.org/pipermail/ovs-dev/2016-June/316414.html >>>> >>>> Signed-off-by: Mark Kavanagh <mark.b.kavan...@intel.com> >>>> --- >>> >>>... >>> >>>> diff --git a/lib/packets.c b/lib/packets.c >>>> index e4c29d5..2417ba2 100644 >>>> --- a/lib/packets.c >>>> +++ b/lib/packets.c >>>> @@ -33,6 +33,10 @@ >>>> #include "dp-packet.h" >>>> #include "unaligned.h" >>>> >>>> +#ifdef DPDK_NETDEV >>>> +#include "rte_ether.h" >>>> +#endif >>>> + >>>> const struct in6_addr in6addr_exact = IN6ADDR_EXACT_INIT; >>>> const struct in6_addr in6addr_all_hosts = IN6ADDR_ALL_HOSTS_INIT; >>>> >>>> @@ -204,6 +208,11 @@ eth_push_vlan(struct dp_packet *packet, ovs_be16 >>>> tpid, ovs_be16 tci) >>>> memmove(veh, (char *)veh + VLAN_HEADER_LEN, 2 * ETH_ADDR_LEN); >>>> veh->veth_type = tpid; >>>> veh->veth_tci = tci & htons(~VLAN_CFI); >>>> + >>>> +#ifdef DPDK_NETDEV >>>> + struct rte_mbuf *pkt = &(packet->mbuf); >>>> + pkt->l2_len += sizeof(struct vlan_hdr); >>>> +#endif >>>> } >>>> >>>> /* Removes outermost VLAN header (if any is present) from 'packet'. >>>> @@ -221,6 +230,11 @@ eth_pop_vlan(struct dp_packet *packet) >>>> memmove((char *)veh + VLAN_HEADER_LEN, veh, 2 * ETH_ADDR_LEN); >>>> dp_packet_resize_l2(packet, -VLAN_HEADER_LEN); >>>> } >>>> + >>>> +#ifdef DPDK_NETDEV >>>> + struct rte_mbuf *pkt = &(packet->mbuf); >>>> + pkt->l2_len -= sizeof(struct vlan_hdr); >>>> +#endif >>>> } >>>> >>>> /* Set ethertype of the packet. */ >>> >>>Would it be better to change the dp_packet_resize_l2 call? Are you >> >> Hey Aaron, >> >> Good call - that would definitely be a more suitable location. >> >>>worried about the mpls case? >> >> I haven't considered mpls here at all, as it wasn't part of the use >> case for which this new version of the patch was produced I'm afraid. >> Out of curiosity, what is your concern here? > >The two users of dp_packet_resize_l2 are the vlan and the mpls code. I >had assumed you skipped for that reason, but maybe that isn't the case.
Yeah, I hadn't considered mpls (intentionally); if dp_packet_resize_l2 is invoked as part of mpls, then the code is better as-is. Thanks again, Mark > >> Thanks in advance, >> Mark _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev