if (queue >= priv->plat->rx_queues_to_use ||
queue >= priv->plat->tx_queues_to_use) return -EINVAL;
frame_size = xsk_pool_get_rx_frame_size(pool); /* XDP ZC does not span multiple frame, make sure XSK pool buffer * size can at least store Q-in-Q frame.
*/ if (frame_size < ETH_FRAME_LEN + VLAN_HLEN * 2) return -EOPNOTSUPP;
err = xsk_pool_dma_map(pool, priv->device, STMMAC_RX_DMA_ATTR); if (err) {
netdev_err(priv->dev, "Failed to map xsk pool\n"); return err;
}
if (prog && dev->mtu > ETH_DATA_LEN) { /* For now, the driver doesn't support XDP functionality with * jumbo frames so we return error.
*/
NL_SET_ERR_MSG_MOD(extack, "Jumbo frames not supported"); return -EOPNOTSUPP;
}
if (!prog)
xdp_features_clear_redirect_target(dev);
need_update = !!priv->xdp_prog != !!prog; if (if_running && need_update)
stmmac_xdp_release(dev);
old_prog = xchg(&priv->xdp_prog, prog); if (old_prog)
bpf_prog_put(old_prog);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.