diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2011-05-01 15:06:42 -0400 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2011-05-10 16:53:46 -0400 |
commit | 81bf52d8622f05cfe89893fd5c1101efd85f855b (patch) | |
tree | eaad1608312ce1995082c06951af5a194fd66a52 /drivers/firewire/sbp2.c | |
parent | b75ca5ea8e439893121ad80406a3c04c4b7612ab (diff) |
firewire: sbp2: octlet AT payloads can be stack-allocated
We do not need slab allocations for ORB pointer write transactions
anymore in order to satisfy streaming DMA mapping constraints, thanks to
commit da28947e7e36 "firewire: ohci: avoid separate DMA mapping for
small AT payloads".
(Besides, the slab-allocated buffers that firewire-sbp2 used to provide
for 8-byte write requests were still not fully portable since they
shared a cacheline with unrelated CPU-accessed data.)
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire/sbp2.c')
-rw-r--r-- | drivers/firewire/sbp2.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/firewire/sbp2.c b/drivers/firewire/sbp2.c index cc002e92275a..2aafc614ae14 100644 --- a/drivers/firewire/sbp2.c +++ b/drivers/firewire/sbp2.c | |||
@@ -258,7 +258,6 @@ struct sbp2_orb { | |||
258 | struct kref kref; | 258 | struct kref kref; |
259 | dma_addr_t request_bus; | 259 | dma_addr_t request_bus; |
260 | int rcode; | 260 | int rcode; |
261 | struct sbp2_pointer pointer; | ||
262 | void (*callback)(struct sbp2_orb * orb, struct sbp2_status * status); | 261 | void (*callback)(struct sbp2_orb * orb, struct sbp2_status * status); |
263 | struct list_head link; | 262 | struct list_head link; |
264 | }; | 263 | }; |
@@ -490,10 +489,11 @@ static void sbp2_send_orb(struct sbp2_orb *orb, struct sbp2_logical_unit *lu, | |||
490 | int node_id, int generation, u64 offset) | 489 | int node_id, int generation, u64 offset) |
491 | { | 490 | { |
492 | struct fw_device *device = target_device(lu->tgt); | 491 | struct fw_device *device = target_device(lu->tgt); |
492 | struct sbp2_pointer orb_pointer; | ||
493 | unsigned long flags; | 493 | unsigned long flags; |
494 | 494 | ||
495 | orb->pointer.high = 0; | 495 | orb_pointer.high = 0; |
496 | orb->pointer.low = cpu_to_be32(orb->request_bus); | 496 | orb_pointer.low = cpu_to_be32(orb->request_bus); |
497 | 497 | ||
498 | spin_lock_irqsave(&device->card->lock, flags); | 498 | spin_lock_irqsave(&device->card->lock, flags); |
499 | list_add_tail(&orb->link, &lu->orb_list); | 499 | list_add_tail(&orb->link, &lu->orb_list); |
@@ -504,7 +504,7 @@ static void sbp2_send_orb(struct sbp2_orb *orb, struct sbp2_logical_unit *lu, | |||
504 | 504 | ||
505 | fw_send_request(device->card, &orb->t, TCODE_WRITE_BLOCK_REQUEST, | 505 | fw_send_request(device->card, &orb->t, TCODE_WRITE_BLOCK_REQUEST, |
506 | node_id, generation, device->max_speed, offset, | 506 | node_id, generation, device->max_speed, offset, |
507 | &orb->pointer, 8, complete_transaction, orb); | 507 | &orb_pointer, 8, complete_transaction, orb); |
508 | } | 508 | } |
509 | 509 | ||
510 | static int sbp2_cancel_orbs(struct sbp2_logical_unit *lu) | 510 | static int sbp2_cancel_orbs(struct sbp2_logical_unit *lu) |