As per Sri Lanka Cricket officials, Silva was struck on Sunday during a match in Pallekele.
"Kaushal was fielding at short leg when he got hit,'' espncricinfo.com quoted national team manager Charith Senanayake as saying.
As per Senanayake, Sri Lanka vice-captain Dinesh Chandimal "swept right onto the back of Kaushal's head. He did take evasive action, but still the ball hit him.''
Silva was wearing a helmet with additional padding, a design introduced for player safety after the death of Australia batsman Phillip Hughes after being struck by a ball on the head in November 2014, the website added.
His scans were clear, but he was flown to a hospital in the capital Colombo for further tests and observation, the cricket body added.
Silva has played 24 test matches for Sri Lanka and scored 1,404 runs at an average of 31. The match was part of Sri Lanka's preparations for its tour of England next month.
(With inputs from agencies)