On Tue, Jul 16, 2019 at 10:19 AM Philippe Mathieu-Daudé
<phi...@redhat.com> wrote:
>
> On 7/16/19 9:11 AM, Ramon Fried wrote:
> > ping
> >
> > On Sat, Jun 15, 2019 at 8:17 AM Ramon Fried <rfried....@gmail.com> wrote:
> >>
> >> The RX ring descriptors control field is used for setting
> >> SOF and EOF (start of frame and end of frame).
> >> The SOF and EOF weren't cleared from the previous descriptors,
> >> causing inconsistencies in ring buffer.
> >> Fix that by clearing the control field of every descriptors we're
> >> processing.
> >>
> >> Signed-off-by: Ramon Fried <rfried....@gmail.com>
> >> ---
> >> hw/net/cadence_gem.c | 7 +++++++
> >> 1 file changed, 7 insertions(+)
> >>
> >> diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c
> >> index ecee22525c..d83a82bdb0 100644
> >> --- a/hw/net/cadence_gem.c
> >> +++ b/hw/net/cadence_gem.c
> >> @@ -406,6 +406,11 @@ static inline void rx_desc_set_sof(uint32_t *desc)
> >> desc[1] |= DESC_1_RX_SOF;
> >> }
> >>
> >> +static inline void rx_desc_clear(uint32_t *desc)
> >> +{
> >> + desc[1] = 0;
> >> +}
> >> +
> >> static inline void rx_desc_set_eof(uint32_t *desc)
> >> {
> >> desc[1] |= DESC_1_RX_EOF;
> >> @@ -994,6 +999,8 @@ static ssize_t gem_receive(NetClientState *nc, const
> >> uint8_t *buf, size_t size)
> >> bytes_to_copy -= MIN(bytes_to_copy, rxbufsize);
> >>
> >> /* Update the descriptor. */
> >> + rx_desc_clear(s->rx_desc[q]);
>
> Maybe move the call before the comment, regardless:
Make sense, sent v2.
> Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com>
>
> >> +
> >> if (first_desc) {
> >> rx_desc_set_sof(s->rx_desc[q]);
> >> first_desc = false;
> >> --
> >> 2.21.0
> >>