Lines Matching full:adapter

28 static void netxen_nic_io_write_128M(struct netxen_adapter *adapter,
30 static u32 netxen_nic_io_read_128M(struct netxen_adapter *adapter,
33 #define PCI_OFFSET_FIRST_RANGE(adapter, off) \ argument
34 ((adapter)->ahw.pci_base0 + (off))
35 #define PCI_OFFSET_SECOND_RANGE(adapter, off) \ argument
36 ((adapter)->ahw.pci_base1 + (off) - SECOND_PAGE_GROUP_START)
37 #define PCI_OFFSET_THIRD_RANGE(adapter, off) \ argument
38 ((adapter)->ahw.pci_base2 + (off) - THIRD_PAGE_GROUP_START)
40 static void __iomem *pci_base_offset(struct netxen_adapter *adapter, in pci_base_offset() argument
44 return PCI_OFFSET_FIRST_RANGE(adapter, off); in pci_base_offset()
47 return PCI_OFFSET_SECOND_RANGE(adapter, off); in pci_base_offset()
50 return PCI_OFFSET_THIRD_RANGE(adapter, off); in pci_base_offset()
290 static int netxen_nic_set_mtu_xgb(struct netxen_adapter *adapter, int new_mtu);
293 netxen_pcie_sem_lock(struct netxen_adapter *adapter, int sem, u32 id_reg) in netxen_pcie_sem_lock() argument
298 done = NXRD32(adapter, NETXEN_PCIE_REG(PCIE_SEM_LOCK(sem))); in netxen_pcie_sem_lock()
307 NXWR32(adapter, id_reg, adapter->portnum); in netxen_pcie_sem_lock()
313 netxen_pcie_sem_unlock(struct netxen_adapter *adapter, int sem) in netxen_pcie_sem_unlock() argument
315 NXRD32(adapter, NETXEN_PCIE_REG(PCIE_SEM_UNLOCK(sem))); in netxen_pcie_sem_unlock()
318 static int netxen_niu_xg_init_port(struct netxen_adapter *adapter, int port) in netxen_niu_xg_init_port() argument
320 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { in netxen_niu_xg_init_port()
321 NXWR32(adapter, NETXEN_NIU_XGE_CONFIG_1+(0x10000*port), 0x1447); in netxen_niu_xg_init_port()
322 NXWR32(adapter, NETXEN_NIU_XGE_CONFIG_0+(0x10000*port), 0x5); in netxen_niu_xg_init_port()
329 static int netxen_niu_disable_xg_port(struct netxen_adapter *adapter) in netxen_niu_disable_xg_port() argument
332 u32 port = adapter->physical_port; in netxen_niu_disable_xg_port()
334 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) in netxen_niu_disable_xg_port()
341 if (NXWR32(adapter, in netxen_niu_disable_xg_port()
356 static int netxen_p2_nic_set_promisc(struct netxen_adapter *adapter, u32 mode) in netxen_p2_nic_set_promisc() argument
361 u32 port = adapter->physical_port; in netxen_p2_nic_set_promisc()
362 u16 board_type = adapter->ahw.board_type; in netxen_p2_nic_set_promisc()
367 mac_cfg = NXRD32(adapter, NETXEN_NIU_XGE_CONFIG_0 + (0x10000 * port)); in netxen_p2_nic_set_promisc()
369 NXWR32(adapter, NETXEN_NIU_XGE_CONFIG_0 + (0x10000 * port), mac_cfg); in netxen_p2_nic_set_promisc()
375 NXWR32(adapter, NETXEN_NIU_FRAME_COUNT_SELECT, reg); in netxen_p2_nic_set_promisc()
379 while (NXRD32(adapter, NETXEN_NIU_FRAME_COUNT) && ++cnt < 20) in netxen_p2_nic_set_promisc()
384 reg = NXRD32(adapter, in netxen_p2_nic_set_promisc()
397 NXWR32(adapter, in netxen_p2_nic_set_promisc()
402 NXWR32(adapter, NETXEN_NIU_XGE_CONFIG_0 + (0x10000 * port), mac_cfg); in netxen_p2_nic_set_promisc()
407 static int netxen_p2_nic_set_mac_addr(struct netxen_adapter *adapter, u8 *addr) in netxen_p2_nic_set_mac_addr() argument
412 u8 phy = adapter->physical_port; in netxen_p2_nic_set_mac_addr()
425 if (NXWR32(adapter, reg_lo, mac_lo) || NXWR32(adapter, reg_hi, mac_hi)) in netxen_p2_nic_set_mac_addr()
427 if (NXWR32(adapter, reg_lo, mac_lo) || NXWR32(adapter, reg_hi, mac_hi)) in netxen_p2_nic_set_mac_addr()
434 netxen_nic_enable_mcast_filter(struct netxen_adapter *adapter) in netxen_nic_enable_mcast_filter() argument
437 u16 port = adapter->physical_port; in netxen_nic_enable_mcast_filter()
438 u8 *addr = adapter->mac_addr; in netxen_nic_enable_mcast_filter()
440 if (adapter->mc_enabled) in netxen_nic_enable_mcast_filter()
443 val = NXRD32(adapter, NETXEN_MAC_ADDR_CNTL_REG); in netxen_nic_enable_mcast_filter()
445 NXWR32(adapter, NETXEN_MAC_ADDR_CNTL_REG, val); in netxen_nic_enable_mcast_filter()
449 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 0), val); in netxen_nic_enable_mcast_filter()
450 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 0)+4, val); in netxen_nic_enable_mcast_filter()
454 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 1), val); in netxen_nic_enable_mcast_filter()
456 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 1)+4, val); in netxen_nic_enable_mcast_filter()
458 adapter->mc_enabled = 1; in netxen_nic_enable_mcast_filter()
463 netxen_nic_disable_mcast_filter(struct netxen_adapter *adapter) in netxen_nic_disable_mcast_filter() argument
466 u16 port = adapter->physical_port; in netxen_nic_disable_mcast_filter()
467 u8 *addr = adapter->mac_addr; in netxen_nic_disable_mcast_filter()
469 if (!adapter->mc_enabled) in netxen_nic_disable_mcast_filter()
472 val = NXRD32(adapter, NETXEN_MAC_ADDR_CNTL_REG); in netxen_nic_disable_mcast_filter()
474 NXWR32(adapter, NETXEN_MAC_ADDR_CNTL_REG, val); in netxen_nic_disable_mcast_filter()
477 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 0), val); in netxen_nic_disable_mcast_filter()
479 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 0)+4, val); in netxen_nic_disable_mcast_filter()
481 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 1), 0); in netxen_nic_disable_mcast_filter()
482 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 1)+4, 0); in netxen_nic_disable_mcast_filter()
484 adapter->mc_enabled = 0; in netxen_nic_disable_mcast_filter()
489 netxen_nic_set_mcast_addr(struct netxen_adapter *adapter, in netxen_nic_set_mcast_addr() argument
493 u16 port = adapter->physical_port; in netxen_nic_set_mcast_addr()
498 NXWR32(adapter, NETXEN_MCAST_ADDR(port, index), hi); in netxen_nic_set_mcast_addr()
499 NXWR32(adapter, NETXEN_MCAST_ADDR(port, index)+4, lo); in netxen_nic_set_mcast_addr()
506 struct netxen_adapter *adapter = netdev_priv(netdev); in netxen_p2_nic_set_multi() local
515 adapter->set_promisc(adapter, in netxen_p2_nic_set_multi()
519 netxen_nic_disable_mcast_filter(adapter); in netxen_p2_nic_set_multi()
525 adapter->set_promisc(adapter, in netxen_p2_nic_set_multi()
527 netxen_nic_disable_mcast_filter(adapter); in netxen_p2_nic_set_multi()
531 adapter->set_promisc(adapter, NETXEN_NIU_ALLMULTI_MODE); in netxen_p2_nic_set_multi()
533 netdev_mc_count(netdev) > adapter->max_mc_count) { in netxen_p2_nic_set_multi()
534 netxen_nic_disable_mcast_filter(adapter); in netxen_p2_nic_set_multi()
538 netxen_nic_enable_mcast_filter(adapter); in netxen_p2_nic_set_multi()
542 netxen_nic_set_mcast_addr(adapter, i++, ha->addr); in netxen_p2_nic_set_multi()
545 while (i < adapter->max_mc_count) in netxen_p2_nic_set_multi()
546 netxen_nic_set_mcast_addr(adapter, i++, null_addr); in netxen_p2_nic_set_multi()
550 netxen_send_cmd_descs(struct netxen_adapter *adapter, in netxen_send_cmd_descs() argument
559 if (adapter->is_up != NETXEN_ADAPTER_UP_MAGIC) in netxen_send_cmd_descs()
562 tx_ring = adapter->tx_ring; in netxen_send_cmd_descs()
594 netxen_nic_update_cmd_producer(adapter, tx_ring); in netxen_send_cmd_descs()
602 nx_p3_sre_macaddr_change(struct netxen_adapter *adapter, u8 *addr, unsigned op) in nx_p3_sre_macaddr_change() argument
611 word = NX_MAC_EVENT | ((u64)adapter->portnum << 16); in nx_p3_sre_macaddr_change()
618 return netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in nx_p3_sre_macaddr_change()
621 static int nx_p3_nic_add_mac(struct netxen_adapter *adapter, in nx_p3_nic_add_mac() argument
632 list_move_tail(head, &adapter->mac_list); in nx_p3_nic_add_mac()
642 list_add_tail(&cur->list, &adapter->mac_list); in nx_p3_nic_add_mac()
643 return nx_p3_sre_macaddr_change(adapter, in nx_p3_nic_add_mac()
649 struct netxen_adapter *adapter = netdev_priv(netdev); in netxen_p3_nic_set_multi() local
659 if (adapter->is_up != NETXEN_ADAPTER_UP_MAGIC) in netxen_p3_nic_set_multi()
662 list_splice_tail_init(&adapter->mac_list, &del_list); in netxen_p3_nic_set_multi()
664 nx_p3_nic_add_mac(adapter, adapter->mac_addr, &del_list); in netxen_p3_nic_set_multi()
665 nx_p3_nic_add_mac(adapter, bcast_addr, &del_list); in netxen_p3_nic_set_multi()
673 (netdev_mc_count(netdev) > adapter->max_mc_count)) { in netxen_p3_nic_set_multi()
680 nx_p3_nic_add_mac(adapter, ha->addr, &del_list); in netxen_p3_nic_set_multi()
684 adapter->set_promisc(adapter, mode); in netxen_p3_nic_set_multi()
689 nx_p3_sre_macaddr_change(adapter, in netxen_p3_nic_set_multi()
696 static int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32 mode) in netxen_p3_nic_set_promisc() argument
706 ((u64)adapter->portnum << 16); in netxen_p3_nic_set_promisc()
711 return netxen_send_cmd_descs(adapter, in netxen_p3_nic_set_promisc()
715 void netxen_p3_free_mac_list(struct netxen_adapter *adapter) in netxen_p3_free_mac_list() argument
718 struct list_head *head = &adapter->mac_list; in netxen_p3_free_mac_list()
722 nx_p3_sre_macaddr_change(adapter, in netxen_p3_free_mac_list()
729 static int netxen_p3_nic_set_mac_addr(struct netxen_adapter *adapter, u8 *addr) in netxen_p3_nic_set_mac_addr() argument
732 netxen_p3_nic_set_multi(adapter->netdev); in netxen_p3_nic_set_mac_addr()
741 int netxen_config_intr_coalesce(struct netxen_adapter *adapter) in netxen_config_intr_coalesce() argument
752 word[0] = NETXEN_CONFIG_INTR_COALESCE | ((u64)adapter->portnum << 16); in netxen_config_intr_coalesce()
755 memcpy(&word[0], &adapter->coal, sizeof(adapter->coal)); in netxen_config_intr_coalesce()
759 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_config_intr_coalesce()
768 int netxen_config_hw_lro(struct netxen_adapter *adapter, int enable) in netxen_config_hw_lro() argument
774 if (!test_bit(__NX_FW_ATTACHED, &adapter->state)) in netxen_config_hw_lro()
781 word = NX_NIC_H2C_OPCODE_CONFIG_HW_LRO | ((u64)adapter->portnum << 16); in netxen_config_hw_lro()
786 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_config_hw_lro()
795 int netxen_config_bridged_mode(struct netxen_adapter *adapter, int enable) in netxen_config_bridged_mode() argument
801 if (!!(adapter->flags & NETXEN_NIC_BRIDGE_ENABLED) == enable) in netxen_config_bridged_mode()
809 ((u64)adapter->portnum << 16); in netxen_config_bridged_mode()
814 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_config_bridged_mode()
820 adapter->flags ^= NETXEN_NIC_BRIDGE_ENABLED; in netxen_config_bridged_mode()
828 int netxen_config_rss(struct netxen_adapter *adapter, int enable) in netxen_config_rss() argument
844 word = NX_NIC_H2C_OPCODE_CONFIG_RSS | ((u64)adapter->portnum << 16); in netxen_config_rss()
866 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_config_rss()
869 adapter->netdev->name); in netxen_config_rss()
875 int netxen_config_ipaddr(struct netxen_adapter *adapter, __be32 ip, int cmd) in netxen_config_ipaddr() argument
884 word = NX_NIC_H2C_OPCODE_CONFIG_IPADDR | ((u64)adapter->portnum << 16); in netxen_config_ipaddr()
890 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_config_ipaddr()
893 adapter->netdev->name, in netxen_config_ipaddr()
899 int netxen_linkevent_request(struct netxen_adapter *adapter, int enable) in netxen_linkevent_request() argument
908 word = NX_NIC_H2C_OPCODE_GET_LINKEVENT | ((u64)adapter->portnum << 16); in netxen_linkevent_request()
912 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_linkevent_request()
915 adapter->netdev->name); in netxen_linkevent_request()
921 int netxen_send_lro_cleanup(struct netxen_adapter *adapter) in netxen_send_lro_cleanup() argument
927 if (!test_bit(__NX_FW_ATTACHED, &adapter->state)) in netxen_send_lro_cleanup()
934 ((u64)adapter->portnum << 16) | in netxen_send_lro_cleanup()
939 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_send_lro_cleanup()
942 adapter->netdev->name); in netxen_send_lro_cleanup()
956 struct netxen_adapter *adapter = netdev_priv(netdev); in netxen_nic_change_mtu() local
959 if (adapter->set_mtu) in netxen_nic_change_mtu()
960 rc = adapter->set_mtu(adapter, mtu); in netxen_nic_change_mtu()
968 static int netxen_get_flash_block(struct netxen_adapter *adapter, int base, in netxen_get_flash_block() argument
978 ret = netxen_rom_fast_read(adapter, addr, &v); in netxen_get_flash_block()
988 ret = netxen_rom_fast_read(adapter, addr, &v); in netxen_get_flash_block()
998 int netxen_get_flash_mac_addr(struct netxen_adapter *adapter, u64 *mac) in netxen_get_flash_mac_addr() argument
1003 offset = NX_FW_MAC_ADDR_OFFSET + (adapter->portnum * sizeof(u64)); in netxen_get_flash_mac_addr()
1005 if (netxen_get_flash_block(adapter, offset, sizeof(u64), pmac) == -1) in netxen_get_flash_mac_addr()
1011 (adapter->portnum * sizeof(u64)); in netxen_get_flash_mac_addr()
1013 if (netxen_get_flash_block(adapter, in netxen_get_flash_mac_addr()
1023 int netxen_p3_get_mac_addr(struct netxen_adapter *adapter, u64 *mac) in netxen_p3_get_mac_addr() argument
1026 int pci_func = adapter->ahw.pci_func; in netxen_p3_get_mac_addr()
1031 mac_lo = NXRD32(adapter, crbaddr); in netxen_p3_get_mac_addr()
1032 mac_hi = NXRD32(adapter, crbaddr+4); in netxen_p3_get_mac_addr()
1046 netxen_nic_pci_set_crbwindow_128M(struct netxen_adapter *adapter, in netxen_nic_pci_set_crbwindow_128M() argument
1051 u8 func = adapter->ahw.pci_func; in netxen_nic_pci_set_crbwindow_128M()
1053 if (adapter->ahw.crb_win == window) in netxen_nic_pci_set_crbwindow_128M()
1056 offset = PCI_OFFSET_SECOND_RANGE(adapter, in netxen_nic_pci_set_crbwindow_128M()
1065 dev_warn(&adapter->pdev->dev, in netxen_nic_pci_set_crbwindow_128M()
1073 adapter->ahw.crb_win = window; in netxen_nic_pci_set_crbwindow_128M()
1084 netxen_nic_pci_get_crb_addr_2M(struct netxen_adapter *adapter, in netxen_nic_pci_get_crb_addr_2M() argument
1101 *addr = adapter->ahw.pci_base0 + m->start_2M + in netxen_nic_pci_get_crb_addr_2M()
1109 *addr = adapter->ahw.pci_base0 + CRB_INDIRECT_2M + in netxen_nic_pci_get_crb_addr_2M()
1120 netxen_nic_pci_set_crbwindow_2M(struct netxen_adapter *adapter, ulong off) in netxen_nic_pci_set_crbwindow_2M() argument
1123 void __iomem *addr = adapter->ahw.pci_base0 + CRB_WINDOW_2M; in netxen_nic_pci_set_crbwindow_2M()
1132 dev_warn(&adapter->pdev->dev, in netxen_nic_pci_set_crbwindow_2M()
1139 netxen_nic_map_indirect_address_128M(struct netxen_adapter *adapter, in netxen_nic_map_indirect_address_128M() argument
1149 addr = pci_base_offset(adapter, off); in netxen_nic_map_indirect_address_128M()
1153 if (adapter->ahw.pci_len0 == 0) in netxen_nic_map_indirect_address_128M()
1156 mem_base = pci_resource_start(adapter->pdev, 0); in netxen_nic_map_indirect_address_128M()
1165 netxen_nic_hw_write_wx_128M(struct netxen_adapter *adapter, ulong off, u32 data) in netxen_nic_hw_write_wx_128M() argument
1170 addr = netxen_nic_map_indirect_address_128M(adapter, off, &mem_ptr); in netxen_nic_hw_write_wx_128M()
1175 netxen_nic_io_write_128M(adapter, addr, data); in netxen_nic_hw_write_wx_128M()
1177 write_lock_irqsave(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_write_wx_128M()
1178 netxen_nic_pci_set_crbwindow_128M(adapter, 0); in netxen_nic_hw_write_wx_128M()
1180 netxen_nic_pci_set_crbwindow_128M(adapter, in netxen_nic_hw_write_wx_128M()
1182 write_unlock_irqrestore(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_write_wx_128M()
1192 netxen_nic_hw_read_wx_128M(struct netxen_adapter *adapter, ulong off) in netxen_nic_hw_read_wx_128M() argument
1198 addr = netxen_nic_map_indirect_address_128M(adapter, off, &mem_ptr); in netxen_nic_hw_read_wx_128M()
1203 data = netxen_nic_io_read_128M(adapter, addr); in netxen_nic_hw_read_wx_128M()
1205 write_lock_irqsave(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_read_wx_128M()
1206 netxen_nic_pci_set_crbwindow_128M(adapter, 0); in netxen_nic_hw_read_wx_128M()
1208 netxen_nic_pci_set_crbwindow_128M(adapter, in netxen_nic_hw_read_wx_128M()
1210 write_unlock_irqrestore(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_read_wx_128M()
1220 netxen_nic_hw_write_wx_2M(struct netxen_adapter *adapter, ulong off, u32 data) in netxen_nic_hw_write_wx_2M() argument
1226 rv = netxen_nic_pci_get_crb_addr_2M(adapter, off, &addr); in netxen_nic_hw_write_wx_2M()
1235 write_lock_irqsave(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_write_wx_2M()
1236 crb_win_lock(adapter); in netxen_nic_hw_write_wx_2M()
1237 netxen_nic_pci_set_crbwindow_2M(adapter, off); in netxen_nic_hw_write_wx_2M()
1239 crb_win_unlock(adapter); in netxen_nic_hw_write_wx_2M()
1240 write_unlock_irqrestore(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_write_wx_2M()
1244 dev_err(&adapter->pdev->dev, in netxen_nic_hw_write_wx_2M()
1251 netxen_nic_hw_read_wx_2M(struct netxen_adapter *adapter, ulong off) in netxen_nic_hw_read_wx_2M() argument
1258 rv = netxen_nic_pci_get_crb_addr_2M(adapter, off, &addr); in netxen_nic_hw_read_wx_2M()
1265 write_lock_irqsave(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_read_wx_2M()
1266 crb_win_lock(adapter); in netxen_nic_hw_read_wx_2M()
1267 netxen_nic_pci_set_crbwindow_2M(adapter, off); in netxen_nic_hw_read_wx_2M()
1269 crb_win_unlock(adapter); in netxen_nic_hw_read_wx_2M()
1270 write_unlock_irqrestore(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_read_wx_2M()
1274 dev_err(&adapter->pdev->dev, in netxen_nic_hw_read_wx_2M()
1281 static void netxen_nic_io_write_128M(struct netxen_adapter *adapter, in netxen_nic_io_write_128M() argument
1284 read_lock(&adapter->ahw.crb_lock); in netxen_nic_io_write_128M()
1286 read_unlock(&adapter->ahw.crb_lock); in netxen_nic_io_write_128M()
1289 static u32 netxen_nic_io_read_128M(struct netxen_adapter *adapter, in netxen_nic_io_read_128M() argument
1294 read_lock(&adapter->ahw.crb_lock); in netxen_nic_io_read_128M()
1296 read_unlock(&adapter->ahw.crb_lock); in netxen_nic_io_read_128M()
1301 static void netxen_nic_io_write_2M(struct netxen_adapter *adapter, in netxen_nic_io_write_2M() argument
1307 static u32 netxen_nic_io_read_2M(struct netxen_adapter *adapter, in netxen_nic_io_read_2M() argument
1314 netxen_get_ioaddr(struct netxen_adapter *adapter, u32 offset) in netxen_get_ioaddr() argument
1318 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { in netxen_get_ioaddr()
1321 addr = PCI_OFFSET_SECOND_RANGE(adapter, offset); in netxen_get_ioaddr()
1323 addr = NETXEN_CRB_NORMALIZE(adapter, offset); in netxen_get_ioaddr()
1325 WARN_ON(netxen_nic_pci_get_crb_addr_2M(adapter, in netxen_get_ioaddr()
1333 netxen_nic_pci_set_window_128M(struct netxen_adapter *adapter, in netxen_nic_pci_set_window_128M() argument
1349 netxen_nic_pci_set_window_2M(struct netxen_adapter *adapter, in netxen_nic_pci_set_window_2M() argument
1356 writel(window, adapter->ahw.ocm_win_crb); in netxen_nic_pci_set_window_2M()
1358 readl(adapter->ahw.ocm_win_crb); in netxen_nic_pci_set_window_2M()
1360 adapter->ahw.ocm_win = window; in netxen_nic_pci_set_window_2M()
1366 netxen_nic_pci_mem_access_direct(struct netxen_adapter *adapter, u64 off, in netxen_nic_pci_mem_access_direct() argument
1374 spin_lock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_access_direct()
1376 ret = adapter->pci_set_window(adapter, off, &start); in netxen_nic_pci_mem_access_direct()
1380 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { in netxen_nic_pci_mem_access_direct()
1381 addr = adapter->ahw.pci_base0 + start; in netxen_nic_pci_mem_access_direct()
1383 addr = pci_base_offset(adapter, start); in netxen_nic_pci_mem_access_direct()
1387 mem_base = pci_resource_start(adapter->pdev, 0) + in netxen_nic_pci_mem_access_direct()
1404 spin_unlock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_access_direct()
1412 netxen_pci_camqm_read_2M(struct netxen_adapter *adapter, u64 off, u64 *data) in netxen_pci_camqm_read_2M() argument
1414 void __iomem *addr = adapter->ahw.pci_base0 + in netxen_pci_camqm_read_2M()
1417 spin_lock(&adapter->ahw.mem_lock); in netxen_pci_camqm_read_2M()
1419 spin_unlock(&adapter->ahw.mem_lock); in netxen_pci_camqm_read_2M()
1423 netxen_pci_camqm_write_2M(struct netxen_adapter *adapter, u64 off, u64 data) in netxen_pci_camqm_write_2M() argument
1425 void __iomem *addr = adapter->ahw.pci_base0 + in netxen_pci_camqm_write_2M()
1428 spin_lock(&adapter->ahw.mem_lock); in netxen_pci_camqm_write_2M()
1430 spin_unlock(&adapter->ahw.mem_lock); in netxen_pci_camqm_write_2M()
1436 netxen_nic_pci_mem_write_128M(struct netxen_adapter *adapter, in netxen_nic_pci_mem_write_128M() argument
1450 mem_crb = pci_base_offset(adapter, in netxen_nic_pci_mem_write_128M()
1461 mem_crb = pci_base_offset(adapter, in netxen_nic_pci_mem_write_128M()
1473 if (adapter->ahw.pci_len0 != 0) { in netxen_nic_pci_mem_write_128M()
1474 return netxen_nic_pci_mem_access_direct(adapter, in netxen_nic_pci_mem_write_128M()
1482 spin_lock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_write_128M()
1483 netxen_nic_pci_set_crbwindow_128M(adapter, 0); in netxen_nic_pci_mem_write_128M()
1501 dev_err(&adapter->pdev->dev, in netxen_nic_pci_mem_write_128M()
1507 netxen_nic_pci_set_crbwindow_128M(adapter, NETXEN_WINDOW_ONE); in netxen_nic_pci_mem_write_128M()
1508 spin_unlock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_write_128M()
1513 netxen_nic_pci_mem_read_128M(struct netxen_adapter *adapter, in netxen_nic_pci_mem_read_128M() argument
1528 mem_crb = pci_base_offset(adapter, in netxen_nic_pci_mem_read_128M()
1539 mem_crb = pci_base_offset(adapter, in netxen_nic_pci_mem_read_128M()
1551 if (adapter->ahw.pci_len0 != 0) { in netxen_nic_pci_mem_read_128M()
1552 return netxen_nic_pci_mem_access_direct(adapter, in netxen_nic_pci_mem_read_128M()
1560 spin_lock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_read_128M()
1561 netxen_nic_pci_set_crbwindow_128M(adapter, 0); in netxen_nic_pci_mem_read_128M()
1576 dev_err(&adapter->pdev->dev, in netxen_nic_pci_mem_read_128M()
1588 netxen_nic_pci_set_crbwindow_128M(adapter, NETXEN_WINDOW_ONE); in netxen_nic_pci_mem_read_128M()
1589 spin_unlock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_read_128M()
1595 netxen_nic_pci_mem_write_2M(struct netxen_adapter *adapter, in netxen_nic_pci_mem_write_2M() argument
1609 mem_crb = netxen_get_ioaddr(adapter, in netxen_nic_pci_mem_write_2M()
1615 mem_crb = netxen_get_ioaddr(adapter, in netxen_nic_pci_mem_write_2M()
1621 return netxen_nic_pci_mem_access_direct(adapter, off, &data, 1); in netxen_nic_pci_mem_write_2M()
1628 spin_lock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_write_2M()
1650 dev_err(&adapter->pdev->dev, in netxen_nic_pci_mem_write_2M()
1656 spin_unlock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_write_2M()
1662 netxen_nic_pci_mem_read_2M(struct netxen_adapter *adapter, in netxen_nic_pci_mem_read_2M() argument
1677 mem_crb = netxen_get_ioaddr(adapter, in netxen_nic_pci_mem_read_2M()
1683 mem_crb = netxen_get_ioaddr(adapter, in netxen_nic_pci_mem_read_2M()
1689 return netxen_nic_pci_mem_access_direct(adapter, in netxen_nic_pci_mem_read_2M()
1698 spin_lock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_read_2M()
1713 dev_err(&adapter->pdev->dev, in netxen_nic_pci_mem_read_2M()
1723 spin_unlock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_read_2M()
1729 netxen_setup_hwops(struct netxen_adapter *adapter) in netxen_setup_hwops() argument
1731 adapter->init_port = netxen_niu_xg_init_port; in netxen_setup_hwops()
1732 adapter->stop_port = netxen_niu_disable_xg_port; in netxen_setup_hwops()
1734 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { in netxen_setup_hwops()
1735 adapter->crb_read = netxen_nic_hw_read_wx_128M, in netxen_setup_hwops()
1736 adapter->crb_write = netxen_nic_hw_write_wx_128M, in netxen_setup_hwops()
1737 adapter->pci_set_window = netxen_nic_pci_set_window_128M, in netxen_setup_hwops()
1738 adapter->pci_mem_read = netxen_nic_pci_mem_read_128M, in netxen_setup_hwops()
1739 adapter->pci_mem_write = netxen_nic_pci_mem_write_128M, in netxen_setup_hwops()
1740 adapter->io_read = netxen_nic_io_read_128M, in netxen_setup_hwops()
1741 adapter->io_write = netxen_nic_io_write_128M, in netxen_setup_hwops()
1743 adapter->macaddr_set = netxen_p2_nic_set_mac_addr; in netxen_setup_hwops()
1744 adapter->set_multi = netxen_p2_nic_set_multi; in netxen_setup_hwops()
1745 adapter->set_mtu = netxen_nic_set_mtu_xgb; in netxen_setup_hwops()
1746 adapter->set_promisc = netxen_p2_nic_set_promisc; in netxen_setup_hwops()
1749 adapter->crb_read = netxen_nic_hw_read_wx_2M, in netxen_setup_hwops()
1750 adapter->crb_write = netxen_nic_hw_write_wx_2M, in netxen_setup_hwops()
1751 adapter->pci_set_window = netxen_nic_pci_set_window_2M, in netxen_setup_hwops()
1752 adapter->pci_mem_read = netxen_nic_pci_mem_read_2M, in netxen_setup_hwops()
1753 adapter->pci_mem_write = netxen_nic_pci_mem_write_2M, in netxen_setup_hwops()
1754 adapter->io_read = netxen_nic_io_read_2M, in netxen_setup_hwops()
1755 adapter->io_write = netxen_nic_io_write_2M, in netxen_setup_hwops()
1757 adapter->set_mtu = nx_fw_cmd_set_mtu; in netxen_setup_hwops()
1758 adapter->set_promisc = netxen_p3_nic_set_promisc; in netxen_setup_hwops()
1759 adapter->macaddr_set = netxen_p3_nic_set_mac_addr; in netxen_setup_hwops()
1760 adapter->set_multi = netxen_p3_nic_set_multi; in netxen_setup_hwops()
1762 adapter->phy_read = nx_fw_cmd_query_phy; in netxen_setup_hwops()
1763 adapter->phy_write = nx_fw_cmd_set_phy; in netxen_setup_hwops()
1767 int netxen_nic_get_board_info(struct netxen_adapter *adapter) in netxen_nic_get_board_info() argument
1770 struct pci_dev *pdev = adapter->pdev; in netxen_nic_get_board_info()
1773 if (netxen_rom_fast_read(adapter, offset, &magic)) in netxen_nic_get_board_info()
1783 if (netxen_rom_fast_read(adapter, offset, &board_type)) in netxen_nic_get_board_info()
1787 u32 gpio = NXRD32(adapter, NETXEN_ROMUSB_GLB_PAD_GPIO_I); in netxen_nic_get_board_info()
1792 adapter->ahw.board_type = board_type; in netxen_nic_get_board_info()
1796 adapter->ahw.port_type = NETXEN_NIC_GBE; in netxen_nic_get_board_info()
1812 adapter->ahw.port_type = NETXEN_NIC_XGBE; in netxen_nic_get_board_info()
1821 adapter->ahw.port_type = NETXEN_NIC_GBE; in netxen_nic_get_board_info()
1824 adapter->ahw.port_type = (adapter->portnum < 2) ? in netxen_nic_get_board_info()
1829 adapter->ahw.port_type = NETXEN_NIC_XGBE; in netxen_nic_get_board_info()
1837 static int netxen_nic_set_mtu_xgb(struct netxen_adapter *adapter, int new_mtu) in netxen_nic_set_mtu_xgb() argument
1840 if (adapter->physical_port == 0) in netxen_nic_set_mtu_xgb()
1841 NXWR32(adapter, NETXEN_NIU_XGE_MAX_FRAME_SIZE, new_mtu); in netxen_nic_set_mtu_xgb()
1843 NXWR32(adapter, NETXEN_NIU_XG1_MAX_FRAME_SIZE, new_mtu); in netxen_nic_set_mtu_xgb()
1847 void netxen_nic_set_link_parameters(struct netxen_adapter *adapter) in netxen_nic_set_link_parameters() argument
1853 if (!netif_carrier_ok(adapter->netdev)) { in netxen_nic_set_link_parameters()
1854 adapter->link_speed = 0; in netxen_nic_set_link_parameters()
1855 adapter->link_duplex = -1; in netxen_nic_set_link_parameters()
1856 adapter->link_autoneg = AUTONEG_ENABLE; in netxen_nic_set_link_parameters()
1860 if (adapter->ahw.port_type == NETXEN_NIC_GBE) { in netxen_nic_set_link_parameters()
1861 port_mode = NXRD32(adapter, NETXEN_PORT_MODE_ADDR); in netxen_nic_set_link_parameters()
1863 adapter->link_speed = SPEED_1000; in netxen_nic_set_link_parameters()
1864 adapter->link_duplex = DUPLEX_FULL; in netxen_nic_set_link_parameters()
1865 adapter->link_autoneg = AUTONEG_DISABLE; in netxen_nic_set_link_parameters()
1869 if (adapter->phy_read && in netxen_nic_set_link_parameters()
1870 adapter->phy_read(adapter, in netxen_nic_set_link_parameters()
1876 adapter->link_speed = SPEED_10; in netxen_nic_set_link_parameters()
1879 adapter->link_speed = SPEED_100; in netxen_nic_set_link_parameters()
1882 adapter->link_speed = SPEED_1000; in netxen_nic_set_link_parameters()
1885 adapter->link_speed = 0; in netxen_nic_set_link_parameters()
1890 adapter->link_duplex = DUPLEX_HALF; in netxen_nic_set_link_parameters()
1893 adapter->link_duplex = DUPLEX_FULL; in netxen_nic_set_link_parameters()
1896 adapter->link_duplex = -1; in netxen_nic_set_link_parameters()
1899 if (adapter->phy_read && in netxen_nic_set_link_parameters()
1900 adapter->phy_read(adapter, in netxen_nic_set_link_parameters()
1903 adapter->link_autoneg = autoneg; in netxen_nic_set_link_parameters()
1908 adapter->link_speed = 0; in netxen_nic_set_link_parameters()
1909 adapter->link_duplex = -1; in netxen_nic_set_link_parameters()
1915 netxen_nic_wol_supported(struct netxen_adapter *adapter) in netxen_nic_wol_supported() argument
1919 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) in netxen_nic_wol_supported()
1922 wol_cfg = NXRD32(adapter, NETXEN_WOL_CONFIG_NV); in netxen_nic_wol_supported()
1923 if (wol_cfg & (1UL << adapter->portnum)) { in netxen_nic_wol_supported()
1924 wol_cfg = NXRD32(adapter, NETXEN_WOL_CONFIG); in netxen_nic_wol_supported()
1925 if (wol_cfg & (1 << adapter->portnum)) in netxen_nic_wol_supported()
1932 static u32 netxen_md_cntrl(struct netxen_adapter *adapter, in netxen_md_cntrl() argument
1951 adapter->ahw.pci_base0, in netxen_md_cntrl()
1956 adapter->ahw.pci_base0, in netxen_md_cntrl()
1959 adapter->ahw.pci_base0, in netxen_md_cntrl()
1964 adapter->ahw.pci_base0, in netxen_md_cntrl()
1968 adapter->ahw.pci_base0, in netxen_md_cntrl()
1973 adapter->ahw.pci_base0, in netxen_md_cntrl()
1977 adapter->ahw.pci_base0, in netxen_md_cntrl()
1983 adapter->ahw.pci_base0, in netxen_md_cntrl()
1995 adapter->ahw.pci_base0, in netxen_md_cntrl()
2000 dev_err(&adapter->pdev->dev, "%s : " in netxen_md_cntrl()
2013 adapter->ahw.pci_base0, in netxen_md_cntrl()
2035 adapter->ahw.pci_base0, in netxen_md_cntrl()
2067 netxen_md_rdmem(struct netxen_adapter *adapter, in netxen_md_rdmem() argument
2079 if (netxen_nic_pci_mem_read_2M(adapter, addr, &value)) in netxen_md_rdmem()
2089 static u32 netxen_md_rd_crb(struct netxen_adapter *adapter, in netxen_md_rd_crb() argument
2101 NX_RD_DUMP_REG(addr, adapter->ahw.pci_base0, &value); in netxen_md_rd_crb()
2111 netxen_md_rdrom(struct netxen_adapter *adapter, in netxen_md_rdrom() argument
2122 lck_val = readl((void __iomem *)(adapter->ahw.pci_base0 + in netxen_md_rdrom()
2129 writel(adapter->ahw.pci_func, (void __iomem *)(adapter->ahw.pci_base0 + in netxen_md_rdrom()
2133 NX_WR_DUMP_REG(FLASH_ROM_WINDOW, adapter->ahw.pci_base0, waddr); in netxen_md_rdrom()
2135 NX_RD_DUMP_REG(raddr, adapter->ahw.pci_base0, &val); in netxen_md_rdrom()
2139 readl((void __iomem *)(adapter->ahw.pci_base0 + NX_FLASH_SEM2_ULK)); in netxen_md_rdrom()
2145 netxen_md_L2Cache(struct netxen_adapter *adapter, in netxen_md_L2Cache() argument
2164 NX_WR_DUMP_REG(tag_reg_addr, adapter->ahw.pci_base0, tag_value); in netxen_md_L2Cache()
2166 NX_WR_DUMP_REG(cntrl_addr, adapter->ahw.pci_base0, in netxen_md_L2Cache()
2170 NX_RD_DUMP_REG(cntrl_addr, adapter->ahw.pci_base0, in netxen_md_L2Cache()
2178 adapter->ahw.pci_base0, in netxen_md_L2Cache()
2182 dev_err(&adapter->pdev->dev, in netxen_md_L2Cache()
2189 NX_RD_DUMP_REG(addr, adapter->ahw.pci_base0, in netxen_md_L2Cache()
2201 static u32 netxen_md_L1Cache(struct netxen_adapter *adapter, in netxen_md_L1Cache() argument
2219 NX_WR_DUMP_REG(tag_reg_addr, adapter->ahw.pci_base0, tag_value); in netxen_md_L1Cache()
2220 NX_WR_DUMP_REG(cntrl_addr, adapter->ahw.pci_base0, in netxen_md_L1Cache()
2225 adapter->ahw.pci_base0, in netxen_md_L1Cache()
2237 netxen_md_rdocm(struct netxen_adapter *adapter, in netxen_md_rdocm() argument
2244 addr = (ocmEntry->read_addr + adapter->ahw.pci_base0); in netxen_md_rdocm()
2257 netxen_md_rdmux(struct netxen_adapter *adapter, struct netxen_minidump_entry_mux in netxen_md_rdmux() argument
2268 NX_WR_DUMP_REG(select_addr, adapter->ahw.pci_base0, sel_value); in netxen_md_rdmux()
2269 NX_RD_DUMP_REG(read_addr, adapter->ahw.pci_base0, &read_value); in netxen_md_rdmux()
2279 netxen_md_rdqueue(struct netxen_adapter *adapter, in netxen_md_rdqueue() argument
2292 NX_WR_DUMP_REG(select_addr, adapter->ahw.pci_base0, queue_id); in netxen_md_rdqueue()
2295 NX_RD_DUMP_REG(read_addr, adapter->ahw.pci_base0, in netxen_md_rdqueue()
2311 static int netxen_md_entry_err_chk(struct netxen_adapter *adapter, in netxen_md_entry_err_chk() argument
2321 dev_info(&adapter->pdev->dev, in netxen_md_entry_err_chk()
2325 dev_info(&adapter->pdev->dev, "Aborting further dump capture\n"); in netxen_md_entry_err_chk()
2330 static int netxen_parse_md_template(struct netxen_adapter *adapter) in netxen_parse_md_template() argument
2335 void *template_buff = adapter->mdump.md_template; in netxen_parse_md_template()
2336 char *dump_buff = adapter->mdump.md_capture_buff; in netxen_parse_md_template()
2337 int capture_mask = adapter->mdump.md_capture_mask; in netxen_parse_md_template()
2342 dev_err(&adapter->pdev->dev, "Capture mask %02x below minimum needed " in netxen_parse_md_template()
2350 memcpy(dump_buff, template_buff, adapter->mdump.md_template_size); in netxen_parse_md_template()
2351 dump_buff = dump_buff + adapter->mdump.md_template_size; in netxen_parse_md_template()
2372 rv = netxen_md_cntrl(adapter, in netxen_parse_md_template()
2379 esize = netxen_md_rd_crb(adapter, in netxen_parse_md_template()
2382 (adapter, entry, esize); in netxen_parse_md_template()
2390 esize = netxen_md_rdmem(adapter, in netxen_parse_md_template()
2393 (adapter, entry, esize); in netxen_parse_md_template()
2401 esize = netxen_md_rdrom(adapter, in netxen_parse_md_template()
2404 (adapter, entry, esize); in netxen_parse_md_template()
2414 esize = netxen_md_L2Cache(adapter, in netxen_parse_md_template()
2417 (adapter, entry, esize); in netxen_parse_md_template()
2425 esize = netxen_md_L1Cache(adapter, in netxen_parse_md_template()
2428 (adapter, entry, esize); in netxen_parse_md_template()
2435 esize = netxen_md_rdocm(adapter, in netxen_parse_md_template()
2438 (adapter, entry, esize); in netxen_parse_md_template()
2445 esize = netxen_md_rdmux(adapter, in netxen_parse_md_template()
2448 (adapter, entry, esize); in netxen_parse_md_template()
2455 esize = netxen_md_rdqueue(adapter, in netxen_parse_md_template()
2458 (adapter, entry, esize); in netxen_parse_md_template()
2472 dev_err(&adapter->pdev->dev, in netxen_parse_md_template()
2479 netxen_collect_minidump(struct netxen_adapter *adapter) in netxen_collect_minidump() argument
2484 adapter->mdump.md_template; in netxen_collect_minidump()
2485 hdr->driver_capture_mask = adapter->mdump.md_capture_mask; in netxen_collect_minidump()
2487 hdr->driver_info_word2 = adapter->fw_version; in netxen_collect_minidump()
2488 hdr->driver_info_word3 = NXRD32(adapter, CRB_DRIVER_VERSION); in netxen_collect_minidump()
2489 ret = netxen_parse_md_template(adapter); in netxen_collect_minidump()
2498 netxen_dump_fw(struct netxen_adapter *adapter) in netxen_dump_fw() argument
2504 adapter->mdump.md_template; in netxen_dump_fw()
2505 capture_mask = adapter->mdump.md_capture_mask; in netxen_dump_fw()
2512 dev_err(&adapter->pdev->dev, in netxen_dump_fw()
2514 adapter->mdump.md_capture_mask); in netxen_dump_fw()
2517 adapter->mdump.md_capture_size = data_size; in netxen_dump_fw()
2518 adapter->mdump.md_dump_size = adapter->mdump.md_template_size + in netxen_dump_fw()
2519 adapter->mdump.md_capture_size; in netxen_dump_fw()
2520 if (!adapter->mdump.md_capture_buff) { in netxen_dump_fw()
2521 adapter->mdump.md_capture_buff = in netxen_dump_fw()
2522 vzalloc(adapter->mdump.md_dump_size); in netxen_dump_fw()
2523 if (!adapter->mdump.md_capture_buff) in netxen_dump_fw()
2526 if (netxen_collect_minidump(adapter)) { in netxen_dump_fw()
2527 adapter->mdump.has_valid_dump = 0; in netxen_dump_fw()
2528 adapter->mdump.md_dump_size = 0; in netxen_dump_fw()
2529 vfree(adapter->mdump.md_capture_buff); in netxen_dump_fw()
2530 adapter->mdump.md_capture_buff = NULL; in netxen_dump_fw()
2531 dev_err(&adapter->pdev->dev, in netxen_dump_fw()
2534 adapter->mdump.md_timestamp = jiffies; in netxen_dump_fw()
2535 adapter->mdump.has_valid_dump = 1; in netxen_dump_fw()
2536 adapter->fw_mdump_rdy = 1; in netxen_dump_fw()
2537 dev_info(&adapter->pdev->dev, "%s Successfully " in netxen_dump_fw()
2538 "collected fw dump.\n", adapter->netdev->name); in netxen_dump_fw()
2542 dev_info(&adapter->pdev->dev, in netxen_dump_fw()
2545 adapter->fw_mdump_rdy = 1; in netxen_dump_fw()