Lines Matching refs:skge

106 static void skge_phy_reset(struct skge_port *skge);
110 static void genesis_get_stats(struct skge_port *skge, u64 *data);
111 static void yukon_get_stats(struct skge_port *skge, u64 *data);
114 static void genesis_link_up(struct skge_port *skge);
148 const struct skge_port *skge = netdev_priv(dev); in skge_get_regs() local
149 const void __iomem *io = skge->hw->regs; in skge_get_regs()
171 static void skge_wol_init(struct skge_port *skge) in skge_wol_init() argument
173 struct skge_hw *hw = skge->hw; in skge_wol_init()
174 int port = skge->port; in skge_wol_init()
223 skge->netdev->dev_addr, ETH_ALEN); in skge_wol_init()
228 if (skge->wol & WAKE_PHY) in skge_wol_init()
233 if (skge->wol & WAKE_MAGIC) in skge_wol_init()
247 struct skge_port *skge = netdev_priv(dev); in skge_get_wol() local
249 wol->supported = wol_supported(skge->hw); in skge_get_wol()
250 wol->wolopts = skge->wol; in skge_get_wol()
255 struct skge_port *skge = netdev_priv(dev); in skge_set_wol() local
256 struct skge_hw *hw = skge->hw; in skge_set_wol()
262 skge->wol = wol->wolopts; in skge_set_wol()
264 device_set_wakeup_enable(&hw->pdev->dev, skge->wol); in skge_set_wol()
306 struct skge_port *skge = netdev_priv(dev); in skge_get_settings() local
307 struct skge_hw *hw = skge->hw; in skge_get_settings()
318 ecmd->advertising = skge->advertising; in skge_get_settings()
319 ecmd->autoneg = skge->autoneg; in skge_get_settings()
320 ethtool_cmd_speed_set(ecmd, skge->speed); in skge_get_settings()
321 ecmd->duplex = skge->duplex; in skge_get_settings()
327 struct skge_port *skge = netdev_priv(dev); in skge_set_settings() local
328 const struct skge_hw *hw = skge->hw; in skge_set_settings()
334 skge->duplex = -1; in skge_set_settings()
335 skge->speed = -1; in skge_set_settings()
373 skge->speed = speed; in skge_set_settings()
374 skge->duplex = ecmd->duplex; in skge_set_settings()
377 skge->autoneg = ecmd->autoneg; in skge_set_settings()
378 skge->advertising = ecmd->advertising; in skge_set_settings()
395 struct skge_port *skge = netdev_priv(dev); in skge_get_drvinfo() local
399 strlcpy(info->bus_info, pci_name(skge->hw->pdev), in skge_get_drvinfo()
447 struct skge_port *skge = netdev_priv(dev); in skge_get_ethtool_stats() local
449 if (is_genesis(skge->hw)) in skge_get_ethtool_stats()
450 genesis_get_stats(skge, data); in skge_get_ethtool_stats()
452 yukon_get_stats(skge, data); in skge_get_ethtool_stats()
461 struct skge_port *skge = netdev_priv(dev); in skge_get_stats() local
464 if (is_genesis(skge->hw)) in skge_get_stats()
465 genesis_get_stats(skge, data); in skge_get_stats()
467 yukon_get_stats(skge, data); in skge_get_stats()
496 struct skge_port *skge = netdev_priv(dev); in skge_get_ring_param() local
501 p->rx_pending = skge->rx_ring.count; in skge_get_ring_param()
502 p->tx_pending = skge->tx_ring.count; in skge_get_ring_param()
508 struct skge_port *skge = netdev_priv(dev); in skge_set_ring_param() local
515 skge->rx_ring.count = p->rx_pending; in skge_set_ring_param()
516 skge->tx_ring.count = p->tx_pending; in skge_set_ring_param()
530 struct skge_port *skge = netdev_priv(netdev); in skge_get_msglevel() local
531 return skge->msg_enable; in skge_get_msglevel()
536 struct skge_port *skge = netdev_priv(netdev); in skge_set_msglevel() local
537 skge->msg_enable = value; in skge_set_msglevel()
542 struct skge_port *skge = netdev_priv(dev); in skge_nway_reset() local
544 if (skge->autoneg != AUTONEG_ENABLE || !netif_running(dev)) in skge_nway_reset()
547 skge_phy_reset(skge); in skge_nway_reset()
554 struct skge_port *skge = netdev_priv(dev); in skge_get_pauseparam() local
556 ecmd->rx_pause = ((skge->flow_control == FLOW_MODE_SYMMETRIC) || in skge_get_pauseparam()
557 (skge->flow_control == FLOW_MODE_SYM_OR_REM)); in skge_get_pauseparam()
559 (skge->flow_control == FLOW_MODE_LOC_SEND)); in skge_get_pauseparam()
567 struct skge_port *skge = netdev_priv(dev); in skge_set_pauseparam() local
574 skge->flow_control = ecmd->autoneg ? FLOW_MODE_NONE : FLOW_MODE_SYMMETRIC; in skge_set_pauseparam()
577 skge->flow_control = FLOW_MODE_SYMMETRIC; in skge_set_pauseparam()
579 skge->flow_control = FLOW_MODE_SYM_OR_REM; in skge_set_pauseparam()
581 skge->flow_control = FLOW_MODE_LOC_SEND; in skge_set_pauseparam()
583 skge->flow_control = FLOW_MODE_NONE; in skge_set_pauseparam()
619 struct skge_port *skge = netdev_priv(dev); in skge_get_coalesce() local
620 struct skge_hw *hw = skge->hw; in skge_get_coalesce()
621 int port = skge->port; in skge_get_coalesce()
643 struct skge_port *skge = netdev_priv(dev); in skge_set_coalesce() local
644 struct skge_hw *hw = skge->hw; in skge_set_coalesce()
645 int port = skge->port; in skge_set_coalesce()
680 static void skge_led(struct skge_port *skge, enum led_mode mode) in skge_led() argument
682 struct skge_hw *hw = skge->hw; in skge_led()
683 int port = skge->port; in skge_led()
743 (skge->speed == SPEED_100 ? in skge_led()
763 struct skge_port *skge = netdev_priv(dev); in skge_set_phys_id() local
770 skge_led(skge, LED_MODE_TST); in skge_set_phys_id()
774 skge_led(skge, LED_MODE_OFF); in skge_set_phys_id()
779 skge_led(skge, netif_running(dev) ? LED_MODE_ON : LED_MODE_OFF); in skge_set_phys_id()
787 struct skge_port *skge = netdev_priv(dev); in skge_get_eeprom_len() local
790 pci_read_config_dword(skge->hw->pdev, PCI_DEV_REG2, &reg2); in skge_get_eeprom_len()
822 struct skge_port *skge = netdev_priv(dev); in skge_get_eeprom() local
823 struct pci_dev *pdev = skge->hw->pdev; in skge_get_eeprom()
848 struct skge_port *skge = netdev_priv(dev); in skge_set_eeprom() local
849 struct pci_dev *pdev = skge->hw->pdev; in skge_set_eeprom()
934 static int skge_rx_setup(struct skge_port *skge, struct skge_element *e, in skge_rx_setup() argument
940 map = pci_map_single(skge->hw->pdev, skb->data, bufsize, in skge_rx_setup()
943 if (pci_dma_mapping_error(skge->hw->pdev, map)) in skge_rx_setup()
980 static void skge_rx_clean(struct skge_port *skge) in skge_rx_clean() argument
982 struct skge_hw *hw = skge->hw; in skge_rx_clean()
983 struct skge_ring *ring = &skge->rx_ring; in skge_rx_clean()
1007 struct skge_port *skge = netdev_priv(dev); in skge_rx_fill() local
1008 struct skge_ring *ring = &skge->rx_ring; in skge_rx_fill()
1015 skb = __netdev_alloc_skb(dev, skge->rx_buf_size + NET_IP_ALIGN, in skge_rx_fill()
1021 if (skge_rx_setup(skge, e, skb, skge->rx_buf_size) < 0) { in skge_rx_fill()
1048 static void skge_link_up(struct skge_port *skge) in skge_link_up() argument
1050 skge_write8(skge->hw, SK_REG(skge->port, LNK_LED_REG), in skge_link_up()
1053 netif_carrier_on(skge->netdev); in skge_link_up()
1054 netif_wake_queue(skge->netdev); in skge_link_up()
1056 netif_info(skge, link, skge->netdev, in skge_link_up()
1058 skge->speed, in skge_link_up()
1059 skge->duplex == DUPLEX_FULL ? "full" : "half", in skge_link_up()
1060 skge_pause(skge->flow_status)); in skge_link_up()
1063 static void skge_link_down(struct skge_port *skge) in skge_link_down() argument
1065 skge_write8(skge->hw, SK_REG(skge->port, LNK_LED_REG), LED_OFF); in skge_link_down()
1066 netif_carrier_off(skge->netdev); in skge_link_down()
1067 netif_stop_queue(skge->netdev); in skge_link_down()
1069 netif_info(skge, link, skge->netdev, "Link is down\n"); in skge_link_down()
1075 struct skge_port *skge = netdev_priv(dev); in xm_link_down() local
1080 skge_link_down(skge); in xm_link_down()
1211 struct skge_port *skge = netdev_priv(dev); in bcom_check_link() local
1223 if (skge->autoneg == AUTONEG_ENABLE) { in bcom_check_link()
1240 skge->duplex = DUPLEX_FULL; in bcom_check_link()
1243 skge->duplex = DUPLEX_HALF; in bcom_check_link()
1253 skge->flow_status = FLOW_STAT_SYMMETRIC; in bcom_check_link()
1256 skge->flow_status = FLOW_STAT_REM_SEND; in bcom_check_link()
1259 skge->flow_status = FLOW_STAT_LOC_SEND; in bcom_check_link()
1262 skge->flow_status = FLOW_STAT_NONE; in bcom_check_link()
1264 skge->speed = SPEED_1000; in bcom_check_link()
1268 genesis_link_up(skge); in bcom_check_link()
1274 static void bcom_phy_init(struct skge_port *skge) in bcom_phy_init() argument
1276 struct skge_hw *hw = skge->hw; in bcom_phy_init()
1277 int port = skge->port; in bcom_phy_init()
1339 if (skge->autoneg == AUTONEG_ENABLE) { in bcom_phy_init()
1346 if (skge->advertising & ADVERTISED_1000baseT_Half) in bcom_phy_init()
1348 if (skge->advertising & ADVERTISED_1000baseT_Full) in bcom_phy_init()
1354 if (skge->duplex == DUPLEX_FULL) in bcom_phy_init()
1362 phy_pause_map[skge->flow_control] | PHY_AN_CSMA); in bcom_phy_init()
1380 static void xm_phy_init(struct skge_port *skge) in xm_phy_init() argument
1382 struct skge_hw *hw = skge->hw; in xm_phy_init()
1383 int port = skge->port; in xm_phy_init()
1386 if (skge->autoneg == AUTONEG_ENABLE) { in xm_phy_init()
1387 if (skge->advertising & ADVERTISED_1000baseT_Half) in xm_phy_init()
1389 if (skge->advertising & ADVERTISED_1000baseT_Full) in xm_phy_init()
1392 ctrl |= fiber_pause_map[skge->flow_control]; in xm_phy_init()
1400 if (skge->duplex == DUPLEX_FULL) in xm_phy_init()
1411 mod_timer(&skge->link_timer, jiffies + LINK_HZ); in xm_phy_init()
1416 struct skge_port *skge = netdev_priv(dev); in xm_check_link() local
1417 struct skge_hw *hw = skge->hw; in xm_check_link()
1418 int port = skge->port; in xm_check_link()
1430 if (skge->autoneg == AUTONEG_ENABLE) { in xm_check_link()
1447 skge->duplex = DUPLEX_FULL; in xm_check_link()
1450 skge->duplex = DUPLEX_HALF; in xm_check_link()
1458 if ((skge->flow_control == FLOW_MODE_SYMMETRIC || in xm_check_link()
1459 skge->flow_control == FLOW_MODE_SYM_OR_REM) && in xm_check_link()
1461 skge->flow_status = FLOW_STAT_SYMMETRIC; in xm_check_link()
1462 else if (skge->flow_control == FLOW_MODE_SYM_OR_REM && in xm_check_link()
1465 skge->flow_status = FLOW_STAT_REM_SEND; in xm_check_link()
1466 else if (skge->flow_control == FLOW_MODE_LOC_SEND && in xm_check_link()
1469 skge->flow_status = FLOW_STAT_LOC_SEND; in xm_check_link()
1471 skge->flow_status = FLOW_STAT_NONE; in xm_check_link()
1473 skge->speed = SPEED_1000; in xm_check_link()
1477 genesis_link_up(skge); in xm_check_link()
1489 struct skge_port *skge = (struct skge_port *) arg; in xm_link_timer() local
1490 struct net_device *dev = skge->netdev; in xm_link_timer()
1491 struct skge_hw *hw = skge->hw; in xm_link_timer()
1492 int port = skge->port; in xm_link_timer()
1518 mod_timer(&skge->link_timer, in xm_link_timer()
1527 struct skge_port *skge = netdev_priv(dev); in genesis_mac_init() local
1569 xm_phy_init(skge); in genesis_mac_init()
1572 bcom_phy_init(skge); in genesis_mac_init()
1598 if (skge->duplex == DUPLEX_HALF) { in genesis_mac_init()
1682 static void genesis_stop(struct skge_port *skge) in genesis_stop() argument
1684 struct skge_hw *hw = skge->hw; in genesis_stop()
1685 int port = skge->port; in genesis_stop()
1730 static void genesis_get_stats(struct skge_port *skge, u64 *data) in genesis_get_stats() argument
1732 struct skge_hw *hw = skge->hw; in genesis_get_stats()
1733 int port = skge->port; in genesis_get_stats()
1761 struct skge_port *skge = netdev_priv(dev); in genesis_mac_intr() local
1764 netif_printk(skge, intr, KERN_DEBUG, skge->netdev, in genesis_mac_intr()
1769 mod_timer(&skge->link_timer, jiffies + 1); in genesis_mac_intr()
1778 static void genesis_link_up(struct skge_port *skge) in genesis_link_up() argument
1780 struct skge_hw *hw = skge->hw; in genesis_link_up()
1781 int port = skge->port; in genesis_link_up()
1791 if (skge->flow_status == FLOW_STAT_NONE || in genesis_link_up()
1792 skge->flow_status == FLOW_STAT_LOC_SEND) in genesis_link_up()
1802 if (skge->flow_status == FLOW_STAT_SYMMETRIC || in genesis_link_up()
1803 skge->flow_status == FLOW_STAT_LOC_SEND) { in genesis_link_up()
1841 if (hw->phy_type != SK_PHY_XMAC && skge->duplex == DUPLEX_FULL) in genesis_link_up()
1858 skge_link_up(skge); in genesis_link_up()
1862 static inline void bcom_phy_intr(struct skge_port *skge) in bcom_phy_intr() argument
1864 struct skge_hw *hw = skge->hw; in bcom_phy_intr()
1865 int port = skge->port; in bcom_phy_intr()
1869 netif_printk(skge, intr, KERN_DEBUG, skge->netdev, in bcom_phy_intr()
1941 struct skge_port *skge = netdev_priv(hw->dev[port]); in yukon_init() local
1944 if (skge->autoneg == AUTONEG_ENABLE) { in yukon_init()
1957 if (skge->autoneg == AUTONEG_DISABLE) in yukon_init()
1967 if (skge->autoneg == AUTONEG_ENABLE) { in yukon_init()
1969 if (skge->advertising & ADVERTISED_1000baseT_Full) in yukon_init()
1971 if (skge->advertising & ADVERTISED_1000baseT_Half) in yukon_init()
1973 if (skge->advertising & ADVERTISED_100baseT_Full) in yukon_init()
1975 if (skge->advertising & ADVERTISED_100baseT_Half) in yukon_init()
1977 if (skge->advertising & ADVERTISED_10baseT_Full) in yukon_init()
1979 if (skge->advertising & ADVERTISED_10baseT_Half) in yukon_init()
1983 adv |= phy_pause_map[skge->flow_control]; in yukon_init()
1985 if (skge->advertising & ADVERTISED_1000baseT_Full) in yukon_init()
1987 if (skge->advertising & ADVERTISED_1000baseT_Half) in yukon_init()
1990 adv |= fiber_pause_map[skge->flow_control]; in yukon_init()
1999 if (skge->duplex == DUPLEX_FULL) in yukon_init()
2002 switch (skge->speed) { in yukon_init()
2020 if (skge->autoneg == AUTONEG_ENABLE) in yukon_init()
2057 struct skge_port *skge = netdev_priv(hw->dev[port]); in yukon_mac_init() local
2093 if (skge->autoneg == AUTONEG_DISABLE) { in yukon_mac_init()
2098 switch (skge->speed) { in yukon_mac_init()
2112 if (skge->duplex == DUPLEX_FULL) in yukon_mac_init()
2117 switch (skge->flow_control) { in yukon_mac_init()
2224 static void yukon_stop(struct skge_port *skge) in yukon_stop() argument
2226 struct skge_hw *hw = skge->hw; in yukon_stop()
2227 int port = skge->port; in yukon_stop()
2244 static void yukon_get_stats(struct skge_port *skge, u64 *data) in yukon_get_stats() argument
2246 struct skge_hw *hw = skge->hw; in yukon_get_stats()
2247 int port = skge->port; in yukon_get_stats()
2263 struct skge_port *skge = netdev_priv(dev); in yukon_mac_intr() local
2266 netif_printk(skge, intr, KERN_DEBUG, skge->netdev, in yukon_mac_intr()
2293 static void yukon_link_up(struct skge_port *skge) in yukon_link_up() argument
2295 struct skge_hw *hw = skge->hw; in yukon_link_up()
2296 int port = skge->port; in yukon_link_up()
2303 if (skge->duplex == DUPLEX_FULL || skge->autoneg == AUTONEG_ENABLE) in yukon_link_up()
2311 skge_link_up(skge); in yukon_link_up()
2314 static void yukon_link_down(struct skge_port *skge) in yukon_link_down() argument
2316 struct skge_hw *hw = skge->hw; in yukon_link_down()
2317 int port = skge->port; in yukon_link_down()
2324 if (skge->flow_status == FLOW_STAT_REM_SEND) { in yukon_link_down()
2331 skge_link_down(skge); in yukon_link_down()
2336 static void yukon_phy_intr(struct skge_port *skge) in yukon_phy_intr() argument
2338 struct skge_hw *hw = skge->hw; in yukon_phy_intr()
2339 int port = skge->port; in yukon_phy_intr()
2346 netif_printk(skge, intr, KERN_DEBUG, skge->netdev, in yukon_phy_intr()
2366 skge->duplex = (phystat & PHY_M_PS_FULL_DUP) in yukon_phy_intr()
2368 skge->speed = yukon_speed(hw, phystat); in yukon_phy_intr()
2373 skge->flow_status = FLOW_STAT_SYMMETRIC; in yukon_phy_intr()
2376 skge->flow_status = FLOW_STAT_REM_SEND; in yukon_phy_intr()
2379 skge->flow_status = FLOW_STAT_LOC_SEND; in yukon_phy_intr()
2382 skge->flow_status = FLOW_STAT_NONE; in yukon_phy_intr()
2385 if (skge->flow_status == FLOW_STAT_NONE || in yukon_phy_intr()
2386 (skge->speed < SPEED_1000 && skge->duplex == DUPLEX_HALF)) in yukon_phy_intr()
2390 yukon_link_up(skge); in yukon_phy_intr()
2395 skge->speed = yukon_speed(hw, phystat); in yukon_phy_intr()
2398 skge->duplex = (phystat & PHY_M_PS_FULL_DUP) ? DUPLEX_FULL : DUPLEX_HALF; in yukon_phy_intr()
2401 yukon_link_up(skge); in yukon_phy_intr()
2403 yukon_link_down(skge); in yukon_phy_intr()
2407 pr_err("%s: autonegotiation failed (%s)\n", skge->netdev->name, reason); in yukon_phy_intr()
2412 static void skge_phy_reset(struct skge_port *skge) in skge_phy_reset() argument
2414 struct skge_hw *hw = skge->hw; in skge_phy_reset()
2415 int port = skge->port; in skge_phy_reset()
2418 netif_stop_queue(skge->netdev); in skge_phy_reset()
2419 netif_carrier_off(skge->netdev); in skge_phy_reset()
2438 struct skge_port *skge = netdev_priv(dev); in skge_ioctl() local
2439 struct skge_hw *hw = skge->hw; in skge_ioctl()
2455 err = __xm_phy_read(hw, skge->port, data->reg_num & 0x1f, &val); in skge_ioctl()
2457 err = __gm_phy_read(hw, skge->port, data->reg_num & 0x1f, &val); in skge_ioctl()
2466 err = xm_phy_write(hw, skge->port, data->reg_num & 0x1f, in skge_ioctl()
2469 err = gm_phy_write(hw, skge->port, data->reg_num & 0x1f, in skge_ioctl()
2508 static void skge_qset(struct skge_port *skge, u16 q, in skge_qset() argument
2511 struct skge_hw *hw = skge->hw; in skge_qset()
2513 u64 base = skge->dma + (e->desc - skge->mem); in skge_qset()
2527 struct skge_port *skge = netdev_priv(dev); in skge_up() local
2528 struct skge_hw *hw = skge->hw; in skge_up()
2529 int port = skge->port; in skge_up()
2537 netif_info(skge, ifup, skge->netdev, "enabling interface\n"); in skge_up()
2540 skge->rx_buf_size = dev->mtu + ETH_HLEN; in skge_up()
2542 skge->rx_buf_size = RX_BUF_SIZE; in skge_up()
2545 rx_size = skge->rx_ring.count * sizeof(struct skge_rx_desc); in skge_up()
2546 tx_size = skge->tx_ring.count * sizeof(struct skge_tx_desc); in skge_up()
2547 skge->mem_size = tx_size + rx_size; in skge_up()
2548 skge->mem = pci_alloc_consistent(hw->pdev, skge->mem_size, &skge->dma); in skge_up()
2549 if (!skge->mem) in skge_up()
2552 BUG_ON(skge->dma & 7); in skge_up()
2554 if (upper_32_bits(skge->dma) != upper_32_bits(skge->dma + skge->mem_size)) { in skge_up()
2560 memset(skge->mem, 0, skge->mem_size); in skge_up()
2562 err = skge_ring_alloc(&skge->rx_ring, skge->mem, skge->dma); in skge_up()
2570 err = skge_ring_alloc(&skge->tx_ring, skge->mem + rx_size, in skge_up()
2571 skge->dma + rx_size); in skge_up()
2599 skge_qset(skge, rxqaddr[port], skge->rx_ring.to_clean); in skge_up()
2601 BUG_ON(skge->tx_ring.to_use != skge->tx_ring.to_clean); in skge_up()
2603 skge_qset(skge, txqaddr[port], skge->tx_ring.to_use); in skge_up()
2608 skge_led(skge, LED_MODE_ON); in skge_up()
2616 napi_enable(&skge->napi); in skge_up()
2623 kfree(skge->tx_ring.start); in skge_up()
2625 skge_rx_clean(skge); in skge_up()
2626 kfree(skge->rx_ring.start); in skge_up()
2628 pci_free_consistent(hw->pdev, skge->mem_size, skge->mem, skge->dma); in skge_up()
2629 skge->mem = NULL; in skge_up()
2645 struct skge_port *skge = netdev_priv(dev); in skge_down() local
2646 struct skge_hw *hw = skge->hw; in skge_down()
2647 int port = skge->port; in skge_down()
2649 if (skge->mem == NULL) in skge_down()
2652 netif_info(skge, ifdown, skge->netdev, "disabling interface\n"); in skge_down()
2657 del_timer_sync(&skge->link_timer); in skge_down()
2659 napi_disable(&skge->napi); in skge_down()
2671 skge_write8(skge->hw, SK_REG(skge->port, LNK_LED_REG), LED_OFF); in skge_down()
2673 genesis_stop(skge); in skge_down()
2675 yukon_stop(skge); in skge_down()
2708 skge_led(skge, LED_MODE_OFF); in skge_down()
2714 skge_rx_clean(skge); in skge_down()
2716 kfree(skge->rx_ring.start); in skge_down()
2717 kfree(skge->tx_ring.start); in skge_down()
2718 pci_free_consistent(hw->pdev, skge->mem_size, skge->mem, skge->dma); in skge_down()
2719 skge->mem = NULL; in skge_down()
2733 struct skge_port *skge = netdev_priv(dev); in skge_xmit_frame() local
2734 struct skge_hw *hw = skge->hw; in skge_xmit_frame()
2744 if (unlikely(skge_avail(&skge->tx_ring) < skb_shinfo(skb)->nr_frags + 1)) in skge_xmit_frame()
2747 e = skge->tx_ring.to_use; in skge_xmit_frame()
2815 skge_write8(hw, Q_ADDR(txqaddr[skge->port], Q_CSR), CSR_START); in skge_xmit_frame()
2817 netif_printk(skge, tx_queued, KERN_DEBUG, skge->netdev, in skge_xmit_frame()
2819 e - skge->tx_ring.start, skb->len); in skge_xmit_frame()
2821 skge->tx_ring.to_use = e->next; in skge_xmit_frame()
2824 if (skge_avail(&skge->tx_ring) <= TX_LOW_WATER) { in skge_xmit_frame()
2832 e = skge->tx_ring.to_use; in skge_xmit_frame()
2871 struct skge_port *skge = netdev_priv(dev); in skge_tx_clean() local
2874 for (e = skge->tx_ring.to_clean; e != skge->tx_ring.to_use; e = e->next) { in skge_tx_clean()
2877 skge_tx_unmap(skge->hw->pdev, e, td->control); in skge_tx_clean()
2885 skge->tx_ring.to_clean = e; in skge_tx_clean()
2890 struct skge_port *skge = netdev_priv(dev); in skge_tx_timeout() local
2892 netif_printk(skge, timer, KERN_DEBUG, skge->netdev, "tx timeout\n"); in skge_tx_timeout()
2894 skge_write8(skge->hw, Q_ADDR(txqaddr[skge->port], Q_CSR), CSR_STOP); in skge_tx_timeout()
2935 struct skge_port *skge = netdev_priv(dev); in genesis_set_multicast() local
2936 struct skge_hw *hw = skge->hw; in genesis_set_multicast()
2937 int port = skge->port; in genesis_set_multicast()
2954 if (skge->flow_status == FLOW_STAT_REM_SEND || in genesis_set_multicast()
2955 skge->flow_status == FLOW_STAT_SYMMETRIC) in genesis_set_multicast()
2974 struct skge_port *skge = netdev_priv(dev); in yukon_set_multicast() local
2975 struct skge_hw *hw = skge->hw; in yukon_set_multicast()
2976 int port = skge->port; in yukon_set_multicast()
2978 int rx_pause = (skge->flow_status == FLOW_STAT_REM_SEND || in yukon_set_multicast()
2979 skge->flow_status == FLOW_STAT_SYMMETRIC); in yukon_set_multicast()
3036 struct skge_port *skge = netdev_priv(dev); in skge_set_multicast() local
3038 if (is_genesis(skge->hw)) in skge_set_multicast()
3053 struct skge_port *skge = netdev_priv(dev); in skge_rx_get() local
3057 netif_printk(skge, rx_status, KERN_DEBUG, skge->netdev, in skge_rx_get()
3059 e - skge->rx_ring.start, status, len); in skge_rx_get()
3061 if (len > skge->rx_buf_size) in skge_rx_get()
3067 if (bad_phy_status(skge->hw, status)) in skge_rx_get()
3070 if (phy_length(skge->hw, status) != len) in skge_rx_get()
3078 pci_dma_sync_single_for_cpu(skge->hw->pdev, in skge_rx_get()
3083 pci_dma_sync_single_for_device(skge->hw->pdev, in skge_rx_get()
3087 skge_rx_reuse(e, skge->rx_buf_size); in skge_rx_get()
3092 nskb = netdev_alloc_skb_ip_align(dev, skge->rx_buf_size); in skge_rx_get()
3101 if (skge_rx_setup(skge, e, nskb, skge->rx_buf_size) < 0) { in skge_rx_get()
3106 pci_unmap_single(skge->hw->pdev, in skge_rx_get()
3124 netif_printk(skge, rx_err, KERN_DEBUG, skge->netdev, in skge_rx_get()
3126 e - skge->rx_ring.start, control, status); in skge_rx_get()
3128 if (is_genesis(skge->hw)) { in skge_rx_get()
3145 skge_rx_reuse(e, skge->rx_buf_size); in skge_rx_get()
3152 struct skge_port *skge = netdev_priv(dev); in skge_tx_done() local
3153 struct skge_ring *ring = &skge->tx_ring; in skge_tx_done()
3157 skge_write8(skge->hw, Q_ADDR(txqaddr[skge->port], Q_CSR), CSR_IRQ_CL_F); in skge_tx_done()
3165 skge_tx_unmap(skge->hw->pdev, e, control); in skge_tx_done()
3168 netif_printk(skge, tx_done, KERN_DEBUG, skge->netdev, in skge_tx_done()
3170 e - skge->tx_ring.start); in skge_tx_done()
3179 skge->tx_ring.to_clean = e; in skge_tx_done()
3185 skge_avail(&skge->tx_ring) > TX_LOW_WATER)) { in skge_tx_done()
3188 skge_avail(&skge->tx_ring) > TX_LOW_WATER)) { in skge_tx_done()
3198 struct skge_port *skge = container_of(napi, struct skge_port, napi); in skge_poll() local
3199 struct net_device *dev = skge->netdev; in skge_poll()
3200 struct skge_hw *hw = skge->hw; in skge_poll()
3201 struct skge_ring *ring = &skge->rx_ring; in skge_poll()
3207 skge_write8(hw, Q_ADDR(rxqaddr[skge->port], Q_CSR), CSR_IRQ_CL_F); in skge_poll()
3229 skge_write8(hw, Q_ADDR(rxqaddr[skge->port], Q_CSR), CSR_START); in skge_poll()
3237 hw->intr_mask |= napimask[skge->port]; in skge_poll()
3359 struct skge_port *skge = netdev_priv(dev); in skge_extirq() local
3363 yukon_phy_intr(skge); in skge_extirq()
3365 bcom_phy_intr(skge); in skge_extirq()
3397 struct skge_port *skge = netdev_priv(hw->dev[0]); in skge_intr() local
3399 napi_schedule(&skge->napi); in skge_intr()
3415 struct skge_port *skge = netdev_priv(hw->dev[1]); in skge_intr() local
3419 napi_schedule(&skge->napi); in skge_intr()
3447 struct skge_port *skge = netdev_priv(dev); in skge_netpoll() local
3450 skge_intr(dev->irq, skge->hw); in skge_netpoll()
3457 struct skge_port *skge = netdev_priv(dev); in skge_set_mac_address() local
3458 struct skge_hw *hw = skge->hw; in skge_set_mac_address()
3459 unsigned port = skge->port; in skge_set_mac_address()
3697 const struct skge_port *skge = netdev_priv(dev); in skge_debug_show() local
3698 const struct skge_hw *hw = skge->hw; in skge_debug_show()
3707 seq_printf(seq, "Tx Ring: (%d)\n", skge_avail(&skge->tx_ring)); in skge_debug_show()
3708 for (e = skge->tx_ring.to_clean; e != skge->tx_ring.to_use; e = e->next) { in skge_debug_show()
3716 for (e = skge->rx_ring.to_clean; ; e = e->next) { in skge_debug_show()
3751 struct skge_port *skge; in skge_device_event() local
3757 skge = netdev_priv(dev); in skge_device_event()
3760 if (skge->debugfs) { in skge_device_event()
3761 d = debugfs_rename(skge_debug, skge->debugfs, in skge_device_event()
3764 skge->debugfs = d; in skge_device_event()
3767 debugfs_remove(skge->debugfs); in skge_device_event()
3773 if (skge->debugfs) { in skge_device_event()
3774 debugfs_remove(skge->debugfs); in skge_device_event()
3775 skge->debugfs = NULL; in skge_device_event()
3786 skge->debugfs = d; in skge_device_event()
3848 struct skge_port *skge; in skge_devinit() local
3849 struct net_device *dev = alloc_etherdev(sizeof(*skge)); in skge_devinit()
3863 skge = netdev_priv(dev); in skge_devinit()
3864 netif_napi_add(dev, &skge->napi, skge_poll, NAPI_WEIGHT); in skge_devinit()
3865 skge->netdev = dev; in skge_devinit()
3866 skge->hw = hw; in skge_devinit()
3867 skge->msg_enable = netif_msg_init(debug, default_msg); in skge_devinit()
3869 skge->tx_ring.count = DEFAULT_TX_RING_SIZE; in skge_devinit()
3870 skge->rx_ring.count = DEFAULT_RX_RING_SIZE; in skge_devinit()
3873 skge->autoneg = AUTONEG_ENABLE; in skge_devinit()
3874 skge->flow_control = FLOW_MODE_SYM_OR_REM; in skge_devinit()
3875 skge->duplex = -1; in skge_devinit()
3876 skge->speed = -1; in skge_devinit()
3877 skge->advertising = skge_supported_modes(hw); in skge_devinit()
3880 skge->wol = wol_supported(hw) & WAKE_MAGIC; in skge_devinit()
3881 device_set_wakeup_enable(&hw->pdev->dev, skge->wol); in skge_devinit()
3886 skge->port = port; in skge_devinit()
3890 setup_timer(&skge->link_timer, xm_link_timer, (unsigned long) skge); in skge_devinit()
3905 const struct skge_port *skge = netdev_priv(dev); in skge_show_addr() local
3907 netif_info(skge, probe, skge->netdev, "addr %pM\n", dev->dev_addr); in skge_show_addr()
4105 struct skge_port *skge = netdev_priv(dev); in skge_suspend() local
4110 if (skge->wol) in skge_suspend()
4111 skge_wol_init(skge); in skge_suspend()
4167 struct skge_port *skge = netdev_priv(dev); in skge_shutdown() local
4169 if (skge->wol) in skge_shutdown()
4170 skge_wol_init(skge); in skge_shutdown()