diff options
Diffstat (limited to 'drivers/net/tehuti.c')
-rw-r--r-- | drivers/net/tehuti.c | 159 |
1 files changed, 78 insertions, 81 deletions
diff --git a/drivers/net/tehuti.c b/drivers/net/tehuti.c index 80b404f2b938..0c9780217c87 100644 --- a/drivers/net/tehuti.c +++ b/drivers/net/tehuti.c | |||
@@ -62,9 +62,11 @@ | |||
62 | * | 62 | * |
63 | */ | 63 | */ |
64 | 64 | ||
65 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | ||
66 | |||
65 | #include "tehuti.h" | 67 | #include "tehuti.h" |
66 | 68 | ||
67 | static struct pci_device_id __devinitdata bdx_pci_tbl[] = { | 69 | static DEFINE_PCI_DEVICE_TABLE(bdx_pci_tbl) = { |
68 | {0x1FC9, 0x3009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | 70 | {0x1FC9, 0x3009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
69 | {0x1FC9, 0x3010, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | 71 | {0x1FC9, 0x3010, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
70 | {0x1FC9, 0x3014, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | 72 | {0x1FC9, 0x3014, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
@@ -105,26 +107,24 @@ static void print_hw_id(struct pci_dev *pdev) | |||
105 | pci_read_config_word(pdev, PCI_LINK_STATUS_REG, &pci_link_status); | 107 | pci_read_config_word(pdev, PCI_LINK_STATUS_REG, &pci_link_status); |
106 | pci_read_config_word(pdev, PCI_DEV_CTRL_REG, &pci_ctrl); | 108 | pci_read_config_word(pdev, PCI_DEV_CTRL_REG, &pci_ctrl); |
107 | 109 | ||
108 | printk(KERN_INFO "tehuti: %s%s\n", BDX_NIC_NAME, | 110 | pr_info("%s%s\n", BDX_NIC_NAME, |
109 | nic->port_num == 1 ? "" : ", 2-Port"); | 111 | nic->port_num == 1 ? "" : ", 2-Port"); |
110 | printk(KERN_INFO | 112 | pr_info("srom 0x%x fpga %d build %u lane# %d max_pl 0x%x mrrs 0x%x\n", |
111 | "tehuti: srom 0x%x fpga %d build %u lane# %d" | 113 | readl(nic->regs + SROM_VER), readl(nic->regs + FPGA_VER) & 0xFFF, |
112 | " max_pl 0x%x mrrs 0x%x\n", | 114 | readl(nic->regs + FPGA_SEED), |
113 | readl(nic->regs + SROM_VER), readl(nic->regs + FPGA_VER) & 0xFFF, | 115 | GET_LINK_STATUS_LANES(pci_link_status), |
114 | readl(nic->regs + FPGA_SEED), | 116 | GET_DEV_CTRL_MAXPL(pci_ctrl), GET_DEV_CTRL_MRRS(pci_ctrl)); |
115 | GET_LINK_STATUS_LANES(pci_link_status), | ||
116 | GET_DEV_CTRL_MAXPL(pci_ctrl), GET_DEV_CTRL_MRRS(pci_ctrl)); | ||
117 | } | 117 | } |
118 | 118 | ||
119 | static void print_fw_id(struct pci_nic *nic) | 119 | static void print_fw_id(struct pci_nic *nic) |
120 | { | 120 | { |
121 | printk(KERN_INFO "tehuti: fw 0x%x\n", readl(nic->regs + FW_VER)); | 121 | pr_info("fw 0x%x\n", readl(nic->regs + FW_VER)); |
122 | } | 122 | } |
123 | 123 | ||
124 | static void print_eth_id(struct net_device *ndev) | 124 | static void print_eth_id(struct net_device *ndev) |
125 | { | 125 | { |
126 | printk(KERN_INFO "%s: %s, Port %c\n", ndev->name, BDX_NIC_NAME, | 126 | netdev_info(ndev, "%s, Port %c\n", |
127 | (ndev->if_port == 0) ? 'A' : 'B'); | 127 | BDX_NIC_NAME, (ndev->if_port == 0) ? 'A' : 'B'); |
128 | 128 | ||
129 | } | 129 | } |
130 | 130 | ||
@@ -160,7 +160,7 @@ bdx_fifo_init(struct bdx_priv *priv, struct fifo *f, int fsz_type, | |||
160 | f->va = pci_alloc_consistent(priv->pdev, | 160 | f->va = pci_alloc_consistent(priv->pdev, |
161 | memsz + FIFO_EXTRA_SPACE, &f->da); | 161 | memsz + FIFO_EXTRA_SPACE, &f->da); |
162 | if (!f->va) { | 162 | if (!f->va) { |
163 | ERR("pci_alloc_consistent failed\n"); | 163 | pr_err("pci_alloc_consistent failed\n"); |
164 | RET(-ENOMEM); | 164 | RET(-ENOMEM); |
165 | } | 165 | } |
166 | f->reg_CFG0 = reg_CFG0; | 166 | f->reg_CFG0 = reg_CFG0; |
@@ -204,13 +204,13 @@ static void bdx_link_changed(struct bdx_priv *priv) | |||
204 | if (netif_carrier_ok(priv->ndev)) { | 204 | if (netif_carrier_ok(priv->ndev)) { |
205 | netif_stop_queue(priv->ndev); | 205 | netif_stop_queue(priv->ndev); |
206 | netif_carrier_off(priv->ndev); | 206 | netif_carrier_off(priv->ndev); |
207 | ERR("%s: Link Down\n", priv->ndev->name); | 207 | netdev_err(priv->ndev, "Link Down\n"); |
208 | } | 208 | } |
209 | } else { | 209 | } else { |
210 | if (!netif_carrier_ok(priv->ndev)) { | 210 | if (!netif_carrier_ok(priv->ndev)) { |
211 | netif_wake_queue(priv->ndev); | 211 | netif_wake_queue(priv->ndev); |
212 | netif_carrier_on(priv->ndev); | 212 | netif_carrier_on(priv->ndev); |
213 | ERR("%s: Link Up\n", priv->ndev->name); | 213 | netdev_err(priv->ndev, "Link Up\n"); |
214 | } | 214 | } |
215 | } | 215 | } |
216 | } | 216 | } |
@@ -226,10 +226,10 @@ static void bdx_isr_extra(struct bdx_priv *priv, u32 isr) | |||
226 | bdx_link_changed(priv); | 226 | bdx_link_changed(priv); |
227 | 227 | ||
228 | if (isr & IR_PCIE_LINK) | 228 | if (isr & IR_PCIE_LINK) |
229 | ERR("%s: PCI-E Link Fault\n", priv->ndev->name); | 229 | netdev_err(priv->ndev, "PCI-E Link Fault\n"); |
230 | 230 | ||
231 | if (isr & IR_PCIE_TOUT) | 231 | if (isr & IR_PCIE_TOUT) |
232 | ERR("%s: PCI-E Time Out\n", priv->ndev->name); | 232 | netdev_err(priv->ndev, "PCI-E Time Out\n"); |
233 | 233 | ||
234 | } | 234 | } |
235 | 235 | ||
@@ -345,7 +345,7 @@ out: | |||
345 | release_firmware(fw); | 345 | release_firmware(fw); |
346 | 346 | ||
347 | if (rc) { | 347 | if (rc) { |
348 | ERR("%s: firmware loading failed\n", priv->ndev->name); | 348 | netdev_err(priv->ndev, "firmware loading failed\n"); |
349 | if (rc == -EIO) | 349 | if (rc == -EIO) |
350 | DBG("VPC = 0x%x VIC = 0x%x INIT_STATUS = 0x%x i=%d\n", | 350 | DBG("VPC = 0x%x VIC = 0x%x INIT_STATUS = 0x%x i=%d\n", |
351 | READ_REG(priv, regVPC), | 351 | READ_REG(priv, regVPC), |
@@ -419,9 +419,11 @@ static int bdx_hw_start(struct bdx_priv *priv) | |||
419 | WRITE_REG(priv, regGMAC_RXF_A, GMAC_RX_FILTER_OSEN | | 419 | WRITE_REG(priv, regGMAC_RXF_A, GMAC_RX_FILTER_OSEN | |
420 | GMAC_RX_FILTER_AM | GMAC_RX_FILTER_AB); | 420 | GMAC_RX_FILTER_AM | GMAC_RX_FILTER_AB); |
421 | 421 | ||
422 | #define BDX_IRQ_TYPE ((priv->nic->irq_type == IRQ_MSI)?0:IRQF_SHARED) | 422 | #define BDX_IRQ_TYPE ((priv->nic->irq_type == IRQ_MSI) ? 0 : IRQF_SHARED) |
423 | if ((rc = request_irq(priv->pdev->irq, bdx_isr_napi, BDX_IRQ_TYPE, | 423 | |
424 | ndev->name, ndev))) | 424 | rc = request_irq(priv->pdev->irq, bdx_isr_napi, BDX_IRQ_TYPE, |
425 | ndev->name, ndev); | ||
426 | if (rc) | ||
425 | goto err_irq; | 427 | goto err_irq; |
426 | bdx_enable_interrupts(priv); | 428 | bdx_enable_interrupts(priv); |
427 | 429 | ||
@@ -462,7 +464,7 @@ static int bdx_hw_reset_direct(void __iomem *regs) | |||
462 | readl(regs + regRXD_CFG0_0); | 464 | readl(regs + regRXD_CFG0_0); |
463 | return 0; | 465 | return 0; |
464 | } | 466 | } |
465 | ERR("tehuti: HW reset failed\n"); | 467 | pr_err("HW reset failed\n"); |
466 | return 1; /* failure */ | 468 | return 1; /* failure */ |
467 | } | 469 | } |
468 | 470 | ||
@@ -486,7 +488,7 @@ static int bdx_hw_reset(struct bdx_priv *priv) | |||
486 | READ_REG(priv, regRXD_CFG0_0); | 488 | READ_REG(priv, regRXD_CFG0_0); |
487 | return 0; | 489 | return 0; |
488 | } | 490 | } |
489 | ERR("tehuti: HW reset failed\n"); | 491 | pr_err("HW reset failed\n"); |
490 | return 1; /* failure */ | 492 | return 1; /* failure */ |
491 | } | 493 | } |
492 | 494 | ||
@@ -510,8 +512,7 @@ static int bdx_sw_reset(struct bdx_priv *priv) | |||
510 | mdelay(10); | 512 | mdelay(10); |
511 | } | 513 | } |
512 | if (i == 50) | 514 | if (i == 50) |
513 | ERR("%s: SW reset timeout. continuing anyway\n", | 515 | netdev_err(priv->ndev, "SW reset timeout. continuing anyway\n"); |
514 | priv->ndev->name); | ||
515 | 516 | ||
516 | /* 6. disable intrs */ | 517 | /* 6. disable intrs */ |
517 | WRITE_REG(priv, regRDINTCM0, 0); | 518 | WRITE_REG(priv, regRDINTCM0, 0); |
@@ -604,18 +605,15 @@ static int bdx_open(struct net_device *ndev) | |||
604 | if (netif_running(ndev)) | 605 | if (netif_running(ndev)) |
605 | netif_stop_queue(priv->ndev); | 606 | netif_stop_queue(priv->ndev); |
606 | 607 | ||
607 | if ((rc = bdx_tx_init(priv))) | 608 | if ((rc = bdx_tx_init(priv)) || |
608 | goto err; | 609 | (rc = bdx_rx_init(priv)) || |
609 | 610 | (rc = bdx_fw_load(priv))) | |
610 | if ((rc = bdx_rx_init(priv))) | ||
611 | goto err; | ||
612 | |||
613 | if ((rc = bdx_fw_load(priv))) | ||
614 | goto err; | 611 | goto err; |
615 | 612 | ||
616 | bdx_rx_alloc_skbs(priv, &priv->rxf_fifo0); | 613 | bdx_rx_alloc_skbs(priv, &priv->rxf_fifo0); |
617 | 614 | ||
618 | if ((rc = bdx_hw_start(priv))) | 615 | rc = bdx_hw_start(priv); |
616 | if (rc) | ||
619 | goto err; | 617 | goto err; |
620 | 618 | ||
621 | napi_enable(&priv->napi); | 619 | napi_enable(&priv->napi); |
@@ -647,7 +645,7 @@ static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd) | |||
647 | if (cmd != SIOCDEVPRIVATE) { | 645 | if (cmd != SIOCDEVPRIVATE) { |
648 | error = copy_from_user(data, ifr->ifr_data, sizeof(data)); | 646 | error = copy_from_user(data, ifr->ifr_data, sizeof(data)); |
649 | if (error) { | 647 | if (error) { |
650 | ERR("cant copy from user\n"); | 648 | pr_err("cant copy from user\n"); |
651 | RET(error); | 649 | RET(error); |
652 | } | 650 | } |
653 | DBG("%d 0x%x 0x%x\n", data[0], data[1], data[2]); | 651 | DBG("%d 0x%x 0x%x\n", data[0], data[1], data[2]); |
@@ -708,7 +706,7 @@ static void __bdx_vlan_rx_vid(struct net_device *ndev, uint16_t vid, int enable) | |||
708 | ENTER; | 706 | ENTER; |
709 | DBG2("vid=%d value=%d\n", (int)vid, enable); | 707 | DBG2("vid=%d value=%d\n", (int)vid, enable); |
710 | if (unlikely(vid >= 4096)) { | 708 | if (unlikely(vid >= 4096)) { |
711 | ERR("tehuti: invalid VID: %u (> 4096)\n", vid); | 709 | pr_err("invalid VID: %u (> 4096)\n", vid); |
712 | RET(); | 710 | RET(); |
713 | } | 711 | } |
714 | reg = regVLAN_0 + (vid / 32) * 4; | 712 | reg = regVLAN_0 + (vid / 32) * 4; |
@@ -776,8 +774,8 @@ static int bdx_change_mtu(struct net_device *ndev, int new_mtu) | |||
776 | 774 | ||
777 | /* enforce minimum frame size */ | 775 | /* enforce minimum frame size */ |
778 | if (new_mtu < ETH_ZLEN) { | 776 | if (new_mtu < ETH_ZLEN) { |
779 | ERR("%s: %s mtu %d is less then minimal %d\n", | 777 | netdev_err(ndev, "mtu %d is less then minimal %d\n", |
780 | BDX_DRV_NAME, ndev->name, new_mtu, ETH_ZLEN); | 778 | new_mtu, ETH_ZLEN); |
781 | RET(-EINVAL); | 779 | RET(-EINVAL); |
782 | } | 780 | } |
783 | 781 | ||
@@ -808,7 +806,7 @@ static void bdx_setmulti(struct net_device *ndev) | |||
808 | /* set IMF to accept all multicast frmaes */ | 806 | /* set IMF to accept all multicast frmaes */ |
809 | for (i = 0; i < MAC_MCST_HASH_NUM; i++) | 807 | for (i = 0; i < MAC_MCST_HASH_NUM; i++) |
810 | WRITE_REG(priv, regRX_MCST_HASH0 + i * 4, ~0); | 808 | WRITE_REG(priv, regRX_MCST_HASH0 + i * 4, ~0); |
811 | } else if (ndev->mc_count) { | 809 | } else if (!netdev_mc_empty(ndev)) { |
812 | u8 hash; | 810 | u8 hash; |
813 | struct dev_mc_list *mclist; | 811 | struct dev_mc_list *mclist; |
814 | u32 reg, val; | 812 | u32 reg, val; |
@@ -826,10 +824,8 @@ static void bdx_setmulti(struct net_device *ndev) | |||
826 | /* TBD: sort addreses and write them in ascending order | 824 | /* TBD: sort addreses and write them in ascending order |
827 | * into RX_MAC_MCST regs. we skip this phase now and accept ALL | 825 | * into RX_MAC_MCST regs. we skip this phase now and accept ALL |
828 | * multicast frames throu IMF */ | 826 | * multicast frames throu IMF */ |
829 | mclist = ndev->mc_list; | ||
830 | |||
831 | /* accept the rest of addresses throu IMF */ | 827 | /* accept the rest of addresses throu IMF */ |
832 | for (; mclist; mclist = mclist->next) { | 828 | netdev_for_each_mc_addr(mclist, ndev) { |
833 | hash = 0; | 829 | hash = 0; |
834 | for (i = 0; i < ETH_ALEN; i++) | 830 | for (i = 0; i < ETH_ALEN; i++) |
835 | hash ^= mclist->dmi_addr[i]; | 831 | hash ^= mclist->dmi_addr[i]; |
@@ -840,7 +836,7 @@ static void bdx_setmulti(struct net_device *ndev) | |||
840 | } | 836 | } |
841 | 837 | ||
842 | } else { | 838 | } else { |
843 | DBG("only own mac %d\n", ndev->mc_count); | 839 | DBG("only own mac %d\n", netdev_mc_count(ndev)); |
844 | rxf_val |= GMAC_RX_FILTER_AB; | 840 | rxf_val |= GMAC_RX_FILTER_AB; |
845 | } | 841 | } |
846 | WRITE_REG(priv, regGMAC_RXF_A, rxf_val); | 842 | WRITE_REG(priv, regGMAC_RXF_A, rxf_val); |
@@ -1028,17 +1024,16 @@ static int bdx_rx_init(struct bdx_priv *priv) | |||
1028 | regRXF_CFG0_0, regRXF_CFG1_0, | 1024 | regRXF_CFG0_0, regRXF_CFG1_0, |
1029 | regRXF_RPTR_0, regRXF_WPTR_0)) | 1025 | regRXF_RPTR_0, regRXF_WPTR_0)) |
1030 | goto err_mem; | 1026 | goto err_mem; |
1031 | if (! | 1027 | priv->rxdb = bdx_rxdb_create(priv->rxf_fifo0.m.memsz / |
1032 | (priv->rxdb = | 1028 | sizeof(struct rxf_desc)); |
1033 | bdx_rxdb_create(priv->rxf_fifo0.m.memsz / | 1029 | if (!priv->rxdb) |
1034 | sizeof(struct rxf_desc)))) | ||
1035 | goto err_mem; | 1030 | goto err_mem; |
1036 | 1031 | ||
1037 | priv->rxf_fifo0.m.pktsz = priv->ndev->mtu + VLAN_ETH_HLEN; | 1032 | priv->rxf_fifo0.m.pktsz = priv->ndev->mtu + VLAN_ETH_HLEN; |
1038 | return 0; | 1033 | return 0; |
1039 | 1034 | ||
1040 | err_mem: | 1035 | err_mem: |
1041 | ERR("%s: %s: Rx init failed\n", BDX_DRV_NAME, priv->ndev->name); | 1036 | netdev_err(priv->ndev, "Rx init failed\n"); |
1042 | return -ENOMEM; | 1037 | return -ENOMEM; |
1043 | } | 1038 | } |
1044 | 1039 | ||
@@ -1115,8 +1110,9 @@ static void bdx_rx_alloc_skbs(struct bdx_priv *priv, struct rxf_fifo *f) | |||
1115 | ENTER; | 1110 | ENTER; |
1116 | dno = bdx_rxdb_available(db) - 1; | 1111 | dno = bdx_rxdb_available(db) - 1; |
1117 | while (dno > 0) { | 1112 | while (dno > 0) { |
1118 | if (!(skb = dev_alloc_skb(f->m.pktsz + NET_IP_ALIGN))) { | 1113 | skb = dev_alloc_skb(f->m.pktsz + NET_IP_ALIGN); |
1119 | ERR("NO MEM: dev_alloc_skb failed\n"); | 1114 | if (!skb) { |
1115 | pr_err("NO MEM: dev_alloc_skb failed\n"); | ||
1120 | break; | 1116 | break; |
1121 | } | 1117 | } |
1122 | skb->dev = priv->ndev; | 1118 | skb->dev = priv->ndev; |
@@ -1337,9 +1333,7 @@ static int bdx_rx_receive(struct bdx_priv *priv, struct rxd_fifo *f, int budget) | |||
1337 | static void print_rxdd(struct rxd_desc *rxdd, u32 rxd_val1, u16 len, | 1333 | static void print_rxdd(struct rxd_desc *rxdd, u32 rxd_val1, u16 len, |
1338 | u16 rxd_vlan) | 1334 | u16 rxd_vlan) |
1339 | { | 1335 | { |
1340 | DBG("ERROR: rxdd bc %d rxfq %d to %d type %d err %d rxp %d " | 1336 | DBG("ERROR: rxdd bc %d rxfq %d to %d type %d err %d rxp %d pkt_id %d vtag %d len %d vlan_id %d cfi %d prio %d va_lo %d va_hi %d\n", |
1341 | "pkt_id %d vtag %d len %d vlan_id %d cfi %d prio %d " | ||
1342 | "va_lo %d va_hi %d\n", | ||
1343 | GET_RXD_BC(rxd_val1), GET_RXD_RXFQ(rxd_val1), GET_RXD_TO(rxd_val1), | 1337 | GET_RXD_BC(rxd_val1), GET_RXD_RXFQ(rxd_val1), GET_RXD_TO(rxd_val1), |
1344 | GET_RXD_TYPE(rxd_val1), GET_RXD_ERR(rxd_val1), | 1338 | GET_RXD_TYPE(rxd_val1), GET_RXD_ERR(rxd_val1), |
1345 | GET_RXD_RXP(rxd_val1), GET_RXD_PKT_ID(rxd_val1), | 1339 | GET_RXD_RXP(rxd_val1), GET_RXD_PKT_ID(rxd_val1), |
@@ -1591,7 +1585,7 @@ static int bdx_tx_init(struct bdx_priv *priv) | |||
1591 | return 0; | 1585 | return 0; |
1592 | 1586 | ||
1593 | err_mem: | 1587 | err_mem: |
1594 | ERR("tehuti: %s: Tx init failed\n", priv->ndev->name); | 1588 | netdev_err(priv->ndev, "Tx init failed\n"); |
1595 | return -ENOMEM; | 1589 | return -ENOMEM; |
1596 | } | 1590 | } |
1597 | 1591 | ||
@@ -1609,7 +1603,7 @@ static inline int bdx_tx_space(struct bdx_priv *priv) | |||
1609 | fsize = f->m.rptr - f->m.wptr; | 1603 | fsize = f->m.rptr - f->m.wptr; |
1610 | if (fsize <= 0) | 1604 | if (fsize <= 0) |
1611 | fsize = f->m.memsz + fsize; | 1605 | fsize = f->m.memsz + fsize; |
1612 | return (fsize); | 1606 | return fsize; |
1613 | } | 1607 | } |
1614 | 1608 | ||
1615 | /* bdx_tx_transmit - send packet to NIC | 1609 | /* bdx_tx_transmit - send packet to NIC |
@@ -1937,8 +1931,9 @@ bdx_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
1937 | RET(-ENOMEM); | 1931 | RET(-ENOMEM); |
1938 | 1932 | ||
1939 | /************** pci *****************/ | 1933 | /************** pci *****************/ |
1940 | if ((err = pci_enable_device(pdev))) /* it trigers interrupt, dunno why. */ | 1934 | err = pci_enable_device(pdev); |
1941 | goto err_pci; /* it's not a problem though */ | 1935 | if (err) /* it triggers interrupt, dunno why. */ |
1936 | goto err_pci; /* it's not a problem though */ | ||
1942 | 1937 | ||
1943 | if (!(err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) && | 1938 | if (!(err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) && |
1944 | !(err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)))) { | 1939 | !(err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)))) { |
@@ -1946,14 +1941,14 @@ bdx_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
1946 | } else { | 1941 | } else { |
1947 | if ((err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) || | 1942 | if ((err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) || |
1948 | (err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)))) { | 1943 | (err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)))) { |
1949 | printk(KERN_ERR "tehuti: No usable DMA configuration" | 1944 | pr_err("No usable DMA configuration, aborting\n"); |
1950 | ", aborting\n"); | ||
1951 | goto err_dma; | 1945 | goto err_dma; |
1952 | } | 1946 | } |
1953 | pci_using_dac = 0; | 1947 | pci_using_dac = 0; |
1954 | } | 1948 | } |
1955 | 1949 | ||
1956 | if ((err = pci_request_regions(pdev, BDX_DRV_NAME))) | 1950 | err = pci_request_regions(pdev, BDX_DRV_NAME); |
1951 | if (err) | ||
1957 | goto err_dma; | 1952 | goto err_dma; |
1958 | 1953 | ||
1959 | pci_set_master(pdev); | 1954 | pci_set_master(pdev); |
@@ -1961,25 +1956,26 @@ bdx_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
1961 | pciaddr = pci_resource_start(pdev, 0); | 1956 | pciaddr = pci_resource_start(pdev, 0); |
1962 | if (!pciaddr) { | 1957 | if (!pciaddr) { |
1963 | err = -EIO; | 1958 | err = -EIO; |
1964 | ERR("tehuti: no MMIO resource\n"); | 1959 | pr_err("no MMIO resource\n"); |
1965 | goto err_out_res; | 1960 | goto err_out_res; |
1966 | } | 1961 | } |
1967 | if ((regionSize = pci_resource_len(pdev, 0)) < BDX_REGS_SIZE) { | 1962 | regionSize = pci_resource_len(pdev, 0); |
1963 | if (regionSize < BDX_REGS_SIZE) { | ||
1968 | err = -EIO; | 1964 | err = -EIO; |
1969 | ERR("tehuti: MMIO resource (%x) too small\n", regionSize); | 1965 | pr_err("MMIO resource (%x) too small\n", regionSize); |
1970 | goto err_out_res; | 1966 | goto err_out_res; |
1971 | } | 1967 | } |
1972 | 1968 | ||
1973 | nic->regs = ioremap(pciaddr, regionSize); | 1969 | nic->regs = ioremap(pciaddr, regionSize); |
1974 | if (!nic->regs) { | 1970 | if (!nic->regs) { |
1975 | err = -EIO; | 1971 | err = -EIO; |
1976 | ERR("tehuti: ioremap failed\n"); | 1972 | pr_err("ioremap failed\n"); |
1977 | goto err_out_res; | 1973 | goto err_out_res; |
1978 | } | 1974 | } |
1979 | 1975 | ||
1980 | if (pdev->irq < 2) { | 1976 | if (pdev->irq < 2) { |
1981 | err = -EIO; | 1977 | err = -EIO; |
1982 | ERR("tehuti: invalid irq (%d)\n", pdev->irq); | 1978 | pr_err("invalid irq (%d)\n", pdev->irq); |
1983 | goto err_out_iomap; | 1979 | goto err_out_iomap; |
1984 | } | 1980 | } |
1985 | pci_set_drvdata(pdev, nic); | 1981 | pci_set_drvdata(pdev, nic); |
@@ -1996,8 +1992,9 @@ bdx_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
1996 | nic->irq_type = IRQ_INTX; | 1992 | nic->irq_type = IRQ_INTX; |
1997 | #ifdef BDX_MSI | 1993 | #ifdef BDX_MSI |
1998 | if ((readl(nic->regs + FPGA_VER) & 0xFFF) >= 378) { | 1994 | if ((readl(nic->regs + FPGA_VER) & 0xFFF) >= 378) { |
1999 | if ((err = pci_enable_msi(pdev))) | 1995 | err = pci_enable_msi(pdev); |
2000 | ERR("Tehuti: Can't eneble msi. error is %d\n", err); | 1996 | if (err) |
1997 | pr_err("Can't eneble msi. error is %d\n", err); | ||
2001 | else | 1998 | else |
2002 | nic->irq_type = IRQ_MSI; | 1999 | nic->irq_type = IRQ_MSI; |
2003 | } else | 2000 | } else |
@@ -2006,9 +2003,10 @@ bdx_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
2006 | 2003 | ||
2007 | /************** netdev **************/ | 2004 | /************** netdev **************/ |
2008 | for (port = 0; port < nic->port_num; port++) { | 2005 | for (port = 0; port < nic->port_num; port++) { |
2009 | if (!(ndev = alloc_etherdev(sizeof(struct bdx_priv)))) { | 2006 | ndev = alloc_etherdev(sizeof(struct bdx_priv)); |
2007 | if (!ndev) { | ||
2010 | err = -ENOMEM; | 2008 | err = -ENOMEM; |
2011 | printk(KERN_ERR "tehuti: alloc_etherdev failed\n"); | 2009 | pr_err("alloc_etherdev failed\n"); |
2012 | goto err_out_iomap; | 2010 | goto err_out_iomap; |
2013 | } | 2011 | } |
2014 | 2012 | ||
@@ -2075,12 +2073,13 @@ bdx_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
2075 | 2073 | ||
2076 | /*bdx_hw_reset(priv); */ | 2074 | /*bdx_hw_reset(priv); */ |
2077 | if (bdx_read_mac(priv)) { | 2075 | if (bdx_read_mac(priv)) { |
2078 | printk(KERN_ERR "tehuti: load MAC address failed\n"); | 2076 | pr_err("load MAC address failed\n"); |
2079 | goto err_out_iomap; | 2077 | goto err_out_iomap; |
2080 | } | 2078 | } |
2081 | SET_NETDEV_DEV(ndev, &pdev->dev); | 2079 | SET_NETDEV_DEV(ndev, &pdev->dev); |
2082 | if ((err = register_netdev(ndev))) { | 2080 | err = register_netdev(ndev); |
2083 | printk(KERN_ERR "tehuti: register_netdev failed\n"); | 2081 | if (err) { |
2082 | pr_err("register_netdev failed\n"); | ||
2084 | goto err_out_free; | 2083 | goto err_out_free; |
2085 | } | 2084 | } |
2086 | netif_carrier_off(ndev); | 2085 | netif_carrier_off(ndev); |
@@ -2294,13 +2293,13 @@ bdx_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *ecoal) | |||
2294 | /* Convert RX fifo size to number of pending packets */ | 2293 | /* Convert RX fifo size to number of pending packets */ |
2295 | static inline int bdx_rx_fifo_size_to_packets(int rx_size) | 2294 | static inline int bdx_rx_fifo_size_to_packets(int rx_size) |
2296 | { | 2295 | { |
2297 | return ((FIFO_SIZE * (1 << rx_size)) / sizeof(struct rxf_desc)); | 2296 | return (FIFO_SIZE * (1 << rx_size)) / sizeof(struct rxf_desc); |
2298 | } | 2297 | } |
2299 | 2298 | ||
2300 | /* Convert TX fifo size to number of pending packets */ | 2299 | /* Convert TX fifo size to number of pending packets */ |
2301 | static inline int bdx_tx_fifo_size_to_packets(int tx_size) | 2300 | static inline int bdx_tx_fifo_size_to_packets(int tx_size) |
2302 | { | 2301 | { |
2303 | return ((FIFO_SIZE * (1 << tx_size)) / BDX_TXF_DESC_SZ); | 2302 | return (FIFO_SIZE * (1 << tx_size)) / BDX_TXF_DESC_SZ; |
2304 | } | 2303 | } |
2305 | 2304 | ||
2306 | /* | 2305 | /* |
@@ -2392,10 +2391,10 @@ static int bdx_get_sset_count(struct net_device *netdev, int stringset) | |||
2392 | case ETH_SS_STATS: | 2391 | case ETH_SS_STATS: |
2393 | BDX_ASSERT(ARRAY_SIZE(bdx_stat_names) | 2392 | BDX_ASSERT(ARRAY_SIZE(bdx_stat_names) |
2394 | != sizeof(struct bdx_stats) / sizeof(u64)); | 2393 | != sizeof(struct bdx_stats) / sizeof(u64)); |
2395 | return ((priv->stats_flag) ? ARRAY_SIZE(bdx_stat_names) : 0); | 2394 | return (priv->stats_flag) ? ARRAY_SIZE(bdx_stat_names) : 0; |
2396 | default: | ||
2397 | return -EINVAL; | ||
2398 | } | 2395 | } |
2396 | |||
2397 | return -EINVAL; | ||
2399 | } | 2398 | } |
2400 | 2399 | ||
2401 | /* | 2400 | /* |
@@ -2493,10 +2492,8 @@ static struct pci_driver bdx_pci_driver = { | |||
2493 | */ | 2492 | */ |
2494 | static void __init print_driver_id(void) | 2493 | static void __init print_driver_id(void) |
2495 | { | 2494 | { |
2496 | printk(KERN_INFO "%s: %s, %s\n", BDX_DRV_NAME, BDX_DRV_DESC, | 2495 | pr_info("%s, %s\n", BDX_DRV_DESC, BDX_DRV_VERSION); |
2497 | BDX_DRV_VERSION); | 2496 | pr_info("Options: hw_csum %s\n", BDX_MSI_STRING); |
2498 | printk(KERN_INFO "%s: Options: hw_csum %s\n", BDX_DRV_NAME, | ||
2499 | BDX_MSI_STRING); | ||
2500 | } | 2497 | } |
2501 | 2498 | ||
2502 | static int __init bdx_module_init(void) | 2499 | static int __init bdx_module_init(void) |