[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202506131458.MnU50xNO-lkp@intel.com>
Date: Fri, 13 Jun 2025 15:04:02 +0800
From: kernel test robot <lkp@...el.com>
To: Thomas Fourier <fourier.thomas@...il.com>
Cc: oe-kbuild-all@...ts.linux.dev,
Thomas Fourier <fourier.thomas@...il.com>,
Chris Snook <chris.snook@...il.com>,
Andrew Lunn <andrew+netdev@...n.ch>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>,
Ingo Molnar <mingo@...nel.org>,
Thomas Gleixner <tglx@...utronix.de>, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] (drivers/ethernet/atheros/atl1) test DMA mapping for
error code
Hi Thomas,
kernel test robot noticed the following build errors:
[auto build test ERROR on linus/master]
[also build test ERROR on v6.16-rc1 next-20250612]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Thomas-Fourier/drivers-ethernet-atheros-atl1-test-DMA-mapping-for-error-code/20250612-231733
base: linus/master
patch link: https://lore.kernel.org/r/20250612150542.85239-2-fourier.thomas%40gmail.com
patch subject: [PATCH] (drivers/ethernet/atheros/atl1) test DMA mapping for error code
config: x86_64-rhel-9.4 (https://download.01.org/0day-ci/archive/20250613/202506131458.MnU50xNO-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250613/202506131458.MnU50xNO-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506131458.MnU50xNO-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
drivers/net/ethernet/atheros/atlx/atl1.c: In function 'atl1_tx_map':
>> drivers/net/ethernet/atheros/atlx/atl1.c:2315:34: warning: assignment to 'dma_addr_t' {aka 'long long unsigned int'} from 'void *' makes integer from pointer without a cast [-Wint-conversion]
2315 | buffer_info->dma = NULL;
| ^
>> drivers/net/ethernet/atheros/atlx/atl1.c:2317:39: error: 'tdp_ring' undeclared (first use in this function); did you mean 'tpd_ring'?
2317 | if (++first_mapped == tdp_ring->count)
| ^~~~~~~~
| tpd_ring
drivers/net/ethernet/atheros/atlx/atl1.c:2317:39: note: each undeclared identifier is reported only once for each function it appears in
vim +2317 drivers/net/ethernet/atheros/atlx/atl1.c
2192
2193 static int atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb,
2194 struct tx_packet_desc *ptpd)
2195 {
2196 struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring;
2197 struct atl1_buffer *buffer_info;
2198 u16 buf_len = skb->len;
2199 struct page *page;
2200 unsigned long offset;
2201 unsigned int nr_frags;
2202 unsigned int f;
2203 int retval;
2204 u16 next_to_use;
2205 u16 first_mapped;
2206 u16 data_len;
2207 u8 hdr_len;
2208
2209 buf_len -= skb->data_len;
2210 nr_frags = skb_shinfo(skb)->nr_frags;
2211 next_to_use = atomic_read(&tpd_ring->next_to_use);
2212 first_mapped = next_to_use;
2213 buffer_info = &tpd_ring->buffer_info[next_to_use];
2214 BUG_ON(buffer_info->skb);
2215 /* put skb in last TPD */
2216 buffer_info->skb = NULL;
2217
2218 retval = (ptpd->word3 >> TPD_SEGMENT_EN_SHIFT) & TPD_SEGMENT_EN_MASK;
2219 if (retval) {
2220 /* TSO */
2221 hdr_len = skb_tcp_all_headers(skb);
2222 buffer_info->length = hdr_len;
2223 page = virt_to_page(skb->data);
2224 offset = offset_in_page(skb->data);
2225 buffer_info->dma = dma_map_page(&adapter->pdev->dev, page,
2226 offset, hdr_len,
2227 DMA_TO_DEVICE);
2228 if (dma_mapping_error(&adapter->pdev->dev, buffer_info->dma))
2229 goto dma_err;
2230
2231 if (++next_to_use == tpd_ring->count)
2232 next_to_use = 0;
2233
2234 if (buf_len > hdr_len) {
2235 int i, nseg;
2236
2237 data_len = buf_len - hdr_len;
2238 nseg = (data_len + ATL1_MAX_TX_BUF_LEN - 1) /
2239 ATL1_MAX_TX_BUF_LEN;
2240 for (i = 0; i < nseg; i++) {
2241 buffer_info =
2242 &tpd_ring->buffer_info[next_to_use];
2243 buffer_info->skb = NULL;
2244 buffer_info->length =
2245 (ATL1_MAX_TX_BUF_LEN >=
2246 data_len) ? ATL1_MAX_TX_BUF_LEN : data_len;
2247 data_len -= buffer_info->length;
2248 page = virt_to_page(skb->data +
2249 (hdr_len + i * ATL1_MAX_TX_BUF_LEN));
2250 offset = offset_in_page(skb->data +
2251 (hdr_len + i * ATL1_MAX_TX_BUF_LEN));
2252 buffer_info->dma = dma_map_page(&adapter->pdev->dev,
2253 page, offset,
2254 buffer_info->length,
2255 DMA_TO_DEVICE);
2256 if (dma_mapping_error(&adapter->pdev->dev, buffer_info->dma))
2257 goto dma_err;
2258 if (++next_to_use == tpd_ring->count)
2259 next_to_use = 0;
2260 }
2261 }
2262 } else {
2263 /* not TSO */
2264 buffer_info->length = buf_len;
2265 page = virt_to_page(skb->data);
2266 offset = offset_in_page(skb->data);
2267 buffer_info->dma = dma_map_page(&adapter->pdev->dev, page,
2268 offset, buf_len,
2269 DMA_TO_DEVICE);
2270 if (dma_mapping_error(&adapter->pdev->dev, buffer_info->dma))
2271 goto dma_err;
2272 if (++next_to_use == tpd_ring->count)
2273 next_to_use = 0;
2274 }
2275
2276 for (f = 0; f < nr_frags; f++) {
2277 const skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
2278 u16 i, nseg;
2279
2280 buf_len = skb_frag_size(frag);
2281
2282 nseg = (buf_len + ATL1_MAX_TX_BUF_LEN - 1) /
2283 ATL1_MAX_TX_BUF_LEN;
2284 for (i = 0; i < nseg; i++) {
2285 buffer_info = &tpd_ring->buffer_info[next_to_use];
2286 BUG_ON(buffer_info->skb);
2287
2288 buffer_info->skb = NULL;
2289 buffer_info->length = (buf_len > ATL1_MAX_TX_BUF_LEN) ?
2290 ATL1_MAX_TX_BUF_LEN : buf_len;
2291 buf_len -= buffer_info->length;
2292 buffer_info->dma = skb_frag_dma_map(&adapter->pdev->dev,
2293 frag, i * ATL1_MAX_TX_BUF_LEN,
2294 buffer_info->length, DMA_TO_DEVICE);
2295 if (dma_mapping_error(&adapter->pdev->dev, buffer_info->dma))
2296 goto dma_err;
2297
2298 if (++next_to_use == tpd_ring->count)
2299 next_to_use = 0;
2300 }
2301 }
2302
2303 /* last tpd's buffer-info */
2304 buffer_info->skb = skb;
2305
2306 return 0;
2307
2308 dma_err:
2309 while (first_mapped != next_to_use) {
2310 buffer_info = &tpd_ring->buffer_info[first_mapped];
2311 dma_unmap_page(&adapter->pdev->dev,
2312 buffer_info->dma,
2313 buffer_info->length,
2314 DMA_TO_DEVICE);
> 2315 buffer_info->dma = NULL;
2316
> 2317 if (++first_mapped == tdp_ring->count)
2318 first_mapped = 0;
2319 }
2320 return -ENOMEM;
2321 }
2322
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists