2005-03-30 14:34:31 -07:00
|
|
|
/*****************************************************************************
|
|
|
|
* *
|
|
|
|
* File: cxgb2.c *
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
* $Revision: 1.25 $ *
|
|
|
|
* $Date: 2005/06/22 00:43:25 $ *
|
2005-03-30 14:34:31 -07:00
|
|
|
* Description: *
|
|
|
|
* Chelsio 10Gb Ethernet Driver. *
|
|
|
|
* *
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License, version 2, as *
|
|
|
|
* published by the Free Software Foundation. *
|
|
|
|
* *
|
|
|
|
* You should have received a copy of the GNU General Public License along *
|
2013-12-06 07:28:43 -07:00
|
|
|
* with this program; if not, see <http://www.gnu.org/licenses/>. *
|
2005-03-30 14:34:31 -07:00
|
|
|
* *
|
|
|
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED *
|
|
|
|
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF *
|
|
|
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. *
|
|
|
|
* *
|
|
|
|
* http://www.chelsio.com *
|
|
|
|
* *
|
|
|
|
* Copyright (c) 2003 - 2005 Chelsio Communications, Inc. *
|
|
|
|
* All rights reserved. *
|
|
|
|
* *
|
|
|
|
* Maintainers: maintainers@chelsio.com *
|
|
|
|
* *
|
|
|
|
* Authors: Dimitrios Michailidis <dm@chelsio.com> *
|
|
|
|
* Tina Yang <tainay@chelsio.com> *
|
|
|
|
* Felix Marti <felix@chelsio.com> *
|
|
|
|
* Scott Bardone <sbardone@chelsio.com> *
|
|
|
|
* Kurt Ottaway <kottaway@chelsio.com> *
|
|
|
|
* Frank DiMambro <frank@chelsio.com> *
|
|
|
|
* *
|
|
|
|
* History: *
|
|
|
|
* *
|
|
|
|
****************************************************************************/
|
|
|
|
|
|
|
|
#include "common.h"
|
|
|
|
#include <linux/module.h>
|
|
|
|
#include <linux/pci.h>
|
|
|
|
#include <linux/netdevice.h>
|
|
|
|
#include <linux/etherdevice.h>
|
|
|
|
#include <linux/if_vlan.h>
|
|
|
|
#include <linux/mii.h>
|
|
|
|
#include <linux/sockios.h>
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
#include <linux/dma-mapping.h>
|
2016-12-24 12:46:01 -07:00
|
|
|
#include <linux/uaccess.h>
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
#include "cpl5_cmd.h"
|
|
|
|
#include "regs.h"
|
|
|
|
#include "gmac.h"
|
|
|
|
#include "cphy.h"
|
|
|
|
#include "sge.h"
|
2006-12-01 17:36:16 -07:00
|
|
|
#include "tp.h"
|
2005-03-30 14:34:31 -07:00
|
|
|
#include "espi.h"
|
2006-12-01 17:36:16 -07:00
|
|
|
#include "elmer0.h"
|
2005-03-30 14:34:31 -07:00
|
|
|
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
#include <linux/workqueue.h>
|
2005-03-30 14:34:31 -07:00
|
|
|
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
static inline void schedule_mac_stats_update(struct adapter *ap, int secs)
|
|
|
|
{
|
|
|
|
schedule_delayed_work(&ap->stats_update_task, secs * HZ);
|
|
|
|
}
|
2005-03-30 14:34:31 -07:00
|
|
|
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
static inline void cancel_mac_stats_update(struct adapter *ap)
|
|
|
|
{
|
|
|
|
cancel_delayed_work(&ap->stats_update_task);
|
|
|
|
}
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2006-12-11 15:47:00 -07:00
|
|
|
#define MAX_CMDQ_ENTRIES 16384
|
|
|
|
#define MAX_CMDQ1_ENTRIES 1024
|
|
|
|
#define MAX_RX_BUFFERS 16384
|
|
|
|
#define MAX_RX_JUMBO_BUFFERS 16384
|
2005-03-30 14:34:31 -07:00
|
|
|
#define MAX_TX_BUFFERS_HIGH 16384U
|
|
|
|
#define MAX_TX_BUFFERS_LOW 1536U
|
2006-12-01 17:36:16 -07:00
|
|
|
#define MAX_TX_BUFFERS 1460U
|
2006-12-11 15:47:00 -07:00
|
|
|
#define MIN_FL_ENTRIES 32
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
#define DFLT_MSG_ENABLE (NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_LINK | \
|
|
|
|
NETIF_MSG_TIMER | NETIF_MSG_IFDOWN | NETIF_MSG_IFUP |\
|
|
|
|
NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR)
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The EEPROM is actually bigger but only the first few bytes are used so we
|
|
|
|
* only report those.
|
|
|
|
*/
|
|
|
|
#define EEPROM_SIZE 32
|
|
|
|
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
MODULE_DESCRIPTION(DRV_DESCRIPTION);
|
2005-03-30 14:34:31 -07:00
|
|
|
MODULE_AUTHOR("Chelsio Communications");
|
|
|
|
MODULE_LICENSE("GPL");
|
|
|
|
|
|
|
|
static int dflt_msg_enable = DFLT_MSG_ENABLE;
|
|
|
|
|
2006-03-25 04:07:05 -07:00
|
|
|
module_param(dflt_msg_enable, int, 0);
|
2006-12-01 17:36:16 -07:00
|
|
|
MODULE_PARM_DESC(dflt_msg_enable, "Chelsio T1 default message enable bitmap");
|
|
|
|
|
|
|
|
#define HCLOCK 0x0
|
|
|
|
#define LCLOCK 0x1
|
|
|
|
|
|
|
|
/* T1 cards powersave mode */
|
|
|
|
static int t1_clock(struct adapter *adapter, int mode);
|
|
|
|
static int t1powersave = 1; /* HW default is powersave mode. */
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2006-12-01 17:36:16 -07:00
|
|
|
module_param(t1powersave, int, 0);
|
|
|
|
MODULE_PARM_DESC(t1powersave, "Enable/Disable T1 powersaving mode");
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2006-12-01 17:36:20 -07:00
|
|
|
static int disable_msi = 0;
|
|
|
|
module_param(disable_msi, int, 0);
|
|
|
|
MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)");
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Setup MAC to receive the types of packets we want.
|
|
|
|
*/
|
|
|
|
static void t1_set_rxmode(struct net_device *dev)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
struct cmac *mac = adapter->port[dev->if_port].mac;
|
|
|
|
struct t1_rx_mode rm;
|
|
|
|
|
|
|
|
rm.dev = dev;
|
|
|
|
mac->ops->set_rx_mode(mac, &rm);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void link_report(struct port_info *p)
|
|
|
|
{
|
|
|
|
if (!netif_carrier_ok(p->dev))
|
2013-01-06 06:34:49 -07:00
|
|
|
netdev_info(p->dev, "link down\n");
|
2005-03-30 14:34:31 -07:00
|
|
|
else {
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
const char *s = "10Mbps";
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
switch (p->link_config.speed) {
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
case SPEED_10000: s = "10Gbps"; break;
|
|
|
|
case SPEED_1000: s = "1000Mbps"; break;
|
|
|
|
case SPEED_100: s = "100Mbps"; break;
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
2013-01-06 06:34:49 -07:00
|
|
|
netdev_info(p->dev, "link up, %s, %s-duplex\n",
|
|
|
|
s, p->link_config.duplex == DUPLEX_FULL
|
|
|
|
? "full" : "half");
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2006-12-01 17:36:16 -07:00
|
|
|
void t1_link_negotiated(struct adapter *adapter, int port_id, int link_stat,
|
2005-03-30 14:34:31 -07:00
|
|
|
int speed, int duplex, int pause)
|
|
|
|
{
|
|
|
|
struct port_info *p = &adapter->port[port_id];
|
|
|
|
|
|
|
|
if (link_stat != netif_carrier_ok(p->dev)) {
|
|
|
|
if (link_stat)
|
|
|
|
netif_carrier_on(p->dev);
|
|
|
|
else
|
|
|
|
netif_carrier_off(p->dev);
|
|
|
|
link_report(p);
|
|
|
|
|
2006-12-01 17:36:16 -07:00
|
|
|
/* multi-ports: inform toe */
|
|
|
|
if ((speed > 0) && (adapter->params.nports > 1)) {
|
|
|
|
unsigned int sched_speed = 10;
|
|
|
|
switch (speed) {
|
|
|
|
case SPEED_1000:
|
|
|
|
sched_speed = 1000;
|
|
|
|
break;
|
|
|
|
case SPEED_100:
|
|
|
|
sched_speed = 100;
|
|
|
|
break;
|
|
|
|
case SPEED_10:
|
|
|
|
sched_speed = 10;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
t1_sched_update_parms(adapter->sge, port_id, 0, sched_speed);
|
|
|
|
}
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void link_start(struct port_info *p)
|
|
|
|
{
|
|
|
|
struct cmac *mac = p->mac;
|
|
|
|
|
|
|
|
mac->ops->reset(mac);
|
|
|
|
if (mac->ops->macaddress_set)
|
|
|
|
mac->ops->macaddress_set(mac, p->dev->dev_addr);
|
|
|
|
t1_set_rxmode(p->dev);
|
|
|
|
t1_link_start(p->phy, mac, &p->link_config);
|
|
|
|
mac->ops->enable(mac, MAC_DIRECTION_RX | MAC_DIRECTION_TX);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void enable_hw_csum(struct adapter *adapter)
|
|
|
|
{
|
2011-04-18 07:31:20 -06:00
|
|
|
if (adapter->port[0].dev->hw_features & NETIF_F_TSO)
|
2006-12-01 17:36:16 -07:00
|
|
|
t1_tp_set_ip_checksum_offload(adapter->tp, 1); /* for TSO only */
|
|
|
|
t1_tp_set_tcp_checksum_offload(adapter->tp, 1);
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Things to do upon first use of a card.
|
|
|
|
* This must run with the rtnl lock held.
|
|
|
|
*/
|
|
|
|
static int cxgb_up(struct adapter *adapter)
|
|
|
|
{
|
|
|
|
int err = 0;
|
|
|
|
|
|
|
|
if (!(adapter->flags & FULL_INIT_DONE)) {
|
|
|
|
err = t1_init_hw_modules(adapter);
|
|
|
|
if (err)
|
|
|
|
goto out_err;
|
|
|
|
|
|
|
|
enable_hw_csum(adapter);
|
|
|
|
adapter->flags |= FULL_INIT_DONE;
|
|
|
|
}
|
|
|
|
|
|
|
|
t1_interrupts_clear(adapter);
|
2006-12-01 17:36:20 -07:00
|
|
|
|
2006-12-08 12:08:33 -07:00
|
|
|
adapter->params.has_msi = !disable_msi && !pci_enable_msi(adapter->pdev);
|
|
|
|
err = request_irq(adapter->pdev->irq, t1_interrupt,
|
2006-12-01 17:36:20 -07:00
|
|
|
adapter->params.has_msi ? 0 : IRQF_SHARED,
|
|
|
|
adapter->name, adapter);
|
|
|
|
if (err) {
|
|
|
|
if (adapter->params.has_msi)
|
|
|
|
pci_disable_msi(adapter->pdev);
|
|
|
|
|
2005-03-30 14:34:31 -07:00
|
|
|
goto out_err;
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
}
|
2006-12-01 17:36:20 -07:00
|
|
|
|
2005-03-30 14:34:31 -07:00
|
|
|
t1_sge_start(adapter->sge);
|
|
|
|
t1_interrupts_enable(adapter);
|
2006-12-11 15:47:00 -07:00
|
|
|
out_err:
|
2005-03-30 14:34:31 -07:00
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Release resources when all the ports have been stopped.
|
|
|
|
*/
|
|
|
|
static void cxgb_down(struct adapter *adapter)
|
|
|
|
{
|
|
|
|
t1_sge_stop(adapter->sge);
|
|
|
|
t1_interrupts_disable(adapter);
|
|
|
|
free_irq(adapter->pdev->irq, adapter);
|
2006-12-01 17:36:20 -07:00
|
|
|
if (adapter->params.has_msi)
|
|
|
|
pci_disable_msi(adapter->pdev);
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static int cxgb_open(struct net_device *dev)
|
|
|
|
{
|
|
|
|
int err;
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
int other_ports = adapter->open_device_map & PORT_MASK;
|
|
|
|
|
[NET]: Make NAPI polling independent of struct net_device objects.
Several devices have multiple independant RX queues per net
device, and some have a single interrupt doorbell for several
queues.
In either case, it's easier to support layouts like that if the
structure representing the poll is independant from the net
device itself.
The signature of the ->poll() call back goes from:
int foo_poll(struct net_device *dev, int *budget)
to
int foo_poll(struct napi_struct *napi, int budget)
The caller is returned the number of RX packets processed (or
the number of "NAPI credits" consumed if you want to get
abstract). The callee no longer messes around bumping
dev->quota, *budget, etc. because that is all handled in the
caller upon return.
The napi_struct is to be embedded in the device driver private data
structures.
Furthermore, it is the driver's responsibility to disable all NAPI
instances in it's ->stop() device close handler. Since the
napi_struct is privatized into the driver's private data structures,
only the driver knows how to get at all of the napi_struct instances
it may have per-device.
With lots of help and suggestions from Rusty Russell, Roland Dreier,
Michael Chan, Jeff Garzik, and Jamal Hadi Salim.
Bug fixes from Thomas Graf, Roland Dreier, Peter Zijlstra,
Joseph Fannin, Scott Wood, Hans J. Koch, and Michael Chan.
[ Ported to current tree and all drivers converted. Integrated
Stephen's follow-on kerneldoc additions, and restored poll_list
handling to the old style to fix mutual exclusion issues. -DaveM ]
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-10-03 17:41:36 -06:00
|
|
|
napi_enable(&adapter->napi);
|
|
|
|
if (!adapter->open_device_map && (err = cxgb_up(adapter)) < 0) {
|
|
|
|
napi_disable(&adapter->napi);
|
2005-03-30 14:34:31 -07:00
|
|
|
return err;
|
[NET]: Make NAPI polling independent of struct net_device objects.
Several devices have multiple independant RX queues per net
device, and some have a single interrupt doorbell for several
queues.
In either case, it's easier to support layouts like that if the
structure representing the poll is independant from the net
device itself.
The signature of the ->poll() call back goes from:
int foo_poll(struct net_device *dev, int *budget)
to
int foo_poll(struct napi_struct *napi, int budget)
The caller is returned the number of RX packets processed (or
the number of "NAPI credits" consumed if you want to get
abstract). The callee no longer messes around bumping
dev->quota, *budget, etc. because that is all handled in the
caller upon return.
The napi_struct is to be embedded in the device driver private data
structures.
Furthermore, it is the driver's responsibility to disable all NAPI
instances in it's ->stop() device close handler. Since the
napi_struct is privatized into the driver's private data structures,
only the driver knows how to get at all of the napi_struct instances
it may have per-device.
With lots of help and suggestions from Rusty Russell, Roland Dreier,
Michael Chan, Jeff Garzik, and Jamal Hadi Salim.
Bug fixes from Thomas Graf, Roland Dreier, Peter Zijlstra,
Joseph Fannin, Scott Wood, Hans J. Koch, and Michael Chan.
[ Ported to current tree and all drivers converted. Integrated
Stephen's follow-on kerneldoc additions, and restored poll_list
handling to the old style to fix mutual exclusion issues. -DaveM ]
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-10-03 17:41:36 -06:00
|
|
|
}
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
__set_bit(dev->if_port, &adapter->open_device_map);
|
|
|
|
link_start(&adapter->port[dev->if_port]);
|
|
|
|
netif_start_queue(dev);
|
|
|
|
if (!other_ports && adapter->params.stats_update_period)
|
|
|
|
schedule_mac_stats_update(adapter,
|
|
|
|
adapter->params.stats_update_period);
|
2011-07-19 22:54:15 -06:00
|
|
|
|
|
|
|
t1_vlan_mode(adapter, dev->features);
|
2005-03-30 14:34:31 -07:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int cxgb_close(struct net_device *dev)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
struct port_info *p = &adapter->port[dev->if_port];
|
|
|
|
struct cmac *mac = p->mac;
|
|
|
|
|
|
|
|
netif_stop_queue(dev);
|
[NET]: Make NAPI polling independent of struct net_device objects.
Several devices have multiple independant RX queues per net
device, and some have a single interrupt doorbell for several
queues.
In either case, it's easier to support layouts like that if the
structure representing the poll is independant from the net
device itself.
The signature of the ->poll() call back goes from:
int foo_poll(struct net_device *dev, int *budget)
to
int foo_poll(struct napi_struct *napi, int budget)
The caller is returned the number of RX packets processed (or
the number of "NAPI credits" consumed if you want to get
abstract). The callee no longer messes around bumping
dev->quota, *budget, etc. because that is all handled in the
caller upon return.
The napi_struct is to be embedded in the device driver private data
structures.
Furthermore, it is the driver's responsibility to disable all NAPI
instances in it's ->stop() device close handler. Since the
napi_struct is privatized into the driver's private data structures,
only the driver knows how to get at all of the napi_struct instances
it may have per-device.
With lots of help and suggestions from Rusty Russell, Roland Dreier,
Michael Chan, Jeff Garzik, and Jamal Hadi Salim.
Bug fixes from Thomas Graf, Roland Dreier, Peter Zijlstra,
Joseph Fannin, Scott Wood, Hans J. Koch, and Michael Chan.
[ Ported to current tree and all drivers converted. Integrated
Stephen's follow-on kerneldoc additions, and restored poll_list
handling to the old style to fix mutual exclusion issues. -DaveM ]
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-10-03 17:41:36 -06:00
|
|
|
napi_disable(&adapter->napi);
|
2005-03-30 14:34:31 -07:00
|
|
|
mac->ops->disable(mac, MAC_DIRECTION_TX | MAC_DIRECTION_RX);
|
|
|
|
netif_carrier_off(dev);
|
|
|
|
|
|
|
|
clear_bit(dev->if_port, &adapter->open_device_map);
|
|
|
|
if (adapter->params.stats_update_period &&
|
|
|
|
!(adapter->open_device_map & PORT_MASK)) {
|
|
|
|
/* Stop statistics accumulation. */
|
2014-03-17 11:06:10 -06:00
|
|
|
smp_mb__after_atomic();
|
2005-03-30 14:34:31 -07:00
|
|
|
spin_lock(&adapter->work_lock); /* sync with update task */
|
|
|
|
spin_unlock(&adapter->work_lock);
|
|
|
|
cancel_mac_stats_update(adapter);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!adapter->open_device_map)
|
|
|
|
cxgb_down(adapter);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static struct net_device_stats *t1_get_stats(struct net_device *dev)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
struct port_info *p = &adapter->port[dev->if_port];
|
2017-04-07 02:17:26 -06:00
|
|
|
struct net_device_stats *ns = &dev->stats;
|
2005-03-30 14:34:31 -07:00
|
|
|
const struct cmac_statistics *pstats;
|
|
|
|
|
|
|
|
/* Do a full update of the MAC stats */
|
|
|
|
pstats = p->mac->ops->statistics_update(p->mac,
|
2006-11-17 12:21:22 -07:00
|
|
|
MAC_STATS_UPDATE_FULL);
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
ns->tx_packets = pstats->TxUnicastFramesOK +
|
|
|
|
pstats->TxMulticastFramesOK + pstats->TxBroadcastFramesOK;
|
|
|
|
|
|
|
|
ns->rx_packets = pstats->RxUnicastFramesOK +
|
|
|
|
pstats->RxMulticastFramesOK + pstats->RxBroadcastFramesOK;
|
|
|
|
|
|
|
|
ns->tx_bytes = pstats->TxOctetsOK;
|
|
|
|
ns->rx_bytes = pstats->RxOctetsOK;
|
|
|
|
|
|
|
|
ns->tx_errors = pstats->TxLateCollisions + pstats->TxLengthErrors +
|
|
|
|
pstats->TxUnderrun + pstats->TxFramesAbortedDueToXSCollisions;
|
|
|
|
ns->rx_errors = pstats->RxDataErrors + pstats->RxJabberErrors +
|
|
|
|
pstats->RxFCSErrors + pstats->RxAlignErrors +
|
|
|
|
pstats->RxSequenceErrors + pstats->RxFrameTooLongErrors +
|
|
|
|
pstats->RxSymbolErrors + pstats->RxRuntErrors;
|
|
|
|
|
|
|
|
ns->multicast = pstats->RxMulticastFramesOK;
|
|
|
|
ns->collisions = pstats->TxTotalCollisions;
|
|
|
|
|
|
|
|
/* detailed rx_errors */
|
|
|
|
ns->rx_length_errors = pstats->RxFrameTooLongErrors +
|
|
|
|
pstats->RxJabberErrors;
|
|
|
|
ns->rx_over_errors = 0;
|
|
|
|
ns->rx_crc_errors = pstats->RxFCSErrors;
|
|
|
|
ns->rx_frame_errors = pstats->RxAlignErrors;
|
|
|
|
ns->rx_fifo_errors = 0;
|
|
|
|
ns->rx_missed_errors = 0;
|
|
|
|
|
|
|
|
/* detailed tx_errors */
|
|
|
|
ns->tx_aborted_errors = pstats->TxFramesAbortedDueToXSCollisions;
|
|
|
|
ns->tx_carrier_errors = 0;
|
|
|
|
ns->tx_fifo_errors = pstats->TxUnderrun;
|
|
|
|
ns->tx_heartbeat_errors = 0;
|
|
|
|
ns->tx_window_errors = pstats->TxLateCollisions;
|
|
|
|
return ns;
|
|
|
|
}
|
|
|
|
|
|
|
|
static u32 get_msglevel(struct net_device *dev)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
return adapter->msg_enable;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void set_msglevel(struct net_device *dev, u32 val)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
adapter->msg_enable = val;
|
|
|
|
}
|
|
|
|
|
2015-04-01 09:49:24 -06:00
|
|
|
static const char stats_strings[][ETH_GSTRING_LEN] = {
|
2006-11-17 12:21:22 -07:00
|
|
|
"TxOctetsOK",
|
|
|
|
"TxOctetsBad",
|
|
|
|
"TxUnicastFramesOK",
|
|
|
|
"TxMulticastFramesOK",
|
|
|
|
"TxBroadcastFramesOK",
|
|
|
|
"TxPauseFrames",
|
|
|
|
"TxFramesWithDeferredXmissions",
|
|
|
|
"TxLateCollisions",
|
|
|
|
"TxTotalCollisions",
|
|
|
|
"TxFramesAbortedDueToXSCollisions",
|
|
|
|
"TxUnderrun",
|
|
|
|
"TxLengthErrors",
|
|
|
|
"TxInternalMACXmitError",
|
|
|
|
"TxFramesWithExcessiveDeferral",
|
|
|
|
"TxFCSErrors",
|
2007-11-27 14:30:20 -07:00
|
|
|
"TxJumboFramesOk",
|
|
|
|
"TxJumboOctetsOk",
|
|
|
|
|
2006-11-17 12:21:22 -07:00
|
|
|
"RxOctetsOK",
|
|
|
|
"RxOctetsBad",
|
|
|
|
"RxUnicastFramesOK",
|
|
|
|
"RxMulticastFramesOK",
|
|
|
|
"RxBroadcastFramesOK",
|
|
|
|
"RxPauseFrames",
|
|
|
|
"RxFCSErrors",
|
|
|
|
"RxAlignErrors",
|
|
|
|
"RxSymbolErrors",
|
|
|
|
"RxDataErrors",
|
|
|
|
"RxSequenceErrors",
|
|
|
|
"RxRuntErrors",
|
|
|
|
"RxJabberErrors",
|
|
|
|
"RxInternalMACRcvError",
|
|
|
|
"RxInRangeLengthErrors",
|
|
|
|
"RxOutOfRangeLengthField",
|
|
|
|
"RxFrameTooLongErrors",
|
2007-11-27 14:30:20 -07:00
|
|
|
"RxJumboFramesOk",
|
|
|
|
"RxJumboOctetsOk",
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
|
2006-12-01 17:36:21 -07:00
|
|
|
/* Port stats */
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
"RxCsumGood",
|
|
|
|
"TxCsumOffload",
|
2006-12-01 17:36:21 -07:00
|
|
|
"TxTso",
|
|
|
|
"RxVlan",
|
|
|
|
"TxVlan",
|
2007-11-27 14:30:09 -07:00
|
|
|
"TxNeedHeadroom",
|
|
|
|
|
2006-12-01 17:36:21 -07:00
|
|
|
/* Interrupt stats */
|
|
|
|
"rx drops",
|
|
|
|
"pure_rsps",
|
|
|
|
"unhandled irqs",
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
"respQ_empty",
|
|
|
|
"respQ_overflow",
|
|
|
|
"freelistQ_empty",
|
|
|
|
"pkt_too_big",
|
|
|
|
"pkt_mismatch",
|
|
|
|
"cmdQ_full0",
|
|
|
|
"cmdQ_full1",
|
2006-11-17 12:21:22 -07:00
|
|
|
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
"espi_DIP2ParityErr",
|
|
|
|
"espi_DIP4Err",
|
|
|
|
"espi_RxDrops",
|
|
|
|
"espi_TxDrops",
|
|
|
|
"espi_RxOvfl",
|
|
|
|
"espi_ParityErr"
|
2005-03-30 14:34:31 -07:00
|
|
|
};
|
2006-11-17 12:21:22 -07:00
|
|
|
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
#define T2_REGMAP_SIZE (3 * 1024)
|
|
|
|
|
|
|
|
static int get_regs_len(struct net_device *dev)
|
|
|
|
{
|
|
|
|
return T2_REGMAP_SIZE;
|
|
|
|
}
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
static void get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2011-11-09 02:58:07 -07:00
|
|
|
strlcpy(info->driver, DRV_NAME, sizeof(info->driver));
|
|
|
|
strlcpy(info->bus_info, pci_name(adapter->pdev),
|
|
|
|
sizeof(info->bus_info));
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
2007-10-03 19:07:32 -06:00
|
|
|
static int get_sset_count(struct net_device *dev, int sset)
|
2005-03-30 14:34:31 -07:00
|
|
|
{
|
2007-10-03 19:07:32 -06:00
|
|
|
switch (sset) {
|
|
|
|
case ETH_SS_STATS:
|
|
|
|
return ARRAY_SIZE(stats_strings);
|
|
|
|
default:
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
}
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void get_strings(struct net_device *dev, u32 stringset, u8 *data)
|
|
|
|
{
|
|
|
|
if (stringset == ETH_SS_STATS)
|
|
|
|
memcpy(data, stats_strings, sizeof(stats_strings));
|
|
|
|
}
|
|
|
|
|
|
|
|
static void get_stats(struct net_device *dev, struct ethtool_stats *stats,
|
|
|
|
u64 *data)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
struct cmac *mac = adapter->port[dev->if_port].mac;
|
|
|
|
const struct cmac_statistics *s;
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
const struct sge_intr_counts *t;
|
2006-12-01 17:36:21 -07:00
|
|
|
struct sge_port_stats ss;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
s = mac->ops->statistics_update(mac, MAC_STATS_UPDATE_FULL);
|
2007-11-27 14:30:20 -07:00
|
|
|
t = t1_sge_get_intr_counts(adapter->sge);
|
2006-12-01 17:36:21 -07:00
|
|
|
t1_sge_get_port_stats(adapter->sge, dev->if_port, &ss);
|
|
|
|
|
2007-11-27 14:30:20 -07:00
|
|
|
*data++ = s->TxOctetsOK;
|
|
|
|
*data++ = s->TxOctetsBad;
|
|
|
|
*data++ = s->TxUnicastFramesOK;
|
|
|
|
*data++ = s->TxMulticastFramesOK;
|
|
|
|
*data++ = s->TxBroadcastFramesOK;
|
|
|
|
*data++ = s->TxPauseFrames;
|
|
|
|
*data++ = s->TxFramesWithDeferredXmissions;
|
|
|
|
*data++ = s->TxLateCollisions;
|
|
|
|
*data++ = s->TxTotalCollisions;
|
|
|
|
*data++ = s->TxFramesAbortedDueToXSCollisions;
|
|
|
|
*data++ = s->TxUnderrun;
|
|
|
|
*data++ = s->TxLengthErrors;
|
|
|
|
*data++ = s->TxInternalMACXmitError;
|
|
|
|
*data++ = s->TxFramesWithExcessiveDeferral;
|
|
|
|
*data++ = s->TxFCSErrors;
|
|
|
|
*data++ = s->TxJumboFramesOK;
|
|
|
|
*data++ = s->TxJumboOctetsOK;
|
|
|
|
|
|
|
|
*data++ = s->RxOctetsOK;
|
|
|
|
*data++ = s->RxOctetsBad;
|
|
|
|
*data++ = s->RxUnicastFramesOK;
|
|
|
|
*data++ = s->RxMulticastFramesOK;
|
|
|
|
*data++ = s->RxBroadcastFramesOK;
|
|
|
|
*data++ = s->RxPauseFrames;
|
|
|
|
*data++ = s->RxFCSErrors;
|
|
|
|
*data++ = s->RxAlignErrors;
|
|
|
|
*data++ = s->RxSymbolErrors;
|
|
|
|
*data++ = s->RxDataErrors;
|
|
|
|
*data++ = s->RxSequenceErrors;
|
|
|
|
*data++ = s->RxRuntErrors;
|
|
|
|
*data++ = s->RxJabberErrors;
|
|
|
|
*data++ = s->RxInternalMACRcvError;
|
|
|
|
*data++ = s->RxInRangeLengthErrors;
|
|
|
|
*data++ = s->RxOutOfRangeLengthField;
|
|
|
|
*data++ = s->RxFrameTooLongErrors;
|
|
|
|
*data++ = s->RxJumboFramesOK;
|
|
|
|
*data++ = s->RxJumboOctetsOK;
|
|
|
|
|
|
|
|
*data++ = ss.rx_cso_good;
|
|
|
|
*data++ = ss.tx_cso;
|
|
|
|
*data++ = ss.tx_tso;
|
|
|
|
*data++ = ss.vlan_xtract;
|
|
|
|
*data++ = ss.vlan_insert;
|
|
|
|
*data++ = ss.tx_need_hdrroom;
|
|
|
|
|
2006-12-01 17:36:21 -07:00
|
|
|
*data++ = t->rx_drops;
|
|
|
|
*data++ = t->pure_rsps;
|
|
|
|
*data++ = t->unhandled_irqs;
|
|
|
|
*data++ = t->respQ_empty;
|
|
|
|
*data++ = t->respQ_overflow;
|
|
|
|
*data++ = t->freelistQ_empty;
|
|
|
|
*data++ = t->pkt_too_big;
|
|
|
|
*data++ = t->pkt_mismatch;
|
|
|
|
*data++ = t->cmdQ_full[0];
|
|
|
|
*data++ = t->cmdQ_full[1];
|
2006-12-01 17:36:16 -07:00
|
|
|
|
|
|
|
if (adapter->espi) {
|
|
|
|
const struct espi_intr_counts *e;
|
|
|
|
|
|
|
|
e = t1_espi_get_intr_counts(adapter->espi);
|
2006-12-01 17:36:21 -07:00
|
|
|
*data++ = e->DIP2_parity_err;
|
|
|
|
*data++ = e->DIP4_err;
|
|
|
|
*data++ = e->rx_drops;
|
|
|
|
*data++ = e->tx_drops;
|
|
|
|
*data++ = e->rx_ovflw;
|
|
|
|
*data++ = e->parity_err;
|
2006-12-01 17:36:16 -07:00
|
|
|
}
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
static inline void reg_block_dump(struct adapter *ap, void *buf,
|
|
|
|
unsigned int start, unsigned int end)
|
|
|
|
{
|
|
|
|
u32 *p = buf + start;
|
|
|
|
|
|
|
|
for ( ; start <= end; start += sizeof(u32))
|
|
|
|
*p++ = readl(ap->regs + start);
|
|
|
|
}
|
2005-03-30 14:34:31 -07:00
|
|
|
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
static void get_regs(struct net_device *dev, struct ethtool_regs *regs,
|
|
|
|
void *buf)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *ap = dev->ml_priv;
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Version scheme: bits 0..9: chip version, bits 10..15: chip revision
|
|
|
|
*/
|
|
|
|
regs->version = 2;
|
|
|
|
|
|
|
|
memset(buf, 0, T2_REGMAP_SIZE);
|
|
|
|
reg_block_dump(ap, buf, 0, A_SG_RESPACCUTIMER);
|
2006-12-01 17:36:16 -07:00
|
|
|
reg_block_dump(ap, buf, A_MC3_CFG, A_MC4_INT_CAUSE);
|
|
|
|
reg_block_dump(ap, buf, A_TPI_ADDR, A_TPI_PAR);
|
|
|
|
reg_block_dump(ap, buf, A_TP_IN_CONFIG, A_TP_TX_DROP_COUNT);
|
|
|
|
reg_block_dump(ap, buf, A_RAT_ROUTE_CONTROL, A_RAT_INTR_CAUSE);
|
|
|
|
reg_block_dump(ap, buf, A_CSPI_RX_AE_WM, A_CSPI_INTR_ENABLE);
|
|
|
|
reg_block_dump(ap, buf, A_ESPI_SCH_TOKEN0, A_ESPI_GOSTAT);
|
|
|
|
reg_block_dump(ap, buf, A_ULP_ULIMIT, A_ULP_PIO_CTRL);
|
|
|
|
reg_block_dump(ap, buf, A_PL_ENABLE, A_PL_CAUSE);
|
|
|
|
reg_block_dump(ap, buf, A_MC5_CONFIG, A_MC5_MASK_WRITE_CMD);
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
2016-12-11 14:47:50 -07:00
|
|
|
static int get_link_ksettings(struct net_device *dev,
|
|
|
|
struct ethtool_link_ksettings *cmd)
|
2005-03-30 14:34:31 -07:00
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
struct port_info *p = &adapter->port[dev->if_port];
|
2016-12-11 14:47:50 -07:00
|
|
|
u32 supported, advertising;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2016-12-11 14:47:50 -07:00
|
|
|
supported = p->link_config.supported;
|
|
|
|
advertising = p->link_config.advertising;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
if (netif_carrier_ok(dev)) {
|
2016-12-11 14:47:50 -07:00
|
|
|
cmd->base.speed = p->link_config.speed;
|
|
|
|
cmd->base.duplex = p->link_config.duplex;
|
2005-03-30 14:34:31 -07:00
|
|
|
} else {
|
2016-12-11 14:47:50 -07:00
|
|
|
cmd->base.speed = SPEED_UNKNOWN;
|
|
|
|
cmd->base.duplex = DUPLEX_UNKNOWN;
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
2016-12-11 14:47:50 -07:00
|
|
|
cmd->base.port = (supported & SUPPORTED_TP) ? PORT_TP : PORT_FIBRE;
|
|
|
|
cmd->base.phy_address = p->phy->mdio.prtad;
|
|
|
|
cmd->base.autoneg = p->link_config.autoneg;
|
|
|
|
|
|
|
|
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,
|
|
|
|
supported);
|
|
|
|
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,
|
|
|
|
advertising);
|
|
|
|
|
2005-03-30 14:34:31 -07:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int speed_duplex_to_caps(int speed, int duplex)
|
|
|
|
{
|
|
|
|
int cap = 0;
|
|
|
|
|
|
|
|
switch (speed) {
|
|
|
|
case SPEED_10:
|
|
|
|
if (duplex == DUPLEX_FULL)
|
|
|
|
cap = SUPPORTED_10baseT_Full;
|
|
|
|
else
|
|
|
|
cap = SUPPORTED_10baseT_Half;
|
|
|
|
break;
|
|
|
|
case SPEED_100:
|
|
|
|
if (duplex == DUPLEX_FULL)
|
|
|
|
cap = SUPPORTED_100baseT_Full;
|
|
|
|
else
|
|
|
|
cap = SUPPORTED_100baseT_Half;
|
|
|
|
break;
|
|
|
|
case SPEED_1000:
|
|
|
|
if (duplex == DUPLEX_FULL)
|
|
|
|
cap = SUPPORTED_1000baseT_Full;
|
|
|
|
else
|
|
|
|
cap = SUPPORTED_1000baseT_Half;
|
|
|
|
break;
|
|
|
|
case SPEED_10000:
|
|
|
|
if (duplex == DUPLEX_FULL)
|
|
|
|
cap = SUPPORTED_10000baseT_Full;
|
|
|
|
}
|
|
|
|
return cap;
|
|
|
|
}
|
|
|
|
|
|
|
|
#define ADVERTISED_MASK (ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full | \
|
|
|
|
ADVERTISED_100baseT_Half | ADVERTISED_100baseT_Full | \
|
|
|
|
ADVERTISED_1000baseT_Half | ADVERTISED_1000baseT_Full | \
|
|
|
|
ADVERTISED_10000baseT_Full)
|
|
|
|
|
2016-12-11 14:47:50 -07:00
|
|
|
static int set_link_ksettings(struct net_device *dev,
|
|
|
|
const struct ethtool_link_ksettings *cmd)
|
2005-03-30 14:34:31 -07:00
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
struct port_info *p = &adapter->port[dev->if_port];
|
|
|
|
struct link_config *lc = &p->link_config;
|
2016-12-11 14:47:50 -07:00
|
|
|
u32 advertising;
|
|
|
|
|
|
|
|
ethtool_convert_link_mode_to_legacy_u32(&advertising,
|
|
|
|
cmd->link_modes.advertising);
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
if (!(lc->supported & SUPPORTED_Autoneg))
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
return -EOPNOTSUPP; /* can't change speed/duplex */
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2016-12-11 14:47:50 -07:00
|
|
|
if (cmd->base.autoneg == AUTONEG_DISABLE) {
|
|
|
|
u32 speed = cmd->base.speed;
|
|
|
|
int cap = speed_duplex_to_caps(speed, cmd->base.duplex);
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2011-04-27 12:32:39 -06:00
|
|
|
if (!(lc->supported & cap) || (speed == SPEED_1000))
|
2005-03-30 14:34:31 -07:00
|
|
|
return -EINVAL;
|
2011-04-27 12:32:39 -06:00
|
|
|
lc->requested_speed = speed;
|
2016-12-11 14:47:50 -07:00
|
|
|
lc->requested_duplex = cmd->base.duplex;
|
2005-03-30 14:34:31 -07:00
|
|
|
lc->advertising = 0;
|
|
|
|
} else {
|
2016-12-11 14:47:50 -07:00
|
|
|
advertising &= ADVERTISED_MASK;
|
|
|
|
if (advertising & (advertising - 1))
|
|
|
|
advertising = lc->supported;
|
|
|
|
advertising &= lc->supported;
|
|
|
|
if (!advertising)
|
2005-03-30 14:34:31 -07:00
|
|
|
return -EINVAL;
|
|
|
|
lc->requested_speed = SPEED_INVALID;
|
|
|
|
lc->requested_duplex = DUPLEX_INVALID;
|
2016-12-11 14:47:50 -07:00
|
|
|
lc->advertising = advertising | ADVERTISED_Autoneg;
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
2016-12-11 14:47:50 -07:00
|
|
|
lc->autoneg = cmd->base.autoneg;
|
2005-03-30 14:34:31 -07:00
|
|
|
if (netif_running(dev))
|
|
|
|
t1_link_start(p->phy, p->mac, lc);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void get_pauseparam(struct net_device *dev,
|
|
|
|
struct ethtool_pauseparam *epause)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
struct port_info *p = &adapter->port[dev->if_port];
|
|
|
|
|
|
|
|
epause->autoneg = (p->link_config.requested_fc & PAUSE_AUTONEG) != 0;
|
|
|
|
epause->rx_pause = (p->link_config.fc & PAUSE_RX) != 0;
|
|
|
|
epause->tx_pause = (p->link_config.fc & PAUSE_TX) != 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int set_pauseparam(struct net_device *dev,
|
|
|
|
struct ethtool_pauseparam *epause)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
struct port_info *p = &adapter->port[dev->if_port];
|
|
|
|
struct link_config *lc = &p->link_config;
|
|
|
|
|
|
|
|
if (epause->autoneg == AUTONEG_DISABLE)
|
|
|
|
lc->requested_fc = 0;
|
|
|
|
else if (lc->supported & SUPPORTED_Autoneg)
|
|
|
|
lc->requested_fc = PAUSE_AUTONEG;
|
|
|
|
else
|
|
|
|
return -EINVAL;
|
|
|
|
|
|
|
|
if (epause->rx_pause)
|
|
|
|
lc->requested_fc |= PAUSE_RX;
|
|
|
|
if (epause->tx_pause)
|
|
|
|
lc->requested_fc |= PAUSE_TX;
|
|
|
|
if (lc->autoneg == AUTONEG_ENABLE) {
|
|
|
|
if (netif_running(dev))
|
|
|
|
t1_link_start(p->phy, p->mac, lc);
|
|
|
|
} else {
|
|
|
|
lc->fc = lc->requested_fc & (PAUSE_RX | PAUSE_TX);
|
|
|
|
if (netif_running(dev))
|
|
|
|
p->mac->ops->set_speed_duplex_fc(p->mac, -1, -1,
|
|
|
|
lc->fc);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
int jumbo_fl = t1_is_T1B(adapter) ? 1 : 0;
|
|
|
|
|
|
|
|
e->rx_max_pending = MAX_RX_BUFFERS;
|
|
|
|
e->rx_jumbo_max_pending = MAX_RX_JUMBO_BUFFERS;
|
|
|
|
e->tx_max_pending = MAX_CMDQ_ENTRIES;
|
|
|
|
|
|
|
|
e->rx_pending = adapter->params.sge.freelQ_size[!jumbo_fl];
|
|
|
|
e->rx_jumbo_pending = adapter->params.sge.freelQ_size[jumbo_fl];
|
|
|
|
e->tx_pending = adapter->params.sge.cmdQ_size[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
int jumbo_fl = t1_is_T1B(adapter) ? 1 : 0;
|
|
|
|
|
|
|
|
if (e->rx_pending > MAX_RX_BUFFERS || e->rx_mini_pending ||
|
|
|
|
e->rx_jumbo_pending > MAX_RX_JUMBO_BUFFERS ||
|
|
|
|
e->tx_pending > MAX_CMDQ_ENTRIES ||
|
|
|
|
e->rx_pending < MIN_FL_ENTRIES ||
|
|
|
|
e->rx_jumbo_pending < MIN_FL_ENTRIES ||
|
|
|
|
e->tx_pending < (adapter->params.nports + 1) * (MAX_SKB_FRAGS + 1))
|
|
|
|
return -EINVAL;
|
|
|
|
|
|
|
|
if (adapter->flags & FULL_INIT_DONE)
|
2006-12-11 15:47:00 -07:00
|
|
|
return -EBUSY;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
adapter->params.sge.freelQ_size[!jumbo_fl] = e->rx_pending;
|
|
|
|
adapter->params.sge.freelQ_size[jumbo_fl] = e->rx_jumbo_pending;
|
|
|
|
adapter->params.sge.cmdQ_size[0] = e->tx_pending;
|
|
|
|
adapter->params.sge.cmdQ_size[1] = e->tx_pending > MAX_CMDQ1_ENTRIES ?
|
|
|
|
MAX_CMDQ1_ENTRIES : e->tx_pending;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int set_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2006-12-08 12:08:33 -07:00
|
|
|
adapter->params.sge.rx_coalesce_usecs = c->rx_coalesce_usecs;
|
2006-12-11 15:47:00 -07:00
|
|
|
adapter->params.sge.coalesce_enable = c->use_adaptive_rx_coalesce;
|
2005-03-30 14:34:31 -07:00
|
|
|
adapter->params.sge.sample_interval_usecs = c->rate_sample_interval;
|
|
|
|
t1_sge_set_coalesce_params(adapter->sge, &adapter->params.sge);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int get_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
c->rx_coalesce_usecs = adapter->params.sge.rx_coalesce_usecs;
|
2005-03-30 14:34:31 -07:00
|
|
|
c->rate_sample_interval = adapter->params.sge.sample_interval_usecs;
|
|
|
|
c->use_adaptive_rx_coalesce = adapter->params.sge.coalesce_enable;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int get_eeprom_len(struct net_device *dev)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2006-12-01 17:36:16 -07:00
|
|
|
|
2006-12-11 15:47:00 -07:00
|
|
|
return t1_is_asic(adapter) ? EEPROM_SIZE : 0;
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
#define EEPROM_MAGIC(ap) \
|
|
|
|
(PCI_VENDOR_ID_CHELSIO | ((ap)->params.chip_version << 16))
|
|
|
|
|
|
|
|
static int get_eeprom(struct net_device *dev, struct ethtool_eeprom *e,
|
|
|
|
u8 *data)
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
u8 buf[EEPROM_SIZE] __attribute__((aligned(4)));
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
e->magic = EEPROM_MAGIC(adapter);
|
|
|
|
for (i = e->offset & ~3; i < e->offset + e->len; i += sizeof(u32))
|
2007-12-22 11:56:33 -07:00
|
|
|
t1_seeprom_read(adapter, i, (__le32 *)&buf[i]);
|
2005-03-30 14:34:31 -07:00
|
|
|
memcpy(data, buf + e->offset, e->len);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2006-09-13 12:30:00 -06:00
|
|
|
static const struct ethtool_ops t1_ethtool_ops = {
|
2020-03-09 20:15:08 -06:00
|
|
|
.supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS |
|
|
|
|
ETHTOOL_COALESCE_USE_ADAPTIVE_RX |
|
|
|
|
ETHTOOL_COALESCE_RATE_SAMPLE_INTERVAL,
|
2005-03-30 14:34:31 -07:00
|
|
|
.get_drvinfo = get_drvinfo,
|
|
|
|
.get_msglevel = get_msglevel,
|
|
|
|
.set_msglevel = set_msglevel,
|
|
|
|
.get_ringparam = get_sge_param,
|
|
|
|
.set_ringparam = set_sge_param,
|
|
|
|
.get_coalesce = get_coalesce,
|
|
|
|
.set_coalesce = set_coalesce,
|
|
|
|
.get_eeprom_len = get_eeprom_len,
|
|
|
|
.get_eeprom = get_eeprom,
|
|
|
|
.get_pauseparam = get_pauseparam,
|
|
|
|
.set_pauseparam = set_pauseparam,
|
|
|
|
.get_link = ethtool_op_get_link,
|
|
|
|
.get_strings = get_strings,
|
2007-10-03 19:07:32 -06:00
|
|
|
.get_sset_count = get_sset_count,
|
2005-03-30 14:34:31 -07:00
|
|
|
.get_ethtool_stats = get_stats,
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
.get_regs_len = get_regs_len,
|
|
|
|
.get_regs = get_regs,
|
2016-12-11 14:47:50 -07:00
|
|
|
.get_link_ksettings = get_link_ksettings,
|
|
|
|
.set_link_ksettings = set_link_ksettings,
|
2005-03-30 14:34:31 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
static int t1_ioctl(struct net_device *dev, struct ifreq *req, int cmd)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2009-04-29 02:06:34 -06:00
|
|
|
struct mdio_if_info *mdio = &adapter->port[dev->if_port].phy->mdio;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2009-04-29 02:06:34 -06:00
|
|
|
return mdio_mii_ioctl(mdio, if_mii(req), cmd);
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static int t1_change_mtu(struct net_device *dev, int new_mtu)
|
|
|
|
{
|
|
|
|
int ret;
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
struct cmac *mac = adapter->port[dev->if_port].mac;
|
|
|
|
|
|
|
|
if (!mac->ops->set_mtu)
|
2006-12-11 15:47:00 -07:00
|
|
|
return -EOPNOTSUPP;
|
2005-03-30 14:34:31 -07:00
|
|
|
if ((ret = mac->ops->set_mtu(mac, new_mtu)))
|
|
|
|
return ret;
|
|
|
|
dev->mtu = new_mtu;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int t1_set_mac_addr(struct net_device *dev, void *p)
|
|
|
|
{
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
struct cmac *mac = adapter->port[dev->if_port].mac;
|
|
|
|
struct sockaddr *addr = p;
|
|
|
|
|
|
|
|
if (!mac->ops->macaddress_set)
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
|
|
memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
|
|
|
|
mac->ops->macaddress_set(mac, dev->dev_addr);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2011-11-15 08:29:55 -07:00
|
|
|
static netdev_features_t t1_fix_features(struct net_device *dev,
|
|
|
|
netdev_features_t features)
|
2005-03-30 14:34:31 -07:00
|
|
|
{
|
2011-07-19 22:54:15 -06:00
|
|
|
/*
|
|
|
|
* Since there is no support for separate rx/tx vlan accel
|
|
|
|
* enable/disable make sure tx flag is always in same state as rx.
|
|
|
|
*/
|
2013-04-18 20:04:27 -06:00
|
|
|
if (features & NETIF_F_HW_VLAN_CTAG_RX)
|
|
|
|
features |= NETIF_F_HW_VLAN_CTAG_TX;
|
2011-07-19 22:54:15 -06:00
|
|
|
else
|
2013-04-18 20:04:27 -06:00
|
|
|
features &= ~NETIF_F_HW_VLAN_CTAG_TX;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2011-07-19 22:54:15 -06:00
|
|
|
return features;
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
2011-11-15 08:29:55 -07:00
|
|
|
static int t1_set_features(struct net_device *dev, netdev_features_t features)
|
2011-07-19 22:54:15 -06:00
|
|
|
{
|
2011-11-15 08:29:55 -07:00
|
|
|
netdev_features_t changed = dev->features ^ features;
|
2011-07-19 22:54:15 -06:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
|
|
|
|
2013-04-18 20:04:27 -06:00
|
|
|
if (changed & NETIF_F_HW_VLAN_CTAG_RX)
|
2011-07-19 22:54:15 -06:00
|
|
|
t1_vlan_mode(adapter, features);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
2005-03-30 14:34:31 -07:00
|
|
|
#ifdef CONFIG_NET_POLL_CONTROLLER
|
|
|
|
static void t1_netpoll(struct net_device *dev)
|
|
|
|
{
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
unsigned long flags;
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
local_irq_save(flags);
|
2006-12-08 12:08:33 -07:00
|
|
|
t1_interrupt(adapter->pdev->irq, adapter);
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
local_irq_restore(flags);
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Periodic accumulation of MAC statistics. This is used only if the MAC
|
|
|
|
* does not have any other way to prevent stats counter overflow.
|
|
|
|
*/
|
2006-11-22 07:57:56 -07:00
|
|
|
static void mac_stats_task(struct work_struct *work)
|
2005-03-30 14:34:31 -07:00
|
|
|
{
|
|
|
|
int i;
|
2006-11-22 07:57:56 -07:00
|
|
|
struct adapter *adapter =
|
|
|
|
container_of(work, struct adapter, stats_update_task.work);
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
for_each_port(adapter, i) {
|
|
|
|
struct port_info *p = &adapter->port[i];
|
|
|
|
|
|
|
|
if (netif_running(p->dev))
|
|
|
|
p->mac->ops->statistics_update(p->mac,
|
|
|
|
MAC_STATS_UPDATE_FAST);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Schedule the next statistics update if any port is active. */
|
|
|
|
spin_lock(&adapter->work_lock);
|
|
|
|
if (adapter->open_device_map & PORT_MASK)
|
|
|
|
schedule_mac_stats_update(adapter,
|
|
|
|
adapter->params.stats_update_period);
|
|
|
|
spin_unlock(&adapter->work_lock);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Processes elmer0 external interrupts in process context.
|
|
|
|
*/
|
2006-11-22 07:57:56 -07:00
|
|
|
static void ext_intr_task(struct work_struct *work)
|
2005-03-30 14:34:31 -07:00
|
|
|
{
|
2006-11-22 07:57:56 -07:00
|
|
|
struct adapter *adapter =
|
|
|
|
container_of(work, struct adapter, ext_intr_handler_task);
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2006-12-01 17:36:16 -07:00
|
|
|
t1_elmer0_ext_intr_handler(adapter);
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
/* Now reenable external interrupts */
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
spin_lock_irq(&adapter->async_lock);
|
2005-03-30 14:34:31 -07:00
|
|
|
adapter->slow_intr_mask |= F_PL_INTR_EXT;
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
writel(F_PL_INTR_EXT, adapter->regs + A_PL_CAUSE);
|
|
|
|
writel(adapter->slow_intr_mask | F_PL_INTR_SGE_DATA,
|
2006-11-17 12:21:22 -07:00
|
|
|
adapter->regs + A_PL_ENABLE);
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
spin_unlock_irq(&adapter->async_lock);
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Interrupt-context handler for elmer0 external interrupts.
|
|
|
|
*/
|
|
|
|
void t1_elmer0_ext_intr(struct adapter *adapter)
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
* Schedule a task to handle external interrupts as we require
|
|
|
|
* a process context. We disable EXT interrupts in the interim
|
|
|
|
* and let the task reenable them when it's done.
|
|
|
|
*/
|
|
|
|
adapter->slow_intr_mask &= ~F_PL_INTR_EXT;
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
writel(adapter->slow_intr_mask | F_PL_INTR_SGE_DATA,
|
2006-11-17 12:21:22 -07:00
|
|
|
adapter->regs + A_PL_ENABLE);
|
2005-03-30 14:34:31 -07:00
|
|
|
schedule_work(&adapter->ext_intr_handler_task);
|
|
|
|
}
|
|
|
|
|
|
|
|
void t1_fatal_err(struct adapter *adapter)
|
|
|
|
{
|
|
|
|
if (adapter->flags & FULL_INIT_DONE) {
|
|
|
|
t1_sge_stop(adapter->sge);
|
|
|
|
t1_interrupts_disable(adapter);
|
|
|
|
}
|
2010-02-22 09:56:57 -07:00
|
|
|
pr_alert("%s: encountered fatal error, operation suspended\n",
|
2005-03-30 14:34:31 -07:00
|
|
|
adapter->name);
|
|
|
|
}
|
|
|
|
|
2008-11-19 23:17:06 -07:00
|
|
|
static const struct net_device_ops cxgb_netdev_ops = {
|
|
|
|
.ndo_open = cxgb_open,
|
|
|
|
.ndo_stop = cxgb_close,
|
2008-11-20 21:14:53 -07:00
|
|
|
.ndo_start_xmit = t1_start_xmit,
|
2008-11-19 23:17:06 -07:00
|
|
|
.ndo_get_stats = t1_get_stats,
|
|
|
|
.ndo_validate_addr = eth_validate_addr,
|
2011-08-16 00:29:01 -06:00
|
|
|
.ndo_set_rx_mode = t1_set_rxmode,
|
2008-11-19 23:17:06 -07:00
|
|
|
.ndo_do_ioctl = t1_ioctl,
|
|
|
|
.ndo_change_mtu = t1_change_mtu,
|
|
|
|
.ndo_set_mac_address = t1_set_mac_addr,
|
2011-07-19 22:54:15 -06:00
|
|
|
.ndo_fix_features = t1_fix_features,
|
|
|
|
.ndo_set_features = t1_set_features,
|
2008-11-19 23:17:06 -07:00
|
|
|
#ifdef CONFIG_NET_POLL_CONTROLLER
|
|
|
|
.ndo_poll_controller = t1_netpoll,
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
2012-12-06 07:30:56 -07:00
|
|
|
static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
2005-03-30 14:34:31 -07:00
|
|
|
{
|
|
|
|
int i, err, pci_using_dac = 0;
|
|
|
|
unsigned long mmio_start, mmio_len;
|
|
|
|
const struct board_info *bi;
|
|
|
|
struct adapter *adapter = NULL;
|
|
|
|
struct port_info *pi;
|
|
|
|
|
|
|
|
err = pci_enable_device(pdev);
|
|
|
|
if (err)
|
2006-11-17 12:21:22 -07:00
|
|
|
return err;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM)) {
|
2010-02-22 09:56:57 -07:00
|
|
|
pr_err("%s: cannot find PCI device memory base address\n",
|
2005-03-30 14:34:31 -07:00
|
|
|
pci_name(pdev));
|
|
|
|
err = -ENODEV;
|
|
|
|
goto out_disable_pdev;
|
|
|
|
}
|
|
|
|
|
chelsio: switch from 'pci_' to 'dma_' API
The wrappers in include/linux/pci-dma-compat.h should go away.
The patch has been generated with the coccinelle script below and has been
hand modified to replace GFP_ with a correct flag.
It has been compile tested.
When memory is allocated in 'free_rx_resources()' and
'alloc_tx_resources()' (sge.c) GFP_KERNEL can be used because it is
already used in these functions.
Moreover, they can only be called from a .ndo_open function. So it is
guarded by the 'rtnl_lock()', which is a mutex.
While at it, a pr_err message in 'init_one()' has been updated accordingly
(s/consistent/coherent).
@@
@@
- PCI_DMA_BIDIRECTIONAL
+ DMA_BIDIRECTIONAL
@@
@@
- PCI_DMA_TODEVICE
+ DMA_TO_DEVICE
@@
@@
- PCI_DMA_FROMDEVICE
+ DMA_FROM_DEVICE
@@
@@
- PCI_DMA_NONE
+ DMA_NONE
@@
expression e1, e2, e3;
@@
- pci_alloc_consistent(e1, e2, e3)
+ dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
@@
expression e1, e2, e3;
@@
- pci_zalloc_consistent(e1, e2, e3)
+ dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
@@
expression e1, e2, e3, e4;
@@
- pci_free_consistent(e1, e2, e3, e4)
+ dma_free_coherent(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_map_single(e1, e2, e3, e4)
+ dma_map_single(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_unmap_single(e1, e2, e3, e4)
+ dma_unmap_single(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4, e5;
@@
- pci_map_page(e1, e2, e3, e4, e5)
+ dma_map_page(&e1->dev, e2, e3, e4, e5)
@@
expression e1, e2, e3, e4;
@@
- pci_unmap_page(e1, e2, e3, e4)
+ dma_unmap_page(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_map_sg(e1, e2, e3, e4)
+ dma_map_sg(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_unmap_sg(e1, e2, e3, e4)
+ dma_unmap_sg(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
+ dma_sync_single_for_cpu(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_single_for_device(e1, e2, e3, e4)
+ dma_sync_single_for_device(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
+ dma_sync_sg_for_cpu(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_sg_for_device(e1, e2, e3, e4)
+ dma_sync_sg_for_device(&e1->dev, e2, e3, e4)
@@
expression e1, e2;
@@
- pci_dma_mapping_error(e1, e2)
+ dma_mapping_error(&e1->dev, e2)
@@
expression e1, e2;
@@
- pci_set_dma_mask(e1, e2)
+ dma_set_mask(&e1->dev, e2)
@@
expression e1, e2;
@@
- pci_set_consistent_dma_mask(e1, e2)
+ dma_set_coherent_mask(&e1->dev, e2)
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-08-23 02:36:48 -06:00
|
|
|
if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(64))) {
|
2005-03-30 14:34:31 -07:00
|
|
|
pci_using_dac = 1;
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
|
chelsio: switch from 'pci_' to 'dma_' API
The wrappers in include/linux/pci-dma-compat.h should go away.
The patch has been generated with the coccinelle script below and has been
hand modified to replace GFP_ with a correct flag.
It has been compile tested.
When memory is allocated in 'free_rx_resources()' and
'alloc_tx_resources()' (sge.c) GFP_KERNEL can be used because it is
already used in these functions.
Moreover, they can only be called from a .ndo_open function. So it is
guarded by the 'rtnl_lock()', which is a mutex.
While at it, a pr_err message in 'init_one()' has been updated accordingly
(s/consistent/coherent).
@@
@@
- PCI_DMA_BIDIRECTIONAL
+ DMA_BIDIRECTIONAL
@@
@@
- PCI_DMA_TODEVICE
+ DMA_TO_DEVICE
@@
@@
- PCI_DMA_FROMDEVICE
+ DMA_FROM_DEVICE
@@
@@
- PCI_DMA_NONE
+ DMA_NONE
@@
expression e1, e2, e3;
@@
- pci_alloc_consistent(e1, e2, e3)
+ dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
@@
expression e1, e2, e3;
@@
- pci_zalloc_consistent(e1, e2, e3)
+ dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
@@
expression e1, e2, e3, e4;
@@
- pci_free_consistent(e1, e2, e3, e4)
+ dma_free_coherent(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_map_single(e1, e2, e3, e4)
+ dma_map_single(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_unmap_single(e1, e2, e3, e4)
+ dma_unmap_single(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4, e5;
@@
- pci_map_page(e1, e2, e3, e4, e5)
+ dma_map_page(&e1->dev, e2, e3, e4, e5)
@@
expression e1, e2, e3, e4;
@@
- pci_unmap_page(e1, e2, e3, e4)
+ dma_unmap_page(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_map_sg(e1, e2, e3, e4)
+ dma_map_sg(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_unmap_sg(e1, e2, e3, e4)
+ dma_unmap_sg(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
+ dma_sync_single_for_cpu(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_single_for_device(e1, e2, e3, e4)
+ dma_sync_single_for_device(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
+ dma_sync_sg_for_cpu(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_sg_for_device(e1, e2, e3, e4)
+ dma_sync_sg_for_device(&e1->dev, e2, e3, e4)
@@
expression e1, e2;
@@
- pci_dma_mapping_error(e1, e2)
+ dma_mapping_error(&e1->dev, e2)
@@
expression e1, e2;
@@
- pci_set_dma_mask(e1, e2)
+ dma_set_mask(&e1->dev, e2)
@@
expression e1, e2;
@@
- pci_set_consistent_dma_mask(e1, e2)
+ dma_set_coherent_mask(&e1->dev, e2)
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-08-23 02:36:48 -06:00
|
|
|
if (dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) {
|
|
|
|
pr_err("%s: unable to obtain 64-bit DMA for coherent allocations\n",
|
|
|
|
pci_name(pdev));
|
2005-03-30 14:34:31 -07:00
|
|
|
err = -ENODEV;
|
|
|
|
goto out_disable_pdev;
|
|
|
|
}
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
|
chelsio: switch from 'pci_' to 'dma_' API
The wrappers in include/linux/pci-dma-compat.h should go away.
The patch has been generated with the coccinelle script below and has been
hand modified to replace GFP_ with a correct flag.
It has been compile tested.
When memory is allocated in 'free_rx_resources()' and
'alloc_tx_resources()' (sge.c) GFP_KERNEL can be used because it is
already used in these functions.
Moreover, they can only be called from a .ndo_open function. So it is
guarded by the 'rtnl_lock()', which is a mutex.
While at it, a pr_err message in 'init_one()' has been updated accordingly
(s/consistent/coherent).
@@
@@
- PCI_DMA_BIDIRECTIONAL
+ DMA_BIDIRECTIONAL
@@
@@
- PCI_DMA_TODEVICE
+ DMA_TO_DEVICE
@@
@@
- PCI_DMA_FROMDEVICE
+ DMA_FROM_DEVICE
@@
@@
- PCI_DMA_NONE
+ DMA_NONE
@@
expression e1, e2, e3;
@@
- pci_alloc_consistent(e1, e2, e3)
+ dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
@@
expression e1, e2, e3;
@@
- pci_zalloc_consistent(e1, e2, e3)
+ dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
@@
expression e1, e2, e3, e4;
@@
- pci_free_consistent(e1, e2, e3, e4)
+ dma_free_coherent(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_map_single(e1, e2, e3, e4)
+ dma_map_single(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_unmap_single(e1, e2, e3, e4)
+ dma_unmap_single(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4, e5;
@@
- pci_map_page(e1, e2, e3, e4, e5)
+ dma_map_page(&e1->dev, e2, e3, e4, e5)
@@
expression e1, e2, e3, e4;
@@
- pci_unmap_page(e1, e2, e3, e4)
+ dma_unmap_page(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_map_sg(e1, e2, e3, e4)
+ dma_map_sg(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_unmap_sg(e1, e2, e3, e4)
+ dma_unmap_sg(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
+ dma_sync_single_for_cpu(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_single_for_device(e1, e2, e3, e4)
+ dma_sync_single_for_device(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
+ dma_sync_sg_for_cpu(&e1->dev, e2, e3, e4)
@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_sg_for_device(e1, e2, e3, e4)
+ dma_sync_sg_for_device(&e1->dev, e2, e3, e4)
@@
expression e1, e2;
@@
- pci_dma_mapping_error(e1, e2)
+ dma_mapping_error(&e1->dev, e2)
@@
expression e1, e2;
@@
- pci_set_dma_mask(e1, e2)
+ dma_set_mask(&e1->dev, e2)
@@
expression e1, e2;
@@
- pci_set_consistent_dma_mask(e1, e2)
+ dma_set_coherent_mask(&e1->dev, e2)
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-08-23 02:36:48 -06:00
|
|
|
} else if ((err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) != 0) {
|
2010-02-22 09:56:57 -07:00
|
|
|
pr_err("%s: no usable DMA configuration\n", pci_name(pdev));
|
2005-03-30 14:34:31 -07:00
|
|
|
goto out_disable_pdev;
|
|
|
|
}
|
|
|
|
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
err = pci_request_regions(pdev, DRV_NAME);
|
2005-03-30 14:34:31 -07:00
|
|
|
if (err) {
|
2010-02-22 09:56:57 -07:00
|
|
|
pr_err("%s: cannot obtain PCI resources\n", pci_name(pdev));
|
2005-03-30 14:34:31 -07:00
|
|
|
goto out_disable_pdev;
|
|
|
|
}
|
|
|
|
|
|
|
|
pci_set_master(pdev);
|
|
|
|
|
2006-11-17 12:21:22 -07:00
|
|
|
mmio_start = pci_resource_start(pdev, 0);
|
2005-03-30 14:34:31 -07:00
|
|
|
mmio_len = pci_resource_len(pdev, 0);
|
|
|
|
bi = t1_get_board_info(ent->driver_data);
|
|
|
|
|
|
|
|
for (i = 0; i < bi->port_number; ++i) {
|
|
|
|
struct net_device *netdev;
|
|
|
|
|
|
|
|
netdev = alloc_etherdev(adapter ? 0 : sizeof(*adapter));
|
|
|
|
if (!netdev) {
|
|
|
|
err = -ENOMEM;
|
|
|
|
goto out_free_dev;
|
|
|
|
}
|
|
|
|
|
|
|
|
SET_NETDEV_DEV(netdev, &pdev->dev);
|
|
|
|
|
|
|
|
if (!adapter) {
|
2008-11-17 00:06:39 -07:00
|
|
|
adapter = netdev_priv(netdev);
|
2005-03-30 14:34:31 -07:00
|
|
|
adapter->pdev = pdev;
|
|
|
|
adapter->port[0].dev = netdev; /* so we don't leak it */
|
|
|
|
|
|
|
|
adapter->regs = ioremap(mmio_start, mmio_len);
|
|
|
|
if (!adapter->regs) {
|
2010-02-22 09:56:57 -07:00
|
|
|
pr_err("%s: cannot map device registers\n",
|
2005-03-30 14:34:31 -07:00
|
|
|
pci_name(pdev));
|
|
|
|
err = -ENOMEM;
|
|
|
|
goto out_free_dev;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (t1_get_board_rev(adapter, bi, &adapter->params)) {
|
|
|
|
err = -ENODEV; /* Can't handle this chip rev */
|
|
|
|
goto out_free_dev;
|
|
|
|
}
|
|
|
|
|
|
|
|
adapter->name = pci_name(pdev);
|
|
|
|
adapter->msg_enable = dflt_msg_enable;
|
|
|
|
adapter->mmio_len = mmio_len;
|
|
|
|
|
|
|
|
spin_lock_init(&adapter->tpi_lock);
|
|
|
|
spin_lock_init(&adapter->work_lock);
|
|
|
|
spin_lock_init(&adapter->async_lock);
|
2006-12-01 17:36:17 -07:00
|
|
|
spin_lock_init(&adapter->mac_lock);
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
INIT_WORK(&adapter->ext_intr_handler_task,
|
2006-11-22 07:57:56 -07:00
|
|
|
ext_intr_task);
|
|
|
|
INIT_DELAYED_WORK(&adapter->stats_update_task,
|
|
|
|
mac_stats_task);
|
2005-03-30 14:34:31 -07:00
|
|
|
|
|
|
|
pci_set_drvdata(pdev, netdev);
|
|
|
|
}
|
|
|
|
|
|
|
|
pi = &adapter->port[i];
|
|
|
|
pi->dev = netdev;
|
|
|
|
netif_carrier_off(netdev);
|
|
|
|
netdev->irq = pdev->irq;
|
|
|
|
netdev->if_port = i;
|
|
|
|
netdev->mem_start = mmio_start;
|
|
|
|
netdev->mem_end = mmio_start + mmio_len - 1;
|
2008-11-17 00:06:39 -07:00
|
|
|
netdev->ml_priv = adapter;
|
2011-04-18 07:31:20 -06:00
|
|
|
netdev->hw_features |= NETIF_F_SG | NETIF_F_IP_CSUM |
|
|
|
|
NETIF_F_RXCSUM;
|
|
|
|
netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM |
|
|
|
|
NETIF_F_RXCSUM | NETIF_F_LLTX;
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
|
2005-03-30 14:34:31 -07:00
|
|
|
if (pci_using_dac)
|
|
|
|
netdev->features |= NETIF_F_HIGHDMA;
|
|
|
|
if (vlan_tso_capable(adapter)) {
|
|
|
|
netdev->features |=
|
2013-04-18 20:04:27 -06:00
|
|
|
NETIF_F_HW_VLAN_CTAG_TX |
|
|
|
|
NETIF_F_HW_VLAN_CTAG_RX;
|
|
|
|
netdev->hw_features |= NETIF_F_HW_VLAN_CTAG_RX;
|
2006-12-01 17:36:16 -07:00
|
|
|
|
|
|
|
/* T204: disable TSO */
|
|
|
|
if (!(is_T2(adapter)) || bi->port_number != 4) {
|
2011-04-18 07:31:20 -06:00
|
|
|
netdev->hw_features |= NETIF_F_TSO;
|
2006-12-01 17:36:16 -07:00
|
|
|
netdev->features |= NETIF_F_TSO;
|
|
|
|
}
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
2008-11-19 23:17:06 -07:00
|
|
|
netdev->netdev_ops = &cxgb_netdev_ops;
|
2011-04-18 07:31:20 -06:00
|
|
|
netdev->hard_header_len += (netdev->hw_features & NETIF_F_TSO) ?
|
2006-12-01 17:36:16 -07:00
|
|
|
sizeof(struct cpl_tx_pkt_lso) : sizeof(struct cpl_tx_pkt);
|
2008-11-19 23:17:06 -07:00
|
|
|
|
[NET]: Make NAPI polling independent of struct net_device objects.
Several devices have multiple independant RX queues per net
device, and some have a single interrupt doorbell for several
queues.
In either case, it's easier to support layouts like that if the
structure representing the poll is independant from the net
device itself.
The signature of the ->poll() call back goes from:
int foo_poll(struct net_device *dev, int *budget)
to
int foo_poll(struct napi_struct *napi, int budget)
The caller is returned the number of RX packets processed (or
the number of "NAPI credits" consumed if you want to get
abstract). The callee no longer messes around bumping
dev->quota, *budget, etc. because that is all handled in the
caller upon return.
The napi_struct is to be embedded in the device driver private data
structures.
Furthermore, it is the driver's responsibility to disable all NAPI
instances in it's ->stop() device close handler. Since the
napi_struct is privatized into the driver's private data structures,
only the driver knows how to get at all of the napi_struct instances
it may have per-device.
With lots of help and suggestions from Rusty Russell, Roland Dreier,
Michael Chan, Jeff Garzik, and Jamal Hadi Salim.
Bug fixes from Thomas Graf, Roland Dreier, Peter Zijlstra,
Joseph Fannin, Scott Wood, Hans J. Koch, and Michael Chan.
[ Ported to current tree and all drivers converted. Integrated
Stephen's follow-on kerneldoc additions, and restored poll_list
handling to the old style to fix mutual exclusion issues. -DaveM ]
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-10-03 17:41:36 -06:00
|
|
|
netif_napi_add(netdev, &adapter->napi, t1_poll, 64);
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2014-05-10 18:12:32 -06:00
|
|
|
netdev->ethtool_ops = &t1_ethtool_ops;
|
ethernet: use core min/max MTU checking
et131x: min_mtu 64, max_mtu 9216
altera_tse: min_mtu 64, max_mtu 1500
amd8111e: min_mtu 60, max_mtu 9000
bnad: min_mtu 46, max_mtu 9000
macb: min_mtu 68, max_mtu 1500 or 10240 depending on hardware capability
xgmac: min_mtu 46, max_mtu 9000
cxgb2: min_mtu 68, max_mtu 9582 (pm3393) or 9600 (vsc7326)
enic: min_mtu 68, max_mtu 9000
gianfar: min_mtu 50, max_mu 9586
hns_enet: min_mtu 68, max_mtu 9578 (v1) or 9706 (v2)
ksz884x: min_mtu 60, max_mtu 1894
myri10ge: min_mtu 68, max_mtu 9000
natsemi: min_mtu 64, max_mtu 2024
nfp: min_mtu 68, max_mtu hardware-specific
forcedeth: min_mtu 64, max_mtu 1500 or 9100, depending on hardware
pch_gbe: min_mtu 46, max_mtu 10300
pasemi_mac: min_mtu 64, max_mtu 9000
qcaspi: min_mtu 46, max_mtu 1500
- remove qcaspi_netdev_change_mtu as it is now redundant
rocker: min_mtu 68, max_mtu 9000
sxgbe: min_mtu 68, max_mtu 9000
stmmac: min_mtu 46, max_mtu depends on hardware
tehuti: min_mtu 60, max_mtu 16384
- driver had no max mtu checking, but product docs say 16k jumbo packets
are supported by the hardware
netcp: min_mtu 68, max_mtu 9486
- remove netcp_ndo_change_mtu as it is now redundant
via-velocity: min_mtu 64, max_mtu 9000
octeon: min_mtu 46, max_mtu 65370
CC: netdev@vger.kernel.org
CC: Mark Einon <mark.einon@gmail.com>
CC: Vince Bridgers <vbridger@opensource.altera.com>
CC: Rasesh Mody <rasesh.mody@qlogic.com>
CC: Nicolas Ferre <nicolas.ferre@atmel.com>
CC: Santosh Raspatur <santosh@chelsio.com>
CC: Hariprasad S <hariprasad@chelsio.com>
CC: Christian Benvenuti <benve@cisco.com>
CC: Sujith Sankar <ssujith@cisco.com>
CC: Govindarajulu Varadarajan <_govind@gmx.com>
CC: Neel Patel <neepatel@cisco.com>
CC: Claudiu Manoil <claudiu.manoil@freescale.com>
CC: Yisen Zhuang <yisen.zhuang@huawei.com>
CC: Salil Mehta <salil.mehta@huawei.com>
CC: Hyong-Youb Kim <hykim@myri.com>
CC: Jakub Kicinski <jakub.kicinski@netronome.com>
CC: Olof Johansson <olof@lixom.net>
CC: Jiri Pirko <jiri@resnulli.us>
CC: Byungho An <bh74.an@samsung.com>
CC: Girish K S <ks.giri@samsung.com>
CC: Vipul Pandya <vipul.pandya@samsung.com>
CC: Giuseppe Cavallaro <peppe.cavallaro@st.com>
CC: Alexandre Torgue <alexandre.torgue@st.com>
CC: Andy Gospodarek <andy@greyhouse.net>
CC: Wingman Kwok <w-kwok2@ti.com>
CC: Murali Karicheri <m-karicheri2@ti.com>
CC: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-10-17 13:54:17 -06:00
|
|
|
|
|
|
|
switch (bi->board) {
|
|
|
|
case CHBT_BOARD_CHT110:
|
|
|
|
case CHBT_BOARD_N110:
|
|
|
|
case CHBT_BOARD_N210:
|
|
|
|
case CHBT_BOARD_CHT210:
|
|
|
|
netdev->max_mtu = PM3393_MAX_FRAME_SIZE -
|
|
|
|
(ETH_HLEN + ETH_FCS_LEN);
|
|
|
|
break;
|
|
|
|
case CHBT_BOARD_CHN204:
|
|
|
|
netdev->max_mtu = VSC7326_MAX_MTU;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
netdev->max_mtu = ETH_DATA_LEN;
|
|
|
|
break;
|
|
|
|
}
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
if (t1_init_sw_modules(adapter, bi) < 0) {
|
|
|
|
err = -ENODEV;
|
|
|
|
goto out_free_dev;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The card is now ready to go. If any errors occur during device
|
|
|
|
* registration we do not fail the whole card but rather proceed only
|
|
|
|
* with the ports we manage to register successfully. However we must
|
|
|
|
* register at least one net device.
|
|
|
|
*/
|
|
|
|
for (i = 0; i < bi->port_number; ++i) {
|
|
|
|
err = register_netdev(adapter->port[i].dev);
|
|
|
|
if (err)
|
2013-01-06 06:34:49 -07:00
|
|
|
pr_warn("%s: cannot register net device %s, skipping\n",
|
|
|
|
pci_name(pdev), adapter->port[i].dev->name);
|
2005-03-30 14:34:31 -07:00
|
|
|
else {
|
|
|
|
/*
|
|
|
|
* Change the name we use for messages to the name of
|
|
|
|
* the first successfully registered interface.
|
|
|
|
*/
|
|
|
|
if (!adapter->registered_device_map)
|
|
|
|
adapter->name = adapter->port[i].dev->name;
|
|
|
|
|
2006-11-17 12:21:22 -07:00
|
|
|
__set_bit(i, &adapter->registered_device_map);
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!adapter->registered_device_map) {
|
2010-02-22 09:56:57 -07:00
|
|
|
pr_err("%s: could not register any net devices\n",
|
2005-03-30 14:34:31 -07:00
|
|
|
pci_name(pdev));
|
|
|
|
goto out_release_adapter_res;
|
|
|
|
}
|
|
|
|
|
2013-01-06 06:34:49 -07:00
|
|
|
pr_info("%s: %s (rev %d), %s %dMHz/%d-bit\n",
|
|
|
|
adapter->name, bi->desc, adapter->params.chip_revision,
|
|
|
|
adapter->params.pci.is_pcix ? "PCIX" : "PCI",
|
|
|
|
adapter->params.pci.speed, adapter->params.pci.width);
|
2006-12-01 17:36:16 -07:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Set the T1B ASIC and memory clocks.
|
|
|
|
*/
|
|
|
|
if (t1powersave)
|
|
|
|
adapter->t1powersave = LCLOCK; /* HW default is powersave mode. */
|
|
|
|
else
|
|
|
|
adapter->t1powersave = HCLOCK;
|
|
|
|
if (t1_is_T1B(adapter))
|
|
|
|
t1_clock(adapter, t1powersave);
|
|
|
|
|
2005-03-30 14:34:31 -07:00
|
|
|
return 0;
|
|
|
|
|
2006-12-11 15:47:00 -07:00
|
|
|
out_release_adapter_res:
|
2005-03-30 14:34:31 -07:00
|
|
|
t1_free_sw_modules(adapter);
|
2006-12-11 15:47:00 -07:00
|
|
|
out_free_dev:
|
2005-03-30 14:34:31 -07:00
|
|
|
if (adapter) {
|
2006-11-17 12:25:23 -07:00
|
|
|
if (adapter->regs)
|
|
|
|
iounmap(adapter->regs);
|
2005-03-30 14:34:31 -07:00
|
|
|
for (i = bi->port_number - 1; i >= 0; --i)
|
2006-11-17 12:25:23 -07:00
|
|
|
if (adapter->port[i].dev)
|
|
|
|
free_netdev(adapter->port[i].dev);
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
pci_release_regions(pdev);
|
2006-12-11 15:47:00 -07:00
|
|
|
out_disable_pdev:
|
2005-03-30 14:34:31 -07:00
|
|
|
pci_disable_device(pdev);
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
2006-12-01 17:36:16 -07:00
|
|
|
static void bit_bang(struct adapter *adapter, int bitdata, int nbits)
|
|
|
|
{
|
|
|
|
int data;
|
|
|
|
int i;
|
|
|
|
u32 val;
|
|
|
|
|
|
|
|
enum {
|
|
|
|
S_CLOCK = 1 << 3,
|
|
|
|
S_DATA = 1 << 4
|
|
|
|
};
|
|
|
|
|
|
|
|
for (i = (nbits - 1); i > -1; i--) {
|
|
|
|
|
|
|
|
udelay(50);
|
|
|
|
|
|
|
|
data = ((bitdata >> i) & 0x1);
|
|
|
|
__t1_tpi_read(adapter, A_ELMER0_GPO, &val);
|
|
|
|
|
|
|
|
if (data)
|
|
|
|
val |= S_DATA;
|
|
|
|
else
|
|
|
|
val &= ~S_DATA;
|
|
|
|
|
|
|
|
udelay(50);
|
|
|
|
|
|
|
|
/* Set SCLOCK low */
|
|
|
|
val &= ~S_CLOCK;
|
|
|
|
__t1_tpi_write(adapter, A_ELMER0_GPO, val);
|
|
|
|
|
|
|
|
udelay(50);
|
|
|
|
|
|
|
|
/* Write SCLOCK high */
|
|
|
|
val |= S_CLOCK;
|
|
|
|
__t1_tpi_write(adapter, A_ELMER0_GPO, val);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static int t1_clock(struct adapter *adapter, int mode)
|
|
|
|
{
|
|
|
|
u32 val;
|
|
|
|
int M_CORE_VAL;
|
|
|
|
int M_MEM_VAL;
|
|
|
|
|
|
|
|
enum {
|
2006-12-11 15:47:00 -07:00
|
|
|
M_CORE_BITS = 9,
|
|
|
|
T_CORE_VAL = 0,
|
|
|
|
T_CORE_BITS = 2,
|
|
|
|
N_CORE_VAL = 0,
|
|
|
|
N_CORE_BITS = 2,
|
|
|
|
M_MEM_BITS = 9,
|
|
|
|
T_MEM_VAL = 0,
|
|
|
|
T_MEM_BITS = 2,
|
|
|
|
N_MEM_VAL = 0,
|
|
|
|
N_MEM_BITS = 2,
|
|
|
|
NP_LOAD = 1 << 17,
|
|
|
|
S_LOAD_MEM = 1 << 5,
|
|
|
|
S_LOAD_CORE = 1 << 6,
|
|
|
|
S_CLOCK = 1 << 3
|
2006-12-01 17:36:16 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
if (!t1_is_T1B(adapter))
|
|
|
|
return -ENODEV; /* Can't re-clock this chip. */
|
|
|
|
|
2006-12-11 15:49:13 -07:00
|
|
|
if (mode & 2)
|
2006-12-01 17:36:16 -07:00
|
|
|
return 0; /* show current mode. */
|
|
|
|
|
|
|
|
if ((adapter->t1powersave & 1) == (mode & 1))
|
|
|
|
return -EALREADY; /* ASIC already running in mode. */
|
|
|
|
|
|
|
|
if ((mode & 1) == HCLOCK) {
|
|
|
|
M_CORE_VAL = 0x14;
|
|
|
|
M_MEM_VAL = 0x18;
|
|
|
|
adapter->t1powersave = HCLOCK; /* overclock */
|
|
|
|
} else {
|
|
|
|
M_CORE_VAL = 0xe;
|
|
|
|
M_MEM_VAL = 0x10;
|
|
|
|
adapter->t1powersave = LCLOCK; /* underclock */
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Don't interrupt this serial stream! */
|
|
|
|
spin_lock(&adapter->tpi_lock);
|
|
|
|
|
|
|
|
/* Initialize for ASIC core */
|
|
|
|
__t1_tpi_read(adapter, A_ELMER0_GPO, &val);
|
|
|
|
val |= NP_LOAD;
|
|
|
|
udelay(50);
|
|
|
|
__t1_tpi_write(adapter, A_ELMER0_GPO, val);
|
|
|
|
udelay(50);
|
|
|
|
__t1_tpi_read(adapter, A_ELMER0_GPO, &val);
|
|
|
|
val &= ~S_LOAD_CORE;
|
|
|
|
val &= ~S_CLOCK;
|
|
|
|
__t1_tpi_write(adapter, A_ELMER0_GPO, val);
|
|
|
|
udelay(50);
|
|
|
|
|
|
|
|
/* Serial program the ASIC clock synthesizer */
|
|
|
|
bit_bang(adapter, T_CORE_VAL, T_CORE_BITS);
|
|
|
|
bit_bang(adapter, N_CORE_VAL, N_CORE_BITS);
|
|
|
|
bit_bang(adapter, M_CORE_VAL, M_CORE_BITS);
|
|
|
|
udelay(50);
|
|
|
|
|
|
|
|
/* Finish ASIC core */
|
|
|
|
__t1_tpi_read(adapter, A_ELMER0_GPO, &val);
|
|
|
|
val |= S_LOAD_CORE;
|
|
|
|
udelay(50);
|
|
|
|
__t1_tpi_write(adapter, A_ELMER0_GPO, val);
|
|
|
|
udelay(50);
|
|
|
|
__t1_tpi_read(adapter, A_ELMER0_GPO, &val);
|
|
|
|
val &= ~S_LOAD_CORE;
|
|
|
|
udelay(50);
|
|
|
|
__t1_tpi_write(adapter, A_ELMER0_GPO, val);
|
|
|
|
udelay(50);
|
|
|
|
|
|
|
|
/* Initialize for memory */
|
|
|
|
__t1_tpi_read(adapter, A_ELMER0_GPO, &val);
|
|
|
|
val |= NP_LOAD;
|
|
|
|
udelay(50);
|
|
|
|
__t1_tpi_write(adapter, A_ELMER0_GPO, val);
|
|
|
|
udelay(50);
|
|
|
|
__t1_tpi_read(adapter, A_ELMER0_GPO, &val);
|
|
|
|
val &= ~S_LOAD_MEM;
|
|
|
|
val &= ~S_CLOCK;
|
|
|
|
udelay(50);
|
|
|
|
__t1_tpi_write(adapter, A_ELMER0_GPO, val);
|
|
|
|
udelay(50);
|
|
|
|
|
|
|
|
/* Serial program the memory clock synthesizer */
|
|
|
|
bit_bang(adapter, T_MEM_VAL, T_MEM_BITS);
|
|
|
|
bit_bang(adapter, N_MEM_VAL, N_MEM_BITS);
|
|
|
|
bit_bang(adapter, M_MEM_VAL, M_MEM_BITS);
|
|
|
|
udelay(50);
|
|
|
|
|
|
|
|
/* Finish memory */
|
|
|
|
__t1_tpi_read(adapter, A_ELMER0_GPO, &val);
|
|
|
|
val |= S_LOAD_MEM;
|
|
|
|
udelay(50);
|
|
|
|
__t1_tpi_write(adapter, A_ELMER0_GPO, val);
|
|
|
|
udelay(50);
|
|
|
|
__t1_tpi_read(adapter, A_ELMER0_GPO, &val);
|
|
|
|
val &= ~S_LOAD_MEM;
|
|
|
|
udelay(50);
|
|
|
|
__t1_tpi_write(adapter, A_ELMER0_GPO, val);
|
|
|
|
|
|
|
|
spin_unlock(&adapter->tpi_lock);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2005-03-30 14:34:31 -07:00
|
|
|
static inline void t1_sw_reset(struct pci_dev *pdev)
|
|
|
|
{
|
|
|
|
pci_write_config_dword(pdev, A_PCICFG_PM_CSR, 3);
|
|
|
|
pci_write_config_dword(pdev, A_PCICFG_PM_CSR, 0);
|
|
|
|
}
|
|
|
|
|
2012-12-03 07:23:04 -07:00
|
|
|
static void remove_one(struct pci_dev *pdev)
|
2005-03-30 14:34:31 -07:00
|
|
|
{
|
|
|
|
struct net_device *dev = pci_get_drvdata(pdev);
|
2008-11-17 00:06:39 -07:00
|
|
|
struct adapter *adapter = dev->ml_priv;
|
2006-12-05 15:19:06 -07:00
|
|
|
int i;
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2006-12-05 15:19:06 -07:00
|
|
|
for_each_port(adapter, i) {
|
|
|
|
if (test_bit(i, &adapter->registered_device_map))
|
|
|
|
unregister_netdev(adapter->port[i].dev);
|
|
|
|
}
|
2005-03-30 14:34:31 -07:00
|
|
|
|
2006-12-05 15:19:06 -07:00
|
|
|
t1_free_sw_modules(adapter);
|
|
|
|
iounmap(adapter->regs);
|
2006-11-17 12:25:23 -07:00
|
|
|
|
2006-12-05 15:19:06 -07:00
|
|
|
while (--i >= 0) {
|
|
|
|
if (adapter->port[i].dev)
|
|
|
|
free_netdev(adapter->port[i].dev);
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
2006-12-05 15:19:06 -07:00
|
|
|
|
|
|
|
pci_release_regions(pdev);
|
|
|
|
pci_disable_device(pdev);
|
|
|
|
t1_sw_reset(pdev);
|
2005-03-30 14:34:31 -07:00
|
|
|
}
|
|
|
|
|
2013-05-21 07:42:55 -06:00
|
|
|
static struct pci_driver cxgb_pci_driver = {
|
Update Chelsio gige net driver.
- Use extern prefix for functions required.
- Removed a lot of wrappers, including t1_read/write_reg_4.
- Removed various macros, using native kernel calls now.
- Enumerated various #defines.
- Removed a lot of shared code which is not currently used in "NIC only" mode.
- Removed dead code.
Documentation/networking/cxgb.txt:
- Updated release notes for version 2.1.1
drivers/net/chelsio/ch_ethtool.h
- removed file, no longer using ETHTOOL namespace.
drivers/net/chelsio/common.h
- moved code from osdep.h to common.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cphy.h
- removed dead code.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/cxgb2.c
- use DMA_{32,64}BIT_MASK in include/linux/dma-mapping.h.
- removed unused code.
- use printk message for link info resembling drivers/net/mii.c.
- no longer using the MODULE_xxx namespace.
- no longer using "pci_" namespace.
- no longer using ETHTOOL namespace.
drivers/net/chelsio/cxgb2.h
- removed file, merged into common.h
drivers/net/chelsio/elmer0.h
- removed dead code.
- added various enums.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/espi.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
drivers/net/chelsio/espi.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/gmac.h
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/mv88x201x.c
- changes to sync with Chelsio TOT.
drivers/net/chelsio/osdep.h
- removed file, consolidation. osdep was used to translate wrapper functions
since our code supports multiple OSs. removed wrappers.
drivers/net/chelsio/pm3393.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/regs.h
- added a few register entries for future and current feature support.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/sge.c
- rewrote large portion of scatter-gather engine to stabilize
performance.
- using u8/u16/u32 kernel types instead of __u8/__u16/__u32 compiler
types.
drivers/net/chelsio/sge.h
- rewrote large portion of scatter-gather engine to stabilize
performance.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/subr.c
- merged tp.c into subr.c
- removed various macros, using native kernel calls now.
- removed a lot of wrappers, including t1_read/write_reg_4.
- removed unused code.
drivers/net/chelsio/suni1x10gexp_regs.h
- modified copyright and authorship of file.
- added comment to #endif indicating which symbol it closes.
drivers/net/chelsio/tp.c
- removed file, merged into subr.c.
drivers/net/chelsio/tp.h
- removed file.
include/linux/pci_ids.h
- patched to include PCI_VENDOR_ID_CHELSIO 0x1425, removed define from
our code.
2005-06-22 23:40:19 -06:00
|
|
|
.name = DRV_NAME,
|
2005-03-30 14:34:31 -07:00
|
|
|
.id_table = t1_pci_tbl,
|
|
|
|
.probe = init_one,
|
2012-12-03 07:23:04 -07:00
|
|
|
.remove = remove_one,
|
2005-03-30 14:34:31 -07:00
|
|
|
};
|
|
|
|
|
2013-05-21 07:42:55 -06:00
|
|
|
module_pci_driver(cxgb_pci_driver);
|