aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2011-05-01 15:06:42 -0400
committerStefan Richter <stefanr@s5r6.in-berlin.de>2011-05-10 16:53:46 -0400
commit81bf52d8622f05cfe89893fd5c1101efd85f855b (patch)
treeeaad1608312ce1995082c06951af5a194fd66a52 /drivers
parentb75ca5ea8e439893121ad80406a3c04c4b7612ab (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')
-rw-r--r--drivers/firewire/sbp2.c8
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
510static int sbp2_cancel_orbs(struct sbp2_logical_unit *lu) 510static int sbp2_cancel_orbs(struct sbp2_logical_unit *lu)