I Have another idea, if we do not call vnet_hw_interface_set_flags(...,VNET_HW_INTERFACE_FLAG_LINK_UP) in dpdk_interface_admin_up_down function, flags will update appropriately in dpdk_update_link_state function. My patch <https://paste.ubuntu.com/p/ZxFGq3G4Nd/>
On Mon, Sep 10, 2018 at 4:35 PM emma sdi <s3m2e1.6s...@gmail.com> wrote: > I tested your patch, bug still exists. > > On Mon, Sep 10, 2018 at 4:22 PM Damjan Marion <dmar...@me.com> wrote: > >> Can you please try this patch: >> >> https://paste.ubuntu.com/p/GtqHd2yWqK/ >> >> -- >> Damjan >> >> On 10 Sep 2018, at 13:44, khers <s3m2e1.6s...@gmail.com> wrote: >> >> Dear Damjan >> >> This is output <https://paste.ubuntu.com/p/zfnJF9g5ns/> of 'show >> event-logger' before the problem. >> I set GigabitEthernet0/4/0 interface up, then call dump_sw_interface api >> in a c program. >> duplex an speed is not accurate. >> Outout <https://paste.ubuntu.com/p/Xvcqsv2pJS/> of 'show event-loger' >> after I saw the bug. >> >> footnote: output of 'git diff' <https://paste.ubuntu.com/p/chjj2BM2MR/> >> Cheers >> >> On Sun, Sep 9, 2018 at 2:47 PM Damjan Marion <dmar...@me.com> wrote: >> >>> >>> Dear Emma, Chore, >>> >>> Patch 14647 is not valid solution to the problem. >>> DPDK_DEVICE_FLAG_ADMIN_UP is not valid hw interface flag. >>> From that code section, you can see that dpdk_update_link_state() >>> function is called which is supposed to update link speed and duplex after >>> link goes up. >>> >>> Can you change LINK_STATE_ELOGS in src/plugins/dpdk/device/init.c to 1, >>> recompile vpp and capture link state events with "show event-logger" after >>> problem happens? >>> >>> -- >>> Damjan >>> >>> On 9 Sep 2018, at 08:50, emma sdi <s3m2e1.6s...@gmail.com> wrote: >>> >>> Dear community >>> >>> I have the same problem, and commit this suggestion in >>> https://gerrit.fd.io/r/#/c/14647/. >>> Please someone review this code, it seems OK to me. >>> >>> Cheers, >>> Khers >>> >>> On Mon, Sep 3, 2018 at 12:18 PM sadjad <skarim...@gmail.com> wrote: >>> >>>> Hi Dear VPP >>>> I tried to solve this problem. so i changed device.c in dpdk plugin as >>>> you can see below: >>>> >>>> On branch stable/1807 >>>> Your branch is up-to-date with 'origin/stable/1807'. >>>> Changes not staged for commit: >>>> >>>> modified: src/plugins/dpdk/device/device.c >>>> >>>> diff --git a/src/plugins/dpdk/device/device.c >>>> b/src/plugins/dpdk/device/device.c >>>> index d5ab2585..159a395e 100644 >>>> --- a/src/plugins/dpdk/device/device.c >>>> +++ b/src/plugins/dpdk/device/device.c >>>> @@ -547,11 +547,12 @@ dpdk_interface_admin_up_down (vnet_main_t * vnm, >>>> u32 hw_if_index, u32 flags) >>>> >>>> if (xd->flags & DPDK_DEVICE_FLAG_PMD_INIT_FAIL) >>>> return clib_error_return (0, "Interface not initialized"); >>>> - >>>> + u32 hw_flags = hif->flags; >>>> if (is_up) >>>> { >>>> + hw_flags |= DPDK_DEVICE_FLAG_ADMIN_UP; >>>> vnet_hw_interface_set_flags (vnm, xd->hw_if_index, >>>> - VNET_HW_INTERFACE_FLAG_LINK_UP); >>>> + hw_flags); >>>> if ((xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP) == 0) >>>> dpdk_device_start (xd); >>>> xd->flags |= DPDK_DEVICE_FLAG_ADMIN_UP; >>>> @@ -561,7 +562,8 @@ dpdk_interface_admin_up_down (vnet_main_t * vnm, >>>> u32 hw_if_index, u32 flags) >>>> } >>>> else >>>> { >>>> - vnet_hw_interface_set_flags (vnm, xd->hw_if_index, 0); >>>> + hw_flags &= ~DPDK_DEVICE_FLAG_ADMIN_UP; >>>> + vnet_hw_interface_set_flags (vnm, xd->hw_if_index, hw_flags); >>>> if ((xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP) != 0) >>>> dpdk_device_stop (xd); >>>> xd->flags &= ~DPDK_DEVICE_FLAG_ADMIN_UP; >>>> >>>> and problem is fixed. what is your idea? >>>> >>>> Best Regards >>>> >>>> On Mon, Sep 3, 2018 at 5:54 AM chore <s3m2e1.6s...@gmail.com> wrote: >>>> >>>>> Hi Dear VPP >>>>> I wrote a small api client like vpp_api_test that contains >>>>> sw_interface_dump api. when i was trying to use this api client i faced a >>>>> problem in "stable/1807". >>>>> At first i disconnected one of my links and my api client printed >>>>> below output: >>>>> >>>>> GigabitEthernet0/9/0 duplex half speed 0 >>>>> admin: down >>>>> link: down >>>>> >>>>> Then i connected the link and got this: >>>>> >>>>> GigabitEthernet0/9/0 duplex full speed 1000 >>>>> admin: down >>>>> link: down >>>>> >>>>> At the end i changed admin status of link and saw below output: >>>>> >>>>> GigabitEthernet0/9/0 duplex bogus speed 0 >>>>> admin: up >>>>> link: up >>>>> >>>>> and show hardware-interface GigabitEthernet0/9/0: >>>>> Name Idx Link Hardware >>>>> GigabitEthernet0/9/0 2 up GigabitEthernet0/9/0 >>>>> Ethernet address 08:00:27:94:50:ba >>>>> Intel 82540EM (e1000) >>>>> carrier up full duplex speed 1000 mtu 9202 >>>>> flags: admin-up pmd maybe-multiseg tx-offload intel-phdr-cksum >>>>> rx queues 1, rx desc 1024, tx queues 1, tx desc 1024 >>>>> cpu socket 0 >>>>> >>>>> based on last results, it seems to be a problem in >>>>> vl_api_sw_interface_dump. >>>>> If I want to describe this problem more, I have to say that 'duplex' >>>>> and 'speed' api returned values are wrong. however you can see correct >>>>> values in "show hardware-interface" cli output. >>>>> >>>>> In addition, GDB output shows that both 'speed' and 'duplex' are zero >>>>> in replied mp. >>>>> >>>>> Breakpoint 1, vl_api_sw_interface_details_t_handler (mp=0x3005eabc) at >>>>> interface-api.c:24 >>>>> 24 int speed = 0; >>>>> (gdb) p *mp >>>>> $2 = {_vl_msg_id = 21504, context = 0, sw_if_index = 33554432, >>>>> sup_sw_if_index = 33554432, l2_address_length = 100663296, l2_address = >>>>> "\b\000'\224P\272\000", >>>>> interface_name = "GigabitEthernet0/9/0", '\000' <repeats 43 times>, >>>>> admin_up_down = 1 '\001', link_up_down = 1 '\001', link_duplex = 0 '\000', >>>>> link_speed = 0 '\000', link_mtu = 61987, mtu = {673382400, 0, 0, 0}, >>>>> sub_id = 0, sub_dot1ad = 0 '\000', sub_dot1ah = 0 '\000', >>>>> sub_number_of_tags = 0 '\000', >>>>> sub_outer_vlan_id = 0, sub_inner_vlan_id = 0, sub_exact_match = 0 >>>>> '\000', sub_default = 0 '\000', sub_outer_vlan_id_any = 0 '\000', >>>>> sub_inner_vlan_id_any = 0 '\000', vtr_op = 0, vtr_push_dot1q = 0, >>>>> vtr_tag1 = 0, vtr_tag2 = 0, tag = '\000' <repeats 63 times>, outer_tag = >>>>> 0, >>>>> b_dmac = "\000\000\000\000\000", b_smac = "\000\000\000\000\000", >>>>> b_vlanid = 0, i_sid = 0} >>>>> >>>>> >>>>> -=-=-=-=-=-=-=-=-=-=-=- >>>> Links: You receive all messages sent to this group. >>>> >>>> View/Reply Online (#10342): https://lists.fd.io/g/vpp-dev/message/10342 >>>> Mute This Topic: https://lists.fd.io/mt/25162112/675776 >>>> Group Owner: vpp-dev+ow...@lists.fd.io >>>> Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [ >>>> s3m2e1.6s...@gmail.com] >>>> -=-=-=-=-=-=-=-=-=-=-=- >>>> >>> -=-=-=-=-=-=-=-=-=-=-=- >>> Links: You receive all messages sent to this group. >>> >>> View/Reply Online (#10446): https://lists.fd.io/g/vpp-dev/message/10446 >>> Mute This Topic: https://lists.fd.io/mt/25162112/675642 >>> Group Owner: vpp-dev+ow...@lists.fd.io >>> Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [dmar...@me.com] >>> -=-=-=-=-=-=-=-=-=-=-=- >>> >>> >>> >> -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > > View/Reply Online (#10456): https://lists.fd.io/g/vpp-dev/message/10456 > Mute This Topic: https://lists.fd.io/mt/25162112/675776 > Group Owner: vpp-dev+ow...@lists.fd.io > Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [s3m2e1.6s...@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#10464): https://lists.fd.io/g/vpp-dev/message/10464 Mute This Topic: https://lists.fd.io/mt/25162112/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-