On 24/02/2025 01:45, Allen Chen wrote:
> Hi Kevin,
> Thank you for reviewing my commit and updating the dpdk.rst.doc, but I think 
> the author is me,
> Because I did the main work,including modifying code and testing work.
> So can you give me reasonable explanation.
> 

Hi Allen,

Apologies, you are right, that was an unintentional reset-author while I
was updating the patch. I have updated the commit now to show you as
author. I do need to keep my 'Signed-off-by:' as I handled the patch.

thanks,
Kevin.


> Thanks.
> -----邮件原件-----
> 发件人: Kevin Traynor <[email protected]> 
> 发送时间: 2025年2月21日 23:59
> 收件人: Allen Chen <[email protected]>; [email protected]
> 主题: Re: [ovs-dev] [PATCH v2] netdev_offload_dpdk: Support vlan insertion in 
> vxlan header.
> 
> External Mail: This email originated from OUTSIDE of the organization!
> Do not click links, open attachments or provide ANY information unless you 
> recognize the sender and know the content is safe.
> 
> 
> On 14/02/2025 03:16, Allen Chen via dev wrote:
>> Support vlan insertion in vxlan header
>>
>> Signed-off-by: Allen Chen <[email protected]>
>>
> 
> Thanks Allen. I fixed the commit message and updated the dpdk.rst doc.
> With that, applied.
> 
>> ---
>> After vxlan encapsulation,an underlay packet becomes vxlan packet.
>> OVS will report an debug info if a vlan is inserted in vxlan header after 
>> vxlan encapsulation.
>> We can find the debug info "unsupported nested action inside 
>> clone(),action type:4" by "cat /var/log/openvswitch/ovs-vswitchd.log",so the 
>> ovs flow can not be offloaded successfully.
>>
>> For example,an underlay packet can be:Eth header/IP header/Payload, 
>> after vxlan encapsulation,it can be:Outer Eth header/Outer IP 
>> header/Outer UDP/Vxlan header/Inner Eth header/Inner IP 
>> header/Payload, after vlan insertion,it can be:Outer Eth header/Vlan 
>> header/Outer IP header/Outer UDP/Vxlan header/Inner Eth header/Inner 
>> IP header/Payload.(the debug info occur at this point)
>>
>> This commit can fix the problem in this case.
>>
>> The ovs configuration is listed:
>> ovs-vsctl add-br br-jmnd -- set bridge br-jmnd datapath_type=netdev -- 
>> br-set-external-id br-jmnd bridge-id br-jmnd -- set bridge br-jmnd 
>> fail-mode=standalone ovs-vsctl add-br br-ext -- set bridge br-ext 
>> datapath_type=netdev -- br-set-external-id br-ext bridge-id br-ext -- 
>> set bridge br-ext fail-mode=standalone ovs-vsctl add-port br-ext dpdk0 
>> -- set Interface dpdk0 type=dpdk options:dpdk-devargs=0000:01:00.0 
>> options:n_txq=8 options:n_rxq=8 options:n_rxq_desc=2048 
>> options:n_txq_desc=2048 ofport_request=1 ovs-vsctl add-port br-jmnd 
>> vxlan0 -- set interface vxlan0 type=vxlan 
>> options:{remote_ip="192.188.2.222",local_ip="192.188.2.210",in_key=100
>> ,out_key=100} ovs-vsctl add-port br-jmnd net0 -- set Interface net0 
>> type=dpdk 
>> options:{dpdk-devargs="net_jmnd0,iface=/tmp/sock0,client=1,queues=8",n
>> _rxq="8",n_rxq_desc="256",n_txq_desc="256"}
>> ovs-vsctl set Bridge br-ext other_config:hwaddr="02:02:03:04:05:06"
>> ovs-appctl tnl/arp/set br-ext 192.188.2.222 0A:00:27:00:00:0C 
>> ovs-ofctl del-flows br-jmnd ovs-ofctl add-flow br-jmnd 
>> in_port=vxlan0,action=output:net0 ovs-ofctl add-flow br-jmnd 
>> in_port=net0,ip,nw_src=172.0.1.2/32,nw_dst=172.0.1.1/32,action=output:
>> vxlan0
>> ifconfig br-ext 192.188.2.210
>> ovs-vsctl set o . other_config:max-idle=5000 ifconfig br-ext up 
>> ifconfig br-jmnd up ovs-ofctl add-flow br-ext 
>> priority=1,ip,udp,nw_src=192.188.2.210,nw_dst=192.188.2.222,actions=mo
>> d_vlan_vid:3001,output:dpdk0
>> ---
>>  lib/netdev-offload-dpdk.c | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c 
>> index b1c848f4d..d0b0d4c62 100644
>> --- a/lib/netdev-offload-dpdk.c
>> +++ b/lib/netdev-offload-dpdk.c
>> @@ -2137,6 +2137,9 @@ parse_clone_actions(struct netdev *netdev,
>>              if (add_output_action(netdev, actions, ca)) {
>>                  return -1;
>>              }
>> +        } else if (clone_type == OVS_ACTION_ATTR_PUSH_VLAN) {
>> +            const struct ovs_action_push_vlan *vlan = nl_attr_get(ca);
>> +            parse_vlan_push_action(actions, vlan);
>>          } else {
>>              VLOG_DBG_RL(&rl,
>>                          "Unsupported nested action inside clone(), "
> 

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to