Commit 29046f9b authored by Vasanthy Kolluri's avatar Vasanthy Kolluri Committed by David S. Miller

enic: Clean ups

1) Update copyright
2) Fix hardware queue descriptor field size CQ_ENET_RQ_DESC_FCOE_SOF_BITS
3) Include rtnetlink.h instead of if_link.h
4) Selectively flush writes to interrupt mask register
5) Use pci_enable_device_mem
6) Remove unused variables and header files
7) Fix size mismatch between memory alloc and free operations of a variable
8) Check for non null arguments to vic_provinfo_alloc
Signed-off-by: default avatarScott Feldman <scofeldm@cisco.com>
Signed-off-by: default avatarVasanthy Kolluri <vkolluri@cisco.com>
Signed-off-by: default avatarRoopa Prabhu <roprabhu@cisco.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 506e1198
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
...@@ -82,7 +82,7 @@ struct cq_enet_rq_desc { ...@@ -82,7 +82,7 @@ struct cq_enet_rq_desc {
((1 << CQ_ENET_RQ_DESC_VLAN_TCI_USER_PRIO_BITS) - 1) ((1 << CQ_ENET_RQ_DESC_VLAN_TCI_USER_PRIO_BITS) - 1)
#define CQ_ENET_RQ_DESC_VLAN_TCI_USER_PRIO_SHIFT 13 #define CQ_ENET_RQ_DESC_VLAN_TCI_USER_PRIO_SHIFT 13
#define CQ_ENET_RQ_DESC_FCOE_SOF_BITS 4 #define CQ_ENET_RQ_DESC_FCOE_SOF_BITS 8
#define CQ_ENET_RQ_DESC_FCOE_SOF_MASK \ #define CQ_ENET_RQ_DESC_FCOE_SOF_MASK \
((1 << CQ_ENET_RQ_DESC_FCOE_SOF_BITS) - 1) ((1 << CQ_ENET_RQ_DESC_FCOE_SOF_BITS) - 1)
#define CQ_ENET_RQ_DESC_FCOE_EOF_BITS 8 #define CQ_ENET_RQ_DESC_FCOE_EOF_BITS 8
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
#define DRV_NAME "enic" #define DRV_NAME "enic"
#define DRV_DESCRIPTION "Cisco VIC Ethernet NIC Driver" #define DRV_DESCRIPTION "Cisco VIC Ethernet NIC Driver"
#define DRV_VERSION "1.4.1.1" #define DRV_VERSION "1.4.1.1"
#define DRV_COPYRIGHT "Copyright 2008-2009 Cisco Systems, Inc" #define DRV_COPYRIGHT "Copyright 2008-2010 Cisco Systems, Inc"
#define ENIC_BARS_MAX 6 #define ENIC_BARS_MAX 6
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
...@@ -29,12 +29,12 @@ ...@@ -29,12 +29,12 @@
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>
#include <linux/if_vlan.h> #include <linux/if_vlan.h>
#include <linux/if_link.h>
#include <linux/ethtool.h> #include <linux/ethtool.h>
#include <linux/in.h> #include <linux/in.h>
#include <linux/ip.h> #include <linux/ip.h>
#include <linux/ipv6.h> #include <linux/ipv6.h>
#include <linux/tcp.h> #include <linux/tcp.h>
#include <linux/rtnetlink.h>
#include <net/ip6_checksum.h> #include <net/ip6_checksum.h>
#include "cq_enet_desc.h" #include "cq_enet_desc.h"
...@@ -1799,8 +1799,10 @@ static int enic_stop(struct net_device *netdev) ...@@ -1799,8 +1799,10 @@ static int enic_stop(struct net_device *netdev)
unsigned int i; unsigned int i;
int err; int err;
for (i = 0; i < enic->intr_count; i++) for (i = 0; i < enic->intr_count; i++) {
vnic_intr_mask(&enic->intr[i]); vnic_intr_mask(&enic->intr[i]);
(void)vnic_intr_masked(&enic->intr[i]); /* flush write */
}
enic_synchronize_irqs(enic); enic_synchronize_irqs(enic);
...@@ -1810,7 +1812,6 @@ static int enic_stop(struct net_device *netdev) ...@@ -1810,7 +1812,6 @@ static int enic_stop(struct net_device *netdev)
napi_disable(&enic->napi); napi_disable(&enic->napi);
netif_carrier_off(netdev); netif_carrier_off(netdev);
netif_tx_disable(netdev); netif_tx_disable(netdev);
enic_dev_del_station_addr(enic); enic_dev_del_station_addr(enic);
for (i = 0; i < enic->wq_count; i++) { for (i = 0; i < enic->wq_count; i++) {
...@@ -2299,7 +2300,7 @@ static int __devinit enic_probe(struct pci_dev *pdev, ...@@ -2299,7 +2300,7 @@ static int __devinit enic_probe(struct pci_dev *pdev,
/* Setup PCI resources /* Setup PCI resources
*/ */
err = pci_enable_device(pdev); err = pci_enable_device_mem(pdev);
if (err) { if (err) {
dev_err(dev, "Cannot enable PCI device, aborting\n"); dev_err(dev, "Cannot enable PCI device, aborting\n");
goto err_out_free_netdev; goto err_out_free_netdev;
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>
#include <linux/slab.h>
#include "vnic_resource.h" #include "vnic_resource.h"
#include "vnic_devcmd.h" #include "vnic_devcmd.h"
...@@ -41,8 +40,6 @@ struct vnic_res { ...@@ -41,8 +40,6 @@ struct vnic_res {
unsigned int count; unsigned int count;
}; };
#define VNIC_DEV_CAP_INIT 0x0001
struct vnic_dev { struct vnic_dev {
void *priv; void *priv;
struct pci_dev *pdev; struct pci_dev *pdev;
...@@ -53,13 +50,11 @@ struct vnic_dev { ...@@ -53,13 +50,11 @@ struct vnic_dev {
struct vnic_devcmd_notify notify_copy; struct vnic_devcmd_notify notify_copy;
dma_addr_t notify_pa; dma_addr_t notify_pa;
u32 notify_sz; u32 notify_sz;
u32 *linkstatus;
dma_addr_t linkstatus_pa; dma_addr_t linkstatus_pa;
struct vnic_stats *stats; struct vnic_stats *stats;
dma_addr_t stats_pa; dma_addr_t stats_pa;
struct vnic_devcmd_fw_info *fw_info; struct vnic_devcmd_fw_info *fw_info;
dma_addr_t fw_info_pa; dma_addr_t fw_info_pa;
u32 cap_flags;
enum vnic_proxy_type proxy; enum vnic_proxy_type proxy;
u32 proxy_index; u32 proxy_index;
u64 args[VNIC_DEVCMD_NARGS]; u64 args[VNIC_DEVCMD_NARGS];
...@@ -279,7 +274,6 @@ static int _vnic_dev_cmd(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd, ...@@ -279,7 +274,6 @@ static int _vnic_dev_cmd(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd,
/* PCI-e target device is gone */ /* PCI-e target device is gone */
return -ENODEV; return -ENODEV;
} }
if (status & STAT_BUSY) { if (status & STAT_BUSY) {
pr_err("Busy devcmd %d\n", _CMD_N(cmd)); pr_err("Busy devcmd %d\n", _CMD_N(cmd));
return -EBUSY; return -EBUSY;
...@@ -852,7 +846,7 @@ int vnic_dev_init(struct vnic_dev *vdev, int arg) ...@@ -852,7 +846,7 @@ int vnic_dev_init(struct vnic_dev *vdev, int arg)
int wait = 1000; int wait = 1000;
int r = 0; int r = 0;
if (vdev->cap_flags & VNIC_DEV_CAP_INIT) if (vnic_dev_capable(vdev, CMD_INIT))
r = vnic_dev_cmd(vdev, CMD_INIT, &a0, &a1, wait); r = vnic_dev_cmd(vdev, CMD_INIT, &a0, &a1, wait);
else { else {
vnic_dev_cmd(vdev, CMD_INIT_v1, &a0, &a1, wait); vnic_dev_cmd(vdev, CMD_INIT_v1, &a0, &a1, wait);
...@@ -919,9 +913,6 @@ int vnic_dev_deinit(struct vnic_dev *vdev) ...@@ -919,9 +913,6 @@ int vnic_dev_deinit(struct vnic_dev *vdev)
int vnic_dev_link_status(struct vnic_dev *vdev) int vnic_dev_link_status(struct vnic_dev *vdev)
{ {
if (vdev->linkstatus)
return *vdev->linkstatus;
if (!vnic_dev_notify_ready(vdev)) if (!vnic_dev_notify_ready(vdev))
return 0; return 0;
...@@ -996,14 +987,9 @@ void vnic_dev_unregister(struct vnic_dev *vdev) ...@@ -996,14 +987,9 @@ void vnic_dev_unregister(struct vnic_dev *vdev)
sizeof(struct vnic_devcmd_notify), sizeof(struct vnic_devcmd_notify),
vdev->notify, vdev->notify,
vdev->notify_pa); vdev->notify_pa);
if (vdev->linkstatus)
pci_free_consistent(vdev->pdev,
sizeof(u32),
vdev->linkstatus,
vdev->linkstatus_pa);
if (vdev->stats) if (vdev->stats)
pci_free_consistent(vdev->pdev, pci_free_consistent(vdev->pdev,
sizeof(struct vnic_dev), sizeof(struct vnic_stats),
vdev->stats, vdev->stats_pa); vdev->stats, vdev->stats_pa);
if (vdev->fw_info) if (vdev->fw_info)
pci_free_consistent(vdev->pdev, pci_free_consistent(vdev->pdev,
...@@ -1033,11 +1019,6 @@ struct vnic_dev *vnic_dev_register(struct vnic_dev *vdev, ...@@ -1033,11 +1019,6 @@ struct vnic_dev *vnic_dev_register(struct vnic_dev *vdev,
if (!vdev->devcmd) if (!vdev->devcmd)
goto err_out; goto err_out;
vdev->cap_flags = 0;
if (vnic_dev_capable(vdev, CMD_INIT))
vdev->cap_flags |= VNIC_DEV_CAP_INIT;
return vdev; return vdev;
err_out: err_out:
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
...@@ -61,7 +61,11 @@ static inline void vnic_intr_unmask(struct vnic_intr *intr) ...@@ -61,7 +61,11 @@ static inline void vnic_intr_unmask(struct vnic_intr *intr)
static inline void vnic_intr_mask(struct vnic_intr *intr) static inline void vnic_intr_mask(struct vnic_intr *intr)
{ {
iowrite32(1, &intr->ctrl->mask); iowrite32(1, &intr->ctrl->mask);
(void)ioread32(&intr->ctrl->mask); }
static inline int vnic_intr_masked(struct vnic_intr *intr)
{
return ioread32(&intr->ctrl->mask);
} }
static inline void vnic_intr_return_credits(struct vnic_intr *intr, static inline void vnic_intr_return_credits(struct vnic_intr *intr,
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
...@@ -209,7 +209,6 @@ void vnic_rq_clean(struct vnic_rq *rq, ...@@ -209,7 +209,6 @@ void vnic_rq_clean(struct vnic_rq *rq,
/* Hardware surprise removal: reset fetch_index */ /* Hardware surprise removal: reset fetch_index */
fetch_index = 0; fetch_index = 0;
} }
rq->to_use = rq->to_clean = rq->to_use = rq->to_clean =
&rq->bufs[fetch_index / VNIC_RQ_BUF_BLK_ENTRIES(count)] &rq->bufs[fetch_index / VNIC_RQ_BUF_BLK_ENTRIES(count)]
[fetch_index % VNIC_RQ_BUF_BLK_ENTRIES(count)]; [fetch_index % VNIC_RQ_BUF_BLK_ENTRIES(count)];
......
/* /*
* Copyright 2008, 2009 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
...@@ -27,6 +27,9 @@ struct vic_provinfo *vic_provinfo_alloc(gfp_t flags, u8 *oui, u8 type) ...@@ -27,6 +27,9 @@ struct vic_provinfo *vic_provinfo_alloc(gfp_t flags, u8 *oui, u8 type)
{ {
struct vic_provinfo *vp; struct vic_provinfo *vp;
if (!oui)
return NULL;
vp = kzalloc(VIC_PROVINFO_MAX_DATA, flags); vp = kzalloc(VIC_PROVINFO_MAX_DATA, flags);
if (!vp) if (!vp)
return NULL; return NULL;
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
/* /*
* Copyright 2008 Cisco Systems, Inc. All rights reserved. * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
* Copyright 2007 Nuova Systems, Inc. All rights reserved. * Copyright 2007 Nuova Systems, Inc. All rights reserved.
* *
* This program is free software; you may redistribute it and/or modify * This program is free software; you may redistribute it and/or modify
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment