|
@@ -454,46 +454,6 @@ out:
|
|
|
return dev;
|
|
|
}
|
|
|
|
|
|
-static struct sk_buff *t4_pktgl_to_skb(const struct pkt_gl *gl,
|
|
|
- unsigned int skb_len,
|
|
|
- unsigned int pull_len)
|
|
|
-{
|
|
|
- struct sk_buff *skb;
|
|
|
- struct skb_shared_info *ssi;
|
|
|
-
|
|
|
- if (gl->tot_len <= 512) {
|
|
|
- skb = alloc_skb(gl->tot_len, GFP_ATOMIC);
|
|
|
- if (unlikely(!skb))
|
|
|
- goto out;
|
|
|
- __skb_put(skb, gl->tot_len);
|
|
|
- skb_copy_to_linear_data(skb, gl->va, gl->tot_len);
|
|
|
- } else {
|
|
|
- skb = alloc_skb(skb_len, GFP_ATOMIC);
|
|
|
- if (unlikely(!skb))
|
|
|
- goto out;
|
|
|
- __skb_put(skb, pull_len);
|
|
|
- skb_copy_to_linear_data(skb, gl->va, pull_len);
|
|
|
-
|
|
|
- ssi = skb_shinfo(skb);
|
|
|
- ssi->frags[0].page = gl->frags[0].page;
|
|
|
- ssi->frags[0].page_offset = gl->frags[0].page_offset + pull_len;
|
|
|
- ssi->frags[0].size = gl->frags[0].size - pull_len;
|
|
|
- if (gl->nfrags > 1)
|
|
|
- memcpy(&ssi->frags[1], &gl->frags[1],
|
|
|
- (gl->nfrags - 1) * sizeof(skb_frag_t));
|
|
|
- ssi->nr_frags = gl->nfrags;
|
|
|
-
|
|
|
- skb->len = gl->tot_len;
|
|
|
- skb->data_len = skb->len - pull_len;
|
|
|
- skb->truesize += skb->data_len;
|
|
|
-
|
|
|
- /* Get a reference for the last page, we don't own it */
|
|
|
- get_page(gl->frags[gl->nfrags - 1].page);
|
|
|
- }
|
|
|
-out:
|
|
|
- return skb;
|
|
|
-}
|
|
|
-
|
|
|
static int c4iw_uld_rx_handler(void *handle, const __be64 *rsp,
|
|
|
const struct pkt_gl *gl)
|
|
|
{
|
|
@@ -518,7 +478,7 @@ static int c4iw_uld_rx_handler(void *handle, const __be64 *rsp,
|
|
|
c4iw_ev_handler(dev, qid);
|
|
|
return 0;
|
|
|
} else {
|
|
|
- skb = t4_pktgl_to_skb(gl, 128, 128);
|
|
|
+ skb = cxgb4_pktgl_to_skb(gl, 128, 128);
|
|
|
if (unlikely(!skb))
|
|
|
goto nomem;
|
|
|
}
|