Lines Matching refs:nic

563 static int init_shared_mem(struct s2io_nic *nic)  in init_shared_mem()  argument
571 struct net_device *dev = nic->dev; in init_shared_mem()
574 struct config_param *config = &nic->config; in init_shared_mem()
575 struct mac_info *mac_control = &nic->mac_control; in init_shared_mem()
635 fifo->nic = nic; in init_shared_mem()
643 tmp_v = dma_alloc_coherent(&nic->pdev->dev, PAGE_SIZE, in init_shared_mem()
661 tmp_v = dma_alloc_coherent(&nic->pdev->dev, in init_shared_mem()
701 if (rx_cfg->num_rxd % (rxd_count[nic->rxd_mode] + 1)) { in init_shared_mem()
709 (rxd_count[nic->rxd_mode] + 1); in init_shared_mem()
712 if (nic->rxd_mode == RXD_MODE_1) in init_shared_mem()
727 ring->nic = nic; in init_shared_mem()
730 blk_cnt = rx_cfg->num_rxd / (rxd_count[nic->rxd_mode] + 1); in init_shared_mem()
738 tmp_v_addr = dma_alloc_coherent(&nic->pdev->dev, size, in init_shared_mem()
753 rxd_count[nic->rxd_mode]; in init_shared_mem()
760 for (l = 0; l < rxd_count[nic->rxd_mode]; l++) { in init_shared_mem()
763 (rxd_size[nic->rxd_mode] * l); in init_shared_mem()
766 (rxd_size[nic->rxd_mode] * l); in init_shared_mem()
784 if (nic->rxd_mode == RXD_MODE_3B) { in init_shared_mem()
794 (rxd_count[nic->rxd_mode] + 1); in init_shared_mem()
804 (rxd_count[nic->rxd_mode] + 1); in init_shared_mem()
809 while (k != rxd_count[nic->rxd_mode]) { in init_shared_mem()
839 dma_alloc_coherent(&nic->pdev->dev, size, in init_shared_mem()
857 dev_name(&nic->pdev->dev), (unsigned long long)tmp_p_addr); in init_shared_mem()
869 static void free_shared_mem(struct s2io_nic *nic) in free_shared_mem() argument
882 if (!nic) in free_shared_mem()
885 dev = nic->dev; in free_shared_mem()
887 config = &nic->config; in free_shared_mem()
888 mac_control = &nic->mac_control; in free_shared_mem()
910 dma_free_coherent(&nic->pdev->dev, PAGE_SIZE, in free_shared_mem()
919 dma_free_coherent(&nic->pdev->dev, PAGE_SIZE, in free_shared_mem()
943 dma_free_coherent(&nic->pdev->dev, size, tmp_v_addr, in free_shared_mem()
948 rxd_count[nic->rxd_mode]; in free_shared_mem()
952 if (nic->rxd_mode == RXD_MODE_3B) { in free_shared_mem()
959 (rxd_count[nic->rxd_mode] + 1); in free_shared_mem()
964 while (k != rxd_count[nic->rxd_mode]) { in free_shared_mem()
976 (rxd_count[nic->rxd_mode] + 1); in free_shared_mem()
984 for (i = 0; i < nic->config.tx_fifo_num; i++) { in free_shared_mem()
997 dma_free_coherent(&nic->pdev->dev, mac_control->stats_mem_sz, in free_shared_mem()
1007 static int s2io_verify_pci_mode(struct s2io_nic *nic) in s2io_verify_pci_mode() argument
1009 struct XENA_dev_config __iomem *bar0 = nic->bar0; in s2io_verify_pci_mode()
1041 static int s2io_print_pci_mode(struct s2io_nic *nic) in s2io_print_pci_mode() argument
1043 struct XENA_dev_config __iomem *bar0 = nic->bar0; in s2io_print_pci_mode()
1046 struct config_param *config = &nic->config; in s2io_print_pci_mode()
1057 if (s2io_on_nec_bridge(nic->pdev)) { in s2io_print_pci_mode()
1059 nic->dev->name); in s2io_print_pci_mode()
1094 nic->dev->name, val64 & PCI_MODE_32_BITS ? 32 : 64, pcimode); in s2io_print_pci_mode()
1109 static int init_tti(struct s2io_nic *nic, int link) in init_tti() argument
1111 struct XENA_dev_config __iomem *bar0 = nic->bar0; in init_tti()
1114 struct config_param *config = &nic->config; in init_tti()
1122 if (nic->device_type == XFRAME_II_DEVICE) { in init_tti()
1123 int count = (nic->config.bus_speed * 125)/2; in init_tti()
1137 if (nic->config.intr_type == MSI_X) { in init_tti()
1143 if ((nic->config.tx_steering_type == in init_tti()
1146 (i >= nic->udp_fifo_idx) && in init_tti()
1147 (i < (nic->udp_fifo_idx + in init_tti()
1148 nic->total_udp_fifos))) in init_tti()
1185 static int init_nic(struct s2io_nic *nic) in init_nic() argument
1187 struct XENA_dev_config __iomem *bar0 = nic->bar0; in init_nic()
1188 struct net_device *dev = nic->dev; in init_nic()
1196 struct config_param *config = &nic->config; in init_nic()
1197 struct mac_info *mac_control = &nic->mac_control; in init_nic()
1200 if (s2io_set_swapper(nic)) { in init_nic()
1208 if (nic->device_type & XFRAME_II_DEVICE) { in init_nic()
1224 if (nic->device_type == XFRAME_II_DEVICE) { in init_nic()
1253 if (nic->device_type & XFRAME_II_DEVICE) { in init_nic()
1319 if ((nic->device_type == XFRAME_I_DEVICE) && (nic->pdev->revision < 4)) in init_nic()
1351 if (nic->device_type & XFRAME_II_DEVICE) in init_nic()
1632 if (rts_ds_steer(nic, i, 0) == FAILURE) { in init_nic()
1643 if (nic->device_type == XFRAME_II_DEVICE) { in init_nic()
1662 if (SUCCESS != init_tti(nic, nic->last_link_state)) in init_nic()
1666 if (nic->device_type == XFRAME_II_DEVICE) { in init_nic()
1671 int count = (nic->config.bus_speed * 125)/4; in init_nic()
1684 if (nic->config.intr_type == MSI_X) in init_nic()
1742 if (nic->device_type == XFRAME_II_DEVICE) in init_nic()
1757 val64 |= RMAC_PAUSE_HG_PTIME(nic->mac_control.rmac_pause_time); in init_nic()
1769 nic->mac_control.mc_pause_threshold_q0q3) in init_nic()
1777 nic->mac_control.mc_pause_threshold_q4q7) in init_nic()
1790 if (nic->config.bus_speed == 266) { in init_nic()
1800 if (nic->device_type == XFRAME_II_DEVICE) { in init_nic()
1808 if (strstr(nic->product_name, "CX4")) { in init_nic()
1818 static int s2io_link_fault_indication(struct s2io_nic *nic) in s2io_link_fault_indication() argument
1820 if (nic->device_type == XFRAME_II_DEVICE) in s2io_link_fault_indication()
1848 static void en_dis_err_alarms(struct s2io_nic *nic, u16 mask, int flag) in en_dis_err_alarms() argument
1850 struct XENA_dev_config __iomem *bar0 = nic->bar0; in en_dis_err_alarms()
1947 if (s2io_link_fault_indication(nic) == MAC_RMAC_ERR_TIMER) in en_dis_err_alarms()
1969 nic->general_int_mask = gen_int_mask; in en_dis_err_alarms()
1972 nic->general_int_mask = 0; in en_dis_err_alarms()
1986 static void en_dis_able_nic_intrs(struct s2io_nic *nic, u16 mask, int flag) in en_dis_able_nic_intrs() argument
1988 struct XENA_dev_config __iomem *bar0 = nic->bar0; in en_dis_able_nic_intrs()
1991 intr_mask = nic->general_int_mask; in en_dis_able_nic_intrs()
2005 if (s2io_link_fault_indication(nic) == in en_dis_able_nic_intrs()
2062 nic->general_int_mask = readq(&bar0->general_int_mask); in en_dis_able_nic_intrs()
2207 static int start_nic(struct s2io_nic *nic) in start_nic() argument
2209 struct XENA_dev_config __iomem *bar0 = nic->bar0; in start_nic()
2210 struct net_device *dev = nic->dev; in start_nic()
2213 struct config_param *config = &nic->config; in start_nic()
2214 struct mac_info *mac_control = &nic->mac_control; in start_nic()
2224 if (nic->rxd_mode == RXD_MODE_1) in start_nic()
2228 if (nic->device_type == XFRAME_II_DEVICE) in start_nic()
2235 if (nic->rxd_mode == RXD_MODE_3B) { in start_nic()
2246 nic->vlan_strip_flag = 0; in start_nic()
2271 if (!verify_xena_quiescence(nic)) { in start_nic()
2291 if (s2io_link_fault_indication(nic) == MAC_RMAC_ERR_TIMER) { in start_nic()
2296 schedule_work(&nic->set_link_task); in start_nic()
2299 subid = nic->pdev->subsystem_device; in start_nic()
2301 (nic->device_type == XFRAME_I_DEVICE)) { in start_nic()
2320 struct s2io_nic *nic = fifo_data->nic; in s2io_txdl_getskb() local
2327 dma_unmap_single(&nic->pdev->dev, in s2io_txdl_getskb()
2338 dma_unmap_single(&nic->pdev->dev, (dma_addr_t)txds->Buffer_Pointer, in s2io_txdl_getskb()
2347 dma_unmap_page(&nic->pdev->dev, in s2io_txdl_getskb()
2364 static void free_tx_buffers(struct s2io_nic *nic) in free_tx_buffers() argument
2366 struct net_device *dev = nic->dev; in free_tx_buffers()
2371 struct config_param *config = &nic->config; in free_tx_buffers()
2372 struct mac_info *mac_control = &nic->mac_control; in free_tx_buffers()
2410 static void stop_nic(struct s2io_nic *nic) in stop_nic() argument
2412 struct XENA_dev_config __iomem *bar0 = nic->bar0; in stop_nic()
2417 en_dis_err_alarms(nic, ENA_ALL_INTRS, DISABLE_INTRS); in stop_nic()
2420 en_dis_able_nic_intrs(nic, interruptible, DISABLE_INTRS); in stop_nic()
2451 static int fill_rx_buffers(struct s2io_nic *nic, struct ring_info *ring, in fill_rx_buffers() argument
2465 struct swStat *swstats = &ring->nic->mac_control.stats_info->sw_stat; in fill_rx_buffers()
2514 skb = netdev_alloc_skb(nic->dev, size); in fill_rx_buffers()
2537 if (dma_mapping_error(&nic->pdev->dev, rxdp1->Buffer0_ptr)) in fill_rx_buffers()
2572 if (dma_mapping_error(&nic->pdev->dev, rxdp3->Buffer0_ptr)) in fill_rx_buffers()
2593 if (dma_mapping_error(&nic->pdev->dev, rxdp3->Buffer2_ptr)) in fill_rx_buffers()
2603 if (dma_mapping_error(&nic->pdev->dev, in fill_rx_buffers()
2736 static int s2io_chk_rx_buffers(struct s2io_nic *nic, struct ring_info *ring) in s2io_chk_rx_buffers() argument
2738 if (fill_rx_buffers(nic, ring, 0) == -ENOMEM) { in s2io_chk_rx_buffers()
2765 struct s2io_nic *nic = netdev_priv(dev); in s2io_poll_msix() local
2766 struct XENA_dev_config __iomem *bar0 = nic->bar0; in s2io_poll_msix()
2769 if (unlikely(!is_s2io_card_up(nic))) in s2io_poll_msix()
2773 s2io_chk_rx_buffers(nic, ring); in s2io_poll_msix()
2789 struct s2io_nic *nic = container_of(napi, struct s2io_nic, napi); in s2io_poll_inta() local
2792 struct XENA_dev_config __iomem *bar0 = nic->bar0; in s2io_poll_inta()
2794 struct config_param *config = &nic->config; in s2io_poll_inta()
2795 struct mac_info *mac_control = &nic->mac_control; in s2io_poll_inta()
2797 if (unlikely(!is_s2io_card_up(nic))) in s2io_poll_inta()
2803 s2io_chk_rx_buffers(nic, ring); in s2io_poll_inta()
2830 struct s2io_nic *nic = netdev_priv(dev); in s2io_netpoll() local
2831 const int irq = nic->pdev->irq; in s2io_netpoll()
2832 struct XENA_dev_config __iomem *bar0 = nic->bar0; in s2io_netpoll()
2835 struct config_param *config = &nic->config; in s2io_netpoll()
2836 struct mac_info *mac_control = &nic->mac_control; in s2io_netpoll()
2838 if (pci_channel_offline(nic->pdev)) in s2io_netpoll()
2863 if (fill_rx_buffers(nic, ring, 0) == -ENOMEM) { in s2io_netpoll()
2958 if (ring_data->nic->config.napi) { in rx_intr_handler()
2973 update_L3L4_header(ring_data->nic, lro); in rx_intr_handler()
2996 struct s2io_nic *nic = fifo_data->nic; in tx_intr_handler() local
3003 struct stat_block *stats = nic->mac_control.stats_info; in tx_intr_handler()
3068 s2io_wake_tx_queue(fifo_data, pkt_cnt, nic->config.multiq); in tx_intr_handler()
3651 static int wait_for_msix_trans(struct s2io_nic *nic, int i) in wait_for_msix_trans() argument
3653 struct XENA_dev_config __iomem *bar0 = nic->bar0; in wait_for_msix_trans()
3672 static void restore_xmsi_data(struct s2io_nic *nic) in restore_xmsi_data() argument
3674 struct XENA_dev_config __iomem *bar0 = nic->bar0; in restore_xmsi_data()
3678 if (nic->device_type == XFRAME_I_DEVICE) in restore_xmsi_data()
3683 writeq(nic->msix_info[i].addr, &bar0->xmsi_address); in restore_xmsi_data()
3684 writeq(nic->msix_info[i].data, &bar0->xmsi_data); in restore_xmsi_data()
3687 if (wait_for_msix_trans(nic, msix_index)) in restore_xmsi_data()
3693 static void store_xmsi_data(struct s2io_nic *nic) in store_xmsi_data() argument
3695 struct XENA_dev_config __iomem *bar0 = nic->bar0; in store_xmsi_data()
3699 if (nic->device_type == XFRAME_I_DEVICE) in store_xmsi_data()
3707 if (wait_for_msix_trans(nic, msix_index)) { in store_xmsi_data()
3715 nic->msix_info[i].addr = addr; in store_xmsi_data()
3716 nic->msix_info[i].data = data; in store_xmsi_data()
3721 static int s2io_enable_msi_x(struct s2io_nic *nic) in s2io_enable_msi_x() argument
3723 struct XENA_dev_config __iomem *bar0 = nic->bar0; in s2io_enable_msi_x()
3728 struct stat_block *stats = nic->mac_control.stats_info; in s2io_enable_msi_x()
3731 size = nic->num_entries * sizeof(struct msix_entry); in s2io_enable_msi_x()
3732 nic->entries = kzalloc(size, GFP_KERNEL); in s2io_enable_msi_x()
3733 if (!nic->entries) { in s2io_enable_msi_x()
3741 size = nic->num_entries * sizeof(struct s2io_msix_entry); in s2io_enable_msi_x()
3742 nic->s2io_entries = kzalloc(size, GFP_KERNEL); in s2io_enable_msi_x()
3743 if (!nic->s2io_entries) { in s2io_enable_msi_x()
3747 kfree(nic->entries); in s2io_enable_msi_x()
3749 += (nic->num_entries * sizeof(struct msix_entry)); in s2io_enable_msi_x()
3754 nic->entries[0].entry = 0; in s2io_enable_msi_x()
3755 nic->s2io_entries[0].entry = 0; in s2io_enable_msi_x()
3756 nic->s2io_entries[0].in_use = MSIX_FLG; in s2io_enable_msi_x()
3757 nic->s2io_entries[0].type = MSIX_ALARM_TYPE; in s2io_enable_msi_x()
3758 nic->s2io_entries[0].arg = &nic->mac_control.fifos; in s2io_enable_msi_x()
3760 for (i = 1; i < nic->num_entries; i++) { in s2io_enable_msi_x()
3761 nic->entries[i].entry = ((i - 1) * 8) + 1; in s2io_enable_msi_x()
3762 nic->s2io_entries[i].entry = ((i - 1) * 8) + 1; in s2io_enable_msi_x()
3763 nic->s2io_entries[i].arg = NULL; in s2io_enable_msi_x()
3764 nic->s2io_entries[i].in_use = 0; in s2io_enable_msi_x()
3768 for (j = 0; j < nic->config.rx_ring_num; j++) { in s2io_enable_msi_x()
3770 nic->s2io_entries[j+1].arg = &nic->mac_control.rings[j]; in s2io_enable_msi_x()
3771 nic->s2io_entries[j+1].type = MSIX_RING_TYPE; in s2io_enable_msi_x()
3772 nic->s2io_entries[j+1].in_use = MSIX_FLG; in s2io_enable_msi_x()
3778 ret = pci_enable_msix_range(nic->pdev, nic->entries, in s2io_enable_msi_x()
3779 nic->num_entries, nic->num_entries); in s2io_enable_msi_x()
3783 kfree(nic->entries); in s2io_enable_msi_x()
3784 swstats->mem_freed += nic->num_entries * in s2io_enable_msi_x()
3786 kfree(nic->s2io_entries); in s2io_enable_msi_x()
3787 swstats->mem_freed += nic->num_entries * in s2io_enable_msi_x()
3789 nic->entries = NULL; in s2io_enable_msi_x()
3790 nic->s2io_entries = NULL; in s2io_enable_msi_x()
3798 pci_read_config_word(nic->pdev, 0x42, &msi_control); in s2io_enable_msi_x()
3800 pci_write_config_word(nic->pdev, 0x42, msi_control); in s2io_enable_msi_x()
4203 struct s2io_nic *sp = ring->nic; in s2io_msix_ring_handle()
4231 struct s2io_nic *sp = fifos->nic; in s2io_msix_fifo_handle()
5669 static void s2io_vpd_read(struct s2io_nic *nic) in s2io_vpd_read() argument
5675 struct swStat *swstats = &nic->mac_control.stats_info->sw_stat; in s2io_vpd_read()
5677 if (nic->device_type == XFRAME_II_DEVICE) { in s2io_vpd_read()
5678 strcpy(nic->product_name, "Xframe II 10GbE network adapter"); in s2io_vpd_read()
5681 strcpy(nic->product_name, "Xframe I 10GbE network adapter"); in s2io_vpd_read()
5684 strcpy(nic->serial_num, "NOT AVAILABLE"); in s2io_vpd_read()
5694 pci_write_config_byte(nic->pdev, (vpd_addr + 2), i); in s2io_vpd_read()
5695 pci_read_config_byte(nic->pdev, (vpd_addr + 2), &data); in s2io_vpd_read()
5696 pci_write_config_byte(nic->pdev, (vpd_addr + 3), 0); in s2io_vpd_read()
5699 pci_read_config_byte(nic->pdev, (vpd_addr + 3), &data); in s2io_vpd_read()
5708 pci_read_config_dword(nic->pdev, (vpd_addr + 4), in s2io_vpd_read()
5719 memcpy(nic->serial_num, in s2io_vpd_read()
5722 memset(nic->serial_num+len, in s2io_vpd_read()
5733 memcpy(nic->product_name, &vpd_data[3], len); in s2io_vpd_read()
5734 nic->product_name[len] = 0; in s2io_vpd_read()
6661 struct s2io_nic *nic = container_of(work, struct s2io_nic, in s2io_set_link() local
6663 struct net_device *dev = nic->dev; in s2io_set_link()
6664 struct XENA_dev_config __iomem *bar0 = nic->bar0; in s2io_set_link()
6673 if (test_and_set_bit(__S2IO_STATE_LINK_TASK, &(nic->state))) { in s2io_set_link()
6678 subid = nic->pdev->subsystem_device; in s2io_set_link()
6679 if (s2io_link_fault_indication(nic) == MAC_RMAC_ERR_TIMER) { in s2io_set_link()
6690 if (verify_xena_quiescence(nic)) { in s2io_set_link()
6695 nic->device_type, subid)) { in s2io_set_link()
6704 nic->device_enabled_once = true; in s2io_set_link()
6709 s2io_stop_all_tx_queue(nic); in s2io_set_link()
6715 s2io_link(nic, LINK_UP); in s2io_set_link()
6717 if (CARDS_WITH_FAULTY_LINK_INDICATORS(nic->device_type, in s2io_set_link()
6728 s2io_link(nic, LINK_DOWN); in s2io_set_link()
6730 clear_bit(__S2IO_STATE_LINK_TASK, &(nic->state)); in s2io_set_link()
7273 struct s2io_nic *sp = ring_data->nic; in rx_osm_handler()
7599 static int rts_ds_steer(struct s2io_nic *nic, u8 ds_codepoint, u8 ring) in rts_ds_steer() argument
7601 struct XENA_dev_config __iomem *bar0 = nic->bar0; in rts_ds_steer()