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

RGMII buffering should not drop LP packets unless HP queue used #17

Closed
pthedinger opened this issue May 8, 2017 · 0 comments
Closed

Comments

@pthedinger
Copy link

From http://www.xcore.com/viewtopic.php?f=26&t=5798&p=29414#p29414:

In rgmii_buffering.xc there is the code

    if (buffers_free_available(free_buffers) <= RGMII_RX_BUFFERS_THRESHOLD) {
      drop_lp_packets(client_state_lp, n_rx_lp, used_buffers_rx_lp, free_buffers);
    }

This means that if there is back-pressure in the RGMII buffering layer then packets that have already been committed to a client will be dropped. It would be better to allow the client to collect these packets and drop new incoming packets in this case, otherwise there is the possibility of no packets being delivered.

The solution in this case would be to only run this code if the high priority queue is enabled:

  if (!isnull(c_rx_hp)) {
      if (buffers_free_available(free_buffers) <= RGMII_RX_BUFFERS_THRESHOLD) {
        drop_lp_packets(client_state_lp, n_rx_lp, used_buffers_rx_lp, free_buffers);
      }
  }

Need to add a test case to demonstrate that data is still received by the client regardless of the level of back pressure.

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

No branches or pull requests

1 participant