.. | .. |
---|
62 | 62 | static void sdma_put(struct qib_sdma_state *); |
---|
63 | 63 | static void sdma_set_state(struct qib_pportdata *, enum qib_sdma_states); |
---|
64 | 64 | static void sdma_start_sw_clean_up(struct qib_pportdata *); |
---|
65 | | -static void sdma_sw_clean_up_task(unsigned long); |
---|
| 65 | +static void sdma_sw_clean_up_task(struct tasklet_struct *); |
---|
66 | 66 | static void unmap_desc(struct qib_pportdata *, unsigned); |
---|
67 | 67 | |
---|
68 | 68 | static void sdma_get(struct qib_sdma_state *ss) |
---|
.. | .. |
---|
119 | 119 | } |
---|
120 | 120 | } |
---|
121 | 121 | |
---|
122 | | -static void sdma_sw_clean_up_task(unsigned long opaque) |
---|
| 122 | +static void sdma_sw_clean_up_task(struct tasklet_struct *t) |
---|
123 | 123 | { |
---|
124 | | - struct qib_pportdata *ppd = (struct qib_pportdata *) opaque; |
---|
| 124 | + struct qib_pportdata *ppd = from_tasklet(ppd, t, |
---|
| 125 | + sdma_sw_clean_up_task); |
---|
125 | 126 | unsigned long flags; |
---|
126 | 127 | |
---|
127 | 128 | spin_lock_irqsave(&ppd->sdma_lock, flags); |
---|
.. | .. |
---|
436 | 437 | |
---|
437 | 438 | INIT_LIST_HEAD(&ppd->sdma_activelist); |
---|
438 | 439 | |
---|
439 | | - tasklet_init(&ppd->sdma_sw_clean_up_task, sdma_sw_clean_up_task, |
---|
440 | | - (unsigned long)ppd); |
---|
| 440 | + tasklet_setup(&ppd->sdma_sw_clean_up_task, sdma_sw_clean_up_task); |
---|
441 | 441 | |
---|
442 | 442 | ret = dd->f_init_sdma_regs(ppd); |
---|
443 | 443 | if (ret) |
---|
.. | .. |
---|
565 | 565 | sge = &ss->sge; |
---|
566 | 566 | while (dwords) { |
---|
567 | 567 | u32 dw; |
---|
568 | | - u32 len; |
---|
| 568 | + u32 len = rvt_get_sge_length(sge, dwords << 2); |
---|
569 | 569 | |
---|
570 | | - len = dwords << 2; |
---|
571 | | - if (len > sge->length) |
---|
572 | | - len = sge->length; |
---|
573 | | - if (len > sge->sge_length) |
---|
574 | | - len = sge->sge_length; |
---|
575 | | - BUG_ON(len == 0); |
---|
576 | 570 | dw = (len + 3) >> 2; |
---|
577 | 571 | addr = dma_map_single(&ppd->dd->pcidev->dev, sge->vaddr, |
---|
578 | 572 | dw << 2, DMA_TO_DEVICE); |
---|
.. | .. |
---|
595 | 589 | descqp = &ppd->sdma_descq[0].qw[0]; |
---|
596 | 590 | ++ppd->sdma_generation; |
---|
597 | 591 | } |
---|
598 | | - sge->vaddr += len; |
---|
599 | | - sge->length -= len; |
---|
600 | | - sge->sge_length -= len; |
---|
601 | | - if (sge->sge_length == 0) { |
---|
602 | | - if (--ss->num_sge) |
---|
603 | | - *sge = *ss->sg_list++; |
---|
604 | | - } else if (sge->length == 0 && sge->mr->lkey) { |
---|
605 | | - if (++sge->n >= RVT_SEGSZ) { |
---|
606 | | - if (++sge->m >= sge->mr->mapsz) |
---|
607 | | - break; |
---|
608 | | - sge->n = 0; |
---|
609 | | - } |
---|
610 | | - sge->vaddr = |
---|
611 | | - sge->mr->map[sge->m]->segs[sge->n].vaddr; |
---|
612 | | - sge->length = |
---|
613 | | - sge->mr->map[sge->m]->segs[sge->n].length; |
---|
614 | | - } |
---|
615 | | - |
---|
| 592 | + rvt_update_sge(ss, len, false); |
---|
616 | 593 | dwoffset += dw; |
---|
617 | 594 | dwords -= dw; |
---|
618 | 595 | } |
---|
.. | .. |
---|
653 | 630 | if (ib_rvt_state_ops[qp->state] & RVT_PROCESS_RECV_OK) |
---|
654 | 631 | rvt_error_qp(qp, IB_WC_GENERAL_ERR); |
---|
655 | 632 | } else if (qp->s_wqe) |
---|
656 | | - qib_send_complete(qp, qp->s_wqe, IB_WC_GENERAL_ERR); |
---|
| 633 | + rvt_send_complete(qp, qp->s_wqe, IB_WC_GENERAL_ERR); |
---|
657 | 634 | spin_unlock(&qp->s_lock); |
---|
658 | 635 | spin_unlock(&qp->r_lock); |
---|
659 | 636 | /* return zero to process the next send work request */ |
---|
.. | .. |
---|
786 | 763 | * bringing the link up with traffic active on |
---|
787 | 764 | * 7220, e.g. */ |
---|
788 | 765 | ss->go_s99_running = 1; |
---|
789 | | - /* fall through -- and start dma engine */ |
---|
| 766 | + fallthrough; /* and start dma engine */ |
---|
790 | 767 | case qib_sdma_event_e10_go_hw_start: |
---|
791 | 768 | /* This reference means the state machine is started */ |
---|
792 | 769 | sdma_get(&ppd->sdma_state); |
---|