Current code bails out when two subsequent buffer elements hold
insufficient data to contain a qeth_hdr packet descriptor.
This seems reasonable, but it would be legal for quirky hardware to
leave a few elements empty and then present packets in a subsequent
element. These packets would currently be dropped.
So make sure to check all buffer elements, until we hit the LAST_ENTRY
indication.
Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
        int use_rx_sg = 0;
 
        /* qeth_hdr must not cross element boundaries */
-       if (element->length < offset + sizeof(struct qeth_hdr)) {
+       while (element->length < offset + sizeof(struct qeth_hdr)) {
                if (qeth_is_last_sbale(element))
                        return NULL;
                element++;
                offset = 0;
-               if (element->length < sizeof(struct qeth_hdr))
-                       return NULL;
        }
        *hdr = element->addr + offset;