MCPcopy Create free account
hub / github.com/F-Stack/f-stack / mrvl_mtu_set

Function mrvl_mtu_set

dpdk/drivers/net/mvpp2/mrvl_ethdev.c:553–603  ·  view source on GitHub ↗

* DPDK callback to change the MTU. * * Setting the MTU affects hardware MRU (packets larger than the MRU * will be dropped). * * @param dev * Pointer to Ethernet device structure. * @param mtu * New MTU. * * @return * 0 on success, negative error value otherwise. */

Source from the content-addressed store, hash-verified

551 * 0 on success, negative error value otherwise.
552 */
553static int
554mrvl_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
555{
556 struct mrvl_priv *priv = dev->data->dev_private;
557 uint16_t mru;
558 uint16_t mbuf_data_size = 0; /* SW buffer size */
559 int ret;
560
561 mru = MRVL_PP2_MTU_TO_MRU(mtu);
562 /*
563 * min_rx_buf_size is equal to mbuf data size
564 * if pmd didn't set it differently
565 */
566 mbuf_data_size = dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM;
567 /* Prevent PMD from:
568 * - setting mru greater than the mbuf size resulting in
569 * hw and sw buffer size mismatch
570 * - setting mtu that requires the support of scattered packets
571 * when this feature has not been enabled/supported so far
572 * (TODO check scattered_rx flag here once scattered RX is supported).
573 */
574 if (mru - RTE_ETHER_CRC_LEN + MRVL_PKT_OFFS > mbuf_data_size) {
575 mru = mbuf_data_size + RTE_ETHER_CRC_LEN - MRVL_PKT_OFFS;
576 mtu = MRVL_PP2_MRU_TO_MTU(mru);
577 MRVL_LOG(WARNING, "MTU too big, max MTU possible limited "
578 "by current mbuf size: %u. Set MTU to %u, MRU to %u",
579 mbuf_data_size, mtu, mru);
580 }
581
582 if (mtu < RTE_ETHER_MIN_MTU || mru > MRVL_PKT_SIZE_MAX) {
583 MRVL_LOG(ERR, "Invalid MTU [%u] or MRU [%u]", mtu, mru);
584 return -EINVAL;
585 }
586
587 if (!priv->ppio)
588 return 0;
589
590 ret = pp2_ppio_set_mru(priv->ppio, mru);
591 if (ret) {
592 MRVL_LOG(ERR, "Failed to change MRU");
593 return ret;
594 }
595
596 ret = pp2_ppio_set_mtu(priv->ppio, mtu);
597 if (ret) {
598 MRVL_LOG(ERR, "Failed to change MTU");
599 return ret;
600 }
601
602 return 0;
603}
604
605/**
606 * DPDK callback to bring the link up.

Callers 2

mrvl_dev_set_link_upFunction · 0.85
mrvl_dev_startFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected