aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ksz884x.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ksz884x.c')
-rw-r--r--drivers/net/ksz884x.c79
1 files changed, 33 insertions, 46 deletions
diff --git a/drivers/net/ksz884x.c b/drivers/net/ksz884x.c
index 0606a1f359fb..870185837a3b 100644
--- a/drivers/net/ksz884x.c
+++ b/drivers/net/ksz884x.c
@@ -14,10 +14,11 @@
14 * GNU General Public License for more details. 14 * GNU General Public License for more details.
15 */ 15 */
16 16
17#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
18
17#include <linux/init.h> 19#include <linux/init.h>
18#include <linux/kernel.h> 20#include <linux/kernel.h>
19#include <linux/module.h> 21#include <linux/module.h>
20#include <linux/version.h>
21#include <linux/ioport.h> 22#include <linux/ioport.h>
22#include <linux/pci.h> 23#include <linux/pci.h>
23#include <linux/proc_fs.h> 24#include <linux/proc_fs.h>
@@ -1484,11 +1485,6 @@ struct dev_priv {
1484 int promiscuous; 1485 int promiscuous;
1485}; 1486};
1486 1487
1487#define ks_info(_ks, _msg...) dev_info(&(_ks)->pdev->dev, _msg)
1488#define ks_warn(_ks, _msg...) dev_warn(&(_ks)->pdev->dev, _msg)
1489#define ks_dbg(_ks, _msg...) dev_dbg(&(_ks)->pdev->dev, _msg)
1490#define ks_err(_ks, _msg...) dev_err(&(_ks)->pdev->dev, _msg)
1491
1492#define DRV_NAME "KSZ884X PCI" 1488#define DRV_NAME "KSZ884X PCI"
1493#define DEVICE_NAME "KSZ884x PCI" 1489#define DEVICE_NAME "KSZ884x PCI"
1494#define DRV_VERSION "1.0.0" 1490#define DRV_VERSION "1.0.0"
@@ -3835,7 +3831,7 @@ static void ksz_check_desc_num(struct ksz_desc_info *info)
3835 alloc >>= 1; 3831 alloc >>= 1;
3836 } 3832 }
3837 if (alloc != 1 || shift < MIN_DESC_SHIFT) { 3833 if (alloc != 1 || shift < MIN_DESC_SHIFT) {
3838 printk(KERN_ALERT "Hardware descriptor numbers not right!\n"); 3834 pr_alert("Hardware descriptor numbers not right!\n");
3839 while (alloc) { 3835 while (alloc) {
3840 shift++; 3836 shift++;
3841 alloc >>= 1; 3837 alloc >>= 1;
@@ -4546,8 +4542,7 @@ static int ksz_alloc_mem(struct dev_info *adapter)
4546 (((sizeof(struct ksz_hw_desc) + DESC_ALIGNMENT - 1) / 4542 (((sizeof(struct ksz_hw_desc) + DESC_ALIGNMENT - 1) /
4547 DESC_ALIGNMENT) * DESC_ALIGNMENT); 4543 DESC_ALIGNMENT) * DESC_ALIGNMENT);
4548 if (hw->rx_desc_info.size != sizeof(struct ksz_hw_desc)) 4544 if (hw->rx_desc_info.size != sizeof(struct ksz_hw_desc))
4549 printk(KERN_ALERT 4545 pr_alert("Hardware descriptor size not right!\n");
4550 "Hardware descriptor size not right!\n");
4551 ksz_check_desc_num(&hw->rx_desc_info); 4546 ksz_check_desc_num(&hw->rx_desc_info);
4552 ksz_check_desc_num(&hw->tx_desc_info); 4547 ksz_check_desc_num(&hw->tx_desc_info);
4553 4548
@@ -5049,8 +5044,6 @@ static inline int rx_proc(struct net_device *dev, struct ksz_hw* hw,
5049 dma_buf->skb->data, packet_len); 5044 dma_buf->skb->data, packet_len);
5050 } while (0); 5045 } while (0);
5051 5046
5052 skb->dev = dev;
5053
5054 skb->protocol = eth_type_trans(skb, dev); 5047 skb->protocol = eth_type_trans(skb, dev);
5055 5048
5056 if (hw->rx_cfg & (DMA_RX_CSUM_UDP | DMA_RX_CSUM_TCP)) 5049 if (hw->rx_cfg & (DMA_RX_CSUM_UDP | DMA_RX_CSUM_TCP))
@@ -5320,10 +5313,10 @@ static irqreturn_t netdev_intr(int irq, void *dev_id)
5320 u32 data; 5313 u32 data;
5321 5314
5322 hw->intr_mask &= ~KS884X_INT_TX_STOPPED; 5315 hw->intr_mask &= ~KS884X_INT_TX_STOPPED;
5323 printk(KERN_INFO "Tx stopped\n"); 5316 pr_info("Tx stopped\n");
5324 data = readl(hw->io + KS_DMA_TX_CTRL); 5317 data = readl(hw->io + KS_DMA_TX_CTRL);
5325 if (!(data & DMA_TX_ENABLE)) 5318 if (!(data & DMA_TX_ENABLE))
5326 printk(KERN_INFO "Tx disabled\n"); 5319 pr_info("Tx disabled\n");
5327 break; 5320 break;
5328 } 5321 }
5329 } while (0); 5322 } while (0);
@@ -5496,6 +5489,18 @@ static int prepare_hardware(struct net_device *dev)
5496 return 0; 5489 return 0;
5497} 5490}
5498 5491
5492static void set_media_state(struct net_device *dev, int media_state)
5493{
5494 struct dev_priv *priv = netdev_priv(dev);
5495
5496 if (media_state == priv->media_state)
5497 netif_carrier_on(dev);
5498 else
5499 netif_carrier_off(dev);
5500 netif_info(priv, link, dev, "link %s\n",
5501 media_state == priv->media_state ? "on" : "off");
5502}
5503
5499/** 5504/**
5500 * netdev_open - open network device 5505 * netdev_open - open network device
5501 * @dev: Network device. 5506 * @dev: Network device.
@@ -5585,15 +5590,7 @@ static int netdev_open(struct net_device *dev)
5585 5590
5586 priv->media_state = port->linked->state; 5591 priv->media_state = port->linked->state;
5587 5592
5588 if (media_connected == priv->media_state) 5593 set_media_state(dev, media_connected);
5589 netif_carrier_on(dev);
5590 else
5591 netif_carrier_off(dev);
5592 if (netif_msg_link(priv))
5593 printk(KERN_INFO "%s link %s\n", dev->name,
5594 (media_connected == priv->media_state ?
5595 "on" : "off"));
5596
5597 netif_start_queue(dev); 5594 netif_start_queue(dev);
5598 5595
5599 return 0; 5596 return 0;
@@ -5767,7 +5764,7 @@ static void netdev_set_rx_mode(struct net_device *dev)
5767 struct dev_priv *priv = netdev_priv(dev); 5764 struct dev_priv *priv = netdev_priv(dev);
5768 struct dev_info *hw_priv = priv->adapter; 5765 struct dev_info *hw_priv = priv->adapter;
5769 struct ksz_hw *hw = &hw_priv->hw; 5766 struct ksz_hw *hw = &hw_priv->hw;
5770 struct dev_mc_list *mc_ptr; 5767 struct netdev_hw_addr *ha;
5771 int multicast = (dev->flags & IFF_ALLMULTI); 5768 int multicast = (dev->flags & IFF_ALLMULTI);
5772 5769
5773 dev_set_promiscuous(dev, priv, hw, (dev->flags & IFF_PROMISC)); 5770 dev_set_promiscuous(dev, priv, hw, (dev->flags & IFF_PROMISC));
@@ -5784,7 +5781,7 @@ static void netdev_set_rx_mode(struct net_device *dev)
5784 int i = 0; 5781 int i = 0;
5785 5782
5786 /* List too big to support so turn on all multicast mode. */ 5783 /* List too big to support so turn on all multicast mode. */
5787 if (dev->mc_count > MAX_MULTICAST_LIST) { 5784 if (netdev_mc_count(dev) > MAX_MULTICAST_LIST) {
5788 if (MAX_MULTICAST_LIST != hw->multi_list_size) { 5785 if (MAX_MULTICAST_LIST != hw->multi_list_size) {
5789 hw->multi_list_size = MAX_MULTICAST_LIST; 5786 hw->multi_list_size = MAX_MULTICAST_LIST;
5790 ++hw->all_multi; 5787 ++hw->all_multi;
@@ -5793,13 +5790,12 @@ static void netdev_set_rx_mode(struct net_device *dev)
5793 return; 5790 return;
5794 } 5791 }
5795 5792
5796 netdev_for_each_mc_addr(mc_ptr, dev) { 5793 netdev_for_each_mc_addr(ha, dev) {
5797 if (!(*mc_ptr->dmi_addr & 1)) 5794 if (!(*ha->addr & 1))
5798 continue; 5795 continue;
5799 if (i >= MAX_MULTICAST_LIST) 5796 if (i >= MAX_MULTICAST_LIST)
5800 break; 5797 break;
5801 memcpy(hw->multi_list[i++], mc_ptr->dmi_addr, 5798 memcpy(hw->multi_list[i++], ha->addr, MAC_ADDR_LEN);
5802 MAC_ADDR_LEN);
5803 } 5799 }
5804 hw->multi_list_size = (u8) i; 5800 hw->multi_list_size = (u8) i;
5805 hw_set_grp_addr(hw); 5801 hw_set_grp_addr(hw);
@@ -6683,16 +6679,8 @@ static void update_link(struct net_device *dev, struct dev_priv *priv,
6683{ 6679{
6684 if (priv->media_state != port->linked->state) { 6680 if (priv->media_state != port->linked->state) {
6685 priv->media_state = port->linked->state; 6681 priv->media_state = port->linked->state;
6686 if (netif_running(dev)) { 6682 if (netif_running(dev))
6687 if (media_connected == priv->media_state) 6683 set_media_state(dev, media_connected);
6688 netif_carrier_on(dev);
6689 else
6690 netif_carrier_off(dev);
6691 if (netif_msg_link(priv))
6692 printk(KERN_INFO "%s link %s\n", dev->name,
6693 (media_connected == priv->media_state ?
6694 "on" : "off"));
6695 }
6696 } 6684 }
6697} 6685}
6698 6686
@@ -6986,7 +6974,7 @@ static int __init pcidev_init(struct pci_dev *pdev,
6986 int pi; 6974 int pi;
6987 int port_count; 6975 int port_count;
6988 int result; 6976 int result;
6989 char banner[80]; 6977 char banner[sizeof(version)];
6990 struct ksz_switch *sw = NULL; 6978 struct ksz_switch *sw = NULL;
6991 6979
6992 result = pci_enable_device(pdev); 6980 result = pci_enable_device(pdev);
@@ -7010,10 +6998,9 @@ static int __init pcidev_init(struct pci_dev *pdev,
7010 6998
7011 result = -ENOMEM; 6999 result = -ENOMEM;
7012 7000
7013 info = kmalloc(sizeof(struct platform_info), GFP_KERNEL); 7001 info = kzalloc(sizeof(struct platform_info), GFP_KERNEL);
7014 if (!info) 7002 if (!info)
7015 goto pcidev_init_dev_err; 7003 goto pcidev_init_dev_err;
7016 memset(info, 0, sizeof(struct platform_info));
7017 7004
7018 hw_priv = &info->dev_info; 7005 hw_priv = &info->dev_info;
7019 hw_priv->pdev = pdev; 7006 hw_priv->pdev = pdev;
@@ -7027,15 +7014,15 @@ static int __init pcidev_init(struct pci_dev *pdev,
7027 cnt = hw_init(hw); 7014 cnt = hw_init(hw);
7028 if (!cnt) { 7015 if (!cnt) {
7029 if (msg_enable & NETIF_MSG_PROBE) 7016 if (msg_enable & NETIF_MSG_PROBE)
7030 printk(KERN_ALERT "chip not detected\n"); 7017 pr_alert("chip not detected\n");
7031 result = -ENODEV; 7018 result = -ENODEV;
7032 goto pcidev_init_alloc_err; 7019 goto pcidev_init_alloc_err;
7033 } 7020 }
7034 7021
7035 sprintf(banner, "%s\n", version); 7022 snprintf(banner, sizeof(banner), "%s", version);
7036 banner[13] = cnt + '0'; 7023 banner[13] = cnt + '0'; /* Replace x in "Micrel KSZ884x" */
7037 ks_info(hw_priv, "%s", banner); 7024 dev_info(&hw_priv->pdev->dev, "%s\n", banner);
7038 ks_dbg(hw_priv, "Mem = %p; IRQ = %d\n", hw->io, pdev->irq); 7025 dev_dbg(&hw_priv->pdev->dev, "Mem = %p; IRQ = %d\n", hw->io, pdev->irq);
7039 7026
7040 /* Assume device is KSZ8841. */ 7027 /* Assume device is KSZ8841. */
7041 hw->dev_count = 1; 7028 hw->dev_count = 1;