Page MenuHomeFreeBSD

mbufq xmit hack

Authored By
gallatin
Tue, Nov 11, 6:40 PM
Size
1 KB
Referenced Files
None
Subscribers
None

mbufq xmit hack

static int
mlx5e_xmit_locked(if_t ifp, struct mlx5e_sq *sq, struct mbuf *mb)
{
struct mbufq *mq;
struct mbuf *m;
int err = 0;
if (unlikely((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0 ||
READ_ONCE(sq->running) == 0)) {
m_freem(mb);
return (ENETDOWN);
}
/* Do transmit */
if (mb->m_pkthdr.csum_flags & CSUM_EXTX) {
mq = mb->m_pkthdr.ex_txq;
mb->m_pkthdr.ex_txq = NULL;
mb->m_pkthdr.csum_flags &= ~CSUM_EXTX;
while (err == 0 && (m = mbufq_dequeue(mq)) != NULL) {
err = mlx5e_sq_xmit(sq, &m);
if (err != 0) {
m_freem(m);
err = ENOBUFS;
}
}
} else {
err = mlx5e_sq_xmit(sq, &mb);
if (err != 0) {
/* NOTE: m_freem() is NULL safe */
m_freem(mb);
err = ENOBUFS;
}
}
/* Write the doorbell record, if any. */
mlx5e_tx_notify_hw(sq, false);

File Metadata

Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25225400
Default Alt Text
mbufq xmit hack (1 KB)

Event Timeline