The configuration of mtu is inconsistent in the driver and firmware when the port is stopped, started and reconfigured. Before, HINIC_MAX_JUMBO_FRAME_SIZE include vlan tag, but when frame and pktlen are converted to each other do not include vlan tag. And port_mtu_set function will use HINIC_MAX_JUMBO_FRAME_SIZE to calculate eth_overhead, so mtu will be inconsistent in the driver and firmware.
Fixes: e542ab51ab27 ("net/hinic: fix jumbo frame flag condition for MTU set") Cc: sta...@dpdk.org Signed-off-by: Guoyang Zhou <zhouguoy...@huawei.com> --- drivers/net/hinic/base/hinic_pmd_niccfg.h | 9 --------- drivers/net/hinic/hinic_pmd_ethdev.c | 9 --------- drivers/net/hinic/hinic_pmd_ethdev.h | 17 +++++++++++++++++ 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/drivers/net/hinic/base/hinic_pmd_niccfg.h b/drivers/net/hinic/base/hinic_pmd_niccfg.h index 04cd374..0d0a670 100644 --- a/drivers/net/hinic/base/hinic_pmd_niccfg.h +++ b/drivers/net/hinic/base/hinic_pmd_niccfg.h @@ -116,15 +116,6 @@ enum hinic_link_mode { #define HINIC_DEFAULT_RX_MODE (HINIC_RX_MODE_UC | HINIC_RX_MODE_MC | \ HINIC_RX_MODE_BC) -#define HINIC_MAX_MTU_SIZE (9600) -#define HINIC_MIN_MTU_SIZE (256) - -/* MIN_MTU + ETH_HLEN + CRC (256+14+4) */ -#define HINIC_MIN_FRAME_SIZE 274 - -/* MAX_MTU + ETH_HLEN + CRC + VLAN(9600+14+4+4) */ -#define HINIC_MAX_JUMBO_FRAME_SIZE (9622) - #define HINIC_PORT_DISABLE 0x0 #define HINIC_PORT_ENABLE 0x3 diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c index 75849f2..1a72401 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.c +++ b/drivers/net/hinic/hinic_pmd_ethdev.c @@ -69,15 +69,6 @@ #define HINIC_VLAN_FILTER_EN (1U << 0) -#define HINIC_MTU_TO_PKTLEN(mtu) \ - ((mtu) + ETH_HLEN + ETH_CRC_LEN) - -#define HINIC_PKTLEN_TO_MTU(pktlen) \ - ((pktlen) - (ETH_HLEN + ETH_CRC_LEN)) - -/* The max frame size with default MTU */ -#define HINIC_ETH_MAX_LEN (RTE_ETHER_MTU + ETH_HLEN + ETH_CRC_LEN) - /* lro numer limit for one packet */ #define HINIC_LRO_WQE_NUM_DEFAULT 8 diff --git a/drivers/net/hinic/hinic_pmd_ethdev.h b/drivers/net/hinic/hinic_pmd_ethdev.h index 70b4d32..8f1b3d5 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.h +++ b/drivers/net/hinic/hinic_pmd_ethdev.h @@ -32,6 +32,23 @@ #define HINIC_UINT32_BIT_SIZE (CHAR_BIT * sizeof(uint32_t)) #define HINIC_VFTA_SIZE (4096 / HINIC_UINT32_BIT_SIZE) +#define HINIC_MAX_MTU_SIZE 9600 +#define HINIC_MIN_MTU_SIZE 256 + +#define HINIC_VLAN_TAG_SIZE 4 +#define HINIC_ETH_OVERHEAD \ + (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + HINIC_VLAN_TAG_SIZE * 2) + +#define HINIC_MIN_FRAME_SIZE (HINIC_MIN_MTU_SIZE + HINIC_ETH_OVERHEAD) +#define HINIC_MAX_JUMBO_FRAME_SIZE (HINIC_MAX_MTU_SIZE + HINIC_ETH_OVERHEAD) + +#define HINIC_MTU_TO_PKTLEN(mtu) ((mtu) + HINIC_ETH_OVERHEAD) + +#define HINIC_PKTLEN_TO_MTU(pktlen) ((pktlen) - HINIC_ETH_OVERHEAD) + +/* The max frame size with default MTU */ +#define HINIC_ETH_MAX_LEN (RTE_ETHER_MTU + HINIC_ETH_OVERHEAD) + enum hinic_dev_status { HINIC_DEV_INIT, HINIC_DEV_CLOSE, -- 1.8.3.1