/* Replace the current skb that is scheduled for Rx processing by a shorter, immediatly allocated skb, if the received packet is small enough. This function returns a negative value if the received packet is too big or if memory is exhausted.  */
static int velocity_rx_copy(struct sk_buff **rx_skb, int pkt_size, struct velocity_info *vptr)
/* Replace the current skb that is scheduled for Rx processing by a shorter, immediatly allocated skb, if the received packet is small enough. This function returns a negative value if the received packet is too big or if memory is exhausted.  */
static int velocity_rx_copy(struct sk_buff **rx_skb, int pkt_size, struct velocity_info *vptr)
{
	int ret = -1;
	if (pkt_size < rx_copybreak) {
		struct sk_buff *new_skb;
		new_skb = netdev_alloc_skb_ip_align(vptr->dev, pkt_size);
		if (new_skb) {
			new_skb->ip_summed = rx_skb[0]->ip_summed;
			skb_copy_from_linear_data(*rx_skb, new_skb->data, pkt_size);
			*rx_skb = new_skb;
			ret = 0;
		}
	}
	return ret;
}