@@ -940,12 +940,14 @@ static void mana_rx_skb(void *buf_va, struct mana_rxcomp_oob *cqe,
skb_checksum_none_assert(skb);
skb_record_rx_queue(skb, rxq_idx);
- if ((ndev->features & NETIF_F_RXCSUM) && cqe->rx_iphdr_csum_succeed) {
+ if (netdev_feature_test_bit(NETIF_F_RXCSUM_BIT, ndev->features) &&
+ cqe->rx_iphdr_csum_succeed) {
if (cqe->rx_tcp_csum_succeed || cqe->rx_udp_csum_succeed)
skb->ip_summed = CHECKSUM_UNNECESSARY;
}
- if (cqe->rx_hashtype != 0 && (ndev->features & NETIF_F_RXHASH)) {
+ if (cqe->rx_hashtype != 0 && netdev_feature_test_bit(NETIF_F_RXHASH_BIT,
+ ndev->features)) {
hash_value = cqe->ppi[0].pkt_hash;
if (cqe->rx_hashtype & MANA_HASH_L4)
@@ -1801,12 +1803,14 @@ static int mana_probe_port(struct mana_context *ac, int port_idx,
netdev_lockdep_set_classes(ndev);
- ndev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
- ndev->hw_features |= NETIF_F_RXCSUM;
- ndev->hw_features |= NETIF_F_TSO | NETIF_F_TSO6;
- ndev->hw_features |= NETIF_F_RXHASH;
- ndev->features = ndev->hw_features;
- ndev->vlan_features = 0;
+ netdev_feature_zero(&ndev->hw_features);
+ netdev_feature_set_bits(NETIF_F_SG | NETIF_F_IP_CSUM |
+ NETIF_F_IPV6_CSUM, &ndev->hw_features);
+ netdev_feature_set_bit(NETIF_F_HIGHDMA_BIT, &ndev->hw_features);
+ netdev_feature_set_bits(NETIF_F_TSO | NETIF_F_TSO6, &ndev->hw_features);
+ netdev_feature_set_bit(NETIF_F_RXHASH_BIT, &ndev->hw_features);
+ netdev_feature_copy(&ndev->features, ndev->hw_features);
+ netdev_feature_zero(&ndev->vlan_features);
err = register_netdev(ndev);
if (err) {
Use netdev_feature_xxx helpers to replace the logical operation for netdev features. Signed-off-by: Jian Shen <shenjian15@huawei.com> --- drivers/net/ethernet/microsoft/mana/mana_en.c | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-)