bool pass = false, automatic = true;
        snd_pcm_hw_params_t *hw_params;
        snd_pcm_sw_params_t *sw_params;
+       bool skip = false;
 
        snd_pcm_hw_params_alloca(&hw_params);
        snd_pcm_sw_params_alloca(&sw_params);
                goto __close;
        }
        if (rrate != rate) {
-               snprintf(msg, sizeof(msg), "rate mismatch %ld != %ld", rate, rrate);
+               snprintf(msg, sizeof(msg), "rate unsupported %ld != %ld", rate, rrate);
+               skip = true;
                goto __close;
        }
        rperiod_size = period_size;
        msg[0] = '\0';
        pass = true;
 __close:
-       ksft_test_result(pass, "%s.%d.%d.%d.%s%s%s\n",
-                        test->cfg_prefix,
-                        data->card, data->device, data->subdevice,
-                        snd_pcm_stream_name(data->stream),
-                        msg[0] ? " " : "", msg);
+       if (!skip) {
+               ksft_test_result(pass, "%s.%d.%d.%d.%s%s%s\n",
+                                test->cfg_prefix,
+                                data->card, data->device, data->subdevice,
+                                snd_pcm_stream_name(data->stream),
+                                msg[0] ? " " : "", msg);
+       } else {
+               ksft_test_result_skip("%s.%d.%d.%d.%s%s%s\n",
+                                     test->cfg_prefix,
+                                     data->card, data->device,
+                                     data->subdevice,
+                                     snd_pcm_stream_name(data->stream),
+                                     msg[0] ? " " : "", msg);
+       }
        free(samples);
        if (handle)
                snd_pcm_close(handle);