-
-
Notifications
You must be signed in to change notification settings - Fork 770
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
Feature: qStartNoAckmode #1361
Feature: qStartNoAckmode #1361
Conversation
QStartNoAckmode now implemented, testing didn't show any noticeable difference in speeds, but further testing is needed and welcome |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A quick check over reveals just one style mistake and something we need to consider between this branch and another that we're contemplating for v1.10. Generally though this looks great and improves the GDB packet handler handily
633f21d
to
9d8d2d3
Compare
e58436e
to
460cc7b
Compare
@dragonmux rebased over your organization commit, theres still one issue to solve and adding a buildsystem option to enable this feature, but its in a ok state to star reviewing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is looking great, nice job integrating our refactor of the remote packet handling!
There are a few items we've spotted, mostly commented out dead code.
460cc7b
to
b5924fd
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We're happy to take this feature when you're happy with the implementation. Update the PR title and mark it as ready for review when you're ready.
We've only seen the one remaining item having re-checked through the cleanups and fixes you've performed and it is only a suggestion not a requested change.
b5924fd
to
7708ce9
Compare
In cases where the transport mechanism is itself reliable (on our case USB is), the ‘+’/‘-’ acknowledgments are redundant. This disables them with the GDB NoAckMode mechanism
This disables only the advertising of NoAckMode to GDB and the the feature is still compiled in and can still be manually enabled in GDB
7708ce9
to
d4ac116
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, We'll run a couple of tests locally just to be sure things work again GDB 13, and then we'll get this merged ASAP. Excellent work and an awesome contribution, thank you!
Detailed description
This is the start of no acknowledge mode (QStartNoAckMode) support.
The BMP uses a USB connection with the CDC class (Bulk transfers) for GDB data transfer, this means the connection should be reliable, with integrated integrity checks and data delivery guarantees (provided there are no bugs in the class handling side of things in the firmware), this means that acknowledgment and checksum verification is redundant and should be safe to ignore, hopefully providing a performance benefit, GDB provides support for this with QStartNoAckMode.
See GDB: Packet-Acknowledgment for context.
The intent is to test if this brings improvements in performance, particularly in the flashing routines.
As of right now, this consists only of refactoring of the gdb_getpacket to make use of a state machine, in preparation of the actual implementation, reviews are not necessary but feedback is always welcome, shallow testing showed this to work, so testing is also welcome
Your checklist for this pull request
make PROBE_HOST=native
)make PROBE_HOST=hosted
)Closing issues