diff options
Diffstat (limited to 'drivers/block/aoe/aoecmd.c')
-rw-r--r-- | drivers/block/aoe/aoecmd.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/drivers/block/aoe/aoecmd.c b/drivers/block/aoe/aoecmd.c index 60beb8db4612..b5be4b7d7b5b 100644 --- a/drivers/block/aoe/aoecmd.c +++ b/drivers/block/aoe/aoecmd.c | |||
@@ -178,8 +178,12 @@ aoecmd_ata_rw(struct aoedev *d, struct frame *f) | |||
178 | 178 | ||
179 | skb = skb_prepare(d, f); | 179 | skb = skb_prepare(d, f); |
180 | if (skb) { | 180 | if (skb) { |
181 | skb->next = d->skblist; | 181 | skb->next = NULL; |
182 | d->skblist = skb; | 182 | if (d->sendq_hd) |
183 | d->sendq_tl->next = skb; | ||
184 | else | ||
185 | d->sendq_hd = skb; | ||
186 | d->sendq_tl = skb; | ||
183 | } | 187 | } |
184 | } | 188 | } |
185 | 189 | ||
@@ -227,8 +231,12 @@ rexmit(struct aoedev *d, struct frame *f) | |||
227 | 231 | ||
228 | skb = skb_prepare(d, f); | 232 | skb = skb_prepare(d, f); |
229 | if (skb) { | 233 | if (skb) { |
230 | skb->next = d->skblist; | 234 | skb->next = NULL; |
231 | d->skblist = skb; | 235 | if (d->sendq_hd) |
236 | d->sendq_tl->next = skb; | ||
237 | else | ||
238 | d->sendq_hd = skb; | ||
239 | d->sendq_tl = skb; | ||
232 | } | 240 | } |
233 | } | 241 | } |
234 | 242 | ||
@@ -280,8 +288,8 @@ tdie: spin_unlock_irqrestore(&d->lock, flags); | |||
280 | } | 288 | } |
281 | } | 289 | } |
282 | 290 | ||
283 | sl = d->skblist; | 291 | sl = d->sendq_hd; |
284 | d->skblist = NULL; | 292 | d->sendq_hd = d->sendq_tl = NULL; |
285 | if (sl) { | 293 | if (sl) { |
286 | n = d->rttavg <<= 1; | 294 | n = d->rttavg <<= 1; |
287 | if (n > MAXTIMER) | 295 | if (n > MAXTIMER) |
@@ -481,8 +489,8 @@ aoecmd_ata_rsp(struct sk_buff *skb) | |||
481 | 489 | ||
482 | aoecmd_work(d); | 490 | aoecmd_work(d); |
483 | 491 | ||
484 | sl = d->skblist; | 492 | sl = d->sendq_hd; |
485 | d->skblist = NULL; | 493 | d->sendq_hd = d->sendq_tl = NULL; |
486 | 494 | ||
487 | spin_unlock_irqrestore(&d->lock, flags); | 495 | spin_unlock_irqrestore(&d->lock, flags); |
488 | 496 | ||
@@ -531,7 +539,7 @@ aoecmd_cfg(ushort aoemajor, unsigned char aoeminor) | |||
531 | 539 | ||
532 | /* | 540 | /* |
533 | * Since we only call this in one place (and it only prepares one frame) | 541 | * Since we only call this in one place (and it only prepares one frame) |
534 | * we just return the skb. Usually we'd chain it up to the d->skblist. | 542 | * we just return the skb. Usually we'd chain it up to the aoedev sendq. |
535 | */ | 543 | */ |
536 | static struct sk_buff * | 544 | static struct sk_buff * |
537 | aoecmd_ata_id(struct aoedev *d) | 545 | aoecmd_ata_id(struct aoedev *d) |