A method for processing data packets received from a network using hashing algorithms characterised by the following steps in a network interface device: receiving from a computing device an indication of a first search limit associated with a first incoming data packet type and an indication of a second search limit associated with a second incoming data packet type; receiving from the network a first incoming data packet having a first header; determining from the first header that the first incoming data packet is of the first incoming data packet type; applying a hashing algorithm to the first header so as to indicate a first subset of a filter table; iteratively searching the first subset for a first matching entry having first comparison criteria that are satisfied by content of the first incoming data packet received from the network; wherein, if the first matching entry is identified after no more than a number of iterations indicated by the first search limit, delivering the first incoming data packet to a receive queue in the computing device that is indicated by the first matching entry, the first matching entry having a first comparison field; and if no matching entry is identified after the number of iterations indicated by the first search limit, delivering the first incoming data packet to a default receive queue for the first incoming data packet in the computing device; receiving from the network a second incoming data packet having a second header; determining from the second header that the second incoming data packet is of the second incoming data packet type; applying a hashing algorithm to the second header so as to indicate a second subset of the filter table; iteratively searching the second subset for a second matching entry having comparison criteria that are satisfied by content of the second incoming data packet received from the network; wherein, if the second matching entry is identified after no more than a number of iterations indicated by the second search limit, delivering the second incoming data packet to a receive queue in the computing device that is indicated by the second matching entry, the second matching entry having a second comparison field; and if no matching entry is identified after the number of iterations indicated by the second search limit, delivering the second incoming data packet to a default receive queue for the second incoming data packet in the computing device. receiving from a computing device an indication of a first search limit associated with a first incoming data packet type and an indication of a second search limit associated with a second incoming data packet type; receiving from the network a first incoming data packet having a first header; determining from the first header that the first incoming data packet is of the first incoming data packet type; applying a hashing algorithm to the first header so as to indicate a first subset of a filter table; iteratively searching the first subset for a first matching entry having first comparison criteria that are satisfied by content of the first incoming data packet received from the network; wherein, if the first matching entry is identified after no more than a number of iterations indicated by the first search limit, delivering the first incoming data packet to a receive queue in the computing device that is indicated by the first matching entry, the first matching entry having a first comparison field; and if no matching entry is identified after the number of iterations indicated by the first search limit, delivering the first incoming data packet to a default receive queue for the first incoming data packet in the computing device; receiving from the network a second incoming data packet having a second header; determining from the second header that the second incoming data packet is of the second incoming data packet type; applying a hashing algorithm to the second header so as to indicate a second subset of the filter table; iteratively searching the second subset for a second matching entry having comparison criteria that are satisfied by content of the second incoming data packet received from the network; wherein, if the second matching entry is identified after no more than a number of iterations indicated by the second search limit, delivering the second incoming data packet to a receive queue in the computing device that is indicated by the second matching entry, the second matching entry having a second comparison field; and if no matching entry is identified after the number of iterations indicated by the second search limit, delivering the second incoming data packet to a default receive queue for the second incoming data packet in the computing device.