Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

qed: Introduce DMA_REGPAIR_LE

FW hsi contains regpairs, mostly for 64-bit address representations.
Since same paradigm is applied each time a regpair is filled, this
introduces a new utility macro for setting such regpairs.

Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Yuval Mintz and committed by
David S. Miller
94494598 06f56b81

+14 -20
+3 -6
drivers/net/ethernet/qlogic/qed/qed_l2.c
··· 557 557 p_ramrod->complete_event_flg = 1; 558 558 559 559 p_ramrod->bd_max_bytes = cpu_to_le16(bd_max_bytes); 560 - p_ramrod->bd_base.hi = DMA_HI_LE(bd_chain_phys_addr); 561 - p_ramrod->bd_base.lo = DMA_LO_LE(bd_chain_phys_addr); 560 + DMA_REGPAIR_LE(p_ramrod->bd_base, bd_chain_phys_addr); 562 561 563 562 p_ramrod->num_of_pbl_pages = cpu_to_le16(cqe_pbl_size); 564 - p_ramrod->cqe_pbl_addr.hi = DMA_HI_LE(cqe_pbl_addr); 565 - p_ramrod->cqe_pbl_addr.lo = DMA_LO_LE(cqe_pbl_addr); 563 + DMA_REGPAIR_LE(p_ramrod->cqe_pbl_addr, cqe_pbl_addr); 566 564 567 565 rc = qed_spq_post(p_hwfn, p_ent, NULL); 568 566 ··· 719 721 p_ramrod->stats_counter_id = stats_id; 720 722 721 723 p_ramrod->pbl_size = cpu_to_le16(pbl_size); 722 - p_ramrod->pbl_base_addr.hi = DMA_HI_LE(pbl_addr); 723 - p_ramrod->pbl_base_addr.lo = DMA_LO_LE(pbl_addr); 724 + DMA_REGPAIR_LE(p_ramrod->pbl_base_addr, pbl_addr); 724 725 725 726 pq_id = qed_get_qm_pq(p_hwfn, 726 727 PROTOCOLID_ETH,
+4 -8
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c
··· 136 136 p_ramrod->outer_tag = p_hwfn->hw_info.ovlan; 137 137 138 138 /* Place EQ address in RAMROD */ 139 - p_ramrod->event_ring_pbl_addr.hi = 140 - DMA_HI_LE(p_hwfn->p_eq->chain.pbl.p_phys_table); 141 - p_ramrod->event_ring_pbl_addr.lo = 142 - DMA_LO_LE(p_hwfn->p_eq->chain.pbl.p_phys_table); 139 + DMA_REGPAIR_LE(p_ramrod->event_ring_pbl_addr, 140 + p_hwfn->p_eq->chain.pbl.p_phys_table); 143 141 p_ramrod->event_ring_num_pages = (u8)p_hwfn->p_eq->chain.page_cnt; 144 142 145 - p_ramrod->consolid_q_pbl_addr.hi = 146 - DMA_HI_LE(p_hwfn->p_consq->chain.pbl.p_phys_table); 147 - p_ramrod->consolid_q_pbl_addr.lo = 148 - DMA_LO_LE(p_hwfn->p_consq->chain.pbl.p_phys_table); 143 + DMA_REGPAIR_LE(p_ramrod->consolid_q_pbl_addr, 144 + p_hwfn->p_consq->chain.pbl.p_phys_table); 149 145 150 146 p_hwfn->hw_info.personality = PERSONALITY_ETH; 151 147
+3 -6
drivers/net/ethernet/qlogic/qed/qed_spq.c
··· 183 183 p_cxt->xstorm_st_context.spq_base_hi = 184 184 DMA_HI_LE(p_spq->chain.p_phys_addr); 185 185 186 - p_cxt->xstorm_st_context.consolid_base_addr.lo = 187 - DMA_LO_LE(p_hwfn->p_consq->chain.p_phys_addr); 188 - p_cxt->xstorm_st_context.consolid_base_addr.hi = 189 - DMA_HI_LE(p_hwfn->p_consq->chain.p_phys_addr); 186 + DMA_REGPAIR_LE(p_cxt->xstorm_st_context.consolid_base_addr, 187 + p_hwfn->p_consq->chain.p_phys_addr); 190 188 } 191 189 192 190 static int qed_spq_hw_post(struct qed_hwfn *p_hwfn, ··· 421 423 p_virt = p_spq->p_virt; 422 424 423 425 for (i = 0; i < p_spq->chain.capacity; i++) { 424 - p_virt->elem.data_ptr.hi = DMA_HI_LE(p_phys); 425 - p_virt->elem.data_ptr.lo = DMA_LO_LE(p_phys); 426 + DMA_REGPAIR_LE(p_virt->elem.data_ptr, p_phys); 426 427 427 428 list_add_tail(&p_virt->list, &p_spq->free_pool); 428 429
+4
include/linux/qed/qed_chain.h
··· 19 19 /* dma_addr_t manip */ 20 20 #define DMA_LO_LE(x) cpu_to_le32(lower_32_bits(x)) 21 21 #define DMA_HI_LE(x) cpu_to_le32(upper_32_bits(x)) 22 + #define DMA_REGPAIR_LE(x, val) do { \ 23 + (x).hi = DMA_HI_LE((val)); \ 24 + (x).lo = DMA_LO_LE((val)); \ 25 + } while (0) 22 26 23 27 #define HILO_GEN(hi, lo, type) ((((type)(hi)) << 32) + (lo)) 24 28 #define HILO_DMA(hi, lo) HILO_GEN(hi, lo, dma_addr_t)