diff options
| -rw-r--r-- | drivers/block/aoe/aoecmd.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/block/aoe/aoecmd.c b/drivers/block/aoe/aoecmd.c index 63c456082d81..621fdbbc4cd4 100644 --- a/drivers/block/aoe/aoecmd.c +++ b/drivers/block/aoe/aoecmd.c | |||
| @@ -475,7 +475,7 @@ void | |||
| 475 | aoecmd_ata_rsp(struct sk_buff *skb) | 475 | aoecmd_ata_rsp(struct sk_buff *skb) |
| 476 | { | 476 | { |
| 477 | struct aoedev *d; | 477 | struct aoedev *d; |
| 478 | struct aoe_hdr *hin; | 478 | struct aoe_hdr *hin, *hout; |
| 479 | struct aoe_atahdr *ahin, *ahout; | 479 | struct aoe_atahdr *ahin, *ahout; |
| 480 | struct frame *f; | 480 | struct frame *f; |
| 481 | struct buf *buf; | 481 | struct buf *buf; |
| @@ -515,7 +515,8 @@ aoecmd_ata_rsp(struct sk_buff *skb) | |||
| 515 | calc_rttavg(d, tsince(f->tag)); | 515 | calc_rttavg(d, tsince(f->tag)); |
| 516 | 516 | ||
| 517 | ahin = (struct aoe_atahdr *) (hin+1); | 517 | ahin = (struct aoe_atahdr *) (hin+1); |
| 518 | ahout = (struct aoe_atahdr *) (f->skb->mac.raw + sizeof(struct aoe_hdr)); | 518 | hout = (struct aoe_hdr *) f->skb->mac.raw; |
| 519 | ahout = (struct aoe_atahdr *) (hout+1); | ||
| 519 | buf = f->buf; | 520 | buf = f->buf; |
| 520 | 521 | ||
| 521 | if (ahout->cmdstat == WIN_IDENTIFY) | 522 | if (ahout->cmdstat == WIN_IDENTIFY) |
| @@ -552,6 +553,9 @@ aoecmd_ata_rsp(struct sk_buff *skb) | |||
| 552 | skb_fill_page_desc(f->skb, 0, | 553 | skb_fill_page_desc(f->skb, 0, |
| 553 | virt_to_page(f->bufaddr), | 554 | virt_to_page(f->bufaddr), |
| 554 | offset_in_page(f->bufaddr), n); | 555 | offset_in_page(f->bufaddr), n); |
| 556 | f->tag = newtag(d); | ||
| 557 | hout->tag = cpu_to_be32(f->tag); | ||
| 558 | skb->dev = d->ifp; | ||
| 555 | skb_get(f->skb); | 559 | skb_get(f->skb); |
| 556 | f->skb->next = NULL; | 560 | f->skb->next = NULL; |
| 557 | spin_unlock_irqrestore(&d->lock, flags); | 561 | spin_unlock_irqrestore(&d->lock, flags); |
