net/liquidio: fix MTU calculation from port configuration
max_rx_pkt_len member of port RX configuration indicates max frame length. Ethernet header and CRC length should be subtracted from it to find MTU. Fixes: 605164c8e79d ("net/liquidio: add API to validate VF MTU") Cc: stable@dpdk.org Signed-off-by: Shijith Thotton <shijith.thotton@caviumnetworks.com>
This commit is contained in:
parent
9f05a4b818
commit
dc7037ba73
@ -36,6 +36,7 @@
|
||||
#include <rte_cycles.h>
|
||||
#include <rte_malloc.h>
|
||||
#include <rte_alarm.h>
|
||||
#include <rte_ether.h>
|
||||
|
||||
#include "lio_logs.h"
|
||||
#include "lio_23xx_vf.h"
|
||||
@ -1367,7 +1368,8 @@ lio_sync_link_state_check(void *eth_dev)
|
||||
static int
|
||||
lio_dev_start(struct rte_eth_dev *eth_dev)
|
||||
{
|
||||
uint16_t mtu = eth_dev->data->dev_conf.rxmode.max_rx_pkt_len;
|
||||
uint16_t mtu;
|
||||
uint32_t frame_len = eth_dev->data->dev_conf.rxmode.max_rx_pkt_len;
|
||||
struct lio_device *lio_dev = LIO_DEV(eth_dev);
|
||||
uint16_t timeout = LIO_MAX_CMD_TIMEOUT;
|
||||
int ret = 0;
|
||||
@ -1405,12 +1407,29 @@ lio_dev_start(struct rte_eth_dev *eth_dev)
|
||||
goto dev_mtu_check_error;
|
||||
}
|
||||
|
||||
if (eth_dev->data->dev_conf.rxmode.jumbo_frame == 1) {
|
||||
if (frame_len <= ETHER_MAX_LEN ||
|
||||
frame_len > LIO_MAX_RX_PKTLEN) {
|
||||
lio_dev_err(lio_dev, "max packet length should be >= %d and < %d when jumbo frame is enabled\n",
|
||||
ETHER_MAX_LEN, LIO_MAX_RX_PKTLEN);
|
||||
ret = -EINVAL;
|
||||
goto dev_mtu_check_error;
|
||||
}
|
||||
mtu = (uint16_t)(frame_len - ETHER_HDR_LEN - ETHER_CRC_LEN);
|
||||
} else {
|
||||
/* default MTU */
|
||||
mtu = ETHER_MTU;
|
||||
eth_dev->data->dev_conf.rxmode.max_rx_pkt_len = ETHER_MAX_LEN;
|
||||
}
|
||||
|
||||
if (lio_dev->linfo.link.s.mtu != mtu) {
|
||||
ret = lio_dev_validate_vf_mtu(eth_dev, mtu);
|
||||
if (ret)
|
||||
goto dev_mtu_check_error;
|
||||
}
|
||||
|
||||
eth_dev->data->mtu = mtu;
|
||||
|
||||
return 0;
|
||||
|
||||
dev_mtu_check_error:
|
||||
|
Loading…
x
Reference in New Issue
Block a user