提交 5dc401ee 编写于 作者: E Ed L. Cashin 提交者: Greg Kroah-Hartman

[PATCH] aoe [1/3]: support multiple AoE listeners

Always clone incoming skbs, allowing other AoE listeners
to exist in the kernel.
Signed-off-by: N"Ed L. Cashin" <ecashin@coraid.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 1c6f3fca
......@@ -92,18 +92,6 @@ mac_addr(char addr[6])
return __be64_to_cpu(n);
}
static struct sk_buff *
skb_check(struct sk_buff *skb)
{
if (skb_is_nonlinear(skb))
if ((skb = skb_share_check(skb, GFP_ATOMIC)))
if (skb_linearize(skb, GFP_ATOMIC) < 0) {
dev_kfree_skb(skb);
return NULL;
}
return skb;
}
void
aoenet_xmit(struct sk_buff *sl)
{
......@@ -125,14 +113,14 @@ aoenet_rcv(struct sk_buff *skb, struct net_device *ifp, struct packet_type *pt,
struct aoe_hdr *h;
u32 n;
skb = skb_check(skb);
if (!skb)
skb = skb_share_check(skb, GFP_ATOMIC);
if (skb == NULL)
return 0;
if (skb_is_nonlinear(skb))
if (skb_linearize(skb, GFP_ATOMIC) < 0)
goto exit;
if (!is_aoe_netif(ifp))
goto exit;
//skb->len += ETH_HLEN; /* (1) */
skb_push(skb, ETH_HLEN); /* (1) */
h = (struct aoe_hdr *) skb->mac.raw;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册