As a freshman at West Virginia in 2009, Garvin played in 10 games and finished with 10 tackles for the season. In 2010, Garvin started all 13 games and finished with 76 tackles. He started 11 games in 2011, but had knee surgery in December 2011. He played in 47 career games at West Virginia, registering 235 tackles, 10.5 sacks, and three forced fumbles. He also intercepted three passes, returning one for a touchdown, to go along with 11 passes defensed.
Professional career
Pittsburgh Steelers
After going undrafted in the 2013 NFL Draft, Garvin wasn’t immediately signed as a free agent. He was invited to attend Pittsburgh Steelers rookie minicamp on a tryout basis and was signed to the 90-man roster on May 6. He was waived on August 31 and then re-signed to the team’s practice squad. On September 3, 2013, Garvin was signed to the active roster. He saw action against the Cincinnati Bengals in Week 15 and gained notoriety when he broke the jaw of Bengals punter Kevin Huber with a hard hit during a runback for touchdown by Antonio Brown. The block was not penalized at the time, but was later ruled illegal by the NFL and cost him a $25,000 fine. Garvin re-signed with the Steelers on a one-year contract on January 9, 2015.
On March 17, 2016, Garvin signed with the Washington Redskins. He played in all 16 games primarily on special teams, finishing second on the team with eight special teams tackles.
In 2019, Garvin joined the Orlando Apollos of the Alliance of American Football. In the season opener against the Atlanta Legends, Garvin recorded 8 tackles and two interceptions, one of which was returned for a touchdown, as the Apollos won 40–6. He was named Defensive Player of the Week for his performance. The league ceased operations in April 2019. Through the 8 games played, Garvin made 24 tackles, defended 6 passes, caught 3 interceptions, and recorded a sack and forced fumble.
St. Louis BattleHawks
Garvin was selected by the St. Louis BattleHawks in the 22nd Round of the 2020 XFL Draft. In 5 games played prior to the COVID-19 pandemic causing the season to end prematurely, Garvin recorded 36 tackles and a sack. He had his contract terminated when the league suspended operations on April 10, 2020.