Skip to content

STM32H legacy driver fix: request usable RX size in legacy zero-copy#1328

Open
liteStefanoUgolini wants to merge 1 commit intoFreeRTOS:mainfrom
liteStefanoUgolini:stm32h-legacy-driver-fix-request-usable-rx-size-in-legacy-zero-copy-path
Open

STM32H legacy driver fix: request usable RX size in legacy zero-copy#1328
liteStefanoUgolini wants to merge 1 commit intoFreeRTOS:mainfrom
liteStefanoUgolini:stm32h-legacy-driver-fix-request-usable-rx-size-in-legacy-zero-copy-path

Conversation

@liteStefanoUgolini
Copy link
Copy Markdown

Description

The STM32H legacy zero-copy RX path still requested ETH_RX_BUF_SIZE for replacement RX buffers even though BufferAllocation_1 now limits allocations to the interface-reported usable size.

For this driver the usable size is ETH_RX_BUF_SIZE - ipBUFFER_PADDING. Requesting the full hardware buffer size caused every replacement allocation to fail, left pxReceivedBuffer as NULL, and dropped all received frames before they reached the IP task.

Request ETH_RX_BUF_SIZE - ipBUFFER_PADDING in the RX fast path so the receive path matches the enforced allocation limit.

Test Steps

Checklist:

  • I have tested my changes. No regression in existing tests.
  • I have modified and/or added unit-tests to cover the code changes in this Pull Request.

Related Issue

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

…path

The STM32H legacy zero-copy RX path still requested ETH_RX_BUF_SIZE for
replacement RX buffers even though BufferAllocation_1 now limits allocations
to the interface-reported usable size.

For this driver the usable size is ETH_RX_BUF_SIZE - ipBUFFER_PADDING.
Requesting the full hardware buffer size caused every replacement allocation
to fail, left pxReceivedBuffer as NULL, and dropped all received frames
before they reached the IP task.

Request ETH_RX_BUF_SIZE - ipBUFFER_PADDING in the RX fast path so the
receive path matches the enforced allocation limit.
Copy link
Copy Markdown
Contributor

@htibosch htibosch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @liteStefanoUgolini for this PR. I approve it.

uxLength = ETH_RX_BUF_SIZE;
/* Request the usable Ethernet payload area, excluding the descriptor
* metadata stored in front of pucEthernetBuffer. */
uxLength = ETH_RX_BUF_SIZE - ipBUFFER_PADDING;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That sounds like a good change, thank you.

The sizeof of the RX buffer is usually set at :

#define ETH_RX_BUF_SIZE     1536U

because it has a great alignment ( 0x600 ).

@AniruddhaKanhere @kstribrnAmzn Can you please check this PR?

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.

2 participants