Hi Kevin, > -----Original Message----- > From: Kevin Traynor [mailto:ktray...@redhat.com] > Sent: Tuesday, October 15, 2019 1:42 AM > To: Zhang, Xiao <xiao.zh...@intel.com>; dev@dpdk.org > Cc: Xing, Beilei <beilei.x...@intel.com>; Zhang, Qi Z <qi.z.zh...@intel.com>; > sta...@dpdk.org; Stokes, Ian <ian.sto...@intel.com> > Subject: Re: [dpdk-dev] net/i40e: fix vlan packets drop > > On 14/10/2019 08:53, Xiao Zhang wrote: > > vlan packets with ip length bigger then 1496 will not be received by > > i40e due to wrong packets size checking. This patch fixes the issue by > > correcting the maximum frame size during checking. > > > > Fixes: 35b2d13fd6fd ("net: add rte prefix to ether defines") > > To make sure it is backported to the correct stable branches, please tag the > commit that introduced the bug, not the last commit to touch the line.
Got it, the right fixline should be Fixes: 43e5488c0ac6 ("net/i40e: support MTU configuration"), will correct it. > > > Cc: sta...@dpdk.org > > > > Signed-off-by: Xiao Zhang <xiao.zh...@intel.com> > > --- > > drivers/net/i40e/i40e_ethdev.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/net/i40e/i40e_ethdev.c > > b/drivers/net/i40e/i40e_ethdev.c index 2ca14da..156d67b 100644 > > --- a/drivers/net/i40e/i40e_ethdev.c > > +++ b/drivers/net/i40e/i40e_ethdev.c > > What about vf? vf also need to be fixed, will add it. > > > @@ -12103,7 +12103,7 @@ i40e_dev_mtu_set(struct rte_eth_dev *dev, > uint16_t mtu) > > return -EBUSY; > > } > > > > - if (frame_size > RTE_ETHER_MAX_LEN) > > + if (frame_size > RTE_ETHER_MAX_LEN + I40E_VLAN_TAG_SIZE * 2) > > dev_data->dev_conf.rxmode.offloads |= > > DEV_RX_OFFLOAD_JUMBO_FRAME; > > else > > > > +cc Ian, who looked into MTU for i40e a while back. > > MTU code changing makes me nervous. You would need to look through > everywhere there is something related to pkt len to check it is still ok. > > E.g. if I got it right (maybe I miss something), this means a 1500 mtu will > set > frame_size to 1526, which will turn off jumbo and set dev_data- > >dev_conf.rxmode.max_rx_pkt_len = 1526 > > Then in i40e_rx_queue_config() > > rxq->max_pkt_len = RTE_MIN(len, data->dev_conf.rxmode.max_rx_pkt_len); > ^^^ lets say max_rx_pkt_len (1526) is the min > > if (data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_JUMBO_FRAME) { > > [snip jumbo on branch] > > } else { > if (rxq->max_pkt_len < RTE_ETHER_MIN_LEN || > rxq->max_pkt_len > RTE_ETHER_MAX_LEN) { > ^^^ 1526 ^^^ 1518 > > PMD_DRV_LOG(ERR, "maximum packet length must be " > "larger than %u and smaller than %u, " > "as jumbo frame is disabled", > (uint32_t)RTE_ETHER_MIN_LEN, > (uint32_t)RTE_ETHER_MAX_LEN); > return I40E_ERR_CONFIG; > ^^^ Error returned ??? > } > } Thanks for point out. Will go through the code to check if related pkt length still ok.