mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
cxgbei: Adjust the calculation for the maximum ISO payload.
Round down the maximim ISO payload by the current MSS. Otherwise the
round up by MSS when calculating the 16-bit maximum payload len passed
along in the FLOWC work request can overflow.
Discussed with: np
Sponsored by: Chelsio Communications
(cherry picked from commit 8020c05683)
This commit is contained in:
parent
84fc080266
commit
cb85a1815f
1 changed files with 4 additions and 2 deletions
|
|
@ -1103,7 +1103,7 @@ icl_cxgbei_conn_handoff(struct icl_conn *ic, int fd)
|
|||
struct tcpcb *tp;
|
||||
struct toepcb *toep;
|
||||
cap_rights_t rights;
|
||||
u_int max_rx_pdu_len, max_tx_pdu_len;
|
||||
u_int max_iso_payload, max_rx_pdu_len, max_tx_pdu_len;
|
||||
int error, max_iso_pdus;
|
||||
|
||||
MPASS(icc->icc_signature == CXGBEI_CONN_SIGNATURE);
|
||||
|
|
@ -1195,7 +1195,9 @@ icl_cxgbei_conn_handoff(struct icl_conn *ic, int fd)
|
|||
|
||||
if (icc->sc->tt.iso && chip_id(icc->sc) >= CHELSIO_T5 &&
|
||||
!is_memfree(icc->sc)) {
|
||||
max_iso_pdus = CXGBEI_MAX_ISO_PAYLOAD / max_tx_pdu_len;
|
||||
max_iso_payload = rounddown(CXGBEI_MAX_ISO_PAYLOAD,
|
||||
tp->t_maxseg);
|
||||
max_iso_pdus = max_iso_payload / max_tx_pdu_len;
|
||||
ic->ic_hw_isomax = max_iso_pdus *
|
||||
ic->ic_max_send_data_segment_length;
|
||||
} else
|
||||
|
|
|
|||
Loading…
Reference in a new issue