Lines Matching refs:adapter
43 static void netxen_nic_io_write_128M(struct netxen_adapter *adapter,
45 static u32 netxen_nic_io_read_128M(struct netxen_adapter *adapter,
62 #define PCI_OFFSET_FIRST_RANGE(adapter, off) \ argument
63 ((adapter)->ahw.pci_base0 + (off))
64 #define PCI_OFFSET_SECOND_RANGE(adapter, off) \ argument
65 ((adapter)->ahw.pci_base1 + (off) - SECOND_PAGE_GROUP_START)
66 #define PCI_OFFSET_THIRD_RANGE(adapter, off) \ argument
67 ((adapter)->ahw.pci_base2 + (off) - THIRD_PAGE_GROUP_START)
69 static void __iomem *pci_base_offset(struct netxen_adapter *adapter, in pci_base_offset() argument
73 return PCI_OFFSET_FIRST_RANGE(adapter, off); in pci_base_offset()
76 return PCI_OFFSET_SECOND_RANGE(adapter, off); in pci_base_offset()
79 return PCI_OFFSET_THIRD_RANGE(adapter, off); in pci_base_offset()
319 static int netxen_nic_set_mtu_xgb(struct netxen_adapter *adapter, int new_mtu);
322 netxen_pcie_sem_lock(struct netxen_adapter *adapter, int sem, u32 id_reg) in netxen_pcie_sem_lock() argument
327 done = NXRD32(adapter, NETXEN_PCIE_REG(PCIE_SEM_LOCK(sem))); in netxen_pcie_sem_lock()
336 NXWR32(adapter, id_reg, adapter->portnum); in netxen_pcie_sem_lock()
342 netxen_pcie_sem_unlock(struct netxen_adapter *adapter, int sem) in netxen_pcie_sem_unlock() argument
344 NXRD32(adapter, NETXEN_PCIE_REG(PCIE_SEM_UNLOCK(sem))); in netxen_pcie_sem_unlock()
347 static int netxen_niu_xg_init_port(struct netxen_adapter *adapter, int port) in netxen_niu_xg_init_port() argument
349 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { in netxen_niu_xg_init_port()
350 NXWR32(adapter, NETXEN_NIU_XGE_CONFIG_1+(0x10000*port), 0x1447); in netxen_niu_xg_init_port()
351 NXWR32(adapter, NETXEN_NIU_XGE_CONFIG_0+(0x10000*port), 0x5); in netxen_niu_xg_init_port()
358 static int netxen_niu_disable_xg_port(struct netxen_adapter *adapter) in netxen_niu_disable_xg_port() argument
361 u32 port = adapter->physical_port; in netxen_niu_disable_xg_port()
363 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) in netxen_niu_disable_xg_port()
370 if (NXWR32(adapter, in netxen_niu_disable_xg_port()
385 static int netxen_p2_nic_set_promisc(struct netxen_adapter *adapter, u32 mode) in netxen_p2_nic_set_promisc() argument
390 u32 port = adapter->physical_port; in netxen_p2_nic_set_promisc()
391 u16 board_type = adapter->ahw.board_type; in netxen_p2_nic_set_promisc()
396 mac_cfg = NXRD32(adapter, NETXEN_NIU_XGE_CONFIG_0 + (0x10000 * port)); in netxen_p2_nic_set_promisc()
398 NXWR32(adapter, NETXEN_NIU_XGE_CONFIG_0 + (0x10000 * port), mac_cfg); in netxen_p2_nic_set_promisc()
404 NXWR32(adapter, NETXEN_NIU_FRAME_COUNT_SELECT, reg); in netxen_p2_nic_set_promisc()
408 while (NXRD32(adapter, NETXEN_NIU_FRAME_COUNT) && ++cnt < 20) in netxen_p2_nic_set_promisc()
413 reg = NXRD32(adapter, in netxen_p2_nic_set_promisc()
426 NXWR32(adapter, in netxen_p2_nic_set_promisc()
431 NXWR32(adapter, NETXEN_NIU_XGE_CONFIG_0 + (0x10000 * port), mac_cfg); in netxen_p2_nic_set_promisc()
436 static int netxen_p2_nic_set_mac_addr(struct netxen_adapter *adapter, u8 *addr) in netxen_p2_nic_set_mac_addr() argument
441 u8 phy = adapter->physical_port; in netxen_p2_nic_set_mac_addr()
454 if (NXWR32(adapter, reg_lo, mac_lo) || NXWR32(adapter, reg_hi, mac_hi)) in netxen_p2_nic_set_mac_addr()
456 if (NXWR32(adapter, reg_lo, mac_lo) || NXWR32(adapter, reg_hi, mac_hi)) in netxen_p2_nic_set_mac_addr()
463 netxen_nic_enable_mcast_filter(struct netxen_adapter *adapter) in netxen_nic_enable_mcast_filter() argument
466 u16 port = adapter->physical_port; in netxen_nic_enable_mcast_filter()
467 u8 *addr = adapter->mac_addr; in netxen_nic_enable_mcast_filter()
469 if (adapter->mc_enabled) in netxen_nic_enable_mcast_filter()
472 val = NXRD32(adapter, NETXEN_MAC_ADDR_CNTL_REG); in netxen_nic_enable_mcast_filter()
474 NXWR32(adapter, NETXEN_MAC_ADDR_CNTL_REG, val); in netxen_nic_enable_mcast_filter()
478 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 0), val); in netxen_nic_enable_mcast_filter()
479 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 0)+4, val); in netxen_nic_enable_mcast_filter()
483 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 1), val); in netxen_nic_enable_mcast_filter()
485 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 1)+4, val); in netxen_nic_enable_mcast_filter()
487 adapter->mc_enabled = 1; in netxen_nic_enable_mcast_filter()
492 netxen_nic_disable_mcast_filter(struct netxen_adapter *adapter) in netxen_nic_disable_mcast_filter() argument
495 u16 port = adapter->physical_port; in netxen_nic_disable_mcast_filter()
496 u8 *addr = adapter->mac_addr; in netxen_nic_disable_mcast_filter()
498 if (!adapter->mc_enabled) in netxen_nic_disable_mcast_filter()
501 val = NXRD32(adapter, NETXEN_MAC_ADDR_CNTL_REG); in netxen_nic_disable_mcast_filter()
503 NXWR32(adapter, NETXEN_MAC_ADDR_CNTL_REG, val); in netxen_nic_disable_mcast_filter()
506 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 0), val); in netxen_nic_disable_mcast_filter()
508 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 0)+4, val); in netxen_nic_disable_mcast_filter()
510 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 1), 0); in netxen_nic_disable_mcast_filter()
511 NXWR32(adapter, NETXEN_UNICAST_ADDR(port, 1)+4, 0); in netxen_nic_disable_mcast_filter()
513 adapter->mc_enabled = 0; in netxen_nic_disable_mcast_filter()
518 netxen_nic_set_mcast_addr(struct netxen_adapter *adapter, in netxen_nic_set_mcast_addr() argument
522 u16 port = adapter->physical_port; in netxen_nic_set_mcast_addr()
527 NXWR32(adapter, NETXEN_MCAST_ADDR(port, index), hi); in netxen_nic_set_mcast_addr()
528 NXWR32(adapter, NETXEN_MCAST_ADDR(port, index)+4, lo); in netxen_nic_set_mcast_addr()
535 struct netxen_adapter *adapter = netdev_priv(netdev); in netxen_p2_nic_set_multi() local
544 adapter->set_promisc(adapter, in netxen_p2_nic_set_multi()
548 netxen_nic_disable_mcast_filter(adapter); in netxen_p2_nic_set_multi()
554 adapter->set_promisc(adapter, in netxen_p2_nic_set_multi()
556 netxen_nic_disable_mcast_filter(adapter); in netxen_p2_nic_set_multi()
560 adapter->set_promisc(adapter, NETXEN_NIU_ALLMULTI_MODE); in netxen_p2_nic_set_multi()
562 netdev_mc_count(netdev) > adapter->max_mc_count) { in netxen_p2_nic_set_multi()
563 netxen_nic_disable_mcast_filter(adapter); in netxen_p2_nic_set_multi()
567 netxen_nic_enable_mcast_filter(adapter); in netxen_p2_nic_set_multi()
571 netxen_nic_set_mcast_addr(adapter, i++, ha->addr); in netxen_p2_nic_set_multi()
574 while (i < adapter->max_mc_count) in netxen_p2_nic_set_multi()
575 netxen_nic_set_mcast_addr(adapter, i++, null_addr); in netxen_p2_nic_set_multi()
579 netxen_send_cmd_descs(struct netxen_adapter *adapter, in netxen_send_cmd_descs() argument
589 if (adapter->is_up != NETXEN_ADAPTER_UP_MAGIC) in netxen_send_cmd_descs()
592 tx_ring = adapter->tx_ring; in netxen_send_cmd_descs()
627 netxen_nic_update_cmd_producer(adapter, tx_ring); in netxen_send_cmd_descs()
635 nx_p3_sre_macaddr_change(struct netxen_adapter *adapter, u8 *addr, unsigned op) in nx_p3_sre_macaddr_change() argument
644 word = NX_MAC_EVENT | ((u64)adapter->portnum << 16); in nx_p3_sre_macaddr_change()
651 return netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in nx_p3_sre_macaddr_change()
654 static int nx_p3_nic_add_mac(struct netxen_adapter *adapter, in nx_p3_nic_add_mac() argument
665 list_move_tail(head, &adapter->mac_list); in nx_p3_nic_add_mac()
675 list_add_tail(&cur->list, &adapter->mac_list); in nx_p3_nic_add_mac()
676 return nx_p3_sre_macaddr_change(adapter, in nx_p3_nic_add_mac()
682 struct netxen_adapter *adapter = netdev_priv(netdev); in netxen_p3_nic_set_multi() local
692 if (adapter->is_up != NETXEN_ADAPTER_UP_MAGIC) in netxen_p3_nic_set_multi()
695 list_splice_tail_init(&adapter->mac_list, &del_list); in netxen_p3_nic_set_multi()
697 nx_p3_nic_add_mac(adapter, adapter->mac_addr, &del_list); in netxen_p3_nic_set_multi()
698 nx_p3_nic_add_mac(adapter, bcast_addr, &del_list); in netxen_p3_nic_set_multi()
706 (netdev_mc_count(netdev) > adapter->max_mc_count)) { in netxen_p3_nic_set_multi()
713 nx_p3_nic_add_mac(adapter, ha->addr, &del_list); in netxen_p3_nic_set_multi()
717 adapter->set_promisc(adapter, mode); in netxen_p3_nic_set_multi()
722 nx_p3_sre_macaddr_change(adapter, in netxen_p3_nic_set_multi()
729 static int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32 mode) in netxen_p3_nic_set_promisc() argument
739 ((u64)adapter->portnum << 16); in netxen_p3_nic_set_promisc()
744 return netxen_send_cmd_descs(adapter, in netxen_p3_nic_set_promisc()
748 void netxen_p3_free_mac_list(struct netxen_adapter *adapter) in netxen_p3_free_mac_list() argument
751 struct list_head *head = &adapter->mac_list; in netxen_p3_free_mac_list()
755 nx_p3_sre_macaddr_change(adapter, in netxen_p3_free_mac_list()
762 static int netxen_p3_nic_set_mac_addr(struct netxen_adapter *adapter, u8 *addr) in netxen_p3_nic_set_mac_addr() argument
765 netxen_p3_nic_set_multi(adapter->netdev); in netxen_p3_nic_set_mac_addr()
774 int netxen_config_intr_coalesce(struct netxen_adapter *adapter) in netxen_config_intr_coalesce() argument
785 word[0] = NETXEN_CONFIG_INTR_COALESCE | ((u64)adapter->portnum << 16); in netxen_config_intr_coalesce()
788 memcpy(&word[0], &adapter->coal, sizeof(adapter->coal)); in netxen_config_intr_coalesce()
792 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_config_intr_coalesce()
801 int netxen_config_hw_lro(struct netxen_adapter *adapter, int enable) in netxen_config_hw_lro() argument
807 if (!test_bit(__NX_FW_ATTACHED, &adapter->state)) in netxen_config_hw_lro()
814 word = NX_NIC_H2C_OPCODE_CONFIG_HW_LRO | ((u64)adapter->portnum << 16); in netxen_config_hw_lro()
819 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_config_hw_lro()
828 int netxen_config_bridged_mode(struct netxen_adapter *adapter, int enable) in netxen_config_bridged_mode() argument
834 if (!!(adapter->flags & NETXEN_NIC_BRIDGE_ENABLED) == enable) in netxen_config_bridged_mode()
842 ((u64)adapter->portnum << 16); in netxen_config_bridged_mode()
847 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_config_bridged_mode()
853 adapter->flags ^= NETXEN_NIC_BRIDGE_ENABLED; in netxen_config_bridged_mode()
861 int netxen_config_rss(struct netxen_adapter *adapter, int enable) in netxen_config_rss() argument
877 word = NX_NIC_H2C_OPCODE_CONFIG_RSS | ((u64)adapter->portnum << 16); in netxen_config_rss()
899 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_config_rss()
902 adapter->netdev->name); in netxen_config_rss()
908 int netxen_config_ipaddr(struct netxen_adapter *adapter, __be32 ip, int cmd) in netxen_config_ipaddr() argument
917 word = NX_NIC_H2C_OPCODE_CONFIG_IPADDR | ((u64)adapter->portnum << 16); in netxen_config_ipaddr()
923 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_config_ipaddr()
926 adapter->netdev->name, in netxen_config_ipaddr()
932 int netxen_linkevent_request(struct netxen_adapter *adapter, int enable) in netxen_linkevent_request() argument
941 word = NX_NIC_H2C_OPCODE_GET_LINKEVENT | ((u64)adapter->portnum << 16); in netxen_linkevent_request()
945 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_linkevent_request()
948 adapter->netdev->name); in netxen_linkevent_request()
954 int netxen_send_lro_cleanup(struct netxen_adapter *adapter) in netxen_send_lro_cleanup() argument
960 if (!test_bit(__NX_FW_ATTACHED, &adapter->state)) in netxen_send_lro_cleanup()
967 ((u64)adapter->portnum << 16) | in netxen_send_lro_cleanup()
972 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); in netxen_send_lro_cleanup()
975 adapter->netdev->name); in netxen_send_lro_cleanup()
989 struct netxen_adapter *adapter = netdev_priv(netdev); in netxen_nic_change_mtu() local
993 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) in netxen_nic_change_mtu()
1004 if (adapter->set_mtu) in netxen_nic_change_mtu()
1005 rc = adapter->set_mtu(adapter, mtu); in netxen_nic_change_mtu()
1013 static int netxen_get_flash_block(struct netxen_adapter *adapter, int base, in netxen_get_flash_block() argument
1022 if (netxen_rom_fast_read(adapter, addr, &v) == -1) in netxen_get_flash_block()
1030 if (netxen_rom_fast_read(adapter, addr, &v) == -1) in netxen_get_flash_block()
1039 int netxen_get_flash_mac_addr(struct netxen_adapter *adapter, u64 *mac) in netxen_get_flash_mac_addr() argument
1044 offset = NX_FW_MAC_ADDR_OFFSET + (adapter->portnum * sizeof(u64)); in netxen_get_flash_mac_addr()
1046 if (netxen_get_flash_block(adapter, offset, sizeof(u64), pmac) == -1) in netxen_get_flash_mac_addr()
1052 (adapter->portnum * sizeof(u64)); in netxen_get_flash_mac_addr()
1054 if (netxen_get_flash_block(adapter, in netxen_get_flash_mac_addr()
1064 int netxen_p3_get_mac_addr(struct netxen_adapter *adapter, u64 *mac) in netxen_p3_get_mac_addr() argument
1067 int pci_func = adapter->ahw.pci_func; in netxen_p3_get_mac_addr()
1072 mac_lo = NXRD32(adapter, crbaddr); in netxen_p3_get_mac_addr()
1073 mac_hi = NXRD32(adapter, crbaddr+4); in netxen_p3_get_mac_addr()
1087 netxen_nic_pci_set_crbwindow_128M(struct netxen_adapter *adapter, in netxen_nic_pci_set_crbwindow_128M() argument
1092 u8 func = adapter->ahw.pci_func; in netxen_nic_pci_set_crbwindow_128M()
1094 if (adapter->ahw.crb_win == window) in netxen_nic_pci_set_crbwindow_128M()
1097 offset = PCI_OFFSET_SECOND_RANGE(adapter, in netxen_nic_pci_set_crbwindow_128M()
1106 dev_warn(&adapter->pdev->dev, in netxen_nic_pci_set_crbwindow_128M()
1114 adapter->ahw.crb_win = window; in netxen_nic_pci_set_crbwindow_128M()
1125 netxen_nic_pci_get_crb_addr_2M(struct netxen_adapter *adapter, in netxen_nic_pci_get_crb_addr_2M() argument
1142 *addr = adapter->ahw.pci_base0 + m->start_2M + in netxen_nic_pci_get_crb_addr_2M()
1150 *addr = adapter->ahw.pci_base0 + CRB_INDIRECT_2M + in netxen_nic_pci_get_crb_addr_2M()
1161 netxen_nic_pci_set_crbwindow_2M(struct netxen_adapter *adapter, ulong off) in netxen_nic_pci_set_crbwindow_2M() argument
1164 void __iomem *addr = adapter->ahw.pci_base0 + CRB_WINDOW_2M; in netxen_nic_pci_set_crbwindow_2M()
1173 dev_warn(&adapter->pdev->dev, in netxen_nic_pci_set_crbwindow_2M()
1180 netxen_nic_map_indirect_address_128M(struct netxen_adapter *adapter, in netxen_nic_map_indirect_address_128M() argument
1190 addr = pci_base_offset(adapter, off); in netxen_nic_map_indirect_address_128M()
1194 if (adapter->ahw.pci_len0 == 0) in netxen_nic_map_indirect_address_128M()
1197 mem_base = pci_resource_start(adapter->pdev, 0); in netxen_nic_map_indirect_address_128M()
1206 netxen_nic_hw_write_wx_128M(struct netxen_adapter *adapter, ulong off, u32 data) in netxen_nic_hw_write_wx_128M() argument
1211 addr = netxen_nic_map_indirect_address_128M(adapter, off, &mem_ptr); in netxen_nic_hw_write_wx_128M()
1216 netxen_nic_io_write_128M(adapter, addr, data); in netxen_nic_hw_write_wx_128M()
1218 write_lock_irqsave(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_write_wx_128M()
1219 netxen_nic_pci_set_crbwindow_128M(adapter, 0); in netxen_nic_hw_write_wx_128M()
1221 netxen_nic_pci_set_crbwindow_128M(adapter, in netxen_nic_hw_write_wx_128M()
1223 write_unlock_irqrestore(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_write_wx_128M()
1233 netxen_nic_hw_read_wx_128M(struct netxen_adapter *adapter, ulong off) in netxen_nic_hw_read_wx_128M() argument
1239 addr = netxen_nic_map_indirect_address_128M(adapter, off, &mem_ptr); in netxen_nic_hw_read_wx_128M()
1244 data = netxen_nic_io_read_128M(adapter, addr); in netxen_nic_hw_read_wx_128M()
1246 write_lock_irqsave(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_read_wx_128M()
1247 netxen_nic_pci_set_crbwindow_128M(adapter, 0); in netxen_nic_hw_read_wx_128M()
1249 netxen_nic_pci_set_crbwindow_128M(adapter, in netxen_nic_hw_read_wx_128M()
1251 write_unlock_irqrestore(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_read_wx_128M()
1261 netxen_nic_hw_write_wx_2M(struct netxen_adapter *adapter, ulong off, u32 data) in netxen_nic_hw_write_wx_2M() argument
1267 rv = netxen_nic_pci_get_crb_addr_2M(adapter, off, &addr); in netxen_nic_hw_write_wx_2M()
1276 write_lock_irqsave(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_write_wx_2M()
1277 crb_win_lock(adapter); in netxen_nic_hw_write_wx_2M()
1278 netxen_nic_pci_set_crbwindow_2M(adapter, off); in netxen_nic_hw_write_wx_2M()
1280 crb_win_unlock(adapter); in netxen_nic_hw_write_wx_2M()
1281 write_unlock_irqrestore(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_write_wx_2M()
1285 dev_err(&adapter->pdev->dev, in netxen_nic_hw_write_wx_2M()
1292 netxen_nic_hw_read_wx_2M(struct netxen_adapter *adapter, ulong off) in netxen_nic_hw_read_wx_2M() argument
1299 rv = netxen_nic_pci_get_crb_addr_2M(adapter, off, &addr); in netxen_nic_hw_read_wx_2M()
1306 write_lock_irqsave(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_read_wx_2M()
1307 crb_win_lock(adapter); in netxen_nic_hw_read_wx_2M()
1308 netxen_nic_pci_set_crbwindow_2M(adapter, off); in netxen_nic_hw_read_wx_2M()
1310 crb_win_unlock(adapter); in netxen_nic_hw_read_wx_2M()
1311 write_unlock_irqrestore(&adapter->ahw.crb_lock, flags); in netxen_nic_hw_read_wx_2M()
1315 dev_err(&adapter->pdev->dev, in netxen_nic_hw_read_wx_2M()
1322 static void netxen_nic_io_write_128M(struct netxen_adapter *adapter, in netxen_nic_io_write_128M() argument
1325 read_lock(&adapter->ahw.crb_lock); in netxen_nic_io_write_128M()
1327 read_unlock(&adapter->ahw.crb_lock); in netxen_nic_io_write_128M()
1330 static u32 netxen_nic_io_read_128M(struct netxen_adapter *adapter, in netxen_nic_io_read_128M() argument
1335 read_lock(&adapter->ahw.crb_lock); in netxen_nic_io_read_128M()
1337 read_unlock(&adapter->ahw.crb_lock); in netxen_nic_io_read_128M()
1342 static void netxen_nic_io_write_2M(struct netxen_adapter *adapter, in netxen_nic_io_write_2M() argument
1348 static u32 netxen_nic_io_read_2M(struct netxen_adapter *adapter, in netxen_nic_io_read_2M() argument
1355 netxen_get_ioaddr(struct netxen_adapter *adapter, u32 offset) in netxen_get_ioaddr() argument
1359 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { in netxen_get_ioaddr()
1362 addr = PCI_OFFSET_SECOND_RANGE(adapter, offset); in netxen_get_ioaddr()
1364 addr = NETXEN_CRB_NORMALIZE(adapter, offset); in netxen_get_ioaddr()
1366 WARN_ON(netxen_nic_pci_get_crb_addr_2M(adapter, in netxen_get_ioaddr()
1374 netxen_nic_pci_set_window_128M(struct netxen_adapter *adapter, in netxen_nic_pci_set_window_128M() argument
1390 netxen_nic_pci_set_window_2M(struct netxen_adapter *adapter, in netxen_nic_pci_set_window_2M() argument
1397 writel(window, adapter->ahw.ocm_win_crb); in netxen_nic_pci_set_window_2M()
1399 readl(adapter->ahw.ocm_win_crb); in netxen_nic_pci_set_window_2M()
1401 adapter->ahw.ocm_win = window; in netxen_nic_pci_set_window_2M()
1407 netxen_nic_pci_mem_access_direct(struct netxen_adapter *adapter, u64 off, in netxen_nic_pci_mem_access_direct() argument
1415 spin_lock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_access_direct()
1417 ret = adapter->pci_set_window(adapter, off, &start); in netxen_nic_pci_mem_access_direct()
1421 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { in netxen_nic_pci_mem_access_direct()
1422 addr = adapter->ahw.pci_base0 + start; in netxen_nic_pci_mem_access_direct()
1424 addr = pci_base_offset(adapter, start); in netxen_nic_pci_mem_access_direct()
1428 mem_base = pci_resource_start(adapter->pdev, 0) + in netxen_nic_pci_mem_access_direct()
1445 spin_unlock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_access_direct()
1453 netxen_pci_camqm_read_2M(struct netxen_adapter *adapter, u64 off, u64 *data) in netxen_pci_camqm_read_2M() argument
1455 void __iomem *addr = adapter->ahw.pci_base0 + in netxen_pci_camqm_read_2M()
1458 spin_lock(&adapter->ahw.mem_lock); in netxen_pci_camqm_read_2M()
1460 spin_unlock(&adapter->ahw.mem_lock); in netxen_pci_camqm_read_2M()
1464 netxen_pci_camqm_write_2M(struct netxen_adapter *adapter, u64 off, u64 data) in netxen_pci_camqm_write_2M() argument
1466 void __iomem *addr = adapter->ahw.pci_base0 + in netxen_pci_camqm_write_2M()
1469 spin_lock(&adapter->ahw.mem_lock); in netxen_pci_camqm_write_2M()
1471 spin_unlock(&adapter->ahw.mem_lock); in netxen_pci_camqm_write_2M()
1477 netxen_nic_pci_mem_write_128M(struct netxen_adapter *adapter, in netxen_nic_pci_mem_write_128M() argument
1491 mem_crb = pci_base_offset(adapter, in netxen_nic_pci_mem_write_128M()
1502 mem_crb = pci_base_offset(adapter, in netxen_nic_pci_mem_write_128M()
1514 if (adapter->ahw.pci_len0 != 0) { in netxen_nic_pci_mem_write_128M()
1515 return netxen_nic_pci_mem_access_direct(adapter, in netxen_nic_pci_mem_write_128M()
1523 spin_lock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_write_128M()
1524 netxen_nic_pci_set_crbwindow_128M(adapter, 0); in netxen_nic_pci_mem_write_128M()
1542 dev_err(&adapter->pdev->dev, in netxen_nic_pci_mem_write_128M()
1548 netxen_nic_pci_set_crbwindow_128M(adapter, NETXEN_WINDOW_ONE); in netxen_nic_pci_mem_write_128M()
1549 spin_unlock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_write_128M()
1554 netxen_nic_pci_mem_read_128M(struct netxen_adapter *adapter, in netxen_nic_pci_mem_read_128M() argument
1569 mem_crb = pci_base_offset(adapter, in netxen_nic_pci_mem_read_128M()
1580 mem_crb = pci_base_offset(adapter, in netxen_nic_pci_mem_read_128M()
1592 if (adapter->ahw.pci_len0 != 0) { in netxen_nic_pci_mem_read_128M()
1593 return netxen_nic_pci_mem_access_direct(adapter, in netxen_nic_pci_mem_read_128M()
1601 spin_lock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_read_128M()
1602 netxen_nic_pci_set_crbwindow_128M(adapter, 0); in netxen_nic_pci_mem_read_128M()
1617 dev_err(&adapter->pdev->dev, in netxen_nic_pci_mem_read_128M()
1629 netxen_nic_pci_set_crbwindow_128M(adapter, NETXEN_WINDOW_ONE); in netxen_nic_pci_mem_read_128M()
1630 spin_unlock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_read_128M()
1636 netxen_nic_pci_mem_write_2M(struct netxen_adapter *adapter, in netxen_nic_pci_mem_write_2M() argument
1650 mem_crb = netxen_get_ioaddr(adapter, in netxen_nic_pci_mem_write_2M()
1656 mem_crb = netxen_get_ioaddr(adapter, in netxen_nic_pci_mem_write_2M()
1662 return netxen_nic_pci_mem_access_direct(adapter, off, &data, 1); in netxen_nic_pci_mem_write_2M()
1669 spin_lock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_write_2M()
1691 dev_err(&adapter->pdev->dev, in netxen_nic_pci_mem_write_2M()
1697 spin_unlock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_write_2M()
1703 netxen_nic_pci_mem_read_2M(struct netxen_adapter *adapter, in netxen_nic_pci_mem_read_2M() argument
1718 mem_crb = netxen_get_ioaddr(adapter, in netxen_nic_pci_mem_read_2M()
1724 mem_crb = netxen_get_ioaddr(adapter, in netxen_nic_pci_mem_read_2M()
1730 return netxen_nic_pci_mem_access_direct(adapter, in netxen_nic_pci_mem_read_2M()
1739 spin_lock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_read_2M()
1754 dev_err(&adapter->pdev->dev, in netxen_nic_pci_mem_read_2M()
1764 spin_unlock(&adapter->ahw.mem_lock); in netxen_nic_pci_mem_read_2M()
1770 netxen_setup_hwops(struct netxen_adapter *adapter) in netxen_setup_hwops() argument
1772 adapter->init_port = netxen_niu_xg_init_port; in netxen_setup_hwops()
1773 adapter->stop_port = netxen_niu_disable_xg_port; in netxen_setup_hwops()
1775 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { in netxen_setup_hwops()
1776 adapter->crb_read = netxen_nic_hw_read_wx_128M, in netxen_setup_hwops()
1777 adapter->crb_write = netxen_nic_hw_write_wx_128M, in netxen_setup_hwops()
1778 adapter->pci_set_window = netxen_nic_pci_set_window_128M, in netxen_setup_hwops()
1779 adapter->pci_mem_read = netxen_nic_pci_mem_read_128M, in netxen_setup_hwops()
1780 adapter->pci_mem_write = netxen_nic_pci_mem_write_128M, in netxen_setup_hwops()
1781 adapter->io_read = netxen_nic_io_read_128M, in netxen_setup_hwops()
1782 adapter->io_write = netxen_nic_io_write_128M, in netxen_setup_hwops()
1784 adapter->macaddr_set = netxen_p2_nic_set_mac_addr; in netxen_setup_hwops()
1785 adapter->set_multi = netxen_p2_nic_set_multi; in netxen_setup_hwops()
1786 adapter->set_mtu = netxen_nic_set_mtu_xgb; in netxen_setup_hwops()
1787 adapter->set_promisc = netxen_p2_nic_set_promisc; in netxen_setup_hwops()
1790 adapter->crb_read = netxen_nic_hw_read_wx_2M, in netxen_setup_hwops()
1791 adapter->crb_write = netxen_nic_hw_write_wx_2M, in netxen_setup_hwops()
1792 adapter->pci_set_window = netxen_nic_pci_set_window_2M, in netxen_setup_hwops()
1793 adapter->pci_mem_read = netxen_nic_pci_mem_read_2M, in netxen_setup_hwops()
1794 adapter->pci_mem_write = netxen_nic_pci_mem_write_2M, in netxen_setup_hwops()
1795 adapter->io_read = netxen_nic_io_read_2M, in netxen_setup_hwops()
1796 adapter->io_write = netxen_nic_io_write_2M, in netxen_setup_hwops()
1798 adapter->set_mtu = nx_fw_cmd_set_mtu; in netxen_setup_hwops()
1799 adapter->set_promisc = netxen_p3_nic_set_promisc; in netxen_setup_hwops()
1800 adapter->macaddr_set = netxen_p3_nic_set_mac_addr; in netxen_setup_hwops()
1801 adapter->set_multi = netxen_p3_nic_set_multi; in netxen_setup_hwops()
1803 adapter->phy_read = nx_fw_cmd_query_phy; in netxen_setup_hwops()
1804 adapter->phy_write = nx_fw_cmd_set_phy; in netxen_setup_hwops()
1808 int netxen_nic_get_board_info(struct netxen_adapter *adapter) in netxen_nic_get_board_info() argument
1811 struct pci_dev *pdev = adapter->pdev; in netxen_nic_get_board_info()
1814 if (netxen_rom_fast_read(adapter, offset, &magic)) in netxen_nic_get_board_info()
1824 if (netxen_rom_fast_read(adapter, offset, &board_type)) in netxen_nic_get_board_info()
1828 u32 gpio = NXRD32(adapter, NETXEN_ROMUSB_GLB_PAD_GPIO_I); in netxen_nic_get_board_info()
1833 adapter->ahw.board_type = board_type; in netxen_nic_get_board_info()
1837 adapter->ahw.port_type = NETXEN_NIC_GBE; in netxen_nic_get_board_info()
1853 adapter->ahw.port_type = NETXEN_NIC_XGBE; in netxen_nic_get_board_info()
1862 adapter->ahw.port_type = NETXEN_NIC_GBE; in netxen_nic_get_board_info()
1865 adapter->ahw.port_type = (adapter->portnum < 2) ? in netxen_nic_get_board_info()
1870 adapter->ahw.port_type = NETXEN_NIC_XGBE; in netxen_nic_get_board_info()
1878 static int netxen_nic_set_mtu_xgb(struct netxen_adapter *adapter, int new_mtu) in netxen_nic_set_mtu_xgb() argument
1881 if (adapter->physical_port == 0) in netxen_nic_set_mtu_xgb()
1882 NXWR32(adapter, NETXEN_NIU_XGE_MAX_FRAME_SIZE, new_mtu); in netxen_nic_set_mtu_xgb()
1884 NXWR32(adapter, NETXEN_NIU_XG1_MAX_FRAME_SIZE, new_mtu); in netxen_nic_set_mtu_xgb()
1888 void netxen_nic_set_link_parameters(struct netxen_adapter *adapter) in netxen_nic_set_link_parameters() argument
1894 if (!netif_carrier_ok(adapter->netdev)) { in netxen_nic_set_link_parameters()
1895 adapter->link_speed = 0; in netxen_nic_set_link_parameters()
1896 adapter->link_duplex = -1; in netxen_nic_set_link_parameters()
1897 adapter->link_autoneg = AUTONEG_ENABLE; in netxen_nic_set_link_parameters()
1901 if (adapter->ahw.port_type == NETXEN_NIC_GBE) { in netxen_nic_set_link_parameters()
1902 port_mode = NXRD32(adapter, NETXEN_PORT_MODE_ADDR); in netxen_nic_set_link_parameters()
1904 adapter->link_speed = SPEED_1000; in netxen_nic_set_link_parameters()
1905 adapter->link_duplex = DUPLEX_FULL; in netxen_nic_set_link_parameters()
1906 adapter->link_autoneg = AUTONEG_DISABLE; in netxen_nic_set_link_parameters()
1910 if (adapter->phy_read && in netxen_nic_set_link_parameters()
1911 adapter->phy_read(adapter, in netxen_nic_set_link_parameters()
1917 adapter->link_speed = SPEED_10; in netxen_nic_set_link_parameters()
1920 adapter->link_speed = SPEED_100; in netxen_nic_set_link_parameters()
1923 adapter->link_speed = SPEED_1000; in netxen_nic_set_link_parameters()
1926 adapter->link_speed = 0; in netxen_nic_set_link_parameters()
1931 adapter->link_duplex = DUPLEX_HALF; in netxen_nic_set_link_parameters()
1934 adapter->link_duplex = DUPLEX_FULL; in netxen_nic_set_link_parameters()
1937 adapter->link_duplex = -1; in netxen_nic_set_link_parameters()
1940 if (adapter->phy_read && in netxen_nic_set_link_parameters()
1941 adapter->phy_read(adapter, in netxen_nic_set_link_parameters()
1944 adapter->link_autoneg = autoneg; in netxen_nic_set_link_parameters()
1949 adapter->link_speed = 0; in netxen_nic_set_link_parameters()
1950 adapter->link_duplex = -1; in netxen_nic_set_link_parameters()
1956 netxen_nic_wol_supported(struct netxen_adapter *adapter) in netxen_nic_wol_supported() argument
1960 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) in netxen_nic_wol_supported()
1963 wol_cfg = NXRD32(adapter, NETXEN_WOL_CONFIG_NV); in netxen_nic_wol_supported()
1964 if (wol_cfg & (1UL << adapter->portnum)) { in netxen_nic_wol_supported()
1965 wol_cfg = NXRD32(adapter, NETXEN_WOL_CONFIG); in netxen_nic_wol_supported()
1966 if (wol_cfg & (1 << adapter->portnum)) in netxen_nic_wol_supported()
1973 static u32 netxen_md_cntrl(struct netxen_adapter *adapter, in netxen_md_cntrl() argument
1992 adapter->ahw.pci_base0, in netxen_md_cntrl()
1997 adapter->ahw.pci_base0, in netxen_md_cntrl()
2000 adapter->ahw.pci_base0, in netxen_md_cntrl()
2005 adapter->ahw.pci_base0, in netxen_md_cntrl()
2009 adapter->ahw.pci_base0, in netxen_md_cntrl()
2014 adapter->ahw.pci_base0, in netxen_md_cntrl()
2018 adapter->ahw.pci_base0, in netxen_md_cntrl()
2024 adapter->ahw.pci_base0, in netxen_md_cntrl()
2036 adapter->ahw.pci_base0, in netxen_md_cntrl()
2041 dev_err(&adapter->pdev->dev, "%s : " in netxen_md_cntrl()
2054 adapter->ahw.pci_base0, in netxen_md_cntrl()
2076 adapter->ahw.pci_base0, in netxen_md_cntrl()
2108 netxen_md_rdmem(struct netxen_adapter *adapter, in netxen_md_rdmem() argument
2120 if (netxen_nic_pci_mem_read_2M(adapter, addr, &value)) in netxen_md_rdmem()
2130 static u32 netxen_md_rd_crb(struct netxen_adapter *adapter, in netxen_md_rd_crb() argument
2142 NX_RD_DUMP_REG(addr, adapter->ahw.pci_base0, &value); in netxen_md_rd_crb()
2152 netxen_md_rdrom(struct netxen_adapter *adapter, in netxen_md_rdrom() argument
2163 lck_val = readl((void __iomem *)(adapter->ahw.pci_base0 + in netxen_md_rdrom()
2170 writel(adapter->ahw.pci_func, (void __iomem *)(adapter->ahw.pci_base0 + in netxen_md_rdrom()
2174 NX_WR_DUMP_REG(FLASH_ROM_WINDOW, adapter->ahw.pci_base0, waddr); in netxen_md_rdrom()
2176 NX_RD_DUMP_REG(raddr, adapter->ahw.pci_base0, &val); in netxen_md_rdrom()
2180 readl((void __iomem *)(adapter->ahw.pci_base0 + NX_FLASH_SEM2_ULK)); in netxen_md_rdrom()
2186 netxen_md_L2Cache(struct netxen_adapter *adapter, in netxen_md_L2Cache() argument
2205 NX_WR_DUMP_REG(tag_reg_addr, adapter->ahw.pci_base0, tag_value); in netxen_md_L2Cache()
2207 NX_WR_DUMP_REG(cntrl_addr, adapter->ahw.pci_base0, in netxen_md_L2Cache()
2211 NX_RD_DUMP_REG(cntrl_addr, adapter->ahw.pci_base0, in netxen_md_L2Cache()
2219 adapter->ahw.pci_base0, in netxen_md_L2Cache()
2223 dev_err(&adapter->pdev->dev, in netxen_md_L2Cache()
2230 NX_RD_DUMP_REG(addr, adapter->ahw.pci_base0, in netxen_md_L2Cache()
2242 static u32 netxen_md_L1Cache(struct netxen_adapter *adapter, in netxen_md_L1Cache() argument
2260 NX_WR_DUMP_REG(tag_reg_addr, adapter->ahw.pci_base0, tag_value); in netxen_md_L1Cache()
2261 NX_WR_DUMP_REG(cntrl_addr, adapter->ahw.pci_base0, in netxen_md_L1Cache()
2266 adapter->ahw.pci_base0, in netxen_md_L1Cache()
2278 netxen_md_rdocm(struct netxen_adapter *adapter, in netxen_md_rdocm() argument
2285 addr = (ocmEntry->read_addr + adapter->ahw.pci_base0); in netxen_md_rdocm()
2298 netxen_md_rdmux(struct netxen_adapter *adapter, struct netxen_minidump_entry_mux in netxen_md_rdmux() argument
2309 NX_WR_DUMP_REG(select_addr, adapter->ahw.pci_base0, sel_value); in netxen_md_rdmux()
2310 NX_RD_DUMP_REG(read_addr, adapter->ahw.pci_base0, &read_value); in netxen_md_rdmux()
2320 netxen_md_rdqueue(struct netxen_adapter *adapter, in netxen_md_rdqueue() argument
2333 NX_WR_DUMP_REG(select_addr, adapter->ahw.pci_base0, queue_id); in netxen_md_rdqueue()
2336 NX_RD_DUMP_REG(read_addr, adapter->ahw.pci_base0, in netxen_md_rdqueue()
2352 static int netxen_md_entry_err_chk(struct netxen_adapter *adapter, in netxen_md_entry_err_chk() argument
2362 dev_info(&adapter->pdev->dev, in netxen_md_entry_err_chk()
2366 dev_info(&adapter->pdev->dev, "Aborting further dump capture\n"); in netxen_md_entry_err_chk()
2371 static int netxen_parse_md_template(struct netxen_adapter *adapter) in netxen_parse_md_template() argument
2376 void *template_buff = adapter->mdump.md_template; in netxen_parse_md_template()
2377 char *dump_buff = adapter->mdump.md_capture_buff; in netxen_parse_md_template()
2378 int capture_mask = adapter->mdump.md_capture_mask; in netxen_parse_md_template()
2383 dev_err(&adapter->pdev->dev, "Capture mask %02x below minimum needed " in netxen_parse_md_template()
2391 memcpy(dump_buff, template_buff, adapter->mdump.md_template_size); in netxen_parse_md_template()
2392 dump_buff = dump_buff + adapter->mdump.md_template_size; in netxen_parse_md_template()
2415 rv = netxen_md_cntrl(adapter, in netxen_parse_md_template()
2422 esize = netxen_md_rd_crb(adapter, in netxen_parse_md_template()
2425 (adapter, entry, esize); in netxen_parse_md_template()
2433 esize = netxen_md_rdmem(adapter, in netxen_parse_md_template()
2436 (adapter, entry, esize); in netxen_parse_md_template()
2444 esize = netxen_md_rdrom(adapter, in netxen_parse_md_template()
2447 (adapter, entry, esize); in netxen_parse_md_template()
2457 esize = netxen_md_L2Cache(adapter, in netxen_parse_md_template()
2460 (adapter, entry, esize); in netxen_parse_md_template()
2468 esize = netxen_md_L1Cache(adapter, in netxen_parse_md_template()
2471 (adapter, entry, esize); in netxen_parse_md_template()
2478 esize = netxen_md_rdocm(adapter, in netxen_parse_md_template()
2481 (adapter, entry, esize); in netxen_parse_md_template()
2488 esize = netxen_md_rdmux(adapter, in netxen_parse_md_template()
2491 (adapter, entry, esize); in netxen_parse_md_template()
2498 esize = netxen_md_rdqueue(adapter, in netxen_parse_md_template()
2501 (adapter, entry, esize); in netxen_parse_md_template()
2515 dev_err(&adapter->pdev->dev, in netxen_parse_md_template()
2522 netxen_collect_minidump(struct netxen_adapter *adapter) in netxen_collect_minidump() argument
2528 adapter->mdump.md_template; in netxen_collect_minidump()
2529 hdr->driver_capture_mask = adapter->mdump.md_capture_mask; in netxen_collect_minidump()
2532 hdr->driver_info_word2 = adapter->fw_version; in netxen_collect_minidump()
2533 hdr->driver_info_word3 = NXRD32(adapter, CRB_DRIVER_VERSION); in netxen_collect_minidump()
2534 ret = netxen_parse_md_template(adapter); in netxen_collect_minidump()
2543 netxen_dump_fw(struct netxen_adapter *adapter) in netxen_dump_fw() argument
2549 adapter->mdump.md_template; in netxen_dump_fw()
2550 capture_mask = adapter->mdump.md_capture_mask; in netxen_dump_fw()
2557 dev_err(&adapter->pdev->dev, in netxen_dump_fw()
2559 adapter->mdump.md_capture_mask); in netxen_dump_fw()
2562 adapter->mdump.md_capture_size = data_size; in netxen_dump_fw()
2563 adapter->mdump.md_dump_size = adapter->mdump.md_template_size + in netxen_dump_fw()
2564 adapter->mdump.md_capture_size; in netxen_dump_fw()
2565 if (!adapter->mdump.md_capture_buff) { in netxen_dump_fw()
2566 adapter->mdump.md_capture_buff = in netxen_dump_fw()
2567 vzalloc(adapter->mdump.md_dump_size); in netxen_dump_fw()
2568 if (!adapter->mdump.md_capture_buff) in netxen_dump_fw()
2571 if (netxen_collect_minidump(adapter)) { in netxen_dump_fw()
2572 adapter->mdump.has_valid_dump = 0; in netxen_dump_fw()
2573 adapter->mdump.md_dump_size = 0; in netxen_dump_fw()
2574 vfree(adapter->mdump.md_capture_buff); in netxen_dump_fw()
2575 adapter->mdump.md_capture_buff = NULL; in netxen_dump_fw()
2576 dev_err(&adapter->pdev->dev, in netxen_dump_fw()
2579 adapter->mdump.md_timestamp = jiffies; in netxen_dump_fw()
2580 adapter->mdump.has_valid_dump = 1; in netxen_dump_fw()
2581 adapter->fw_mdump_rdy = 1; in netxen_dump_fw()
2582 dev_info(&adapter->pdev->dev, "%s Successfully " in netxen_dump_fw()
2583 "collected fw dump.\n", adapter->netdev->name); in netxen_dump_fw()
2587 dev_info(&adapter->pdev->dev, in netxen_dump_fw()
2590 adapter->fw_mdump_rdy = 1; in netxen_dump_fw()