tree: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git master head: 22942498ccebf13b076859f8746be161dc0c6d89 commit: 091810dbded96c2af81f645e386e4262553e3493 [86/94] net: stmmac: Introduce selftests support reproduce: # apt-get install sparse # sparse version: v0.6.1-rc1-7-g2b96cd8-dirty git checkout 091810dbded96c2af81f645e386e4262553e3493 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 <l...@intel.com> sparse warnings: (new ones prefixed by >>) >> drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:127:26: sparse: >> sparse: incorrect type in assignment (different base types) @@ expected >> unsigned short [usertype] @@ got resunsigned short [usertype] @@ >> drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:127:26: sparse: >> expected unsigned short [usertype] >> drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:127:26: sparse: >> got restricted __be16 [usertype] drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:128:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got resunsigned short [usertype] @@ drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:128:24: sparse: expected unsigned short [usertype] drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:128:24: sparse: got restricted __be16 [usertype] drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:129:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got resunsigned short [usertype] @@ drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:129:24: sparse: expected unsigned short [usertype] drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:129:24: sparse: got restricted __be16 [usertype] drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:131:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got resunsigned short [usertype] @@ drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:131:34: sparse: expected unsigned short [usertype] drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:131:34: sparse: got restricted __be16 [usertype] drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:132:32: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got resunsigned short [usertype] @@ drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:132:32: sparse: expected unsigned short [usertype] drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:132:32: sparse: got restricted __be16 [usertype] drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:133:32: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got resunsigned short [usertype] @@ drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:133:32: sparse: expected unsigned short [usertype] drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:133:32: sparse: got restricted __be16 [usertype] drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:134:32: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got resunsigned short [usertype] @@ drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:134:32: sparse: expected unsigned short [usertype] drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:134:32: sparse: got restricted __be16 [usertype] vim +127 drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c 49 50 static struct sk_buff *stmmac_test_get_udp_skb(struct stmmac_priv *priv, 51 struct stmmac_packet_attrs *attr) 52 { 53 struct sk_buff *skb = NULL; 54 struct udphdr *uhdr = NULL; 55 struct tcphdr *thdr = NULL; 56 struct stmmachdr *shdr; 57 struct ethhdr *ehdr; 58 struct iphdr *ihdr; 59 int iplen, size; 60 61 size = attr->size + STMMAC_TEST_PKT_SIZE; 62 if (attr->vlan) { 63 size += 4; 64 if (attr->vlan > 1) 65 size += 4; 66 } 67 68 if (attr->tcp) 69 size += sizeof(struct tcphdr); 70 else 71 size += sizeof(struct udphdr); 72 73 skb = netdev_alloc_skb(priv->dev, size); 74 if (!skb) 75 return NULL; 76 77 prefetchw(skb->data); 78 skb_reserve(skb, NET_IP_ALIGN); 79 80 if (attr->vlan > 1) 81 ehdr = skb_push(skb, ETH_HLEN + 8); 82 else if (attr->vlan) 83 ehdr = skb_push(skb, ETH_HLEN + 4); 84 else if (attr->remove_sa) 85 ehdr = skb_push(skb, ETH_HLEN - 6); 86 else 87 ehdr = skb_push(skb, ETH_HLEN); 88 skb_reset_mac_header(skb); 89 90 skb_set_network_header(skb, skb->len); 91 ihdr = skb_put(skb, sizeof(*ihdr)); 92 93 skb_set_transport_header(skb, skb->len); 94 if (attr->tcp) 95 thdr = skb_put(skb, sizeof(*thdr)); 96 else 97 uhdr = skb_put(skb, sizeof(*uhdr)); 98 99 if (!attr->remove_sa) 100 eth_zero_addr(ehdr->h_source); 101 eth_zero_addr(ehdr->h_dest); 102 if (attr->src && !attr->remove_sa) 103 ether_addr_copy(ehdr->h_source, attr->src); 104 if (attr->dst) 105 ether_addr_copy(ehdr->h_dest, attr->dst); 106 107 if (!attr->remove_sa) { 108 ehdr->h_proto = htons(ETH_P_IP); 109 } else { 110 __be16 *ptr = (__be16 *)ehdr; 111 112 /* HACK */ 113 ptr[3] = htons(ETH_P_IP); 114 } 115 116 if (attr->vlan) { 117 u16 *tag, *proto; 118 119 if (!attr->remove_sa) { 120 tag = (void *)ehdr + ETH_HLEN; 121 proto = (void *)ehdr + (2 * ETH_ALEN); 122 } else { 123 tag = (void *)ehdr + ETH_HLEN - 6; 124 proto = (void *)ehdr + ETH_ALEN; 125 } 126 > 127 proto[0] = htons(ETH_P_8021Q); 128 tag[0] = htons(attr->vlan_id_out); 129 tag[1] = htons(ETH_P_IP); 130 if (attr->vlan > 1) { 131 proto[0] = htons(ETH_P_8021AD); 132 tag[1] = htons(ETH_P_8021Q); 133 tag[2] = htons(attr->vlan_id_in); 134 tag[3] = htons(ETH_P_IP); 135 } 136 } 137 138 if (attr->tcp) { 139 thdr->source = htons(attr->sport); 140 thdr->dest = htons(attr->dport); 141 thdr->doff = sizeof(struct tcphdr) / 4; 142 thdr->check = 0; 143 } else { 144 uhdr->source = htons(attr->sport); 145 uhdr->dest = htons(attr->dport); 146 uhdr->len = htons(sizeof(*shdr) + sizeof(*uhdr) + attr->size); 147 uhdr->check = 0; 148 } 149 150 ihdr->ihl = 5; 151 ihdr->ttl = 32; 152 ihdr->version = 4; 153 if (attr->tcp) 154 ihdr->protocol = IPPROTO_TCP; 155 else 156 ihdr->protocol = IPPROTO_UDP; 157 iplen = sizeof(*ihdr) + sizeof(*shdr) + attr->size; 158 if (attr->tcp) 159 iplen += sizeof(*thdr); 160 else 161 iplen += sizeof(*uhdr); 162 ihdr->tot_len = htons(iplen); 163 ihdr->frag_off = 0; 164 ihdr->saddr = 0; 165 ihdr->daddr = htonl(attr->ip_dst); 166 ihdr->tos = 0; 167 ihdr->id = 0; 168 ip_send_check(ihdr); 169 170 shdr = skb_put(skb, sizeof(*shdr)); 171 shdr->version = 0; 172 shdr->magic = cpu_to_be64(STMMAC_TEST_PKT_MAGIC); 173 attr->id = stmmac_test_next_id; 174 shdr->id = stmmac_test_next_id++; 175 176 if (attr->size) 177 skb_put(skb, attr->size); 178 179 skb->csum = 0; 180 skb->ip_summed = CHECKSUM_PARTIAL; 181 if (attr->tcp) { 182 thdr->check = ~tcp_v4_check(skb->len, ihdr->saddr, ihdr->daddr, 0); 183 skb->csum_start = skb_transport_header(skb) - skb->head; 184 skb->csum_offset = offsetof(struct tcphdr, check); 185 } else { 186 udp4_hwcsum(skb, ihdr->saddr, ihdr->daddr); 187 } 188 189 skb->protocol = htons(ETH_P_IP); 190 skb->pkt_type = PACKET_HOST; 191 skb->dev = priv->dev; 192 193 return skb; 194 } 195 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation