tree: git://git.sourceforge.jp/gitroot/uclinux-h8/linux rx-new head: ecde16be1b8bda3b1edb07a28670d4bfb8958352 commit: f1d29f28ab089041603ba43c823d70b37ebca646 [35/42] sh_eth: Add RX6xN support. config: xtensa-allmodconfig (attached as .config) compiler: xtensa-linux-gcc (GCC) 8.1.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git checkout f1d29f28ab089041603ba43c823d70b37ebca646 # save the attached .config to linux build tree GCC_VERSION=8.1.0 make.cross ARCH=xtensa All error/warnings (new ones prefixed by >>): drivers/net//ethernet/renesas/sh_eth.c:1177:57: error: 'EESR_RTO' undeclared here (not in a function); did you mean 'EESR_RTSF'? .tx_check = EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO, ^~~~~~~~ EESR_RTSF drivers/net//ethernet/renesas/sh_eth.c:1187:3: error: 'struct sh_eth_cpu_data' has no member named 'rpadir_value'; did you mean 'fdr_value'? .rpadir_value = 0x00020000, /* NET_IP_ALIGN assumed to be 2 */ ^~~~~~~~~~~~ fdr_value >> drivers/net//ethernet/renesas/sh_eth.c:1187:18: warning: unsigned conversion from 'int' to 'unsigned char:1' changes value from '131072' to '0' [-Woverflow] .rpadir_value = 0x00020000, /* NET_IP_ALIGN assumed to be 2 */ ^~~~~~~~~~ drivers/net//ethernet/renesas/sh_eth.c: In function 'sh_eth_rx': >> drivers/net//ethernet/renesas/sh_eth.c:1713:15: error: implicit declaration of function 'edmac_to_cpu'; did you mean 'le16_to_cpu'? [-Werror=implicit-function-declaration] dma_addr = edmac_to_cpu(mdp, rxdesc->addr); ^~~~~~~~~~~~ le16_to_cpu drivers/net//ethernet/renesas/sh_eth.c: In function 'sh_eth_phy_init': drivers/net//ethernet/renesas/sh_eth.c:2107:7: error: 'struct sh_eth_private' has no member named 'phydev'; did you mean 'pdev'? mdp->phydev = phydev; ^~~~~~ pdev drivers/net//ethernet/renesas/sh_eth.c: At top level: drivers/net//ethernet/renesas/sh_eth.c:3545:38: error: 'r8a777x_data' undeclared here (not in a function); did you mean 'r8a7740_data'? { "r8a777x-ether", (kernel_ulong_t)&r8a777x_data }, ^~~~~~~~~~~~ r8a7740_data >> drivers/net//ethernet/renesas/sh_eth.c:3546:38: error: 'r8a779x_data' undeclared here (not in a function); did you mean 'r8a77980_data'? { "r8a7790-ether", (kernel_ulong_t)&r8a779x_data }, ^~~~~~~~~~~~ r8a77980_data cc1: some warnings being treated as errors vim +1713 drivers/net//ethernet/renesas/sh_eth.c 1651 1652 /* Packet receive function */ 1653 static int sh_eth_rx(struct net_device *ndev, u32 intr_status, int *quota) 1654 { 1655 struct sh_eth_private *mdp = netdev_priv(ndev); 1656 struct sh_eth_rxdesc *rxdesc; 1657 1658 int entry = mdp->cur_rx % mdp->num_rx_ring; 1659 int boguscnt = (mdp->dirty_rx + mdp->num_rx_ring) - mdp->cur_rx; 1660 int limit; 1661 struct sk_buff *skb; 1662 u32 desc_status; 1663 int skbuff_size = mdp->rx_buf_sz + SH_ETH_RX_ALIGN + 32 - 1; 1664 dma_addr_t dma_addr; 1665 u16 pkt_len; 1666 u32 buf_len; 1667 1668 boguscnt = min(boguscnt, *quota); 1669 limit = boguscnt; 1670 rxdesc = &mdp->rx_ring[entry]; 1671 while (!(rxdesc->status & cpu_to_le32(RD_RACT))) { 1672 /* RACT bit must be checked before all the following reads */ 1673 dma_rmb(); 1674 desc_status = le32_to_cpu(rxdesc->status); 1675 pkt_len = le32_to_cpu(rxdesc->len) & RD_RFL; 1676 1677 if (--boguscnt < 0) 1678 break; 1679 1680 netif_info(mdp, rx_status, ndev, 1681 "rx entry %d status 0x%08x len %d\n", 1682 entry, desc_status, pkt_len); 1683 1684 if (!(desc_status & RDFEND)) 1685 ndev->stats.rx_length_errors++; 1686 1687 /* In case of almost all GETHER/ETHERs, the Receive Frame State 1688 * (RFS) bits in the Receive Descriptor 0 are from bit 9 to 1689 * bit 0. However, in case of the R8A7740 and R7S72100 1690 * the RFS bits are from bit 25 to bit 16. So, the 1691 * driver needs right shifting by 16. 1692 */ 1693 if (mdp->cd->hw_checksum) 1694 desc_status >>= 16; 1695 1696 skb = mdp->rx_skbuff[entry]; 1697 if (desc_status & (RD_RFS1 | RD_RFS2 | RD_RFS3 | RD_RFS4 | 1698 RD_RFS5 | RD_RFS6 | RD_RFS10)) { 1699 ndev->stats.rx_errors++; 1700 if (desc_status & RD_RFS1) 1701 ndev->stats.rx_crc_errors++; 1702 if (desc_status & RD_RFS2) 1703 ndev->stats.rx_frame_errors++; 1704 if (desc_status & RD_RFS3) 1705 ndev->stats.rx_length_errors++; 1706 if (desc_status & RD_RFS4) 1707 ndev->stats.rx_length_errors++; 1708 if (desc_status & RD_RFS6) 1709 ndev->stats.rx_missed_errors++; 1710 if (desc_status & RD_RFS10) 1711 ndev->stats.rx_over_errors++; 1712 } else if (skb) { > 1713 dma_addr = edmac_to_cpu(mdp, rxdesc->addr); 1714 1715 if (!mdp->cd->hw_swap) 1716 sh_eth_soft_swap( 1717 phys_to_virt(ALIGN(dma_addr, 4)), 1718 pkt_len + 2); 1719 mdp->rx_skbuff[entry] = NULL; 1720 if (mdp->cd->rpadir) 1721 skb_reserve(skb, NET_IP_ALIGN); 1722 dma_unmap_single(&mdp->pdev->dev, dma_addr, 1723 ALIGN(mdp->rx_buf_sz, 32), 1724 DMA_FROM_DEVICE); 1725 skb_put(skb, pkt_len); 1726 skb->protocol = eth_type_trans(skb, ndev); 1727 netif_receive_skb(skb); 1728 ndev->stats.rx_packets++; 1729 ndev->stats.rx_bytes += pkt_len; 1730 if (desc_status & RD_RFS8) 1731 ndev->stats.multicast++; 1732 } 1733 entry = (++mdp->cur_rx) % mdp->num_rx_ring; 1734 rxdesc = &mdp->rx_ring[entry]; 1735 } 1736 1737 /* Refill the Rx ring buffers. */ 1738 for (; mdp->cur_rx - mdp->dirty_rx > 0; mdp->dirty_rx++) { 1739 entry = mdp->dirty_rx % mdp->num_rx_ring; 1740 rxdesc = &mdp->rx_ring[entry]; 1741 /* The size of the buffer is 32 byte boundary. */ 1742 buf_len = ALIGN(mdp->rx_buf_sz, 32); 1743 rxdesc->len = cpu_to_le32(buf_len << 16); 1744 1745 if (mdp->rx_skbuff[entry] == NULL) { 1746 skb = netdev_alloc_skb(ndev, skbuff_size); 1747 if (skb == NULL) 1748 break; /* Better luck next round. */ 1749 sh_eth_set_receive_align(skb); 1750 dma_addr = dma_map_single(&mdp->pdev->dev, skb->data, 1751 buf_len, DMA_FROM_DEVICE); 1752 if (dma_mapping_error(&mdp->pdev->dev, dma_addr)) { 1753 kfree_skb(skb); 1754 break; 1755 } 1756 mdp->rx_skbuff[entry] = skb; 1757 1758 skb_checksum_none_assert(skb); 1759 rxdesc->addr = cpu_to_le32(dma_addr); 1760 } 1761 dma_wmb(); /* RACT bit must be set after all the above writes */ 1762 if (entry >= mdp->num_rx_ring - 1) 1763 rxdesc->status |= 1764 cpu_to_le32(RD_RACT | RD_RFP | RD_RDLE); 1765 else 1766 rxdesc->status |= cpu_to_le32(RD_RACT | RD_RFP); 1767 } 1768 1769 /* Restart Rx engine if stopped. */ 1770 /* If we don't need to check status, don't. -KDU */ 1771 if (!(sh_eth_read(ndev, EDRRR) & EDRRR_R)) { 1772 /* fix the values for the next receiving if RDE is set */ 1773 if (intr_status & EESR_RDE && !mdp->cd->no_xdfar) { 1774 u32 count = (sh_eth_read(ndev, RDFAR) - 1775 sh_eth_read(ndev, RDLAR)) >> 4; 1776 1777 mdp->cur_rx = count; 1778 mdp->dirty_rx = count; 1779 } 1780 sh_eth_write(ndev, EDRRR_R, EDRRR); 1781 } 1782 1783 *quota -= limit - boguscnt - 1; 1784 1785 return *quota <= 0; 1786 } 1787 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation