[Intel-wired-lan] [PATCH net v2] ixgbe: fix large MTU request from VF
Jankowski, Konrad0
konrad0.jankowski at intel.com
Thu May 20 07:53:53 UTC 2021
> -----Original Message-----
> From: Palczewski, Mateusz <mateusz.palczewski at intel.com>
> Sent: czwartek, 13 maja 2021 10:43
> To: intel-wired-lan at lists.osuosl.org
> Cc: Wyborny, Carolyn <carolyn.wyborny at intel.com>; Jankowski, Konrad0
> <konrad0.jankowski at intel.com>; Rybak, Eryk Roch
> <eryk.roch.rybak at intel.com>; Brandeburg, Jesse
> <jesse.brandeburg at intel.com>; Skajewski, PiotrX
> <piotrx.skajewski at intel.com>; Palczewski, Mateusz
> <mateusz.palczewski at intel.com>
> Subject: [PATCH net v2] ixgbe: fix large MTU request from VF
>
> From: Jesse Brandeburg <jesse.brandeburg at intel.com>
>
> Check that the MTU value requested by the VF is in the supported range of
> MTUs before attempting to set the VF large packet enable, otherwise reject
> the request. This also avoids unnecessary register updates in the case of the
> 82599 controller.
>
> Fixes: 872844ddb9e4 ("ixgbe: Enable jumbo frames support w/ SR-IOV")
> Co-developed-by: Piotr Skajewski <piotrx.skajewski at intel.com>
> Signed-off-by: Piotr Skajewski <piotrx.skajewski at intel.com>
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg at intel.com>
> Co-developed-by: Mateusz Palczewski <mateusz.palczewski at intel.com>
> Signed-off-by: Mateusz Palczewski <mateusz.palczewski at intel.com>
> ---
> v2: Changed hard coded 68 value to ETH_MIN_MTU
> ---
> drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 16 +++++++---------
> 1 file changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
> b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
> index 988db46..75921cd 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
> @@ -467,12 +467,16 @@ static int ixgbe_set_vf_vlan(struct ixgbe_adapter
> *adapter, int add, int vid,
> return err;
> }
>
> -static s32 ixgbe_set_vf_lpe(struct ixgbe_adapter *adapter, u32 *msgbuf,
> u32 vf)
> +static int ixgbe_set_vf_lpe(struct ixgbe_adapter *adapter, u32
> +max_frame, u32 vf)
> {
> struct ixgbe_hw *hw = &adapter->hw;
> - int max_frame = msgbuf[1];
> u32 max_frs;
>
> + if (max_frame < ETH_MIN_MTU || max_frame >
> IXGBE_MAX_JUMBO_FRAME_SIZE) {
> + e_err(drv, "VF max_frame %d out of range\n", max_frame);
> + return -EINVAL;
> + }
> +
> /*
> * For 82599EB we have to keep all PFs and VFs operating with
> * the same max_frame value in order to avoid sending an oversize
> @@ -533,12 +537,6 @@ static s32 ixgbe_set_vf_lpe(struct ixgbe_adapter
> *adapter, u32 *msgbuf, u32 vf)
> }
> }
>
> - /* MTU < 68 is an error and causes problems on some kernels */
> - if (max_frame > IXGBE_MAX_JUMBO_FRAME_SIZE) {
> - e_err(drv, "VF max_frame %d out of range\n", max_frame);
> - return -EINVAL;
> - }
> -
> /* pull current max frame size from hardware */
> max_frs = IXGBE_READ_REG(hw, IXGBE_MAXFRS);
> max_frs &= IXGBE_MHADD_MFS_MASK;
> @@ -1249,7 +1247,7 @@ static int ixgbe_rcv_msg_from_vf(struct
> ixgbe_adapter *adapter, u32 vf)
> retval = ixgbe_set_vf_vlan_msg(adapter, msgbuf, vf);
> break;
> case IXGBE_VF_SET_LPE:
> - retval = ixgbe_set_vf_lpe(adapter, msgbuf, vf);
> + retval = ixgbe_set_vf_lpe(adapter, msgbuf[1], vf);
> break;
> case IXGBE_VF_SET_MACVLAN:
> retval = ixgbe_set_vf_macvlan_msg(adapter, msgbuf, vf);
> --
> 2.18.1
Tested-by: Konrad Jankowski <konrad0.jankowski at intel.com>
More information about the Intel-wired-lan
mailing list