|
@@ -30,8 +30,6 @@ new_skb(ulong len)
|
|
|
skb->nh.raw = skb->mac.raw = skb->data;
|
|
|
skb->protocol = __constant_htons(ETH_P_AOE);
|
|
|
skb->priority = 0;
|
|
|
- skb_put(skb, len);
|
|
|
- memset(skb->head, 0, len);
|
|
|
skb->next = skb->prev = NULL;
|
|
|
|
|
|
/* tell the network layer not to perform IP checksums
|
|
@@ -122,8 +120,8 @@ aoecmd_ata_rw(struct aoedev *d, struct frame *f)
|
|
|
skb = f->skb;
|
|
|
h = (struct aoe_hdr *) skb->mac.raw;
|
|
|
ah = (struct aoe_atahdr *) (h+1);
|
|
|
- skb->len = sizeof *h + sizeof *ah;
|
|
|
- memset(h, 0, ETH_ZLEN);
|
|
|
+ skb_put(skb, sizeof *h + sizeof *ah);
|
|
|
+ memset(h, 0, skb->len);
|
|
|
f->tag = aoehdr_atainit(d, h);
|
|
|
f->waited = 0;
|
|
|
f->buf = buf;
|
|
@@ -149,7 +147,6 @@ aoecmd_ata_rw(struct aoedev *d, struct frame *f)
|
|
|
skb->len += bcnt;
|
|
|
skb->data_len = bcnt;
|
|
|
} else {
|
|
|
- skb->len = ETH_ZLEN;
|
|
|
writebit = 0;
|
|
|
}
|
|
|
|
|
@@ -206,6 +203,7 @@ aoecmd_cfg_pkts(ushort aoemajor, unsigned char aoeminor, struct sk_buff **tail)
|
|
|
printk(KERN_INFO "aoe: skb alloc failure\n");
|
|
|
continue;
|
|
|
}
|
|
|
+ skb_put(skb, sizeof *h + sizeof *ch);
|
|
|
skb->dev = ifp;
|
|
|
if (sl_tail == NULL)
|
|
|
sl_tail = skb;
|
|
@@ -243,6 +241,7 @@ freeframe(struct aoedev *d)
|
|
|
continue;
|
|
|
if (atomic_read(&skb_shinfo(f->skb)->dataref) == 1) {
|
|
|
skb_shinfo(f->skb)->nr_frags = f->skb->data_len = 0;
|
|
|
+ skb_trim(f->skb, 0);
|
|
|
return f;
|
|
|
}
|
|
|
n++;
|
|
@@ -698,8 +697,8 @@ aoecmd_ata_id(struct aoedev *d)
|
|
|
skb = f->skb;
|
|
|
h = (struct aoe_hdr *) skb->mac.raw;
|
|
|
ah = (struct aoe_atahdr *) (h+1);
|
|
|
- skb->len = ETH_ZLEN;
|
|
|
- memset(h, 0, ETH_ZLEN);
|
|
|
+ skb_put(skb, sizeof *h + sizeof *ah);
|
|
|
+ memset(h, 0, skb->len);
|
|
|
f->tag = aoehdr_atainit(d, h);
|
|
|
f->waited = 0;
|
|
|
|