Skip to content

Commit

Permalink
[PATCH] aoe [1/3]: support multiple AoE listeners
Browse files Browse the repository at this point in the history
Always clone incoming skbs, allowing other AoE listeners
to exist in the kernel.

Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Ed L. Cashin authored and Greg Kroah-Hartman committed Mar 24, 2006
1 parent 1c6f3fc commit 5dc401e
Showing 1 changed file with 5 additions and 17 deletions.
22 changes: 5 additions & 17 deletions drivers/block/aoe/aoenet.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand All @@ -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;
Expand Down

0 comments on commit 5dc401e

Please sign in to comment.