Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 313478 Details for
Bug 457958
Backport NetXen nic driver from upstream kernel to RHEL5.3
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Patch 4 of 4 to support the backporting to support Firmware 4.0.xxx and chip revision >= 0x41
rhl53.patchset4.p3.p12-p18.patch (text/plain), 32.79 KB, created by
Dhananjay Phadke
on 2008-08-05 19:16:44 UTC
(
hide
)
Description:
Patch 4 of 4 to support the backporting to support Firmware 4.0.xxx and chip revision >= 0x41
Filename:
MIME Type:
Creator:
Dhananjay Phadke
Created:
2008-08-05 19:16:44 UTC
Size:
32.79 KB
patch
obsolete
>diff -r --new-file -pu rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_ctx.c rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_ctx.c >--- rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_ctx.c 2008-07-22 18:28:40.567758000 -0700 >+++ rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_ctx.c 2008-08-01 12:55:20.528762000 -0700 >@@ -145,8 +145,8 @@ netxen_issue_cmd(struct netxen_adapter * > return rcode; > } > >-u32 >-nx_fw_cmd_set_mtu(struct netxen_adapter *adapter, u32 mtu) >+int >+nx_fw_cmd_set_mtu(struct netxen_adapter *adapter, int mtu) > { > u32 rcode = NX_RCODE_SUCCESS; > struct netxen_recv_context *recv_ctx = &adapter->recv_ctx[0]; >@@ -160,7 +160,10 @@ nx_fw_cmd_set_mtu(struct netxen_adapter > 0, > NX_CDRP_CMD_SET_MTU); > >- return rcode; >+ if (rcode != NX_RCODE_SUCCESS) >+ return -EIO; >+ >+ return 0; > } > > static int >diff -r --new-file -pu rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_ethtool.c rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_ethtool.c >--- rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_ethtool.c 2008-07-22 18:28:40.572766000 -0700 >+++ rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_ethtool.c 2008-08-01 12:55:19.690757000 -0700 >@@ -142,18 +142,32 @@ netxen_nic_get_settings(struct net_devic > if (netif_running(dev)) { > ecmd->speed = adapter->link_speed; > ecmd->duplex = adapter->link_duplex; >- } else >- return -EIO; /* link absent */ >+ ecmd->autoneg = adapter->link_autoneg; >+ } > } else if (adapter->ahw.board_type == NETXEN_NIC_XGBE) { >- ecmd->supported = (SUPPORTED_TP | >- SUPPORTED_1000baseT_Full | >- SUPPORTED_10000baseT_Full); >- ecmd->advertising = (ADVERTISED_TP | >- ADVERTISED_1000baseT_Full | >- ADVERTISED_10000baseT_Full); >+ u32 val; >+ >+ adapter->hw_read_wx(adapter, NETXEN_PORT_MODE_ADDR, &val, 4); >+ if (val == NETXEN_PORT_MODE_802_3_AP) { >+ ecmd->supported = SUPPORTED_1000baseT_Full; >+ ecmd->advertising = ADVERTISED_1000baseT_Full; >+ } else { >+ ecmd->supported = SUPPORTED_10000baseT_Full; >+ ecmd->advertising = ADVERTISED_10000baseT_Full; >+ } >+ > ecmd->port = PORT_TP; > >- ecmd->speed = SPEED_10000; >+ if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { >+ u16 pcifn = adapter->ahw.pci_func; >+ >+ adapter->hw_read_wx(adapter, >+ P3_LINK_SPEED_REG(pcifn), &val, 4); >+ ecmd->speed = P3_LINK_SPEED_MHZ * >+ P3_LINK_SPEED_VAL(pcifn, val); >+ } else >+ ecmd->speed = SPEED_10000; >+ > ecmd->duplex = DUPLEX_FULL; > ecmd->autoneg = AUTONEG_DISABLE; > } else >@@ -194,6 +208,8 @@ netxen_nic_get_settings(struct net_devic > break; > case NETXEN_BRDTYPE_P2_SB31_10G: > case NETXEN_BRDTYPE_P3_10G_SFP_PLUS: >+ case NETXEN_BRDTYPE_P3_10G_SFP_CT: >+ case NETXEN_BRDTYPE_P3_10G_SFP_QT: > case NETXEN_BRDTYPE_P3_10G_XFP: > ecmd->supported |= SUPPORTED_FIBRE; > ecmd->advertising |= ADVERTISED_FIBRE; >diff -r --new-file -pu rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic.h rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic.h >--- rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic.h 2008-07-22 18:28:40.611760000 -0700 >+++ rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic.h 2008-08-01 12:55:19.699756000 -0700 >@@ -65,8 +65,8 @@ > > #define _NETXEN_NIC_LINUX_MAJOR 4 > #define _NETXEN_NIC_LINUX_MINOR 0 >-#define _NETXEN_NIC_LINUX_SUBVERSION 0 >-#define NETXEN_NIC_LINUX_VERSIONID "4.0.0" >+#define _NETXEN_NIC_LINUX_SUBVERSION 6 >+#define NETXEN_NIC_LINUX_VERSIONID "4.0.6" > > #define NETXEN_VERSION_CODE(a, b, c) (((a) << 16) + ((b) << 8) + (c)) > >@@ -508,6 +508,8 @@ typedef enum { > NETXEN_BRDTYPE_P3_10000_BASE_T = 0x0027, > NETXEN_BRDTYPE_P3_XG_LOM = 0x0028, > NETXEN_BRDTYPE_P3_4_GB_MM = 0x0029, >+ NETXEN_BRDTYPE_P3_10G_SFP_CT = 0x002a, >+ NETXEN_BRDTYPE_P3_10G_SFP_QT = 0x002b, > NETXEN_BRDTYPE_P3_10G_CX4 = 0x0031, > NETXEN_BRDTYPE_P3_10G_XFP = 0x0032 > >@@ -1165,6 +1167,36 @@ typedef struct { > nx_nic_intr_coalesce_data_t irq; > } nx_nic_intr_coalesce_t; > >+#define NX_HOST_REQUEST 0x13 >+#define NX_NIC_REQUEST 0x14 >+ >+#define NX_MAC_EVENT 0x1 >+ >+enum { >+ NX_NIC_H2C_OPCODE_START = 0, >+ NX_NIC_H2C_OPCODE_CONFIG_RSS, >+ NX_NIC_H2C_OPCODE_CONFIG_RSS_TBL, >+ NX_NIC_H2C_OPCODE_CONFIG_INTR_COALESCE, >+ NX_NIC_H2C_OPCODE_CONFIG_LED, >+ NX_NIC_H2C_OPCODE_CONFIG_PROMISCUOUS, >+ NX_NIC_H2C_OPCODE_CONFIG_L2_MAC, >+ NX_NIC_H2C_OPCODE_LRO_REQUEST, >+ NX_NIC_H2C_OPCODE_GET_SNMP_STATS, >+ NX_NIC_H2C_OPCODE_PROXY_START_REQUEST, >+ NX_NIC_H2C_OPCODE_PROXY_STOP_REQUEST, >+ NX_NIC_H2C_OPCODE_PROXY_SET_MTU, >+ NX_NIC_H2C_OPCODE_PROXY_SET_VPORT_MISS_MODE, >+ NX_H2P_OPCODE_GET_FINGER_PRINT_REQUEST, >+ NX_H2P_OPCODE_INSTALL_LICENSE_REQUEST, >+ NX_H2P_OPCODE_GET_LICENSE_CAPABILITY_REQUEST, >+ NX_NIC_H2C_OPCODE_GET_NET_STATS, >+ NX_NIC_H2C_OPCODE_LAST >+}; >+ >+#define VPORT_MISS_MODE_DROP 0 /* drop all unmatched */ >+#define VPORT_MISS_MODE_ACCEPT_ALL 1 /* accept all packets */ >+#define VPORT_MISS_MODE_ACCEPT_MULTI 2 /* accept unmatched multicast */ >+ > typedef struct { > u64 qhdr; > u64 req_hdr; >@@ -1282,7 +1314,7 @@ struct netxen_adapter { > int (*disable_phy_interrupts) (struct netxen_adapter *); > int (*macaddr_set) (struct netxen_adapter *, netxen_ethernet_macaddr_t); > int (*set_mtu) (struct netxen_adapter *, int); >- int (*set_promisc) (struct netxen_adapter *, netxen_niu_prom_mode_t); >+ int (*set_promisc) (struct netxen_adapter *, u32); > int (*phy_read) (struct netxen_adapter *, long reg, u32 *); > int (*phy_write) (struct netxen_adapter *, long reg, u32 val); > int (*init_port) (struct netxen_adapter *, int); >@@ -1492,9 +1524,10 @@ int netxen_process_cmd_ring(struct netxe > u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max); > void netxen_p2_nic_set_multi(struct net_device *netdev); > void netxen_p3_nic_set_multi(struct net_device *netdev); >+int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32); > int netxen_config_intr_coalesce(struct netxen_adapter *adapter); > >-u32 nx_fw_cmd_set_mtu(struct netxen_adapter *adapter, u32 mtu); >+int nx_fw_cmd_set_mtu(struct netxen_adapter *adapter, int mtu); > int netxen_nic_change_mtu(struct net_device *netdev, int new_mtu); > > int netxen_nic_set_mac(struct net_device *netdev, void *p); >@@ -1529,7 +1562,9 @@ static const struct netxen_brdinfo netxe > {NETXEN_BRDTYPE_P3_10G_SFP_PLUS, 2, "Dual XGb SFP+ LP"}, > {NETXEN_BRDTYPE_P3_10000_BASE_T, 1, "XGB 10G BaseT LP"}, > {NETXEN_BRDTYPE_P3_XG_LOM, 2, "Dual XGb LOM"}, >- {NETXEN_BRDTYPE_P3_4_GB_MM, 4, "Quad GB - March Madness"}, >+ {NETXEN_BRDTYPE_P3_4_GB_MM, 4, "NX3031 Gigabit Ethernet"}, >+ {NETXEN_BRDTYPE_P3_10G_SFP_CT, 2, "NX3031 10 Gigabit Ethernet"}, >+ {NETXEN_BRDTYPE_P3_10G_SFP_QT, 2, "Quanta Dual XGb SFP+"}, > {NETXEN_BRDTYPE_P3_10G_CX4, 2, "Reference Dual CX4 Option"}, > {NETXEN_BRDTYPE_P3_10G_XFP, 1, "Reference Single XFP Option"} > }; >@@ -1607,7 +1642,8 @@ dma_watchdog_wakeup(struct netxen_adapte > > > int netxen_is_flash_supported(struct netxen_adapter *adapter); >-int netxen_get_flash_mac_addr(struct netxen_adapter *adapter, u64 mac[]); >+int netxen_get_flash_mac_addr(struct netxen_adapter *adapter, __le64 *mac); >+int netxen_p3_get_mac_addr(struct netxen_adapter *adapter, __le64 *mac); > extern void netxen_change_ringparam(struct netxen_adapter *adapter); > extern int netxen_rom_fast_read(struct netxen_adapter *adapter, int addr, > int *valp); >diff -r --new-file -pu rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_hdr.h rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_hdr.h >--- rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_hdr.h 2008-07-22 18:28:40.620761000 -0700 >+++ rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_hdr.h 2008-08-01 12:55:19.706763000 -0700 >@@ -724,6 +724,13 @@ enum { > #define XG_LINK_STATE_P3(pcifn,val) \ > (((val) >> ((pcifn) * 4)) & XG_LINK_STATE_P3_MASK) > >+#define P3_LINK_SPEED_MHZ 100 >+#define P3_LINK_SPEED_MASK 0xff >+#define P3_LINK_SPEED_REG(pcifn) \ >+ (CRB_PF_LINK_SPEED_1 + (((pcifn) / 4) * 4)) >+#define P3_LINK_SPEED_VAL(pcifn, reg) \ >+ (((reg) >> (8 * ((pcifn) & 0x3))) & P3_LINK_SPEED_MASK) >+ > #define NETXEN_CAM_RAM_BASE (NETXEN_CRB_CAM + 0x02000) > #define NETXEN_CAM_RAM(reg) (NETXEN_CAM_RAM_BASE + (reg)) > #define NETXEN_FW_VERSION_MAJOR (NETXEN_CAM_RAM(0x150)) >@@ -836,9 +843,11 @@ enum { > > #define PCIE_SETUP_FUNCTION (0x12040) > #define PCIE_SETUP_FUNCTION2 (0x12048) >+#define PCIE_MISCCFG_RC (0x1206c) > #define PCIE_TGT_SPLIT_CHICKEN (0x12080) > #define PCIE_CHICKEN3 (0x120c8) > >+#define ISR_INT_STATE_REG (NETXEN_PCIX_PS_REG(PCIE_MISCCFG_RC)) > #define PCIE_MAX_MASTER_SPLIT (0x14048) > > #define NETXEN_PORT_MODE_NONE 0 >@@ -856,6 +865,7 @@ enum { > #define NETXEN_CAM_RAM_DMA_WATCHDOG_CTRL (0x14) > > #define ISR_MSI_INT_TRIGGER(FUNC) (NETXEN_PCIX_PS_REG(PCIX_MSI_F(FUNC))) >+#define ISR_LEGACY_INT_TRIGGERED(VAL) (((VAL) & 0x300) == 0x200) > > /* > * PCI Interrupt Vector Values. >diff -r --new-file -pu rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_hw.c rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_hw.c >--- rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_hw.c 2008-07-22 18:28:40.581764000 -0700 >+++ rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_hw.c 2008-08-01 12:55:19.715762000 -0700 >@@ -283,14 +283,7 @@ static unsigned crb_hub_agt[64] = > #define ADDR_IN_RANGE(addr, low, high) \ > (((addr) <= (high)) && ((addr) >= (low))) > >-#define NETXEN_MAX_MTU 8000 + NETXEN_ENET_HEADER_SIZE + NETXEN_ETH_FCS_SIZE >-#define NETXEN_MIN_MTU 64 >-#define NETXEN_ETH_FCS_SIZE 4 >-#define NETXEN_ENET_HEADER_SIZE 14 > #define NETXEN_WINDOW_ONE 0x2000000 /*CRB Window: bit 25 of CRB address */ >-#define NETXEN_FIRMWARE_LEN ((16 * 1024) / 4) >-#define NETXEN_NIU_HDRSIZE (0x1 << 6) >-#define NETXEN_NIU_TLRSIZE (0x1 << 5) > > #define NETXEN_NIC_ZERO_PAUSE_ADDR 0ULL > #define NETXEN_NIC_UNIT_PAUSE_ADDR 0x200ULL >@@ -539,9 +532,6 @@ netxen_send_cmd_descs(struct netxen_adap > return 0; > } > >-#define NIC_REQUEST 0x14 >-#define NETXEN_MAC_EVENT 0x1 >- > static int nx_p3_sre_macaddr_change(struct net_device *dev, > u8 *addr, unsigned op) > { >@@ -551,8 +541,8 @@ static int nx_p3_sre_macaddr_change(stru > int rv; > > memset(&req, 0, sizeof(nx_nic_req_t)); >- req.qhdr |= (NIC_REQUEST << 23); >- req.req_hdr |= NETXEN_MAC_EVENT; >+ req.qhdr |= (NX_NIC_REQUEST << 23); >+ req.req_hdr |= NX_MAC_EVENT; > req.req_hdr |= ((u64)adapter->portnum << 16); > mac_req.op = op; > memcpy(&mac_req.mac_addr, addr, 6); >@@ -573,31 +563,35 @@ void netxen_p3_nic_set_multi(struct net_ > nx_mac_list_t *cur, *next, *del_list, *add_list = NULL; > struct dev_mc_list *mc_ptr; > u8 bcast_addr[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; >- >- adapter->set_promisc(adapter, NETXEN_NIU_PROMISC_MODE); >- >- /* >- * Programming mac addresses will automaticly enabling L2 filtering. >- * HW will replace timestamp with L2 conid when L2 filtering is >- * enabled. This causes problem for LSA. Do not enabling L2 filtering >- * until that problem is fixed. >- */ >- if ((netdev->flags & IFF_PROMISC) || >- (netdev->mc_count > adapter->max_mc_count)) >- return; >+ u32 mode = VPORT_MISS_MODE_DROP; > > del_list = adapter->mac_list; > adapter->mac_list = NULL; > > nx_p3_nic_add_mac(adapter, netdev->dev_addr, &add_list, &del_list); >+ nx_p3_nic_add_mac(adapter, bcast_addr, &add_list, &del_list); >+ >+ if (netdev->flags & IFF_PROMISC) { >+ mode = VPORT_MISS_MODE_ACCEPT_ALL; >+ goto send_fw_cmd; >+ } >+ >+ if ((netdev->flags & IFF_ALLMULTI) || >+ (netdev->mc_count > adapter->max_mc_count)) { >+ mode = VPORT_MISS_MODE_ACCEPT_MULTI; >+ goto send_fw_cmd; >+ } >+ > if (netdev->mc_count > 0) { >- nx_p3_nic_add_mac(adapter, bcast_addr, &add_list, &del_list); > for (mc_ptr = netdev->mc_list; mc_ptr; > mc_ptr = mc_ptr->next) { > nx_p3_nic_add_mac(adapter, mc_ptr->dmi_addr, > &add_list, &del_list); > } > } >+ >+send_fw_cmd: >+ adapter->set_promisc(adapter, mode); > for (cur = del_list; cur;) { > nx_p3_sre_macaddr_change(netdev, cur->mac_addr, NETXEN_MAC_DEL); > next = cur->next; >@@ -613,6 +607,21 @@ void netxen_p3_nic_set_multi(struct net_ > } > } > >+int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32 mode) >+{ >+ nx_nic_req_t req; >+ >+ memset(&req, 0, sizeof(nx_nic_req_t)); >+ >+ req.qhdr |= (NX_HOST_REQUEST << 23); >+ req.req_hdr |= NX_NIC_H2C_OPCODE_PROXY_SET_VPORT_MISS_MODE; >+ req.req_hdr |= ((u64)adapter->portnum << 16); >+ req.words[0] = cpu_to_le64(mode); >+ >+ return netxen_send_cmd_descs(adapter, >+ (struct cmd_desc_type0 *)&req, 1); >+} >+ > #define NETXEN_CONFIG_INTR_COALESCE 3 > > /* >@@ -625,7 +634,7 @@ int netxen_config_intr_coalesce(struct n > > memset(&req, 0, sizeof(nx_nic_req_t)); > >- req.qhdr |= (NIC_REQUEST << 23); >+ req.qhdr |= (NX_NIC_REQUEST << 23); > req.req_hdr |= NETXEN_CONFIG_INTR_COALESCE; > req.req_hdr |= ((u64)adapter->portnum << 16); > >@@ -651,6 +660,7 @@ int netxen_nic_change_mtu(struct net_dev > { > struct netxen_adapter *adapter = netdev_priv(netdev); > int max_mtu; >+ int rc = 0; > > if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) > max_mtu = P3_MAX_MTU; >@@ -664,16 +674,12 @@ int netxen_nic_change_mtu(struct net_dev > } > > if (adapter->set_mtu) >- adapter->set_mtu(adapter, mtu); >- netdev->mtu = mtu; >+ rc = adapter->set_mtu(adapter, mtu); > >- mtu += MTU_FUDGE_FACTOR; >- if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) >- nx_fw_cmd_set_mtu(adapter, mtu); >- else if (adapter->set_mtu) >- adapter->set_mtu(adapter, mtu); >+ if (!rc) >+ netdev->mtu = mtu; > >- return 0; >+ return rc; > } > > int netxen_is_flash_supported(struct netxen_adapter *adapter) >@@ -725,31 +731,56 @@ static int netxen_get_flash_block(struct > return 0; > } > >-int netxen_get_flash_mac_addr(struct netxen_adapter *adapter, u64 mac[]) >+int netxen_get_flash_mac_addr(struct netxen_adapter *adapter, __le64 *mac) > { >- u32 *pmac = (u32 *) & mac[0]; >+ __le32 *pmac = (__le32 *) mac; >+ u32 offset; >+ >+ offset = NETXEN_USER_START + >+ offsetof(struct netxen_new_user_info, mac_addr) + >+ adapter->portnum * sizeof(u64); > >- if (netxen_get_flash_block(adapter, >- NETXEN_USER_START + >- offsetof(struct netxen_new_user_info, >- mac_addr), >- FLASH_NUM_PORTS * sizeof(u64), pmac) == -1) { >+ if (netxen_get_flash_block(adapter, offset, sizeof(u64), pmac) == -1) > return -1; >- } >- if (*mac == ~0ULL) { >+ >+ if (*mac == cpu_to_le64(~0ULL)) { >+ >+ offset = NETXEN_USER_START_OLD + >+ offsetof(struct netxen_user_old_info, mac_addr) + >+ adapter->portnum * sizeof(u64); >+ > if (netxen_get_flash_block(adapter, >- NETXEN_USER_START_OLD + >- offsetof(struct netxen_user_old_info, >- mac_addr), >- FLASH_NUM_PORTS * sizeof(u64), >- pmac) == -1) >+ offset, sizeof(u64), pmac) == -1) > return -1; >- if (*mac == ~0ULL) >+ >+ if (*mac == cpu_to_le64(~0ULL)) > return -1; > } > return 0; > } > >+int netxen_p3_get_mac_addr(struct netxen_adapter *adapter, __le64 *mac) >+{ >+ uint32_t crbaddr, mac_hi, mac_lo; >+ int pci_func = adapter->ahw.pci_func; >+ >+ crbaddr = CRB_MAC_BLOCK_START + >+ (4 * ((pci_func/2) * 3)) + (4 * (pci_func & 1)); >+ >+ adapter->hw_read_wx(adapter, crbaddr, &mac_lo, 4); >+ adapter->hw_read_wx(adapter, crbaddr+4, &mac_hi, 4); >+ >+ mac_hi = cpu_to_le32(mac_hi); >+ mac_lo = cpu_to_le32(mac_lo); >+ >+ if (pci_func & 1) >+ *mac = ((mac_lo >> 16) | ((u64)mac_hi << 16)); >+ else >+ *mac = ((mac_lo) | ((u64)mac_hi << 32)); >+ >+ return 0; >+} >+ > #define CRB_WIN_LOCK_TIMEOUT 100000000 > > static int crb_win_lock(struct netxen_adapter *adapter) >@@ -2014,6 +2045,8 @@ int netxen_nic_get_board_info(struct net > case NETXEN_BRDTYPE_P3_10G_CX4_LP: > case NETXEN_BRDTYPE_P3_IMEZ: > case NETXEN_BRDTYPE_P3_10G_SFP_PLUS: >+ case NETXEN_BRDTYPE_P3_10G_SFP_CT: >+ case NETXEN_BRDTYPE_P3_10G_SFP_QT: > case NETXEN_BRDTYPE_P3_10G_XFP: > case NETXEN_BRDTYPE_P3_10000_BASE_T: > >@@ -2032,6 +2065,7 @@ int netxen_nic_get_board_info(struct net > default: > printk("%s: Unknown(%x)\n", netxen_nic_driver_name, > boardinfo->board_type); >+ rv = -ENODEV; > break; > } > >@@ -2042,6 +2076,7 @@ int netxen_nic_get_board_info(struct net > > int netxen_nic_set_mtu_gb(struct netxen_adapter *adapter, int new_mtu) > { >+ new_mtu += MTU_FUDGE_FACTOR; > netxen_nic_write_w0(adapter, > NETXEN_NIU_GB_MAX_FRAME_SIZE(adapter->physical_port), > new_mtu); >@@ -2050,7 +2085,7 @@ int netxen_nic_set_mtu_gb(struct netxen_ > > int netxen_nic_set_mtu_xgb(struct netxen_adapter *adapter, int new_mtu) > { >- new_mtu += NETXEN_NIU_HDRSIZE + NETXEN_NIU_TLRSIZE; >+ new_mtu += MTU_FUDGE_FACTOR; > if (adapter->physical_port == 0) > netxen_nic_write_w0(adapter, NETXEN_NIU_XGE_MAX_FRAME_SIZE, > new_mtu); >@@ -2072,12 +2107,22 @@ void netxen_nic_set_link_parameters(stru > __u32 status; > __u32 autoneg; > __u32 mode; >+ __u32 port_mode; > > netxen_nic_read_w0(adapter, NETXEN_NIU_MODE, &mode); > if (netxen_get_niu_enable_ge(mode)) { /* Gb 10/100/1000 Mbps mode */ >+ >+ adapter->hw_read_wx(adapter, >+ NETXEN_PORT_MODE_ADDR, &port_mode, 4); >+ if (port_mode == NETXEN_PORT_MODE_802_3_AP) { >+ adapter->link_speed = SPEED_1000; >+ adapter->link_duplex = DUPLEX_FULL; >+ adapter->link_autoneg = AUTONEG_DISABLE; >+ return; >+ } >+ > if (adapter->phy_read >- && adapter-> >- phy_read(adapter, >+ && adapter->phy_read(adapter, > NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS, > &status) == 0) { > if (netxen_get_phy_link(status)) { >@@ -2107,8 +2152,7 @@ void netxen_nic_set_link_parameters(stru > break; > } > if (adapter->phy_read >- && adapter-> >- phy_read(adapter, >+ && adapter->phy_read(adapter, > NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG, > &autoneg) != 0) > adapter->link_autoneg = autoneg; >@@ -2160,10 +2204,10 @@ void netxen_nic_flash_print(struct netxe > if (adapter->portnum == 0) { > get_brd_name_by_type(board_info->board_type, brd_name); > >- printk("NetXen %s Board S/N %s Chip id 0x%x\n", >- brd_name, serial_num, board_info->chip_id); >- printk("NetXen Firmware version %d.%d.%d\n", fw_major, >- fw_minor, fw_build); >+ printk(KERN_INFO "NetXen %s Board S/N %s Chip rev 0x%x\n", >+ brd_name, serial_num, adapter->ahw.revision_id); >+ printk(KERN_INFO "NetXen Firmware version %d.%d.%d\n", >+ fw_major, fw_minor, fw_build); > } > > if (NETXEN_VERSION_CODE(fw_major, fw_minor, fw_build) < >diff -r --new-file -pu rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_hw.h rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_hw.h >--- rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_hw.h 2008-07-22 18:28:40.626759000 -0700 >+++ rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_hw.h 2008-08-01 12:55:19.723760000 -0700 >@@ -419,12 +419,9 @@ typedef enum { > #define netxen_get_niu_enable_ge(config_word) \ > _netxen_crb_get_bit(config_word, 1) > >-/* Promiscous mode options (GbE mode only) */ >-typedef enum { >- NETXEN_NIU_PROMISC_MODE = 0, >- NETXEN_NIU_NON_PROMISC_MODE, >- NETXEN_NIU_ALLMULTI_MODE >-} netxen_niu_prom_mode_t; >+#define NETXEN_NIU_NON_PROMISC_MODE 0 >+#define NETXEN_NIU_PROMISC_MODE 1 >+#define NETXEN_NIU_ALLMULTI_MODE 2 > > /* > * NIU GB Drop CRC Register >@@ -472,9 +469,9 @@ typedef enum { > > /* Set promiscuous mode for a GbE interface */ > int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter, >- netxen_niu_prom_mode_t mode); >+ u32 mode); > int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter, >- netxen_niu_prom_mode_t mode); >+ u32 mode); > > /* get/set the MAC address for a given MAC */ > int netxen_niu_macaddr_get(struct netxen_adapter *adapter, >diff -r --new-file -pu rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_init.c rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_init.c >--- rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_init.c 2008-07-22 18:28:40.588765000 -0700 >+++ rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_init.c 2008-08-01 12:55:19.730763000 -0700 >@@ -360,6 +360,11 @@ void netxen_initialize_adapter_ops(struc > default: > break; > } >+ >+ if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { >+ adapter->set_mtu = nx_fw_cmd_set_mtu; >+ adapter->set_promisc = netxen_p3_nic_set_promisc; >+ } > } > > /* >diff -r --new-file -pu rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_main.c rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_main.c >--- rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_main.c 2008-07-22 18:28:40.597763000 -0700 >+++ rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_main.c 2008-08-01 15:10:50.635738000 -0700 >@@ -173,7 +173,8 @@ static void netxen_nic_disable_int(struc > if (!NETXEN_IS_MSI_FAMILY(adapter)) { > do { > adapter->pci_write_immediate(adapter, >- ISR_INT_TARGET_STATUS, 0xffffffff); >+ adapter->legacy_intr.tgt_status_reg, >+ 0xffffffff); > mask = adapter->pci_read_immediate(adapter, > ISR_INT_VECTOR); > if (!(mask & 0x80)) >@@ -182,7 +183,7 @@ static void netxen_nic_disable_int(struc > } while (--retries); > > if (!retries) { >- printk(KERN_NOTICE "%s: Failed to disable interrupt completely\n", >+ printk(KERN_NOTICE "%s: Failed to disable interrupt\n", > netxen_nic_driver_name); > } > } else { >@@ -197,8 +198,6 @@ static void netxen_nic_enable_int(struct > { > u32 mask; > >- DPRINTK(1, INFO, "Entered ISR Enable \n"); >- > if (adapter->intr_scheme != -1 && > adapter->intr_scheme != INTR_SCHEME_PERPORT) { > switch (adapter->ahw.board_type) { >@@ -220,16 +219,13 @@ static void netxen_nic_enable_int(struct > > if (!NETXEN_IS_MSI_FAMILY(adapter)) { > mask = 0xbff; >- if (adapter->intr_scheme != -1 && >- adapter->intr_scheme != INTR_SCHEME_PERPORT) { >+ if (adapter->intr_scheme == INTR_SCHEME_PERPORT) >+ adapter->pci_write_immediate(adapter, >+ adapter->legacy_intr.tgt_mask_reg, mask); >+ else > adapter->pci_write_normalize(adapter, > CRB_INT_VECTOR, 0); >- } >- adapter->pci_write_immediate(adapter, >- ISR_INT_TARGET_MASK, mask); > } >- >- DPRINTK(1, INFO, "Done with enable Int\n"); > } > > static int nx_set_dma_mask(struct netxen_adapter *adapter, uint8_t revision_id) >@@ -291,6 +287,8 @@ static void netxen_check_options(struct > case NETXEN_BRDTYPE_P3_10G_CX4_LP: > case NETXEN_BRDTYPE_P3_IMEZ: > case NETXEN_BRDTYPE_P3_10G_SFP_PLUS: >+ case NETXEN_BRDTYPE_P3_10G_SFP_QT: >+ case NETXEN_BRDTYPE_P3_10G_SFP_CT: > case NETXEN_BRDTYPE_P3_10G_XFP: > case NETXEN_BRDTYPE_P3_10000_BASE_T: > adapter->msix_supported = !!use_msi_x; >@@ -308,6 +306,10 @@ static void netxen_check_options(struct > case NETXEN_BRDTYPE_P3_REF_QG: > case NETXEN_BRDTYPE_P3_4_GB: > case NETXEN_BRDTYPE_P3_4_GB_MM: >+ adapter->msix_supported = 0; >+ adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_10G; >+ break; >+ > case NETXEN_BRDTYPE_P2_SB35_4G: > case NETXEN_BRDTYPE_P2_SB31_2G: > adapter->msix_supported = 0; >@@ -506,6 +508,47 @@ static void netxen_init_msix_entries(str > adapter->msix_entries[i].entry = i; > } > >+static int >+netxen_read_mac_addr(struct netxen_adapter *adapter) >+{ >+ int i; >+ unsigned char *p; >+ __le64 mac_addr; >+ struct net_device *netdev = adapter->netdev; >+ >+ if (netxen_is_flash_supported(adapter) != 0) >+ return -EIO; >+ >+ if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { >+ if (netxen_p3_get_mac_addr(adapter, &mac_addr) != 0) >+ return -EIO; >+ } else { >+ if (netxen_get_flash_mac_addr(adapter, &mac_addr) != 0) >+ return -EIO; >+ } >+ >+ p = (unsigned char *)&mac_addr; >+ for (i = 0; i < 6; i++) >+ netdev->dev_addr[i] = *(p + 5 - i); >+ >+ memcpy(netdev->perm_addr, netdev->dev_addr, netdev->addr_len); >+ >+ if (!is_valid_ether_addr(netdev->perm_addr)) { >+ printk(KERN_ERR "%s: Bad MAC address " >+ "%02x:%02x:%02x:%02x:%02x:%02x.\n", >+ netxen_nic_driver_name, >+ netdev->dev_addr[0], >+ netdev->dev_addr[1], >+ netdev->dev_addr[2], >+ netdev->dev_addr[3], >+ netdev->dev_addr[4], >+ netdev->dev_addr[5]); >+ } else >+ adapter->macaddr_set(adapter, netdev->dev_addr); >+ >+ return 0; >+} >+ > /* > * netxen_nic_probe() > * >@@ -532,9 +575,8 @@ netxen_nic_probe(struct pci_dev *pdev, c > > u8 __iomem *db_ptr = NULL; > unsigned long mem_base, mem_len, db_base, db_len, pci_len0 = 0; >- int i = 0, err; >+ int i, err; > int first_driver, first_boot; >- u64 mac_addr[FLASH_NUM_PORTS + 1]; > u32 val; > int pci_func_id = PCI_FUNC(pdev->devfn); > struct netxen_legacy_intr_set *legacy_intrp; >@@ -549,6 +591,16 @@ netxen_nic_probe(struct pci_dev *pdev, c > return -ENODEV; > } > >+ pci_read_config_byte(pdev, PCI_REVISION_ID, &nx_p2_id); >+ revision_id = nx_p2_id; >+ >+ if ((revision_id >= NX_P3_A0) && (revision_id < NX_P3_B1)) { >+ printk(KERN_WARNING "NetXen chip revisions between 0x%x-0x%x" >+ "will not be enabled.\n", >+ NX_P3_A0, NX_P3_B1); >+ return -ENODEV; >+ } >+ > if ((err = pci_enable_device(pdev))) > return err; > >@@ -561,7 +613,6 @@ netxen_nic_probe(struct pci_dev *pdev, c > goto err_out_disable_pdev; > > pci_set_master(pdev); >- pci_read_config_byte(pdev, PCI_REVISION_ID, &nx_p2_id); > > netdev = alloc_etherdev(sizeof(struct netxen_adapter)); > if(!netdev) { >@@ -580,8 +631,6 @@ netxen_nic_probe(struct pci_dev *pdev, c > adapter->netdev = netdev; > adapter->pdev = pdev; > adapter->ahw.pci_func = pci_func_id; >- >- revision_id = nx_p2_id; > adapter->ahw.revision_id = revision_id; > > err = nx_set_dma_mask(adapter, revision_id); >@@ -707,13 +756,10 @@ netxen_nic_probe(struct pci_dev *pdev, c > adapter->status &= ~NETXEN_NETDEV_STATUS; > adapter->rx_csum = 1; > adapter->mc_enabled = 0; >- if (NX_IS_REVISION_P3(revision_id)) { >+ if (NX_IS_REVISION_P3(revision_id)) > adapter->max_mc_count = 38; >- adapter->max_rds_rings = 2; >- } else { >+ else > adapter->max_mc_count = 16; >- adapter->max_rds_rings = 3; >- } > > netdev->open = netxen_nic_open; > netdev->stop = netxen_nic_close; >@@ -788,11 +834,6 @@ netxen_nic_probe(struct pci_dev *pdev, c > first_driver = 1; > } > >- adapter->crb_addr_cmd_producer = crb_cmd_producer[adapter->portnum]; >- adapter->crb_addr_cmd_consumer = crb_cmd_consumer[adapter->portnum]; >- netxen_nic_update_cmd_producer(adapter, 0); >- netxen_nic_update_cmd_consumer(adapter, 0); >- > if (first_driver) { > first_boot = adapter->pci_read_normalize(adapter, > NETXEN_CAM_RAM(0x1fc)); >@@ -921,34 +962,9 @@ request_msi: > INIT_WORK(&adapter->tx_timeout_task, > (void (*)(void *))netxen_tx_timeout_task, netdev); > >- if (netxen_is_flash_supported(adapter) == 0 && >- netxen_get_flash_mac_addr(adapter, mac_addr) == 0) { >- unsigned char *p; >- >- p = (unsigned char *)&mac_addr[adapter->portnum]; >- netdev->dev_addr[0] = *(p + 5); >- netdev->dev_addr[1] = *(p + 4); >- netdev->dev_addr[2] = *(p + 3); >- netdev->dev_addr[3] = *(p + 2); >- netdev->dev_addr[4] = *(p + 1); >- netdev->dev_addr[5] = *(p + 0); >- >- memcpy(netdev->perm_addr, netdev->dev_addr, >- netdev->addr_len); >- if (!is_valid_ether_addr(netdev->perm_addr)) { >- printk(KERN_ERR "%s: Bad MAC address " >- "%02x:%02x:%02x:%02x:%02x:%02x.\n", >- netxen_nic_driver_name, >- netdev->dev_addr[0], >- netdev->dev_addr[1], >- netdev->dev_addr[2], >- netdev->dev_addr[3], >- netdev->dev_addr[4], >- netdev->dev_addr[5]); >- } else { >- adapter->macaddr_set(adapter, netdev->dev_addr); >- } >- } >+ err = netxen_read_mac_addr(adapter); >+ if (err) >+ goto err_out_disable_msi; > > netif_carrier_off(netdev); > netif_stop_queue(netdev); >@@ -1071,6 +1087,11 @@ static int netxen_nic_open(struct net_de > return -EIO; > } > >+ if (adapter->fw_major < 4) >+ adapter->max_rds_rings = 3; >+ else >+ adapter->max_rds_rings = 2; >+ > err = netxen_alloc_sw_resources(adapter); > if (err) { > printk(KERN_ERR "%s: Error in setting sw resources\n", >@@ -1092,10 +1113,10 @@ static int netxen_nic_open(struct net_de > crb_cmd_producer[adapter->portnum]; > adapter->crb_addr_cmd_consumer = > crb_cmd_consumer[adapter->portnum]; >- } > >- netxen_nic_update_cmd_producer(adapter, 0); >- netxen_nic_update_cmd_consumer(adapter, 0); >+ netxen_nic_update_cmd_producer(adapter, 0); >+ netxen_nic_update_cmd_consumer(adapter, 0); >+ } > > for (ctx = 0; ctx < MAX_RCV_CTX; ++ctx) { > for (ring = 0; ring < adapter->max_rds_rings; ring++) >@@ -1131,9 +1152,7 @@ static int netxen_nic_open(struct net_de > netxen_nic_set_link_parameters(adapter); > > netdev->set_multicast_list(netdev); >- if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) >- nx_fw_cmd_set_mtu(adapter, netdev->mtu); >- else >+ if (adapter->set_mtu) > adapter->set_mtu(adapter, netdev->mtu); > > mod_timer(&adapter->watchdog_timer, jiffies); >@@ -1426,20 +1445,17 @@ static void netxen_nic_handle_phy_intr(s > > port = adapter->physical_port; > >- if (adapter->ahw.board_type == NETXEN_NIC_GBE) { >- val = adapter->pci_read_normalize(adapter, CRB_XG_STATE); >- linkup = (val >> port) & 1; >+ if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { >+ val = adapter->pci_read_normalize(adapter, CRB_XG_STATE_P3); >+ val = XG_LINK_STATE_P3(adapter->ahw.pci_func, val); >+ linkup = (val == XG_LINK_UP_P3); > } else { >- if (adapter->fw_major < 4) { >- val = adapter->pci_read_normalize(adapter, >- CRB_XG_STATE); >+ val = adapter->pci_read_normalize(adapter, CRB_XG_STATE); >+ if (adapter->ahw.board_type == NETXEN_NIC_GBE) >+ linkup = (val >> port) & 1; >+ else { > val = (val >> port*8) & 0xff; > linkup = (val == XG_LINK_UP); >- } else { >- val = adapter->pci_read_normalize(adapter, >- CRB_XG_STATE_P3); >- val = XG_LINK_STATE_P3(adapter->ahw.pci_func, val); >- linkup = (val == XG_LINK_UP_P3); > } > } > >@@ -1547,21 +1563,36 @@ netxen_handle_int(struct netxen_adapter > static irqreturn_t netxen_intr(int irq, void *data, struct pt_regs *regs) > { > struct netxen_adapter *adapter; >- struct net_device *netdev; >- u32 our_int = 0; >+ u32 status; > > adapter = (struct netxen_adapter *)data; >- netdev = adapter->netdev; > >- our_int = adapter->pci_read_normalize(adapter, CRB_INT_VECTOR); >- /* not our interrupt */ >- if ((our_int & (0x80 << adapter->portnum)) == 0) >+ status = adapter->pci_read_immediate(adapter, ISR_INT_VECTOR); >+ >+ if (!(status & adapter->legacy_intr.int_vec_bit)) > return IRQ_NONE; > >- if (adapter->intr_scheme == INTR_SCHEME_PERPORT) { >- /* claim interrupt */ >- adapter->pci_write_normalize(adapter, CRB_INT_VECTOR, >+ if (adapter->ahw.revision_id >= NX_P3_B1) { >+ /* check interrupt state machine, to be sure */ >+ status = adapter->pci_read_immediate(adapter, >+ ISR_INT_STATE_REG); >+ if (!ISR_LEGACY_INT_TRIGGERED(status)) >+ return IRQ_NONE; >+ >+ } else if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { >+ u32 our_int; >+ >+ our_int = adapter->pci_read_normalize(adapter, CRB_INT_VECTOR); >+ /* not our interrupt */ >+ if ((our_int & (0x80 << adapter->portnum)) == 0) >+ return IRQ_NONE; >+ >+ if (adapter->intr_scheme == INTR_SCHEME_PERPORT) { >+ /* claim interrupt */ >+ adapter->pci_write_normalize(adapter, >+ CRB_INT_VECTOR, > our_int & ~((u32)(0x80 << adapter->portnum))); >+ } > } > > netxen_handle_int(adapter); >diff -r --new-file -pu rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_niu.c rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_niu.c >--- rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_niu.c 2008-07-22 18:28:40.603776000 -0700 >+++ rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_niu.c 2008-08-01 12:55:19.736757000 -0700 >@@ -605,6 +605,9 @@ int netxen_niu_macaddr_set(struct netxen > unsigned char mac_addr[6]; > int i; > >+ if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) >+ return 0; >+ > for (i = 0; i < 10; i++) { > temp[0] = temp[1] = 0; > memcpy(temp + 2, addr, 2); >@@ -725,7 +728,10 @@ int netxen_niu_disable_gbe_port(struct n > __u32 mac_cfg0; > u32 port = adapter->physical_port; > >- if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) >+ if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) >+ return 0; >+ >+ if (port > NETXEN_NIU_MAX_GBE_PORTS) > return -EINVAL; > mac_cfg0 = 0; > netxen_gb_soft_reset(mac_cfg0); >@@ -741,6 +747,9 @@ int netxen_niu_disable_xg_port(struct ne > __u32 mac_cfg; > u32 port = adapter->physical_port; > >+ if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) >+ return 0; >+ > if (port > NETXEN_NIU_MAX_XG_PORTS) > return -EINVAL; > >@@ -753,7 +762,7 @@ int netxen_niu_disable_xg_port(struct ne > > /* Set promiscuous mode for a GbE interface */ > int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter, >- netxen_niu_prom_mode_t mode) >+ u32 mode) > { > __u32 reg; > u32 port = adapter->physical_port; >@@ -817,6 +826,9 @@ int netxen_niu_xg_macaddr_set(struct net > u8 temp[4]; > u32 val; > >+ if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) >+ return 0; >+ > if ((phy < 0) || (phy > NETXEN_NIU_MAX_XG_PORTS)) > return -EIO; > >@@ -890,7 +902,7 @@ int netxen_niu_xg_macaddr_get(struct net > } > > int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter, >- netxen_niu_prom_mode_t mode) >+ u32 mode) > { > __u32 reg; > u32 port = adapter->physical_port; >diff -r --new-file -pu rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_phan_reg.h rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_phan_reg.h >--- rhl53.p3.p01-p11/drivers/net/netxen/netxen_nic_phan_reg.h 2008-07-22 18:28:40.630760000 -0700 >+++ rhl53.p3.p12-p18/drivers/net/netxen/netxen_nic_phan_reg.h 2008-08-01 12:55:20.086764000 -0700 >@@ -95,8 +95,8 @@ > #define CRB_HOST_STS_PROD NETXEN_NIC_REG(0xdc) > #define CRB_HOST_STS_CONS NETXEN_NIC_REG(0xe0) > #define CRB_PEG_CMD_PROD NETXEN_NIC_REG(0xe4) >-#define CRB_PEG_CMD_CONS NETXEN_NIC_REG(0xe8) >-#define CRB_HOST_BUFFER_PROD NETXEN_NIC_REG(0xec) >+#define CRB_PF_LINK_SPEED_1 NETXEN_NIC_REG(0xe8) >+#define CRB_PF_LINK_SPEED_2 NETXEN_NIC_REG(0xec) > #define CRB_HOST_BUFFER_CONS NETXEN_NIC_REG(0xf0) > #define CRB_JUMBO_BUFFER_PROD NETXEN_NIC_REG(0xf4) > #define CRB_JUMBO_BUFFER_CONS NETXEN_NIC_REG(0xf8) >@@ -125,6 +125,8 @@ > #define CRB_SW_INT_MASK_2 NETXEN_NIC_REG(0x1e4) > #define CRB_SW_INT_MASK_3 NETXEN_NIC_REG(0x1e8) > >+#define CRB_MAC_BLOCK_START NETXEN_CAM_RAM(0x1c0) >+ > /* > * capabilities register, can be used to selectively enable/disable features > * for backward compability
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 457958
:
313475
|
313476
|
313477
|
313478
|
313849
|
313850
|
313851
|
314419
|
314420
|
314421
|
315321