]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
Merge branch 'hns3-fixes'
authorDavid S. Miller <davem@davemloft.net>
Fri, 30 Apr 2021 21:49:34 +0000 (14:49 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 30 Apr 2021 21:49:34 +0000 (14:49 -0700)
Huazhong Tan says:

====================
net: hns3: fixes for -net

This series adds some bugfixes for the HNS3 ethernet driver.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c

index 5dc6de5107fb122919d9ae9661f69a01313556f7..783fdaf8f8d64ec1ab5c1f28e7f5fead31135986 100644 (file)
@@ -575,8 +575,8 @@ static int hns3_nic_net_stop(struct net_device *netdev)
        if (h->ae_algo->ops->set_timer_task)
                h->ae_algo->ops->set_timer_task(priv->ae_handle, false);
 
-       netif_tx_stop_all_queues(netdev);
        netif_carrier_off(netdev);
+       netif_tx_disable(netdev);
 
        hns3_nic_net_down(netdev);
 
@@ -824,7 +824,7 @@ static int hns3_get_l4_protocol(struct sk_buff *skb, u8 *ol4_proto,
  * and it is udp packet, which has a dest port as the IANA assigned.
  * the hardware is expected to do the checksum offload, but the
  * hardware will not do the checksum offload when udp dest port is
- * 4789 or 6081.
+ * 4789, 4790 or 6081.
  */
 static bool hns3_tunnel_csum_bug(struct sk_buff *skb)
 {
@@ -842,7 +842,8 @@ static bool hns3_tunnel_csum_bug(struct sk_buff *skb)
 
        if (!(!skb->encapsulation &&
              (l4.udp->dest == htons(IANA_VXLAN_UDP_PORT) ||
-             l4.udp->dest == htons(GENEVE_UDP_PORT))))
+             l4.udp->dest == htons(GENEVE_UDP_PORT) ||
+             l4.udp->dest == htons(4790))))
                return false;
 
        skb_checksum_help(skb);
index c296ab64fb0a1b41ba53a806e2f8fe90f1d8a602..6304aed49f224389bcb2120a263bad88a46dc945 100644 (file)
@@ -3978,6 +3978,12 @@ static void hclge_update_reset_level(struct hclge_dev *hdev)
        struct hnae3_ae_dev *ae_dev = pci_get_drvdata(hdev->pdev);
        enum hnae3_reset_type reset_level;
 
+       /* reset request will not be set during reset, so clear
+        * pending reset request to avoid unnecessary reset
+        * caused by the same reason.
+        */
+       hclge_get_reset_level(ae_dev, &hdev->reset_request);
+
        /* if default_reset_request has a higher level reset request,
         * it should be handled as soon as possible. since some errors
         * need this kind of reset to fix.
index 08e88d9422cde3dfe145fdd9813a8b513e730b20..1231c34f0949459d9f99be356fb4a41bf957ba46 100644 (file)
@@ -255,6 +255,8 @@ void hclge_mac_start_phy(struct hclge_dev *hdev)
        if (!phydev)
                return;
 
+       phy_loopback(phydev, false);
+
        phy_start(phydev);
 }