Page MenuHomeFreeBSD

ccr: Set the RX channel ID correctly in work requests.
ClosedPublic

Authored by jhb on Mar 9 2021, 10:04 PM.

Details

Summary

These fixes are only relevant for requests on the second port. In
some cases, the crypto completion data, completion message, and
receive descriptor could be written in the wrong order.

  • Add a separate rx_channel_id that is a copy of the port's rx_c_chan and use it when an RX channel ID is required in crypto requests instead of using the tx_channel_id.
  • Set the correct rx_channel_id in the CPL_RX_PHYS_ADDR used to write the crypto result.
  • Set the FID to the first rx queue ID on the adapter rather than the queue ID of the first rx queue for the port.
  • While here, use tx_chan to set the tx_channel_id though this is identical to the previous value.

Reported by: Chelsio QA
Sponsored by: Chelsio Communications

Diff Detail

Repository
R10 FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

np requested changes to this revision.Mar 10 2021, 5:37 AM
np added inline comments.
sys/dev/cxgbe/crypto/t4_crypto.c
435

I'm not very familiar with these work requests but should this use first_rxq_id too?

2141

Is first_rxq_id supposed to be the first rxq for the port? We should use pi->first_rxq in that case.

This revision now requires changes to proceed.Mar 10 2021, 5:37 AM
sys/dev/cxgbe/crypto/t4_crypto.c
435

I'm not very familiar with these work requests but should this use first_rxq_id too?

No, this is the rxq where the reply should be sent.

2141

Is first_rxq_id supposed to be the first rxq for the port? We should use pi->first_rxq in that case.

No, it's the first rxq of the adapter (which I find a bit odd, but that is what the WR requires).

  • Move first_rxq_id to ccr_softc.
jhb marked 2 inline comments as done.Mar 11 2021, 1:14 AM
  • Add an "unused" comment.
This revision is now accepted and ready to land.Mar 11 2021, 8:12 PM