]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
net: libwx: Implement xx_set_features ops
authorMengyuan Lou <mengyuanlou@net-swift.com>
Tue, 30 May 2023 02:26:28 +0000 (10:26 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 1 Jun 2023 06:02:26 +0000 (23:02 -0700)
Implement wx_set_features function which to support
ndo_set_features.

Signed-off-by: Mengyuan Lou <mengyuanlou@net-swift.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/wangxun/libwx/wx_lib.c
drivers/net/ethernet/wangxun/libwx/wx_lib.h
drivers/net/ethernet/wangxun/libwx/wx_type.h

index 680f1ad36240ee47e323ee78f2e8feef2c988a2b..3dd328d33fcc9bf00503cd16d9fdf64406b62eff 100644 (file)
@@ -2704,4 +2704,24 @@ void wx_get_stats64(struct net_device *netdev,
 }
 EXPORT_SYMBOL(wx_get_stats64);
 
+int wx_set_features(struct net_device *netdev, netdev_features_t features)
+{
+       netdev_features_t changed = netdev->features ^ features;
+       struct wx *wx = netdev_priv(netdev);
+
+       if (changed & NETIF_F_RXHASH)
+               wr32m(wx, WX_RDB_RA_CTL, WX_RDB_RA_CTL_RSS_EN,
+                     WX_RDB_RA_CTL_RSS_EN);
+       else
+               wr32m(wx, WX_RDB_RA_CTL, WX_RDB_RA_CTL_RSS_EN, 0);
+
+       if (changed &
+           (NETIF_F_HW_VLAN_CTAG_RX |
+            NETIF_F_HW_VLAN_STAG_RX))
+               wx_set_rx_mode(netdev);
+
+       return 1;
+}
+EXPORT_SYMBOL(wx_set_features);
+
 MODULE_LICENSE("GPL");
index 50ee41f1fa10d2e2273ad547259a0a1f5880a674..df1f4a5951f06ccb44e583ac6a3301838e999832 100644 (file)
@@ -28,5 +28,6 @@ void wx_free_resources(struct wx *wx);
 int wx_setup_resources(struct wx *wx);
 void wx_get_stats64(struct net_device *netdev,
                    struct rtnl_link_stats64 *stats);
+int wx_set_features(struct net_device *netdev, netdev_features_t features);
 
 #endif /* _NGBE_LIB_H_ */
index 91b2e4bfa206ab29551a929e0f9500091a4ba080..5063846e1b52f2cd2cd2fd24a46c0c5a4bf1d1a3 100644 (file)
 #define WX_RDB_PL_CFG_L2HDR          BIT(3)
 #define WX_RDB_PL_CFG_TUN_TUNHDR     BIT(4)
 #define WX_RDB_PL_CFG_TUN_OUTL2HDR   BIT(5)
+#define WX_RDB_RA_CTL                0x194F4
+#define WX_RDB_RA_CTL_RSS_EN         BIT(2) /* RSS Enable */
 
 /******************************* PSR Registers *******************************/
 /* psr control */