Loading drivers/net/Kconfig +6 −3 Original line number Diff line number Diff line Loading @@ -397,7 +397,7 @@ config SUN3LANCE If you're not building a kernel for a Sun 3, say N. config SUN3_82586 tristate "Sun3 on-board Intel 82586 support" bool "Sun3 on-board Intel 82586 support" depends on NET_ETHERNET && SUN3 help This driver enables support for the on-board Intel 82586 based Loading Loading @@ -1924,12 +1924,15 @@ config R8169_VLAN If in doubt, say Y. config SIS190 tristate "SiS190 gigabit ethernet support" tristate "SiS190/SiS191 gigabit ethernet support" depends on PCI select CRC32 select MII ---help--- Say Y here if you have a SiS 190 PCI Gigabit Ethernet adapter. Say Y here if you have a SiS 190 PCI Fast Ethernet adapter or a SiS 191 PCI Gigabit Ethernet adapter. Both are expected to appear in lan on motherboard designs which are based on SiS 965 and SiS 966 south bridge. To compile this driver as a module, choose M here: the module will be called sis190. This is recommended. Loading drivers/net/chelsio/common.h +2 −2 Original line number Diff line number Diff line Loading @@ -88,7 +88,7 @@ struct t1_rx_mode { static inline u8 *t1_get_next_mcaddr(struct t1_rx_mode *rm) { u8 *addr = 0; u8 *addr = NULL; if (rm->idx++ < rm->dev->mc_count) { addr = rm->list->dmi_addr; Loading Loading @@ -190,7 +190,7 @@ struct sge; struct peespi; struct adapter { u8 *regs; u8 __iomem *regs; struct pci_dev *pdev; unsigned long registered_device_map; unsigned long open_device_map; Loading drivers/net/chelsio/cxgb2.c +1 −1 Original line number Diff line number Diff line Loading @@ -824,7 +824,7 @@ static void cxgb_proc_cleanup(struct adapter *adapter, static int t1_ioctl(struct net_device *dev, struct ifreq *req, int cmd) { struct adapter *adapter = dev->priv; struct mii_ioctl_data *data = (struct mii_ioctl_data *)&req->ifr_data; struct mii_ioctl_data *data = if_mii(req); switch (cmd) { case SIOCGMIIPHY: Loading drivers/net/e1000/e1000_hw.h +1 −1 Original line number Diff line number Diff line Loading @@ -1270,7 +1270,7 @@ struct e1000_hw_stats { /* Structure containing variables used by the shared code (e1000_hw.c) */ struct e1000_hw { uint8_t *hw_addr; uint8_t __iomem *hw_addr; uint8_t *flash_address; e1000_mac_type mac_type; e1000_phy_type phy_type; Loading drivers/net/mv643xx_eth.c +60 −79 Original line number Diff line number Diff line Loading @@ -58,11 +58,10 @@ #define INT_CAUSE_UNMASK_ALL 0x0007ffff #define INT_CAUSE_UNMASK_ALL_EXT 0x0011ffff #ifdef MV643XX_RX_QUEUE_FILL_ON_TASK #define INT_CAUSE_MASK_ALL 0x00000000 #define INT_CAUSE_MASK_ALL_EXT 0x00000000 #define INT_CAUSE_CHECK_BITS INT_CAUSE_UNMASK_ALL #define INT_CAUSE_CHECK_BITS_EXT INT_CAUSE_UNMASK_ALL_EXT #endif #ifdef MV643XX_CHECKSUM_OFFLOAD_TX #define MAX_DESCS_PER_SKB (MAX_SKB_FRAGS + 1) Loading Loading @@ -259,14 +258,13 @@ static void mv643xx_eth_update_mac_address(struct net_device *dev) static void mv643xx_eth_set_rx_mode(struct net_device *dev) { struct mv643xx_private *mp = netdev_priv(dev); u32 config_reg; config_reg = ethernet_get_config_reg(mp->port_num); if (dev->flags & IFF_PROMISC) config_reg |= (u32) MV643XX_ETH_UNICAST_PROMISCUOUS_MODE; mp->port_config |= (u32) MV643XX_ETH_UNICAST_PROMISCUOUS_MODE; else config_reg &= ~(u32) MV643XX_ETH_UNICAST_PROMISCUOUS_MODE; ethernet_set_config_reg(mp->port_num, config_reg); mp->port_config &= ~(u32) MV643XX_ETH_UNICAST_PROMISCUOUS_MODE; mv_write(MV643XX_ETH_PORT_CONFIG_REG(mp->port_num), mp->port_config); } /* Loading Loading @@ -369,15 +367,6 @@ static int mv643xx_eth_free_tx_queue(struct net_device *dev, dev_kfree_skb_irq(pkt_info.return_info); released = 0; /* * Decrement the number of outstanding skbs counter on * the TX queue. */ if (mp->tx_ring_skbs == 0) panic("ERROR - TX outstanding SKBs" " counter is corrupted"); mp->tx_ring_skbs--; } else dma_unmap_page(NULL, pkt_info.buf_ptr, pkt_info.byte_cnt, DMA_TO_DEVICE); Loading Loading @@ -412,15 +401,13 @@ static int mv643xx_eth_receive_queue(struct net_device *dev) struct pkt_info pkt_info; #ifdef MV643XX_NAPI while (eth_port_receive(mp, &pkt_info) == ETH_OK && budget > 0) { while (budget-- > 0 && eth_port_receive(mp, &pkt_info) == ETH_OK) { #else while (eth_port_receive(mp, &pkt_info) == ETH_OK) { #endif mp->rx_ring_skbs--; received_packets++; #ifdef MV643XX_NAPI budget--; #endif /* Update statistics. Note byte count includes 4 byte CRC count */ stats->rx_packets++; stats->rx_bytes += pkt_info.byte_cnt; Loading Loading @@ -1044,9 +1031,6 @@ static void mv643xx_tx(struct net_device *dev) DMA_TO_DEVICE); dev_kfree_skb_irq(pkt_info.return_info); if (mp->tx_ring_skbs) mp->tx_ring_skbs--; } else dma_unmap_page(NULL, pkt_info.buf_ptr, pkt_info.byte_cnt, DMA_TO_DEVICE); Loading Loading @@ -1189,7 +1173,6 @@ static int mv643xx_eth_start_xmit(struct sk_buff *skb, struct net_device *dev) pkt_info.buf_ptr = dma_map_single(NULL, skb->data, skb->len, DMA_TO_DEVICE); pkt_info.return_info = skb; mp->tx_ring_skbs++; status = eth_port_send(mp, &pkt_info); if ((status == ETH_ERROR) || (status == ETH_QUEUE_FULL)) printk(KERN_ERR "%s: Error on transmitting packet\n", Loading Loading @@ -1274,7 +1257,6 @@ static int mv643xx_eth_start_xmit(struct sk_buff *skb, struct net_device *dev) pkt_info.cmd_sts |= ETH_TX_ENABLE_INTERRUPT | ETH_TX_LAST_DESC; pkt_info.return_info = skb; mp->tx_ring_skbs++; } else { pkt_info.return_info = 0; } Loading Loading @@ -1311,7 +1293,6 @@ static int mv643xx_eth_start_xmit(struct sk_buff *skb, struct net_device *dev) pkt_info.buf_ptr = dma_map_single(NULL, skb->data, skb->len, DMA_TO_DEVICE); pkt_info.return_info = skb; mp->tx_ring_skbs++; status = eth_port_send(mp, &pkt_info); if ((status == ETH_ERROR) || (status == ETH_QUEUE_FULL)) printk(KERN_ERR "%s: Error on transmitting packet\n", Loading Loading @@ -1356,6 +1337,43 @@ static struct net_device_stats *mv643xx_eth_get_stats(struct net_device *dev) return &mp->stats; } #ifdef CONFIG_NET_POLL_CONTROLLER static inline void mv643xx_enable_irq(struct mv643xx_private *mp) { int port_num = mp->port_num; unsigned long flags; spin_lock_irqsave(&mp->lock, flags); mv_write(MV643XX_ETH_INTERRUPT_MASK_REG(port_num), INT_CAUSE_UNMASK_ALL); mv_write(MV643XX_ETH_INTERRUPT_EXTEND_MASK_REG(port_num), INT_CAUSE_UNMASK_ALL_EXT); spin_unlock_irqrestore(&mp->lock, flags); } static inline void mv643xx_disable_irq(struct mv643xx_private *mp) { int port_num = mp->port_num; unsigned long flags; spin_lock_irqsave(&mp->lock, flags); mv_write(MV643XX_ETH_INTERRUPT_MASK_REG(port_num), INT_CAUSE_MASK_ALL); mv_write(MV643XX_ETH_INTERRUPT_EXTEND_MASK_REG(port_num), INT_CAUSE_MASK_ALL_EXT); spin_unlock_irqrestore(&mp->lock, flags); } static void mv643xx_netpoll(struct net_device *netdev) { struct mv643xx_private *mp = netdev_priv(netdev); mv643xx_disable_irq(mp); mv643xx_eth_int_handler(netdev->irq, netdev, NULL); mv643xx_enable_irq(mp); } #endif /*/ * mv643xx_eth_probe * Loading Loading @@ -1406,6 +1424,10 @@ static int mv643xx_eth_probe(struct device *ddev) dev->weight = 64; #endif #ifdef CONFIG_NET_POLL_CONTROLLER dev->poll_controller = mv643xx_netpoll; #endif dev->watchdog_timeo = 2 * HZ; dev->tx_queue_len = mp->tx_ring_size; dev->base_addr = 0; Loading Loading @@ -1883,6 +1905,9 @@ static void eth_port_start(struct mv643xx_private *mp) /* Enable port Rx. */ mv_write(MV643XX_ETH_RECEIVE_QUEUE_COMMAND_REG(port_num), mp->port_rx_queue_command); /* Disable port bandwidth limits by clearing MTU register */ mv_write(MV643XX_ETH_MAXIMUM_TRANSMIT_UNIT(port_num), 0); } /* Loading Loading @@ -2292,34 +2317,6 @@ static void eth_port_reset(unsigned int port_num) mv_write(MV643XX_ETH_PORT_SERIAL_CONTROL_REG(port_num), reg_data); } /* * ethernet_set_config_reg - Set specified bits in configuration register. * * DESCRIPTION: * This function sets specified bits in the given ethernet * configuration register. * * INPUT: * unsigned int eth_port_num Ethernet Port number. * unsigned int value 32 bit value. * * OUTPUT: * The set bits in the value parameter are set in the configuration * register. * * RETURN: * None. * */ static void ethernet_set_config_reg(unsigned int eth_port_num, unsigned int value) { unsigned int eth_config_reg; eth_config_reg = mv_read(MV643XX_ETH_PORT_CONFIG_REG(eth_port_num)); eth_config_reg |= value; mv_write(MV643XX_ETH_PORT_CONFIG_REG(eth_port_num), eth_config_reg); } static int eth_port_autoneg_supported(unsigned int eth_port_num) { Loading @@ -2345,31 +2342,6 @@ static int eth_port_link_is_up(unsigned int eth_port_num) return 0; } /* * ethernet_get_config_reg - Get the port configuration register * * DESCRIPTION: * This function returns the configuration register value of the given * ethernet port. * * INPUT: * unsigned int eth_port_num Ethernet Port number. * * OUTPUT: * None. * * RETURN: * Port configuration register value. */ static unsigned int ethernet_get_config_reg(unsigned int eth_port_num) { unsigned int eth_config_reg; eth_config_reg = mv_read(MV643XX_ETH_PORT_CONFIG_EXTEND_REG (eth_port_num)); return eth_config_reg; } /* * eth_port_read_smi_reg - Read PHY registers * Loading Loading @@ -2528,6 +2500,9 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp, return ETH_ERROR; } mp->tx_ring_skbs++; BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size); /* Get the Tx Desc ring indexes */ tx_desc_curr = mp->tx_curr_desc_q; tx_desc_used = mp->tx_used_desc_q; Loading Loading @@ -2594,6 +2569,9 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp, if (mp->tx_resource_err) return ETH_QUEUE_FULL; mp->tx_ring_skbs++; BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size); /* Get the Tx Desc ring indexes */ tx_desc_curr = mp->tx_curr_desc_q; tx_desc_used = mp->tx_used_desc_q; Loading Loading @@ -2694,6 +2672,9 @@ static ETH_FUNC_RET_STATUS eth_tx_return_desc(struct mv643xx_private *mp, /* Any Tx return cancels the Tx resource error status */ mp->tx_resource_err = 0; BUG_ON(mp->tx_ring_skbs == 0); mp->tx_ring_skbs--; return ETH_OK; } Loading Loading
drivers/net/Kconfig +6 −3 Original line number Diff line number Diff line Loading @@ -397,7 +397,7 @@ config SUN3LANCE If you're not building a kernel for a Sun 3, say N. config SUN3_82586 tristate "Sun3 on-board Intel 82586 support" bool "Sun3 on-board Intel 82586 support" depends on NET_ETHERNET && SUN3 help This driver enables support for the on-board Intel 82586 based Loading Loading @@ -1924,12 +1924,15 @@ config R8169_VLAN If in doubt, say Y. config SIS190 tristate "SiS190 gigabit ethernet support" tristate "SiS190/SiS191 gigabit ethernet support" depends on PCI select CRC32 select MII ---help--- Say Y here if you have a SiS 190 PCI Gigabit Ethernet adapter. Say Y here if you have a SiS 190 PCI Fast Ethernet adapter or a SiS 191 PCI Gigabit Ethernet adapter. Both are expected to appear in lan on motherboard designs which are based on SiS 965 and SiS 966 south bridge. To compile this driver as a module, choose M here: the module will be called sis190. This is recommended. Loading
drivers/net/chelsio/common.h +2 −2 Original line number Diff line number Diff line Loading @@ -88,7 +88,7 @@ struct t1_rx_mode { static inline u8 *t1_get_next_mcaddr(struct t1_rx_mode *rm) { u8 *addr = 0; u8 *addr = NULL; if (rm->idx++ < rm->dev->mc_count) { addr = rm->list->dmi_addr; Loading Loading @@ -190,7 +190,7 @@ struct sge; struct peespi; struct adapter { u8 *regs; u8 __iomem *regs; struct pci_dev *pdev; unsigned long registered_device_map; unsigned long open_device_map; Loading
drivers/net/chelsio/cxgb2.c +1 −1 Original line number Diff line number Diff line Loading @@ -824,7 +824,7 @@ static void cxgb_proc_cleanup(struct adapter *adapter, static int t1_ioctl(struct net_device *dev, struct ifreq *req, int cmd) { struct adapter *adapter = dev->priv; struct mii_ioctl_data *data = (struct mii_ioctl_data *)&req->ifr_data; struct mii_ioctl_data *data = if_mii(req); switch (cmd) { case SIOCGMIIPHY: Loading
drivers/net/e1000/e1000_hw.h +1 −1 Original line number Diff line number Diff line Loading @@ -1270,7 +1270,7 @@ struct e1000_hw_stats { /* Structure containing variables used by the shared code (e1000_hw.c) */ struct e1000_hw { uint8_t *hw_addr; uint8_t __iomem *hw_addr; uint8_t *flash_address; e1000_mac_type mac_type; e1000_phy_type phy_type; Loading
drivers/net/mv643xx_eth.c +60 −79 Original line number Diff line number Diff line Loading @@ -58,11 +58,10 @@ #define INT_CAUSE_UNMASK_ALL 0x0007ffff #define INT_CAUSE_UNMASK_ALL_EXT 0x0011ffff #ifdef MV643XX_RX_QUEUE_FILL_ON_TASK #define INT_CAUSE_MASK_ALL 0x00000000 #define INT_CAUSE_MASK_ALL_EXT 0x00000000 #define INT_CAUSE_CHECK_BITS INT_CAUSE_UNMASK_ALL #define INT_CAUSE_CHECK_BITS_EXT INT_CAUSE_UNMASK_ALL_EXT #endif #ifdef MV643XX_CHECKSUM_OFFLOAD_TX #define MAX_DESCS_PER_SKB (MAX_SKB_FRAGS + 1) Loading Loading @@ -259,14 +258,13 @@ static void mv643xx_eth_update_mac_address(struct net_device *dev) static void mv643xx_eth_set_rx_mode(struct net_device *dev) { struct mv643xx_private *mp = netdev_priv(dev); u32 config_reg; config_reg = ethernet_get_config_reg(mp->port_num); if (dev->flags & IFF_PROMISC) config_reg |= (u32) MV643XX_ETH_UNICAST_PROMISCUOUS_MODE; mp->port_config |= (u32) MV643XX_ETH_UNICAST_PROMISCUOUS_MODE; else config_reg &= ~(u32) MV643XX_ETH_UNICAST_PROMISCUOUS_MODE; ethernet_set_config_reg(mp->port_num, config_reg); mp->port_config &= ~(u32) MV643XX_ETH_UNICAST_PROMISCUOUS_MODE; mv_write(MV643XX_ETH_PORT_CONFIG_REG(mp->port_num), mp->port_config); } /* Loading Loading @@ -369,15 +367,6 @@ static int mv643xx_eth_free_tx_queue(struct net_device *dev, dev_kfree_skb_irq(pkt_info.return_info); released = 0; /* * Decrement the number of outstanding skbs counter on * the TX queue. */ if (mp->tx_ring_skbs == 0) panic("ERROR - TX outstanding SKBs" " counter is corrupted"); mp->tx_ring_skbs--; } else dma_unmap_page(NULL, pkt_info.buf_ptr, pkt_info.byte_cnt, DMA_TO_DEVICE); Loading Loading @@ -412,15 +401,13 @@ static int mv643xx_eth_receive_queue(struct net_device *dev) struct pkt_info pkt_info; #ifdef MV643XX_NAPI while (eth_port_receive(mp, &pkt_info) == ETH_OK && budget > 0) { while (budget-- > 0 && eth_port_receive(mp, &pkt_info) == ETH_OK) { #else while (eth_port_receive(mp, &pkt_info) == ETH_OK) { #endif mp->rx_ring_skbs--; received_packets++; #ifdef MV643XX_NAPI budget--; #endif /* Update statistics. Note byte count includes 4 byte CRC count */ stats->rx_packets++; stats->rx_bytes += pkt_info.byte_cnt; Loading Loading @@ -1044,9 +1031,6 @@ static void mv643xx_tx(struct net_device *dev) DMA_TO_DEVICE); dev_kfree_skb_irq(pkt_info.return_info); if (mp->tx_ring_skbs) mp->tx_ring_skbs--; } else dma_unmap_page(NULL, pkt_info.buf_ptr, pkt_info.byte_cnt, DMA_TO_DEVICE); Loading Loading @@ -1189,7 +1173,6 @@ static int mv643xx_eth_start_xmit(struct sk_buff *skb, struct net_device *dev) pkt_info.buf_ptr = dma_map_single(NULL, skb->data, skb->len, DMA_TO_DEVICE); pkt_info.return_info = skb; mp->tx_ring_skbs++; status = eth_port_send(mp, &pkt_info); if ((status == ETH_ERROR) || (status == ETH_QUEUE_FULL)) printk(KERN_ERR "%s: Error on transmitting packet\n", Loading Loading @@ -1274,7 +1257,6 @@ static int mv643xx_eth_start_xmit(struct sk_buff *skb, struct net_device *dev) pkt_info.cmd_sts |= ETH_TX_ENABLE_INTERRUPT | ETH_TX_LAST_DESC; pkt_info.return_info = skb; mp->tx_ring_skbs++; } else { pkt_info.return_info = 0; } Loading Loading @@ -1311,7 +1293,6 @@ static int mv643xx_eth_start_xmit(struct sk_buff *skb, struct net_device *dev) pkt_info.buf_ptr = dma_map_single(NULL, skb->data, skb->len, DMA_TO_DEVICE); pkt_info.return_info = skb; mp->tx_ring_skbs++; status = eth_port_send(mp, &pkt_info); if ((status == ETH_ERROR) || (status == ETH_QUEUE_FULL)) printk(KERN_ERR "%s: Error on transmitting packet\n", Loading Loading @@ -1356,6 +1337,43 @@ static struct net_device_stats *mv643xx_eth_get_stats(struct net_device *dev) return &mp->stats; } #ifdef CONFIG_NET_POLL_CONTROLLER static inline void mv643xx_enable_irq(struct mv643xx_private *mp) { int port_num = mp->port_num; unsigned long flags; spin_lock_irqsave(&mp->lock, flags); mv_write(MV643XX_ETH_INTERRUPT_MASK_REG(port_num), INT_CAUSE_UNMASK_ALL); mv_write(MV643XX_ETH_INTERRUPT_EXTEND_MASK_REG(port_num), INT_CAUSE_UNMASK_ALL_EXT); spin_unlock_irqrestore(&mp->lock, flags); } static inline void mv643xx_disable_irq(struct mv643xx_private *mp) { int port_num = mp->port_num; unsigned long flags; spin_lock_irqsave(&mp->lock, flags); mv_write(MV643XX_ETH_INTERRUPT_MASK_REG(port_num), INT_CAUSE_MASK_ALL); mv_write(MV643XX_ETH_INTERRUPT_EXTEND_MASK_REG(port_num), INT_CAUSE_MASK_ALL_EXT); spin_unlock_irqrestore(&mp->lock, flags); } static void mv643xx_netpoll(struct net_device *netdev) { struct mv643xx_private *mp = netdev_priv(netdev); mv643xx_disable_irq(mp); mv643xx_eth_int_handler(netdev->irq, netdev, NULL); mv643xx_enable_irq(mp); } #endif /*/ * mv643xx_eth_probe * Loading Loading @@ -1406,6 +1424,10 @@ static int mv643xx_eth_probe(struct device *ddev) dev->weight = 64; #endif #ifdef CONFIG_NET_POLL_CONTROLLER dev->poll_controller = mv643xx_netpoll; #endif dev->watchdog_timeo = 2 * HZ; dev->tx_queue_len = mp->tx_ring_size; dev->base_addr = 0; Loading Loading @@ -1883,6 +1905,9 @@ static void eth_port_start(struct mv643xx_private *mp) /* Enable port Rx. */ mv_write(MV643XX_ETH_RECEIVE_QUEUE_COMMAND_REG(port_num), mp->port_rx_queue_command); /* Disable port bandwidth limits by clearing MTU register */ mv_write(MV643XX_ETH_MAXIMUM_TRANSMIT_UNIT(port_num), 0); } /* Loading Loading @@ -2292,34 +2317,6 @@ static void eth_port_reset(unsigned int port_num) mv_write(MV643XX_ETH_PORT_SERIAL_CONTROL_REG(port_num), reg_data); } /* * ethernet_set_config_reg - Set specified bits in configuration register. * * DESCRIPTION: * This function sets specified bits in the given ethernet * configuration register. * * INPUT: * unsigned int eth_port_num Ethernet Port number. * unsigned int value 32 bit value. * * OUTPUT: * The set bits in the value parameter are set in the configuration * register. * * RETURN: * None. * */ static void ethernet_set_config_reg(unsigned int eth_port_num, unsigned int value) { unsigned int eth_config_reg; eth_config_reg = mv_read(MV643XX_ETH_PORT_CONFIG_REG(eth_port_num)); eth_config_reg |= value; mv_write(MV643XX_ETH_PORT_CONFIG_REG(eth_port_num), eth_config_reg); } static int eth_port_autoneg_supported(unsigned int eth_port_num) { Loading @@ -2345,31 +2342,6 @@ static int eth_port_link_is_up(unsigned int eth_port_num) return 0; } /* * ethernet_get_config_reg - Get the port configuration register * * DESCRIPTION: * This function returns the configuration register value of the given * ethernet port. * * INPUT: * unsigned int eth_port_num Ethernet Port number. * * OUTPUT: * None. * * RETURN: * Port configuration register value. */ static unsigned int ethernet_get_config_reg(unsigned int eth_port_num) { unsigned int eth_config_reg; eth_config_reg = mv_read(MV643XX_ETH_PORT_CONFIG_EXTEND_REG (eth_port_num)); return eth_config_reg; } /* * eth_port_read_smi_reg - Read PHY registers * Loading Loading @@ -2528,6 +2500,9 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp, return ETH_ERROR; } mp->tx_ring_skbs++; BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size); /* Get the Tx Desc ring indexes */ tx_desc_curr = mp->tx_curr_desc_q; tx_desc_used = mp->tx_used_desc_q; Loading Loading @@ -2594,6 +2569,9 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp, if (mp->tx_resource_err) return ETH_QUEUE_FULL; mp->tx_ring_skbs++; BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size); /* Get the Tx Desc ring indexes */ tx_desc_curr = mp->tx_curr_desc_q; tx_desc_used = mp->tx_used_desc_q; Loading Loading @@ -2694,6 +2672,9 @@ static ETH_FUNC_RET_STATUS eth_tx_return_desc(struct mv643xx_private *mp, /* Any Tx return cancels the Tx resource error status */ mp->tx_resource_err = 0; BUG_ON(mp->tx_ring_skbs == 0); mp->tx_ring_skbs--; return ETH_OK; } Loading