[Intel-wired-lan] [jkirsher-next-queue:dev-queue 579/633] drivers/net/ethernet/realtek/r8169_main.c:5861:17: sparse: sparse: incorrect type in assignment (different base types)
kbuild test robot
lkp at intel.com
Wed Jun 5 23:41:28 UTC 2019
Hi Heiner,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git dev-queue
head: a879fe85e4b103e65a85527bbaeaa51a15ce9d8c
commit: 25e992a4603cd5284127e2a6fda6b05bd58d12ed [579/633] r8169: rename r8169.c to r8169_main.c
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-rc1-7-g2b96cd8-dirty
git checkout 25e992a4603cd5284127e2a6fda6b05bd58d12ed
make ARCH=x86_64 allmodconfig
make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp at intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/net/ethernet/realtek/r8169_main.c:5861:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int @@ got restricted __le32unsigned int @@
>> drivers/net/ethernet/realtek/r8169_main.c:5861:17: sparse: expected unsigned int
>> drivers/net/ethernet/realtek/r8169_main.c:5861:17: sparse: got restricted __le32 [usertype]
include/linux/netdevice.h:3889:20: sparse: sparse: shift count is negative (-1)
vim +5861 drivers/net/ethernet/realtek/r8169_main.c
87945b6d8 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-05-31 5841
61357325f drivers/net/r8169.c Stephen Hemminger 2009-08-31 5842 static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
61357325f drivers/net/r8169.c Stephen Hemminger 2009-08-31 5843 struct net_device *dev)
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5844 {
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5845 struct rtl8169_private *tp = netdev_priv(dev);
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5846 unsigned int entry = tp->cur_tx % NUM_TX_DESC;
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5847 struct TxDesc *txd = tp->TxDescArray + entry;
1e1205b7d drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2018-03-20 5848 struct device *d = tp_to_dev(tp);
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5849 dma_addr_t mapping;
734c14098 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2018-11-22 5850 u32 opts[2], len;
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5851 int frags;
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5852
76085c9e7 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2018-11-22 5853 if (unlikely(!rtl_tx_slots_avail(tp, skb_shinfo(skb)->nr_frags))) {
bf82c189a drivers/net/r8169.c Joe Perches 2010-02-09 5854 netif_err(tp, drv, dev, "BUG! Tx Ring full when queue awake!\n");
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5855 goto err_stop_0;
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5856 }
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5857
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5858 if (unlikely(le32_to_cpu(txd->opts1) & DescOwn))
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5859 goto err_stop_0;
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5860
b423e9ae4 drivers/net/ethernet/realtek/r8169.c françois romieu 2013-05-18 @5861 opts[1] = cpu_to_le32(rtl8169_tx_vlan_tag(skb));
b423e9ae4 drivers/net/ethernet/realtek/r8169.c françois romieu 2013-05-18 5862 opts[0] = DescOwn;
b423e9ae4 drivers/net/ethernet/realtek/r8169.c françois romieu 2013-05-18 5863
87945b6d8 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-05-31 5864 if (rtl_chip_supports_csum_v2(tp)) {
87945b6d8 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-05-31 5865 if (!rtl8169_tso_csum_v2(tp, skb, opts)) {
e974604b4 drivers/net/ethernet/realtek/r8169.c hayeswang 2014-07-11 5866 r8169_csum_workaround(tp, skb);
e974604b4 drivers/net/ethernet/realtek/r8169.c hayeswang 2014-07-11 5867 return NETDEV_TX_OK;
e974604b4 drivers/net/ethernet/realtek/r8169.c hayeswang 2014-07-11 5868 }
87945b6d8 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-05-31 5869 } else {
87945b6d8 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-05-31 5870 rtl8169_tso_csum_v1(skb, opts);
87945b6d8 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-05-31 5871 }
b423e9ae4 drivers/net/ethernet/realtek/r8169.c françois romieu 2013-05-18 5872
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5873 len = skb_headlen(skb);
48addcc9e drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5874 mapping = dma_map_single(d, skb->data, len, DMA_TO_DEVICE);
d827d86b6 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5875 if (unlikely(dma_mapping_error(d, mapping))) {
d827d86b6 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5876 if (net_ratelimit())
d827d86b6 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5877 netif_err(tp, drv, dev, "Failed to map TX DMA!\n");
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5878 goto err_dma_0;
d827d86b6 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5879 }
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5880
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5881 tp->tx_skb[entry].len = len;
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5882 txd->addr = cpu_to_le64(mapping);
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5883
2b7b43185 drivers/net/r8169.c Francois Romieu 2011-04-18 5884 frags = rtl8169_xmit_frags(tp, skb, opts);
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5885 if (frags < 0)
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5886 goto err_dma_1;
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5887 else if (frags)
2b7b43185 drivers/net/r8169.c Francois Romieu 2011-04-18 5888 opts[0] |= FirstFrag;
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5889 else {
2b7b43185 drivers/net/r8169.c Francois Romieu 2011-04-18 5890 opts[0] |= FirstFrag | LastFrag;
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5891 tp->tx_skb[entry].skb = skb;
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5892 }
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5893
2b7b43185 drivers/net/r8169.c Francois Romieu 2011-04-18 5894 txd->opts2 = cpu_to_le32(opts[1]);
2b7b43185 drivers/net/r8169.c Francois Romieu 2011-04-18 5895
0255d5927 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-02-10 5896 netdev_sent_queue(dev, skb->len);
0255d5927 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-02-10 5897
5047fb5d1 drivers/net/ethernet/realtek/r8169.c Richard Cochran 2012-03-10 5898 skb_tx_timestamp(skb);
5047fb5d1 drivers/net/ethernet/realtek/r8169.c Richard Cochran 2012-03-10 5899
a07501387 drivers/net/ethernet/realtek/r8169.c Alexander Duyck 2014-12-11 5900 /* Force memory writes to complete before releasing descriptor */
a07501387 drivers/net/ethernet/realtek/r8169.c Alexander Duyck 2014-12-11 5901 dma_wmb();
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5902
734c14098 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2018-11-22 5903 txd->opts1 = rtl8169_get_txd_opts1(opts[0], len, entry);
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5904
a07501387 drivers/net/ethernet/realtek/r8169.c Alexander Duyck 2014-12-11 5905 /* Force all memory writes to complete before notifying device */
4c020a961 drivers/net/r8169.c David Dillow 2010-03-03 5906 wmb();
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5907
a07501387 drivers/net/ethernet/realtek/r8169.c Alexander Duyck 2014-12-11 5908 tp->cur_tx += frags + 1;
a07501387 drivers/net/ethernet/realtek/r8169.c Alexander Duyck 2014-12-11 5909
2e6eedb48 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2018-11-25 5910 RTL_W8(tp, TxPoll, NPQ);
da78dbff2 drivers/net/ethernet/realtek/r8169.c Francois Romieu 2012-01-26 5911
0255d5927 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-02-10 5912 if (!rtl_tx_slots_avail(tp, MAX_SKB_FRAGS)) {
0255d5927 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-02-10 5913 /* Avoid wrongly optimistic queue wake-up: rtl_tx thread must
0255d5927 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-02-10 5914 * not miss a ring update when it notices a stopped queue.
0255d5927 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-02-10 5915 */
0255d5927 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-02-10 5916 smp_wmb();
0255d5927 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-02-10 5917 netif_stop_queue(dev);
ae1f23fb4 drivers/net/ethernet/realtek/r8169.c Francois Romieu 2012-01-31 5918 /* Sync with rtl_tx:
ae1f23fb4 drivers/net/ethernet/realtek/r8169.c Francois Romieu 2012-01-31 5919 * - publish queue status and cur_tx ring index (write barrier)
ae1f23fb4 drivers/net/ethernet/realtek/r8169.c Francois Romieu 2012-01-31 5920 * - refresh dirty_tx ring index (read barrier).
ae1f23fb4 drivers/net/ethernet/realtek/r8169.c Francois Romieu 2012-01-31 5921 * May the current thread have a pessimistic view of the ring
ae1f23fb4 drivers/net/ethernet/realtek/r8169.c Francois Romieu 2012-01-31 5922 * status and forget to wake up queue, a racing rtl_tx thread
ae1f23fb4 drivers/net/ethernet/realtek/r8169.c Francois Romieu 2012-01-31 5923 * can't.
ae1f23fb4 drivers/net/ethernet/realtek/r8169.c Francois Romieu 2012-01-31 5924 */
1e874e041 drivers/net/ethernet/realtek/r8169.c Francois Romieu 2012-01-27 5925 smp_mb();
76085c9e7 drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2018-11-22 5926 if (rtl_tx_slots_avail(tp, MAX_SKB_FRAGS))
601ed4d6d drivers/net/ethernet/realtek/r8169.c Heiner Kallweit 2019-03-21 5927 netif_start_queue(dev);
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5928 }
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5929
61357325f drivers/net/r8169.c Stephen Hemminger 2009-08-31 5930 return NETDEV_TX_OK;
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5931
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5932 err_dma_1:
48addcc9e drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5933 rtl8169_unmap_tx_skb(d, tp->tx_skb + entry, txd);
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5934 err_dma_0:
989c9ba10 drivers/net/ethernet/realtek/r8169.c Eric W. Biederman 2014-03-11 5935 dev_kfree_skb_any(skb);
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5936 dev->stats.tx_dropped++;
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5937 return NETDEV_TX_OK;
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5938
3eafe5070 drivers/net/r8169.c Stanislaw Gruszka 2010-10-20 5939 err_stop_0:
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5940 netif_stop_queue(dev);
cebf8cc79 drivers/net/r8169.c Francois Romieu 2007-10-18 5941 dev->stats.tx_dropped++;
61357325f drivers/net/r8169.c Stephen Hemminger 2009-08-31 5942 return NETDEV_TX_BUSY;
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5943 }
^1da177e4 drivers/net/r8169.c Linus Torvalds 2005-04-16 5944
:::::: The code at line 5861 was first introduced by commit
:::::: b423e9ae49d78ea3f53b131c8d5a6087aed16fd6 r8169: fix offloaded tx checksum for small packets.
:::::: TO: françois romieu <romieu at fr.zoreil.com>
:::::: CC: David S. Miller <davem at davemloft.net>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
More information about the Intel-wired-lan
mailing list