|
@@ -130,10 +130,10 @@ static int c2_tx_ring_alloc(struct c2_ring *tx_ring, void *vaddr,
|
|
|
tx_desc->status = 0;
|
|
|
|
|
|
/* Set TXP_HTXD_UNINIT */
|
|
|
- __raw_writeq(cpu_to_be64(0x1122334455667788ULL),
|
|
|
+ __raw_writeq((__force u64) cpu_to_be64(0x1122334455667788ULL),
|
|
|
(void __iomem *) txp_desc + C2_TXP_ADDR);
|
|
|
__raw_writew(0, (void __iomem *) txp_desc + C2_TXP_LEN);
|
|
|
- __raw_writew(cpu_to_be16(TXP_HTXD_UNINIT),
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(TXP_HTXD_UNINIT),
|
|
|
(void __iomem *) txp_desc + C2_TXP_FLAGS);
|
|
|
|
|
|
elem->skb = NULL;
|
|
@@ -179,13 +179,13 @@ static int c2_rx_ring_alloc(struct c2_ring *rx_ring, void *vaddr,
|
|
|
rx_desc->status = 0;
|
|
|
|
|
|
/* Set RXP_HRXD_UNINIT */
|
|
|
- __raw_writew(cpu_to_be16(RXP_HRXD_OK),
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(RXP_HRXD_OK),
|
|
|
(void __iomem *) rxp_desc + C2_RXP_STATUS);
|
|
|
__raw_writew(0, (void __iomem *) rxp_desc + C2_RXP_COUNT);
|
|
|
__raw_writew(0, (void __iomem *) rxp_desc + C2_RXP_LEN);
|
|
|
- __raw_writeq(cpu_to_be64(0x99aabbccddeeffULL),
|
|
|
+ __raw_writeq((__force u64) cpu_to_be64(0x99aabbccddeeffULL),
|
|
|
(void __iomem *) rxp_desc + C2_RXP_ADDR);
|
|
|
- __raw_writew(cpu_to_be16(RXP_HRXD_UNINIT),
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(RXP_HRXD_UNINIT),
|
|
|
(void __iomem *) rxp_desc + C2_RXP_FLAGS);
|
|
|
|
|
|
elem->skb = NULL;
|
|
@@ -239,10 +239,11 @@ static inline int c2_rx_alloc(struct c2_port *c2_port, struct c2_element *elem)
|
|
|
rxp_hdr->flags = RXP_HRXD_READY;
|
|
|
|
|
|
__raw_writew(0, elem->hw_desc + C2_RXP_STATUS);
|
|
|
- __raw_writew(cpu_to_be16((u16) maplen - sizeof(*rxp_hdr)),
|
|
|
+ __raw_writew((__force u16) cpu_to_be16((u16) maplen - sizeof(*rxp_hdr)),
|
|
|
elem->hw_desc + C2_RXP_LEN);
|
|
|
- __raw_writeq(cpu_to_be64(mapaddr), elem->hw_desc + C2_RXP_ADDR);
|
|
|
- __raw_writew(cpu_to_be16(RXP_HRXD_READY), elem->hw_desc + C2_RXP_FLAGS);
|
|
|
+ __raw_writeq((__force u64) cpu_to_be64(mapaddr), elem->hw_desc + C2_RXP_ADDR);
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(RXP_HRXD_READY),
|
|
|
+ elem->hw_desc + C2_RXP_FLAGS);
|
|
|
|
|
|
elem->skb = skb;
|
|
|
elem->mapaddr = mapaddr;
|
|
@@ -290,9 +291,9 @@ static void c2_rx_clean(struct c2_port *c2_port)
|
|
|
__raw_writew(0, elem->hw_desc + C2_RXP_STATUS);
|
|
|
__raw_writew(0, elem->hw_desc + C2_RXP_COUNT);
|
|
|
__raw_writew(0, elem->hw_desc + C2_RXP_LEN);
|
|
|
- __raw_writeq(cpu_to_be64(0x99aabbccddeeffULL),
|
|
|
+ __raw_writeq((__force u64) cpu_to_be64(0x99aabbccddeeffULL),
|
|
|
elem->hw_desc + C2_RXP_ADDR);
|
|
|
- __raw_writew(cpu_to_be16(RXP_HRXD_UNINIT),
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(RXP_HRXD_UNINIT),
|
|
|
elem->hw_desc + C2_RXP_FLAGS);
|
|
|
|
|
|
if (elem->skb) {
|
|
@@ -346,16 +347,16 @@ static void c2_tx_clean(struct c2_port *c2_port)
|
|
|
elem->hw_desc + C2_TXP_LEN);
|
|
|
__raw_writeq(0,
|
|
|
elem->hw_desc + C2_TXP_ADDR);
|
|
|
- __raw_writew(cpu_to_be16(TXP_HTXD_DONE),
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(TXP_HTXD_DONE),
|
|
|
elem->hw_desc + C2_TXP_FLAGS);
|
|
|
c2_port->netstats.tx_dropped++;
|
|
|
break;
|
|
|
} else {
|
|
|
__raw_writew(0,
|
|
|
elem->hw_desc + C2_TXP_LEN);
|
|
|
- __raw_writeq(cpu_to_be64(0x1122334455667788ULL),
|
|
|
+ __raw_writeq((__force u64) cpu_to_be64(0x1122334455667788ULL),
|
|
|
elem->hw_desc + C2_TXP_ADDR);
|
|
|
- __raw_writew(cpu_to_be16(TXP_HTXD_UNINIT),
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(TXP_HTXD_UNINIT),
|
|
|
elem->hw_desc + C2_TXP_FLAGS);
|
|
|
}
|
|
|
|
|
@@ -390,7 +391,7 @@ static void c2_tx_interrupt(struct net_device *netdev)
|
|
|
for (elem = tx_ring->to_clean; elem != tx_ring->to_use;
|
|
|
elem = elem->next) {
|
|
|
txp_htxd.flags =
|
|
|
- be16_to_cpu(readw(elem->hw_desc + C2_TXP_FLAGS));
|
|
|
+ be16_to_cpu((__force __be16) readw(elem->hw_desc + C2_TXP_FLAGS));
|
|
|
|
|
|
if (txp_htxd.flags != TXP_HTXD_DONE)
|
|
|
break;
|
|
@@ -398,7 +399,7 @@ static void c2_tx_interrupt(struct net_device *netdev)
|
|
|
if (netif_msg_tx_done(c2_port)) {
|
|
|
/* PCI reads are expensive in fast path */
|
|
|
txp_htxd.len =
|
|
|
- be16_to_cpu(readw(elem->hw_desc + C2_TXP_LEN));
|
|
|
+ be16_to_cpu((__force __be16) readw(elem->hw_desc + C2_TXP_LEN));
|
|
|
pr_debug("%s: tx done slot %3Zu status 0x%x len "
|
|
|
"%5u bytes\n",
|
|
|
netdev->name, elem - tx_ring->start,
|
|
@@ -448,10 +449,12 @@ static void c2_rx_error(struct c2_port *c2_port, struct c2_element *elem)
|
|
|
/* Write the descriptor to the adapter's rx ring */
|
|
|
__raw_writew(0, elem->hw_desc + C2_RXP_STATUS);
|
|
|
__raw_writew(0, elem->hw_desc + C2_RXP_COUNT);
|
|
|
- __raw_writew(cpu_to_be16((u16) elem->maplen - sizeof(*rxp_hdr)),
|
|
|
+ __raw_writew((__force u16) cpu_to_be16((u16) elem->maplen - sizeof(*rxp_hdr)),
|
|
|
elem->hw_desc + C2_RXP_LEN);
|
|
|
- __raw_writeq(cpu_to_be64(elem->mapaddr), elem->hw_desc + C2_RXP_ADDR);
|
|
|
- __raw_writew(cpu_to_be16(RXP_HRXD_READY), elem->hw_desc + C2_RXP_FLAGS);
|
|
|
+ __raw_writeq((__force u64) cpu_to_be64(elem->mapaddr),
|
|
|
+ elem->hw_desc + C2_RXP_ADDR);
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(RXP_HRXD_READY),
|
|
|
+ elem->hw_desc + C2_RXP_FLAGS);
|
|
|
|
|
|
pr_debug("packet dropped\n");
|
|
|
c2_port->netstats.rx_dropped++;
|
|
@@ -653,7 +656,7 @@ static int c2_up(struct net_device *netdev)
|
|
|
i++, elem++) {
|
|
|
rxp_hdr = (struct c2_rxp_hdr *) elem->skb->data;
|
|
|
rxp_hdr->flags = 0;
|
|
|
- __raw_writew(cpu_to_be16(RXP_HRXD_READY),
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(RXP_HRXD_READY),
|
|
|
elem->hw_desc + C2_RXP_FLAGS);
|
|
|
}
|
|
|
|
|
@@ -787,9 +790,12 @@ static int c2_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
|
|
|
elem->maplen = maplen;
|
|
|
|
|
|
/* Tell HW to xmit */
|
|
|
- __raw_writeq(cpu_to_be64(mapaddr), elem->hw_desc + C2_TXP_ADDR);
|
|
|
- __raw_writew(cpu_to_be16(maplen), elem->hw_desc + C2_TXP_LEN);
|
|
|
- __raw_writew(cpu_to_be16(TXP_HTXD_READY), elem->hw_desc + C2_TXP_FLAGS);
|
|
|
+ __raw_writeq((__force u64) cpu_to_be64(mapaddr),
|
|
|
+ elem->hw_desc + C2_TXP_ADDR);
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(maplen),
|
|
|
+ elem->hw_desc + C2_TXP_LEN);
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(TXP_HTXD_READY),
|
|
|
+ elem->hw_desc + C2_TXP_FLAGS);
|
|
|
|
|
|
c2_port->netstats.tx_packets++;
|
|
|
c2_port->netstats.tx_bytes += maplen;
|
|
@@ -810,11 +816,11 @@ static int c2_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
|
|
|
elem->maplen = maplen;
|
|
|
|
|
|
/* Tell HW to xmit */
|
|
|
- __raw_writeq(cpu_to_be64(mapaddr),
|
|
|
+ __raw_writeq((__force u64) cpu_to_be64(mapaddr),
|
|
|
elem->hw_desc + C2_TXP_ADDR);
|
|
|
- __raw_writew(cpu_to_be16(maplen),
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(maplen),
|
|
|
elem->hw_desc + C2_TXP_LEN);
|
|
|
- __raw_writew(cpu_to_be16(TXP_HTXD_READY),
|
|
|
+ __raw_writew((__force u16) cpu_to_be16(TXP_HTXD_READY),
|
|
|
elem->hw_desc + C2_TXP_FLAGS);
|
|
|
|
|
|
c2_port->netstats.tx_packets++;
|
|
@@ -1029,10 +1035,10 @@ static int __devinit c2_probe(struct pci_dev *pcidev,
|
|
|
}
|
|
|
|
|
|
/* Validate the adapter version */
|
|
|
- if (be32_to_cpu(readl(mmio_regs + C2_REGS_VERS)) != C2_VERSION) {
|
|
|
+ if (be32_to_cpu((__force __be32) readl(mmio_regs + C2_REGS_VERS)) != C2_VERSION) {
|
|
|
printk(KERN_ERR PFX "Version mismatch "
|
|
|
"[fw=%u, c2=%u], Adapter not claimed\n",
|
|
|
- be32_to_cpu(readl(mmio_regs + C2_REGS_VERS)),
|
|
|
+ be32_to_cpu((__force __be32) readl(mmio_regs + C2_REGS_VERS)),
|
|
|
C2_VERSION);
|
|
|
ret = -EINVAL;
|
|
|
iounmap(mmio_regs);
|
|
@@ -1040,12 +1046,12 @@ static int __devinit c2_probe(struct pci_dev *pcidev,
|
|
|
}
|
|
|
|
|
|
/* Validate the adapter IVN */
|
|
|
- if (be32_to_cpu(readl(mmio_regs + C2_REGS_IVN)) != C2_IVN) {
|
|
|
+ if (be32_to_cpu((__force __be32) readl(mmio_regs + C2_REGS_IVN)) != C2_IVN) {
|
|
|
printk(KERN_ERR PFX "Downlevel FIrmware level. You should be using "
|
|
|
"the OpenIB device support kit. "
|
|
|
"[fw=0x%x, c2=0x%x], Adapter not claimed\n",
|
|
|
- be32_to_cpu(readl(mmio_regs + C2_REGS_IVN)),
|
|
|
- C2_IVN);
|
|
|
+ be32_to_cpu((__force __be32) readl(mmio_regs + C2_REGS_IVN)),
|
|
|
+ C2_IVN);
|
|
|
ret = -EINVAL;
|
|
|
iounmap(mmio_regs);
|
|
|
goto bail2;
|
|
@@ -1068,7 +1074,7 @@ static int __devinit c2_probe(struct pci_dev *pcidev,
|
|
|
|
|
|
/* Get the last RX index */
|
|
|
c2dev->cur_rx =
|
|
|
- (be32_to_cpu(readl(mmio_regs + C2_REGS_HRX_CUR)) -
|
|
|
+ (be32_to_cpu((__force __be32) readl(mmio_regs + C2_REGS_HRX_CUR)) -
|
|
|
0xffffc000) / sizeof(struct c2_rxp_desc);
|
|
|
|
|
|
/* Request an interrupt line for the driver */
|
|
@@ -1090,7 +1096,7 @@ static int __devinit c2_probe(struct pci_dev *pcidev,
|
|
|
}
|
|
|
|
|
|
/* Save off the actual size prior to unmapping mmio_regs */
|
|
|
- kva_map_size = be32_to_cpu(readl(mmio_regs + C2_REGS_PCI_WINSIZE));
|
|
|
+ kva_map_size = be32_to_cpu((__force __be32) readl(mmio_regs + C2_REGS_PCI_WINSIZE));
|
|
|
|
|
|
/* Unmap the adapter PCI registers in BAR4 */
|
|
|
iounmap(mmio_regs);
|