Software-Defined Networking (SDN) enables programmability in the network through a software-dependent control function. OpenFlow is a de-facto protocol for communication between an SDN switch and the controller. OpenFlow specifications generally allow two methods for packet encapsulation of data packets at the switch that require decisions from the controller, (a) full encapsulation, and (b) internal buffering. However, full encapsulation of data packets has been the default choice for packet processing, and internal buffering has not been explored much, especially for hardware switching. In this paper, we model and analyse the effect of internal buffering on the performance of an OpenFlow hardware switch. We compare queueing models for the switch with full encapsulation and internal buffering for hardware switching. The results show that internal buffering significantly reduces the average packet transfer delay by 85% and packet loss probability by 60%. The results further provide guidelines to network operators that internal buffering for hardware switching is useful for controllers with lower processing rates, especially in delay-sensitive applications running over SDN. For loss-sensitive applications running over SDN, the full encapsulation method is more robust handling flows with a high table miss probability.