/* compute_large_page_descs() computes how many additional descriptors are required to break down the stack's request.  */
static unsigned int compute_large_page_tx_descs(struct sk_buff *skb)
/* compute_large_page_descs() computes how many additional descriptors are required to break down the stack's request.  */
static unsigned int compute_large_page_tx_descs(struct sk_buff *skb)
{
	unsigned int count = 0;
	if (PAGE_SIZE > SGE_TX_DESC_MAX_PLEN) {
		unsigned int nfrags = skb_shinfo(skb)->nr_frags;
		unsigned int i, len = skb->len - skb->data_len;
		while (len > SGE_TX_DESC_MAX_PLEN) {
			count++;
			len -= SGE_TX_DESC_MAX_PLEN;
		}
		for (i = 0; nfrags--; i++) {
			skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
			len = frag->size;
			while (len > SGE_TX_DESC_MAX_PLEN) {
				count++;
				len -= SGE_TX_DESC_MAX_PLEN;
			}
		}
	}
	return count;
}