That logical condition is never going to work: WHERE operates on the row data, and you are purely asking to to decide based on parameter data which will not change from row to row - so it will either return all rows or no rows - it cannot filter the row data at all.
Probably, you want to use the parameters to compare against row data - but without knowing more about your system it's not possible to be more exact.
However, I would move the IS NULL outside my SELECT anyway:
DECLARE @P VARCHAR(10)
SET @P = ISNULL(@mParameter, 'M')
SELECT * FROM MyTable WHERE @P ='M'
But what you probably want to do is more along the lines of:
DECLARE @P VARCHAR(10)
SET @P = ISNULL(@mParameter, 'M')
SELECT * FROM MyTable WHERE Model=@P