switch (sset) {
        case ETH_SS_STATS:
-               return (wx->mac.type == wx_mac_sp) ?
+               return (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)) ?
                        WX_STATS_LEN + WX_FDIR_STATS_LEN : WX_STATS_LEN;
        default:
                return -EOPNOTSUPP;
        case ETH_SS_STATS:
                for (i = 0; i < WX_GLOBAL_STATS_LEN; i++)
                        ethtool_puts(&p, wx_gstrings_stats[i].stat_string);
-               if (wx->mac.type == wx_mac_sp) {
+               if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)) {
                        for (i = 0; i < WX_FDIR_STATS_LEN; i++)
                                ethtool_puts(&p, wx_gstrings_fdir_stats[i].stat_string);
                }
                           sizeof(u64)) ? *(u64 *)p : *(u32 *)p;
        }
 
-       if (wx->mac.type == wx_mac_sp) {
+       if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)) {
                for (k = 0; k < WX_FDIR_STATS_LEN; k++) {
                        p = (char *)wx + wx_gstrings_fdir_stats[k].stat_offset;
                        data[i++] = *(u64 *)p;
        unsigned int stats_len = WX_STATS_LEN;
        struct wx *wx = netdev_priv(netdev);
 
-       if (wx->mac.type == wx_mac_sp)
+       if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags))
                stats_len += WX_FDIR_STATS_LEN;
 
        strscpy(info->driver, wx->driver_name, sizeof(info->driver));
 
        /* enable hw crc stripping */
        wr32m(wx, WX_RSC_CTL, WX_RSC_CTL_CRC_STRIP, WX_RSC_CTL_CRC_STRIP);
 
-       if (wx->mac.type == wx_mac_sp) {
+       if (test_bit(WX_FLAG_RSC_CAPABLE, wx->flags)) {
                u32 psrctl;
 
                /* RSC Setup */
        hwstats->b2ogprc += rd32(wx, WX_RDM_BMC2OS_CNT);
        hwstats->rdmdrop += rd32(wx, WX_RDM_DRP_PKT);
 
-       if (wx->mac.type == wx_mac_sp) {
+       if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)) {
                hwstats->fdirmatch += rd32(wx, WX_RDB_FDIR_MATCH);
                hwstats->fdirmiss += rd32(wx, WX_RDB_FDIR_MISS);
        }