Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apply port speed again after disabling port Auto-Negotiation #5

Conversation

PJHsieh
Copy link

@PJHsieh PJHsieh commented Jul 8, 2024

What I did
Apply port speed again after disabling port AN.

In PortsOrch, when autonegotiation is disabled for a port, this PR ensures
that the port speed is updated correctly. If a new speed is configured while
autonegotiation is disabled, the new speed is applied; otherwise, the current
speed setting is reconfigured.

Why I did it
In PortsOrch, the port speed configuration will not be set to SAI when port AN is enabled.
Changing the port speed while port AN is enabled will not take effect after port AN is disabled.

In some chips, the port speed can not be modified when port AN is enabled.

How I verified it

  1. Enable port AN.
  2. Set port speed from speed1 to speed2
  3. Disable port AN.
  4. Make sure port speed is speed2 instead of speed1.

Details if related
sonic-net/sonic-swss#3094

Apply port speed again after disabling port AN.

In PortsOrch, when autonegotiation is disabled for a port, this PR ensures
that the port speed is updated correctly. If a new speed is configured while
autonegotiation is disabled, the new speed is applied; otherwise, the current
speed setting is reconfigured.

Why I did it
In PortsOrch, the port speed configuration will not be set to SAI when port AN is enabled.
Changing the port speed while port AN is enabled will not take effect after port AN is disabled.

In some chips, the port speed can not be modified when port AN is enabled.

How I verified it

Enable port AN.
Set port speed from speed1 to speed2
Disable port AN.
Make sure port speed is speed2 instead of speed1.
@PJHsieh PJHsieh merged commit b40c80d into edge-core:202311.X Jul 8, 2024
1 check passed
@PJHsieh PJHsieh deleted the apply_port_speed_again_after_disabling_port_AN_2311_x branch July 8, 2024 03:30
chiourung pushed a commit to chiourung/sonic-swss-ec that referenced this pull request Jul 8, 2024
**What I did**

Fix the Mem Leak by moving the raw pointers in type_maps to use smart pointers

**Why I did it**

```
Indirect leak of 83776 byte(s) in 476 object(s) allocated from:
    #0 0x7f0a2a414647 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99
    edge-core#1 0x5555590cc923 in __gnu_cxx::new_allocator, std::allocator > const, referenced_object> > >::allocate(unsigned long, void const*) /usr/include/c++/10/ext/new_allocator.h:115
    edge-core#2 0x5555590cc923 in std::allocator_traits, std::allocator > const, referenced_object> > > >::allocate(std::allocator, std::allocator > const, referenced_object> > >&, unsigned long) /usr/include/c++/10/bits/alloc_traits.h:460
    edge-core#3 0x5555590cc923 in std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, referenced_object>, std::_Select1st, std::allocator > const, referenced_object> >, std::less, std::allocator > >, std::allocator, std::allocator > const, referenced_object> > >::_M_get_node() /usr/include/c++/10/bits/stl_tree.h:584
    edge-core#4 0x5555590cc923 in std::_Rb_tree_node, std::allocator > const, referenced_object> >* std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, referenced_object>, std::_Select1st, std::allocator > const, referenced_object> >, std::less, std::allocator > >, std::allocator, std::allocator > const, referenced_object> > >::_M_create_node, std::allocator > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&) /usr/include/c++/10/bits/stl_tree.h:634
    edge-core#5 0x5555590cc923 in std::_Rb_tree_iterator, std::allocator > const, referenced_object> > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, referenced_object>, std::_Select1st, std::allocator > const, referenced_object> >, std::less, std::allocator > >, std::allocator, std::allocator > const, referenced_object> > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, referenced_object> >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&) /usr/include/c++/10/bits/stl_tree.h:2461
    edge-core#6 0x5555590e8757 in std::map, std::allocator >, referenced_object, std::less, std::allocator > >, std::allocator, std::allocator > const, referenced_object> > >::operator[](std::__cxx11::basic_string, std::allocator > const&) /usr/include/c++/10/bits/stl_map.h:501
    edge-core#7 0x5555590d48b0 in Orch::setObjectReference(std::map, std::allocator >, std::map, std::allocator >, referenced_object, std::less, std::allocator > >, std::allocator, std::allocator > const, referenced_object> > >*, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, referenced_object, std::less, std::allocator > >, std::allocator, std::allocator > const, referenced_object> > >*> > >&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&) orchagent/orch.cpp:450
    edge-core#8 0x5555594ff66b in QosOrch::handleQueueTable(Consumer&, std::tuple, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::__cxx11::basic_string, std::allocator > >, std::allocator, std::allocator >, std::__cxx11::basic_string, std::allocator > > > > >&) orchagent/qosorch.cpp:1763
    edge-core#9 0x5555594edbd6 in QosOrch::doTask(Consumer&) orchagent/qosorch.cpp:2179
    edge-core#10 0x5555590c8743 in Consumer::drain() orchagent/orch.cpp:241
    edge-core#11 0x5555590c8743 in Consumer::drain() orchagent/orch.cpp:238
    edge-core#12 0x5555590c8743 in Consumer::execute() orchagent/orch.cpp:235
    edge-core#13 0x555559090dad in OrchDaemon::start() orchagent/orchdaemon.cpp:755
    edge-core#14 0x555558e9be25 in main orchagent/main.cpp:766
    edge-core#15 0x7f0a299b6d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09)
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant