Patch "net: hns3: fix port vlan filter not disabled issue" has been added to the 6.8-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

    net: hns3: fix port vlan filter not disabled issue

to the 6.8-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:
     net-hns3-fix-port-vlan-filter-not-disabled-issue.patch
and it can be found in the queue-6.8 subdirectory.

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



commit 735dd3dc22e3a8cf9777a17d394ea1919288db1b
Author: Yonglong Liu <liuyonglong@xxxxxxxxxx>
Date:   Tue May 7 21:42:23 2024 +0800

    net: hns3: fix port vlan filter not disabled issue
    
    [ Upstream commit f5db7a3b65c84d723ca5e2bb6e83115180ab6336 ]
    
    According to hardware limitation, for device support modify
    VLAN filter state but not support bypass port VLAN filter,
    it should always disable the port VLAN filter. but the driver
    enables port VLAN filter when initializing, if there is no
    VLAN(except VLAN 0) id added, the driver will disable it
    in service task. In most time, it works fine. But there is
    a time window before the service task shceduled and net device
    being registered. So if user adds VLAN at this time, the driver
    will not update the VLAN filter state,  and the port VLAN filter
    remains enabled.
    
    To fix the problem, if support modify VLAN filter state but not
    support bypass port VLAN filter, set the port vlan filter to "off".
    
    Fixes: 184cd221a863 ("net: hns3: disable port VLAN filter when support function level VLAN filter control")
    Fixes: 2ba306627f59 ("net: hns3: add support for modify VLAN filter state")
    Signed-off-by: Yonglong Liu <liuyonglong@xxxxxxxxxx>
    Signed-off-by: Jijie Shao <shaojijie@xxxxxxxxxx>
    Reviewed-by: Simon Horman <horms@xxxxxxxxxx>
    Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index a99e42005b9b8..012e281f65a56 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -9897,6 +9897,7 @@ static int hclge_set_vlan_protocol_type(struct hclge_dev *hdev)
 static int hclge_init_vlan_filter(struct hclge_dev *hdev)
 {
 	struct hclge_vport *vport;
+	bool enable = true;
 	int ret;
 	int i;
 
@@ -9916,8 +9917,12 @@ static int hclge_init_vlan_filter(struct hclge_dev *hdev)
 		vport->cur_vlan_fltr_en = true;
 	}
 
+	if (test_bit(HNAE3_DEV_SUPPORT_VLAN_FLTR_MDF_B, hdev->ae_dev->caps) &&
+	    !test_bit(HNAE3_DEV_SUPPORT_PORT_VLAN_BYPASS_B, hdev->ae_dev->caps))
+		enable = false;
+
 	return hclge_set_vlan_filter_ctrl(hdev, HCLGE_FILTER_TYPE_PORT,
-					  HCLGE_FILTER_FE_INGRESS, true, 0);
+					  HCLGE_FILTER_FE_INGRESS, enable, 0);
 }
 
 static int hclge_init_vlan_type(struct hclge_dev *hdev)




[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