Patch "iavf: Fix set max MTU size with port VLAN and jumbo frames" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    iavf: Fix set max MTU size with port VLAN and jumbo frames

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     iavf-fix-set-max-mtu-size-with-port-vlan-and-jumbo-f.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit e34cf6104d1f2c8629d27697c6d97f96c0323cb6
Author: Michal Jaron <michalx.jaron@xxxxxxxxx>
Date:   Tue Sep 13 15:38:35 2022 +0200

    iavf: Fix set max MTU size with port VLAN and jumbo frames
    
    [ Upstream commit 399c98c4dc50b7eb7e9f24da7ffdda6f025676ef ]
    
    After setting port VLAN and MTU to 9000 on VF with ice driver there
    was an iavf error
    "PF returned error -5 (IAVF_ERR_PARAM) to our request 6".
    
    During queue configuration, VF's max packet size was set to
    IAVF_MAX_RXBUFFER but on ice max frame size was smaller by VLAN_HLEN
    due to making some space for port VLAN as VF is not aware whether it's
    in a port VLAN. This mismatch in sizes caused ice to reject queue
    configuration with ERR_PARAM error. Proper max_mtu is sent from ice PF
    to VF with GET_VF_RESOURCES msg but VF does not look at this.
    
    In iavf change max_frame from IAVF_MAX_RXBUFFER to max_mtu
    received from pf with GET_VF_RESOURCES msg to make vf's
    max_frame_size dependent from pf. Add check if received max_mtu is
    not in eligible range then set it to IAVF_MAX_RXBUFFER.
    
    Fixes: dab86afdbbd1 ("i40e/i40evf: Change the way we limit the maximum frame size for Rx")
    Signed-off-by: Michal Jaron <michalx.jaron@xxxxxxxxx>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@xxxxxxxxx>
    Tested-by: Konrad Jankowski <konrad0.jankowski@xxxxxxxxx>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c b/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c
index ff479bf72144..5deee75bc436 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c
@@ -241,11 +241,14 @@ int iavf_get_vf_config(struct iavf_adapter *adapter)
 void iavf_configure_queues(struct iavf_adapter *adapter)
 {
 	struct virtchnl_vsi_queue_config_info *vqci;
-	struct virtchnl_queue_pair_info *vqpi;
+	int i, max_frame = adapter->vf_res->max_mtu;
 	int pairs = adapter->num_active_queues;
-	int i, max_frame = IAVF_MAX_RXBUFFER;
+	struct virtchnl_queue_pair_info *vqpi;
 	size_t len;
 
+	if (max_frame > IAVF_MAX_RXBUFFER || !max_frame)
+		max_frame = IAVF_MAX_RXBUFFER;
+
 	if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) {
 		/* bail because we already have a command pending */
 		dev_err(&adapter->pdev->dev, "Cannot configure queues, command %d pending\n",



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux