Hi Iyappan,

[auto build test WARNING on net-next/master]

url:    
https://github.com/0day-ci/linux/commits/Iyappan-Subramanian/drivers-net-xgene-v2-Add-RGMII-based-1G-driver/20170201-034317
config: i386-allmodconfig (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   In file included from include/linux/byteorder/little_endian.h:4:0,
                    from arch/x86/include/uapi/asm/byteorder.h:4,
                    from include/asm-generic/bitops/le.h:5,
                    from arch/x86/include/asm/bitops.h:517,
                    from include/linux/bitops.h:36,
                    from include/linux/kernel.h:10,
                    from include/linux/list.h:8,
                    from include/linux/resource_ext.h:17,
                    from include/linux/acpi.h:26,
                    from drivers/net/ethernet/apm/xgene-v2/main.h:25,
                    from drivers/net/ethernet/apm/xgene-v2/main.c:22:
   drivers/net/ethernet/apm/xgene-v2/main.c: In function 'xge_refill_buffers':
>> drivers/net/ethernet/apm/xgene-v2/main.c:162:20: warning: right shift count 
>> >= width of type [-Wshift-count-overflow]
              dma_addr >> PKT_ADDRL_LEN));
                       ^
   include/uapi/linux/byteorder/little_endian.h:30:51: note: in definition of 
macro '__cpu_to_le64'
    #define __cpu_to_le64(x) ((__force __le64)(__u64)(x))
                                                      ^
>> drivers/net/ethernet/apm/xgene-v2/main.c:161:9: note: in expansion of macro 
>> 'SET_BITS'
            SET_BITS(PKT_ADDRH,
            ^~~~~~~~
   drivers/net/ethernet/apm/xgene-v2/main.c: In function 'xge_start_xmit':
   drivers/net/ethernet/apm/xgene-v2/main.c:346:19: warning: right shift count 
>= width of type [-Wshift-count-overflow]
             dma_addr >> PKT_ADDRL_LEN));
                      ^
   include/uapi/linux/byteorder/little_endian.h:30:51: note: in definition of 
macro '__cpu_to_le64'
    #define __cpu_to_le64(x) ((__force __le64)(__u64)(x))
                                                      ^
   drivers/net/ethernet/apm/xgene-v2/main.c:345:8: note: in expansion of macro 
'SET_BITS'
           SET_BITS(PKT_ADDRH,
           ^~~~~~~~
   drivers/net/ethernet/apm/xgene-v2/main.c: In function 'xge_rx_poll':
>> drivers/net/ethernet/apm/xgene-v2/main.c:453:23: warning: left shift count 
>> >= width of type [-Wshift-count-overflow]
      dma_addr = (addr_hi << PKT_ADDRL_LEN) | addr_lo;
                          ^~
--
   drivers/net/ethernet/apm/xgene-v2/ring.c: In function 'xge_setup_desc':
>> drivers/net/ethernet/apm/xgene-v2/ring.c:40:20: warning: right shift count 
>> >= width of type [-Wshift-count-overflow]
      dma_h = next_dma >> NEXT_DESC_ADDRL_LEN;
                       ^~
   drivers/net/ethernet/apm/xgene-v2/ring.c: In function 
'xge_update_tx_desc_addr':
   drivers/net/ethernet/apm/xgene-v2/ring.c:51:42: warning: right shift count 
>= width of type [-Wshift-count-overflow]
     xge_wr_csr(pdata, DMATXDESCH, (dma_addr >> NEXT_DESC_ADDRL_LEN));
                                             ^~
   drivers/net/ethernet/apm/xgene-v2/ring.c: In function 
'xge_update_rx_desc_addr':
   drivers/net/ethernet/apm/xgene-v2/ring.c:59:42: warning: right shift count 
>= width of type [-Wshift-count-overflow]
     xge_wr_csr(pdata, DMARXDESCH, (dma_addr >> NEXT_DESC_ADDRL_LEN));
                                             ^~

vim +162 drivers/net/ethernet/apm/xgene-v2/main.c

90db21d34 Iyappan Subramanian 2017-01-31   16   * GNU General Public License 
for more details.
90db21d34 Iyappan Subramanian 2017-01-31   17   *
90db21d34 Iyappan Subramanian 2017-01-31   18   * You should have received a 
copy of the GNU General Public License
90db21d34 Iyappan Subramanian 2017-01-31   19   * along with this program.  If 
not, see <http://www.gnu.org/licenses/>.
90db21d34 Iyappan Subramanian 2017-01-31   20   */
90db21d34 Iyappan Subramanian 2017-01-31   21  
90db21d34 Iyappan Subramanian 2017-01-31  @22  #include "main.h"
90db21d34 Iyappan Subramanian 2017-01-31   23  
90db21d34 Iyappan Subramanian 2017-01-31   24  static const struct 
acpi_device_id xge_acpi_match[];
90db21d34 Iyappan Subramanian 2017-01-31   25  
90db21d34 Iyappan Subramanian 2017-01-31   26  static int 
xge_get_resources(struct xge_pdata *pdata)
90db21d34 Iyappan Subramanian 2017-01-31   27  {
90db21d34 Iyappan Subramanian 2017-01-31   28   struct platform_device *pdev;
90db21d34 Iyappan Subramanian 2017-01-31   29   struct net_device *ndev;
90db21d34 Iyappan Subramanian 2017-01-31   30   struct device *dev;
90db21d34 Iyappan Subramanian 2017-01-31   31   struct resource *res;
90db21d34 Iyappan Subramanian 2017-01-31   32   int phy_mode, ret = 0;
90db21d34 Iyappan Subramanian 2017-01-31   33  
90db21d34 Iyappan Subramanian 2017-01-31   34   pdev = pdata->pdev;
90db21d34 Iyappan Subramanian 2017-01-31   35   dev = &pdev->dev;
90db21d34 Iyappan Subramanian 2017-01-31   36   ndev = pdata->ndev;
90db21d34 Iyappan Subramanian 2017-01-31   37  
90db21d34 Iyappan Subramanian 2017-01-31   38   res = 
platform_get_resource(pdev, IORESOURCE_MEM, 0);
90db21d34 Iyappan Subramanian 2017-01-31   39   if (!res) {
90db21d34 Iyappan Subramanian 2017-01-31   40           dev_err(dev, "Resource 
enet_csr not defined\n");
90db21d34 Iyappan Subramanian 2017-01-31   41           return -ENODEV;
90db21d34 Iyappan Subramanian 2017-01-31   42   }
90db21d34 Iyappan Subramanian 2017-01-31   43  
90db21d34 Iyappan Subramanian 2017-01-31   44   pdata->resources.base_addr = 
devm_ioremap(dev, res->start,
90db21d34 Iyappan Subramanian 2017-01-31   45                                   
          resource_size(res));
90db21d34 Iyappan Subramanian 2017-01-31   46   if 
(!pdata->resources.base_addr) {
90db21d34 Iyappan Subramanian 2017-01-31   47           dev_err(dev, "Unable to 
retrieve ENET Port CSR region\n");
90db21d34 Iyappan Subramanian 2017-01-31   48           return -ENOMEM;
90db21d34 Iyappan Subramanian 2017-01-31   49   }
90db21d34 Iyappan Subramanian 2017-01-31   50  
90db21d34 Iyappan Subramanian 2017-01-31   51   if 
(!device_get_mac_address(dev, ndev->dev_addr, ETH_ALEN))
90db21d34 Iyappan Subramanian 2017-01-31   52           
eth_hw_addr_random(ndev);
90db21d34 Iyappan Subramanian 2017-01-31   53  
90db21d34 Iyappan Subramanian 2017-01-31   54   memcpy(ndev->perm_addr, 
ndev->dev_addr, ndev->addr_len);
90db21d34 Iyappan Subramanian 2017-01-31   55  
90db21d34 Iyappan Subramanian 2017-01-31   56   phy_mode = 
device_get_phy_mode(dev);
90db21d34 Iyappan Subramanian 2017-01-31   57   if (phy_mode < 0) {
90db21d34 Iyappan Subramanian 2017-01-31   58           dev_err(dev, "Unable to 
get phy-connection-type\n");
90db21d34 Iyappan Subramanian 2017-01-31   59           return phy_mode;
90db21d34 Iyappan Subramanian 2017-01-31   60   }
90db21d34 Iyappan Subramanian 2017-01-31   61   pdata->resources.phy_mode = 
phy_mode;
90db21d34 Iyappan Subramanian 2017-01-31   62  
90db21d34 Iyappan Subramanian 2017-01-31   63   if (pdata->resources.phy_mode 
!= PHY_INTERFACE_MODE_RGMII) {
90db21d34 Iyappan Subramanian 2017-01-31   64           dev_err(dev, "Incorrect 
phy-connection-type specified\n");
90db21d34 Iyappan Subramanian 2017-01-31   65           return -ENODEV;
90db21d34 Iyappan Subramanian 2017-01-31   66   }
90db21d34 Iyappan Subramanian 2017-01-31   67  
90db21d34 Iyappan Subramanian 2017-01-31   68   ret = platform_get_irq(pdev, 0);
90db21d34 Iyappan Subramanian 2017-01-31   69   if (ret <= 0) {
90db21d34 Iyappan Subramanian 2017-01-31   70           dev_err(dev, "Unable to 
get ENET IRQ\n");
90db21d34 Iyappan Subramanian 2017-01-31   71           ret = ret ? : -ENXIO;
90db21d34 Iyappan Subramanian 2017-01-31   72           return ret;
90db21d34 Iyappan Subramanian 2017-01-31   73   }
90db21d34 Iyappan Subramanian 2017-01-31   74   pdata->resources.irq = ret;
90db21d34 Iyappan Subramanian 2017-01-31   75  
90db21d34 Iyappan Subramanian 2017-01-31   76   return 0;
90db21d34 Iyappan Subramanian 2017-01-31   77  }
90db21d34 Iyappan Subramanian 2017-01-31   78  
90db21d34 Iyappan Subramanian 2017-01-31   79  static void 
xge_delete_desc_rings(struct net_device *ndev)
90db21d34 Iyappan Subramanian 2017-01-31   80  {
90db21d34 Iyappan Subramanian 2017-01-31   81   struct xge_pdata *pdata = 
netdev_priv(ndev);
90db21d34 Iyappan Subramanian 2017-01-31   82   struct device *dev = 
&pdata->pdev->dev;
90db21d34 Iyappan Subramanian 2017-01-31   83   struct xge_desc_ring *ring;
90db21d34 Iyappan Subramanian 2017-01-31   84  
90db21d34 Iyappan Subramanian 2017-01-31   85   ring = pdata->tx_ring;
90db21d34 Iyappan Subramanian 2017-01-31   86   if (ring) {
90db21d34 Iyappan Subramanian 2017-01-31   87           if (ring->skbs)
90db21d34 Iyappan Subramanian 2017-01-31   88                   devm_kfree(dev, 
ring->skbs);
90db21d34 Iyappan Subramanian 2017-01-31   89           if (ring->pkt_bufs)
90db21d34 Iyappan Subramanian 2017-01-31   90                   devm_kfree(dev, 
ring->pkt_bufs);
90db21d34 Iyappan Subramanian 2017-01-31   91           devm_kfree(dev, ring);
90db21d34 Iyappan Subramanian 2017-01-31   92   }
90db21d34 Iyappan Subramanian 2017-01-31   93  
90db21d34 Iyappan Subramanian 2017-01-31   94   ring = pdata->rx_ring;
90db21d34 Iyappan Subramanian 2017-01-31   95   if (ring) {
90db21d34 Iyappan Subramanian 2017-01-31   96           if (ring->skbs)
90db21d34 Iyappan Subramanian 2017-01-31   97                   devm_kfree(dev, 
ring->skbs);
90db21d34 Iyappan Subramanian 2017-01-31   98           devm_kfree(dev, ring);
90db21d34 Iyappan Subramanian 2017-01-31   99   }
90db21d34 Iyappan Subramanian 2017-01-31  100  }
90db21d34 Iyappan Subramanian 2017-01-31  101  
90db21d34 Iyappan Subramanian 2017-01-31  102  static struct xge_desc_ring 
*xge_create_desc_ring(struct net_device *ndev)
90db21d34 Iyappan Subramanian 2017-01-31  103  {
90db21d34 Iyappan Subramanian 2017-01-31  104   struct xge_pdata *pdata = 
netdev_priv(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  105   struct device *dev = 
&pdata->pdev->dev;
90db21d34 Iyappan Subramanian 2017-01-31  106   struct xge_desc_ring *ring;
90db21d34 Iyappan Subramanian 2017-01-31  107   u16 size;
90db21d34 Iyappan Subramanian 2017-01-31  108  
90db21d34 Iyappan Subramanian 2017-01-31  109   ring = devm_kzalloc(dev, 
sizeof(struct xge_desc_ring), GFP_KERNEL);
90db21d34 Iyappan Subramanian 2017-01-31  110   if (!ring)
90db21d34 Iyappan Subramanian 2017-01-31  111           return NULL;
90db21d34 Iyappan Subramanian 2017-01-31  112  
90db21d34 Iyappan Subramanian 2017-01-31  113   ring->ndev = ndev;
90db21d34 Iyappan Subramanian 2017-01-31  114  
90db21d34 Iyappan Subramanian 2017-01-31  115   size = XGENE_ENET_DESC_SIZE * 
XGENE_ENET_NUM_DESC;
90db21d34 Iyappan Subramanian 2017-01-31  116   ring->desc_addr = 
dmam_alloc_coherent(dev, size, &ring->dma_addr,
90db21d34 Iyappan Subramanian 2017-01-31  117                                   
      GFP_KERNEL | __GFP_ZERO);
90db21d34 Iyappan Subramanian 2017-01-31  118   if (!ring->desc_addr) {
90db21d34 Iyappan Subramanian 2017-01-31  119           devm_kfree(dev, ring);
90db21d34 Iyappan Subramanian 2017-01-31  120           return NULL;
90db21d34 Iyappan Subramanian 2017-01-31  121   }
90db21d34 Iyappan Subramanian 2017-01-31  122  
90db21d34 Iyappan Subramanian 2017-01-31  123   xge_setup_desc(ring);
90db21d34 Iyappan Subramanian 2017-01-31  124  
90db21d34 Iyappan Subramanian 2017-01-31  125   return ring;
90db21d34 Iyappan Subramanian 2017-01-31  126  }
90db21d34 Iyappan Subramanian 2017-01-31  127  
90db21d34 Iyappan Subramanian 2017-01-31  128  static int 
xge_refill_buffers(struct net_device *ndev, u32 nbuf)
90db21d34 Iyappan Subramanian 2017-01-31  129  {
90db21d34 Iyappan Subramanian 2017-01-31  130   struct xge_pdata *pdata = 
netdev_priv(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  131   struct xge_desc_ring *ring = 
pdata->rx_ring;
90db21d34 Iyappan Subramanian 2017-01-31  132   const u8 slots = 
XGENE_ENET_NUM_DESC - 1;
90db21d34 Iyappan Subramanian 2017-01-31  133   struct device *dev = 
&pdata->pdev->dev;
90db21d34 Iyappan Subramanian 2017-01-31  134   struct xge_raw_desc *raw_desc;
90db21d34 Iyappan Subramanian 2017-01-31  135   u64 addr_lo, addr_hi;
90db21d34 Iyappan Subramanian 2017-01-31  136   u8 tail = ring->tail;
90db21d34 Iyappan Subramanian 2017-01-31  137   struct sk_buff *skb;
90db21d34 Iyappan Subramanian 2017-01-31  138   dma_addr_t dma_addr;
90db21d34 Iyappan Subramanian 2017-01-31  139   u16 len;
90db21d34 Iyappan Subramanian 2017-01-31  140   int i;
90db21d34 Iyappan Subramanian 2017-01-31  141  
90db21d34 Iyappan Subramanian 2017-01-31  142   for (i = 0; i < nbuf; i++) {
90db21d34 Iyappan Subramanian 2017-01-31  143           raw_desc = 
&ring->raw_desc[tail];
90db21d34 Iyappan Subramanian 2017-01-31  144  
90db21d34 Iyappan Subramanian 2017-01-31  145           len = 
XGENE_ENET_STD_MTU;
90db21d34 Iyappan Subramanian 2017-01-31  146           skb = 
netdev_alloc_skb(ndev, len);
90db21d34 Iyappan Subramanian 2017-01-31  147           if (unlikely(!skb))
90db21d34 Iyappan Subramanian 2017-01-31  148                   return -ENOMEM;
90db21d34 Iyappan Subramanian 2017-01-31  149  
90db21d34 Iyappan Subramanian 2017-01-31  150           dma_addr = 
dma_map_single(dev, skb->data, len, DMA_FROM_DEVICE);
90db21d34 Iyappan Subramanian 2017-01-31  151           if 
(dma_mapping_error(dev, dma_addr)) {
90db21d34 Iyappan Subramanian 2017-01-31  152                   
netdev_err(ndev, "DMA mapping error\n");
90db21d34 Iyappan Subramanian 2017-01-31  153                   
dev_kfree_skb_any(skb);
90db21d34 Iyappan Subramanian 2017-01-31  154                   return -EINVAL;
90db21d34 Iyappan Subramanian 2017-01-31  155           }
90db21d34 Iyappan Subramanian 2017-01-31  156  
90db21d34 Iyappan Subramanian 2017-01-31  157           addr_hi = 
GET_BITS(NEXT_DESC_ADDRH, le64_to_cpu(raw_desc->m1));
90db21d34 Iyappan Subramanian 2017-01-31  158           addr_lo = 
GET_BITS(NEXT_DESC_ADDRL, le64_to_cpu(raw_desc->m1));
90db21d34 Iyappan Subramanian 2017-01-31  159           raw_desc->m1 = 
cpu_to_le64(SET_BITS(NEXT_DESC_ADDRL, addr_lo) |
90db21d34 Iyappan Subramanian 2017-01-31  160                                   
   SET_BITS(NEXT_DESC_ADDRH, addr_hi) |
90db21d34 Iyappan Subramanian 2017-01-31 @161                                   
   SET_BITS(PKT_ADDRH,
90db21d34 Iyappan Subramanian 2017-01-31 @162                                   
            dma_addr >> PKT_ADDRL_LEN));
90db21d34 Iyappan Subramanian 2017-01-31  163  
90db21d34 Iyappan Subramanian 2017-01-31  164           dma_wmb();
90db21d34 Iyappan Subramanian 2017-01-31  165           raw_desc->m0 = 
cpu_to_le64(SET_BITS(PKT_ADDRL, dma_addr) |
90db21d34 Iyappan Subramanian 2017-01-31  166                                   
   SET_BITS(E, 1));
dde456a0a Iyappan Subramanian 2017-01-31  167  
90db21d34 Iyappan Subramanian 2017-01-31  168           ring->skbs[tail] = skb;
90db21d34 Iyappan Subramanian 2017-01-31  169           tail = (tail + 1) & 
slots;
90db21d34 Iyappan Subramanian 2017-01-31  170   }
dde456a0a Iyappan Subramanian 2017-01-31  171   xge_wr_csr(pdata, DMARXCTRL, 1);
90db21d34 Iyappan Subramanian 2017-01-31  172  
90db21d34 Iyappan Subramanian 2017-01-31  173   ring->tail = tail;
90db21d34 Iyappan Subramanian 2017-01-31  174  
90db21d34 Iyappan Subramanian 2017-01-31  175   return 0;
90db21d34 Iyappan Subramanian 2017-01-31  176  }
90db21d34 Iyappan Subramanian 2017-01-31  177  
90db21d34 Iyappan Subramanian 2017-01-31  178  static int 
xge_create_desc_rings(struct net_device *ndev)
90db21d34 Iyappan Subramanian 2017-01-31  179  {
90db21d34 Iyappan Subramanian 2017-01-31  180   struct xge_pdata *pdata = 
netdev_priv(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  181   struct device *dev = 
&pdata->pdev->dev;
90db21d34 Iyappan Subramanian 2017-01-31  182   struct xge_desc_ring *ring;
90db21d34 Iyappan Subramanian 2017-01-31  183   int ret;
90db21d34 Iyappan Subramanian 2017-01-31  184  
90db21d34 Iyappan Subramanian 2017-01-31  185   /* create tx ring */
90db21d34 Iyappan Subramanian 2017-01-31  186   ring = 
xge_create_desc_ring(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  187   if (!ring)
90db21d34 Iyappan Subramanian 2017-01-31  188           return -ENOMEM;
90db21d34 Iyappan Subramanian 2017-01-31  189  
90db21d34 Iyappan Subramanian 2017-01-31  190   ring->skbs = devm_kcalloc(dev, 
XGENE_ENET_NUM_DESC,
90db21d34 Iyappan Subramanian 2017-01-31  191                             
sizeof(struct sk_buff *), GFP_KERNEL);
90db21d34 Iyappan Subramanian 2017-01-31  192   if (!ring->skbs)
90db21d34 Iyappan Subramanian 2017-01-31  193           goto err;
90db21d34 Iyappan Subramanian 2017-01-31  194  
90db21d34 Iyappan Subramanian 2017-01-31  195   ring->pkt_bufs = 
devm_kcalloc(dev, XGENE_ENET_NUM_DESC,
90db21d34 Iyappan Subramanian 2017-01-31  196                             
sizeof(void *), GFP_KERNEL);
90db21d34 Iyappan Subramanian 2017-01-31  197   if (!ring->pkt_bufs)
90db21d34 Iyappan Subramanian 2017-01-31  198           goto err;
90db21d34 Iyappan Subramanian 2017-01-31  199  
90db21d34 Iyappan Subramanian 2017-01-31  200   pdata->tx_ring = ring;
90db21d34 Iyappan Subramanian 2017-01-31  201   xge_update_tx_desc_addr(pdata);
90db21d34 Iyappan Subramanian 2017-01-31  202  
90db21d34 Iyappan Subramanian 2017-01-31  203   /* create rx ring */
90db21d34 Iyappan Subramanian 2017-01-31  204   ring = 
xge_create_desc_ring(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  205   if (!ring)
90db21d34 Iyappan Subramanian 2017-01-31  206           goto err;
90db21d34 Iyappan Subramanian 2017-01-31  207  
90db21d34 Iyappan Subramanian 2017-01-31  208   ring->skbs = devm_kcalloc(dev, 
XGENE_ENET_NUM_DESC,
90db21d34 Iyappan Subramanian 2017-01-31  209                             
sizeof(struct sk_buff *), GFP_KERNEL);
90db21d34 Iyappan Subramanian 2017-01-31  210   if (!ring->skbs)
90db21d34 Iyappan Subramanian 2017-01-31  211           goto err;
90db21d34 Iyappan Subramanian 2017-01-31  212  
90db21d34 Iyappan Subramanian 2017-01-31  213   pdata->rx_ring = ring;
90db21d34 Iyappan Subramanian 2017-01-31  214   xge_update_rx_desc_addr(pdata);
90db21d34 Iyappan Subramanian 2017-01-31  215  
90db21d34 Iyappan Subramanian 2017-01-31  216   ret = xge_refill_buffers(ndev, 
XGENE_ENET_NUM_DESC);
90db21d34 Iyappan Subramanian 2017-01-31  217   if (!ret)
90db21d34 Iyappan Subramanian 2017-01-31  218           return 0;
90db21d34 Iyappan Subramanian 2017-01-31  219  
90db21d34 Iyappan Subramanian 2017-01-31  220  err:
90db21d34 Iyappan Subramanian 2017-01-31  221   xge_delete_desc_rings(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  222  
90db21d34 Iyappan Subramanian 2017-01-31  223   return -ENOMEM;
90db21d34 Iyappan Subramanian 2017-01-31  224  }
90db21d34 Iyappan Subramanian 2017-01-31  225  
90db21d34 Iyappan Subramanian 2017-01-31  226  static int xge_init_hw(struct 
net_device *ndev)
90db21d34 Iyappan Subramanian 2017-01-31  227  {
90db21d34 Iyappan Subramanian 2017-01-31  228   struct xge_pdata *pdata = 
netdev_priv(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  229   int ret;
90db21d34 Iyappan Subramanian 2017-01-31  230  
90db21d34 Iyappan Subramanian 2017-01-31  231   ret = xge_port_reset(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  232   if (ret)
90db21d34 Iyappan Subramanian 2017-01-31  233           return ret;
90db21d34 Iyappan Subramanian 2017-01-31  234  
90db21d34 Iyappan Subramanian 2017-01-31  235   xge_create_desc_rings(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  236   xge_port_init(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  237   pdata->nbufs = NUM_BUFS;
90db21d34 Iyappan Subramanian 2017-01-31  238  
90db21d34 Iyappan Subramanian 2017-01-31  239   return 0;
90db21d34 Iyappan Subramanian 2017-01-31  240  }
90db21d34 Iyappan Subramanian 2017-01-31  241  
90db21d34 Iyappan Subramanian 2017-01-31  242  static irqreturn_t xge_irq(const 
int irq, void *data)
90db21d34 Iyappan Subramanian 2017-01-31  243  {
90db21d34 Iyappan Subramanian 2017-01-31  244   struct xge_pdata *pdata = data;
90db21d34 Iyappan Subramanian 2017-01-31  245  
90db21d34 Iyappan Subramanian 2017-01-31  246   if 
(napi_schedule_prep(&pdata->napi)) {
90db21d34 Iyappan Subramanian 2017-01-31  247           xge_intr_disable(pdata);
90db21d34 Iyappan Subramanian 2017-01-31  248           
__napi_schedule(&pdata->napi);
90db21d34 Iyappan Subramanian 2017-01-31  249   }
90db21d34 Iyappan Subramanian 2017-01-31  250  
90db21d34 Iyappan Subramanian 2017-01-31  251   return IRQ_HANDLED;
90db21d34 Iyappan Subramanian 2017-01-31  252  }
90db21d34 Iyappan Subramanian 2017-01-31  253  
90db21d34 Iyappan Subramanian 2017-01-31  254  static int 
xge_request_irq(struct net_device *ndev)
90db21d34 Iyappan Subramanian 2017-01-31  255  {
90db21d34 Iyappan Subramanian 2017-01-31  256   struct xge_pdata *pdata = 
netdev_priv(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  257   struct device *dev = 
&pdata->pdev->dev;
90db21d34 Iyappan Subramanian 2017-01-31  258   int ret;
90db21d34 Iyappan Subramanian 2017-01-31  259  
90db21d34 Iyappan Subramanian 2017-01-31  260   snprintf(pdata->irq_name, 
IRQ_ID_SIZE, "%s", ndev->name);
90db21d34 Iyappan Subramanian 2017-01-31  261  
90db21d34 Iyappan Subramanian 2017-01-31  262   ret = devm_request_irq(dev, 
pdata->resources.irq, xge_irq,
90db21d34 Iyappan Subramanian 2017-01-31  263                          0, 
pdata->irq_name, pdata);
90db21d34 Iyappan Subramanian 2017-01-31  264   if (ret)
90db21d34 Iyappan Subramanian 2017-01-31  265           netdev_err(ndev, 
"Failed to request irq %s\n", pdata->irq_name);
90db21d34 Iyappan Subramanian 2017-01-31  266  
90db21d34 Iyappan Subramanian 2017-01-31  267   return ret;
90db21d34 Iyappan Subramanian 2017-01-31  268  }
90db21d34 Iyappan Subramanian 2017-01-31  269  
90db21d34 Iyappan Subramanian 2017-01-31  270  static void xge_free_irq(struct 
net_device *ndev)
90db21d34 Iyappan Subramanian 2017-01-31  271  {
90db21d34 Iyappan Subramanian 2017-01-31  272   struct xge_pdata *pdata = 
netdev_priv(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  273   struct device *dev = 
&pdata->pdev->dev;
90db21d34 Iyappan Subramanian 2017-01-31  274  
90db21d34 Iyappan Subramanian 2017-01-31  275   devm_free_irq(dev, 
pdata->resources.irq, pdata);
90db21d34 Iyappan Subramanian 2017-01-31  276  }
90db21d34 Iyappan Subramanian 2017-01-31  277  
90db21d34 Iyappan Subramanian 2017-01-31  278  static int xge_open(struct 
net_device *ndev)
90db21d34 Iyappan Subramanian 2017-01-31  279  {
90db21d34 Iyappan Subramanian 2017-01-31  280   struct xge_pdata *pdata = 
netdev_priv(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  281   int ret;
90db21d34 Iyappan Subramanian 2017-01-31  282  
dde456a0a Iyappan Subramanian 2017-01-31  283   napi_enable(&pdata->napi);
dde456a0a Iyappan Subramanian 2017-01-31  284  
90db21d34 Iyappan Subramanian 2017-01-31  285   ret = xge_request_irq(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  286   if (ret)
90db21d34 Iyappan Subramanian 2017-01-31  287           return ret;
90db21d34 Iyappan Subramanian 2017-01-31  288  
90db21d34 Iyappan Subramanian 2017-01-31  289   xge_intr_enable(pdata);
90db21d34 Iyappan Subramanian 2017-01-31  290  
90db21d34 Iyappan Subramanian 2017-01-31  291   xge_mac_enable(pdata);
90db21d34 Iyappan Subramanian 2017-01-31  292   netif_start_queue(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  293  
90db21d34 Iyappan Subramanian 2017-01-31  294   return 0;
90db21d34 Iyappan Subramanian 2017-01-31  295  }
90db21d34 Iyappan Subramanian 2017-01-31  296  
90db21d34 Iyappan Subramanian 2017-01-31  297  static int xge_close(struct 
net_device *ndev)
90db21d34 Iyappan Subramanian 2017-01-31  298  {
90db21d34 Iyappan Subramanian 2017-01-31  299   struct xge_pdata *pdata = 
netdev_priv(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  300  
90db21d34 Iyappan Subramanian 2017-01-31  301   netif_stop_queue(ndev);
90db21d34 Iyappan Subramanian 2017-01-31  302   xge_mac_disable(pdata);
90db21d34 Iyappan Subramanian 2017-01-31  303  
dde456a0a Iyappan Subramanian 2017-01-31  304   xge_intr_disable(pdata);
90db21d34 Iyappan Subramanian 2017-01-31  305   xge_free_irq(ndev);
dde456a0a Iyappan Subramanian 2017-01-31  306   napi_disable(&pdata->napi);
90db21d34 Iyappan Subramanian 2017-01-31  307  
90db21d34 Iyappan Subramanian 2017-01-31  308   return 0;
90db21d34 Iyappan Subramanian 2017-01-31  309  }
90db21d34 Iyappan Subramanian 2017-01-31  310  
dde456a0a Iyappan Subramanian 2017-01-31  311  static netdev_tx_t 
xge_start_xmit(struct sk_buff *skb, struct net_device *ndev)
dde456a0a Iyappan Subramanian 2017-01-31  312  {
dde456a0a Iyappan Subramanian 2017-01-31  313   struct xge_pdata *pdata = 
netdev_priv(ndev);
dde456a0a Iyappan Subramanian 2017-01-31  314   struct device *dev = 
&pdata->pdev->dev;
dde456a0a Iyappan Subramanian 2017-01-31  315   static dma_addr_t dma_addr;
dde456a0a Iyappan Subramanian 2017-01-31  316   struct xge_desc_ring *tx_ring;
dde456a0a Iyappan Subramanian 2017-01-31  317   struct xge_raw_desc *raw_desc;
dde456a0a Iyappan Subramanian 2017-01-31  318   u64 addr_lo, addr_hi;
dde456a0a Iyappan Subramanian 2017-01-31  319   void *pkt_buf;
dde456a0a Iyappan Subramanian 2017-01-31  320   u8 tail;
dde456a0a Iyappan Subramanian 2017-01-31  321   u16 len;
dde456a0a Iyappan Subramanian 2017-01-31  322  
dde456a0a Iyappan Subramanian 2017-01-31  323   tx_ring = pdata->tx_ring;
dde456a0a Iyappan Subramanian 2017-01-31  324   tail = tx_ring->tail;
dde456a0a Iyappan Subramanian 2017-01-31  325   len = skb_headlen(skb);
dde456a0a Iyappan Subramanian 2017-01-31  326   raw_desc = 
&tx_ring->raw_desc[tail];
dde456a0a Iyappan Subramanian 2017-01-31  327  
dde456a0a Iyappan Subramanian 2017-01-31  328   /* Tx descriptor not available 
*/
dde456a0a Iyappan Subramanian 2017-01-31  329   if (!GET_BITS(E, 
le64_to_cpu(raw_desc->m0)) ||
dde456a0a Iyappan Subramanian 2017-01-31  330       GET_BITS(PKT_SIZE, 
le64_to_cpu(raw_desc->m0)))
dde456a0a Iyappan Subramanian 2017-01-31  331           return NETDEV_TX_BUSY;
dde456a0a Iyappan Subramanian 2017-01-31  332  
dde456a0a Iyappan Subramanian 2017-01-31  333   /* Packet buffers should be 64B 
aligned */
dde456a0a Iyappan Subramanian 2017-01-31  334   pkt_buf = 
dma_alloc_coherent(dev, XGENE_ENET_STD_MTU, &dma_addr,
dde456a0a Iyappan Subramanian 2017-01-31  335                                
GFP_ATOMIC);
dde456a0a Iyappan Subramanian 2017-01-31  336   if (unlikely(!pkt_buf))
dde456a0a Iyappan Subramanian 2017-01-31  337           goto out;
dde456a0a Iyappan Subramanian 2017-01-31  338  
dde456a0a Iyappan Subramanian 2017-01-31  339   memcpy(pkt_buf, skb->data, len);
dde456a0a Iyappan Subramanian 2017-01-31  340  
dde456a0a Iyappan Subramanian 2017-01-31  341   addr_hi = 
GET_BITS(NEXT_DESC_ADDRH, le64_to_cpu(raw_desc->m1));
dde456a0a Iyappan Subramanian 2017-01-31  342   addr_lo = 
GET_BITS(NEXT_DESC_ADDRL, le64_to_cpu(raw_desc->m1));
dde456a0a Iyappan Subramanian 2017-01-31  343   raw_desc->m1 = 
cpu_to_le64(SET_BITS(NEXT_DESC_ADDRL, addr_lo) |
dde456a0a Iyappan Subramanian 2017-01-31  344                              
SET_BITS(NEXT_DESC_ADDRH, addr_hi) |
dde456a0a Iyappan Subramanian 2017-01-31 @345                              
SET_BITS(PKT_ADDRH,
dde456a0a Iyappan Subramanian 2017-01-31  346                                   
    dma_addr >> PKT_ADDRL_LEN));
dde456a0a Iyappan Subramanian 2017-01-31  347  
dde456a0a Iyappan Subramanian 2017-01-31  348   dma_wmb();

:::::: The code at line 162 was first introduced by commit
:::::: 90db21d344b12f41c93e821a69a96a60453e9dd8 drivers: net: xgene-v2: Add 
base driver

:::::: TO: Iyappan Subramanian <isubraman...@apm.com>
:::::: CC: 0day robot <fengguang...@intel.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to