Stored procedures and network congestion
In SQL Server, the query optimizer goes through these steps to execute any query (stored procedure call or ad-hoc SQL statement):


syntactically check the query  
if it's okay - it checks the plan cache to see if it already has an execution plan for that query  
if there is an execution plan - that plan is (re-)used and the query executed  
if there is no plan yet, an execution plan is determined   
that plan is stored into the plan cache for later reuse  
the query is executed  


The point is: ad-hoc SQL and stored procedures are treatly no differently. 

If an ad-hoc SQL query is properly using parameters - as it should anyway, to prevent SQL injection attacks - its performance characteristics are no different and most definitely no worse than executing a stored procedure.

Stored procedure have other benefits (no need to grant users direct table access, for instance), but in terms of performance, using properly parametrized ad-hoc SQL queries is just as efficient as using stored procedures.