Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

net: mana: Add debug logs in MANA network driver

Add more logs to assist in debugging and monitoring
driver behaviour, making it easier to identify potential
issues during development and testing.

Signed-off-by: Erni Sri Satya Vennela <ernis@linux.microsoft.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Link: https://patch.msgid.link/1739842455-23899-1-git-send-email-ernis@linux.microsoft.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Erni Sri Satya Vennela and committed by
Jakub Kicinski
47dfd7a7 a60a27c7

+94 -20
+42 -8
drivers/net/ethernet/microsoft/mana/gdma_main.c
··· 666 666 667 667 gmi = &queue->mem_info; 668 668 err = mana_gd_alloc_memory(gc, spec->queue_size, gmi); 669 - if (err) 669 + if (err) { 670 + dev_err(gc->dev, "GDMA queue type: %d, size: %u, gdma memory allocation err: %d\n", 671 + spec->type, spec->queue_size, err); 670 672 goto free_q; 673 + } 671 674 672 675 queue->head = 0; 673 676 queue->tail = 0; ··· 691 688 *queue_ptr = queue; 692 689 return 0; 693 690 out: 691 + dev_err(gc->dev, "Failed to create queue type %d of size %u, err: %d\n", 692 + spec->type, spec->queue_size, err); 694 693 mana_gd_free_memory(gmi); 695 694 free_q: 696 695 kfree(queue); ··· 775 770 } 776 771 777 772 gmi->dma_region_handle = resp.dma_region_handle; 773 + dev_dbg(gc->dev, "Created DMA region handle 0x%llx\n", 774 + gmi->dma_region_handle); 778 775 out: 776 + if (err) 777 + dev_dbg(gc->dev, 778 + "Failed to create DMA region of length: %u, page_type: %d, status: 0x%x, err: %d\n", 779 + length, req->gdma_page_type, resp.hdr.status, err); 779 780 kfree(req); 780 781 return err; 781 782 } ··· 804 793 805 794 gmi = &queue->mem_info; 806 795 err = mana_gd_alloc_memory(gc, spec->queue_size, gmi); 807 - if (err) 796 + if (err) { 797 + dev_err(gc->dev, "GDMA queue type: %d, size: %u, gdma memory allocation err: %d\n", 798 + spec->type, spec->queue_size, err); 808 799 goto free_q; 800 + } 809 801 810 802 err = mana_gd_create_dma_region(gd, gmi); 811 803 if (err) ··· 829 815 *queue_ptr = queue; 830 816 return 0; 831 817 out: 818 + dev_err(gc->dev, "Failed to create queue type %d of size: %u, err: %d\n", 819 + spec->type, spec->queue_size, err); 832 820 mana_gd_free_memory(gmi); 833 821 free_q: 834 822 kfree(queue); ··· 857 841 858 842 gmi = &queue->mem_info; 859 843 err = mana_gd_alloc_memory(gc, spec->queue_size, gmi); 860 - if (err) 844 + if (err) { 845 + dev_err(gc->dev, "GDMA queue type: %d, size: %u, memory allocation err: %d\n", 846 + spec->type, spec->queue_size, err); 861 847 goto free_q; 848 + } 862 849 863 850 err = mana_gd_create_dma_region(gd, gmi); 864 851 if (err) ··· 881 862 *queue_ptr = queue; 882 863 return 0; 883 864 out: 865 + dev_err(gc->dev, "Failed to create queue type %d of size: %u, err: %d\n", 866 + spec->type, spec->queue_size, err); 884 867 mana_gd_free_memory(gmi); 885 868 free_q: 886 869 kfree(queue); ··· 1178 1157 int err; 1179 1158 1180 1159 err = mana_gd_post_work_request(queue, wqe_req, wqe_info); 1181 - if (err) 1160 + if (err) { 1161 + dev_err(gc->dev, "Failed to post work req from queue type %d of size %u (err=%d)\n", 1162 + queue->type, queue->queue_size, err); 1182 1163 return err; 1164 + } 1183 1165 1184 1166 mana_gd_wq_ring_doorbell(gc, queue); 1185 1167 ··· 1459 1435 mana_smc_init(&gc->shm_channel, gc->dev, gc->shm_base); 1460 1436 1461 1437 err = mana_gd_setup_irqs(pdev); 1462 - if (err) 1438 + if (err) { 1439 + dev_err(gc->dev, "Failed to setup IRQs: %d\n", err); 1463 1440 return err; 1441 + } 1464 1442 1465 1443 err = mana_hwc_create_channel(gc); 1466 1444 if (err) ··· 1480 1454 if (err) 1481 1455 goto destroy_hwc; 1482 1456 1457 + dev_dbg(&pdev->dev, "mana gdma setup successful\n"); 1483 1458 return 0; 1484 1459 1485 1460 destroy_hwc: 1486 1461 mana_hwc_destroy_channel(gc); 1487 1462 remove_irq: 1488 1463 mana_gd_remove_irqs(pdev); 1464 + dev_err(&pdev->dev, "%s failed (error %d)\n", __func__, err); 1489 1465 return err; 1490 1466 } 1491 1467 ··· 1498 1470 mana_hwc_destroy_channel(gc); 1499 1471 1500 1472 mana_gd_remove_irqs(pdev); 1473 + dev_dbg(&pdev->dev, "mana gdma cleanup successful\n"); 1501 1474 } 1502 1475 1503 1476 static bool mana_is_pf(unsigned short dev_id) ··· 1517 1488 BUILD_BUG_ON(2 * MAX_PORTS_IN_MANA_DEV * GDMA_EQE_SIZE > EQ_SIZE); 1518 1489 1519 1490 err = pci_enable_device(pdev); 1520 - if (err) 1491 + if (err) { 1492 + dev_err(&pdev->dev, "Failed to enable pci device (err=%d)\n", err); 1521 1493 return -ENXIO; 1494 + } 1522 1495 1523 1496 pci_set_master(pdev); 1524 1497 ··· 1529 1498 goto disable_dev; 1530 1499 1531 1500 err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); 1532 - if (err) 1501 + if (err) { 1502 + dev_err(&pdev->dev, "DMA set mask failed: %d\n", err); 1533 1503 goto release_region; 1534 - 1504 + } 1535 1505 dma_set_max_seg_size(&pdev->dev, UINT_MAX); 1536 1506 1537 1507 err = -ENOMEM; ··· 1607 1575 1608 1576 pci_release_regions(pdev); 1609 1577 pci_disable_device(pdev); 1578 + 1579 + dev_dbg(&pdev->dev, "mana gdma remove successful\n"); 1610 1580 } 1611 1581 1612 1582 /* The 'state' parameter is not used. */
+5 -1
drivers/net/ethernet/microsoft/mana/hw_channel.c
··· 440 440 gmi = &dma_buf->mem_info; 441 441 err = mana_gd_alloc_memory(gc, buf_size, gmi); 442 442 if (err) { 443 - dev_err(hwc->dev, "Failed to allocate DMA buffer: %d\n", err); 443 + dev_err(hwc->dev, "Failed to allocate DMA buffer size: %u, err %d\n", 444 + buf_size, err); 444 445 goto out; 445 446 } 446 447 ··· 530 529 out: 531 530 if (err) 532 531 mana_hwc_destroy_wq(hwc, hwc_wq); 532 + 533 + dev_err(hwc->dev, "Failed to create HWC queue size= %u type= %d err= %d\n", 534 + queue_size, q_type, err); 533 535 return err; 534 536 } 535 537
+47 -11
drivers/net/ethernet/microsoft/mana/mana_en.c
··· 52 52 { 53 53 struct mana_port_context *apc = netdev_priv(ndev); 54 54 int err; 55 - 56 55 err = mana_alloc_queues(ndev); 57 - if (err) 56 + 57 + if (err) { 58 + netdev_err(ndev, "%s failed to allocate queues: %d\n", __func__, err); 58 59 return err; 60 + } 59 61 60 62 apc->port_is_up = true; 61 63 ··· 66 64 67 65 netif_carrier_on(ndev); 68 66 netif_tx_wake_all_queues(ndev); 69 - 67 + netdev_dbg(ndev, "%s successful\n", __func__); 70 68 return 0; 71 69 } 72 70 ··· 178 176 return 0; 179 177 180 178 frag_err: 179 + if (net_ratelimit()) 180 + netdev_err(apc->ndev, "Failed to map skb of size %u to DMA\n", 181 + skb->len); 181 182 for (i = sg_i - 1; i >= hsg; i--) 182 183 dma_unmap_page(dev, ash->dma_handle[i], ash->size[i], 183 184 DMA_TO_DEVICE); ··· 695 690 return 0; 696 691 697 692 error: 693 + netdev_err(mpc->ndev, "Failed to pre-allocate RX buffers for %d queues\n", num_queues); 698 694 mana_pre_dealloc_rxbufs(mpc); 699 695 return -ENOMEM; 700 696 } ··· 1313 1307 for (i = 0; i < gc->max_num_queues; i++) { 1314 1308 spec.eq.msix_index = (i + 1) % gc->num_msix_usable; 1315 1309 err = mana_gd_create_mana_eq(gd, &spec, &ac->eqs[i].eq); 1316 - if (err) 1310 + if (err) { 1311 + dev_err(gc->dev, "Failed to create EQ %d : %d\n", i, err); 1317 1312 goto out; 1313 + } 1318 1314 mana_create_eq_debugfs(ac, i); 1319 1315 } 1320 1316 ··· 2091 2083 2092 2084 return 0; 2093 2085 out: 2086 + netdev_err(net, "Failed to create %d TX queues, %d\n", 2087 + apc->num_queues, err); 2094 2088 mana_destroy_txq(apc); 2095 2089 return err; 2096 2090 } ··· 2428 2418 rxq = mana_create_rxq(apc, i, &ac->eqs[i], ndev); 2429 2419 if (!rxq) { 2430 2420 err = -ENOMEM; 2421 + netdev_err(ndev, "Failed to create rxq %d : %d\n", i, err); 2431 2422 goto out; 2432 2423 } 2433 2424 ··· 2675 2664 int err; 2676 2665 2677 2666 err = mana_create_vport(apc, ndev); 2678 - if (err) 2667 + if (err) { 2668 + netdev_err(ndev, "Failed to create vPort %u : %d\n", apc->port_idx, err); 2679 2669 return err; 2670 + } 2680 2671 2681 2672 err = netif_set_real_num_tx_queues(ndev, apc->num_queues); 2682 - if (err) 2673 + if (err) { 2674 + netdev_err(ndev, 2675 + "netif_set_real_num_tx_queues () failed for ndev with num_queues %u : %d\n", 2676 + apc->num_queues, err); 2683 2677 goto destroy_vport; 2678 + } 2684 2679 2685 2680 err = mana_add_rx_queues(apc, ndev); 2686 2681 if (err) ··· 2695 2678 apc->rss_state = apc->num_queues > 1 ? TRI_STATE_TRUE : TRI_STATE_FALSE; 2696 2679 2697 2680 err = netif_set_real_num_rx_queues(ndev, apc->num_queues); 2698 - if (err) 2681 + if (err) { 2682 + netdev_err(ndev, 2683 + "netif_set_real_num_rx_queues () failed for ndev with num_queues %u : %d\n", 2684 + apc->num_queues, err); 2699 2685 goto destroy_vport; 2686 + } 2700 2687 2701 2688 mana_rss_table_init(apc); 2702 2689 2703 2690 err = mana_config_rss(apc, TRI_STATE_TRUE, true, true); 2704 - if (err) 2691 + if (err) { 2692 + netdev_err(ndev, "Failed to configure RSS table: %d\n", err); 2705 2693 goto destroy_vport; 2694 + } 2706 2695 2707 2696 if (gd->gdma_context->is_pf) { 2708 2697 err = mana_pf_register_filter(apc); ··· 2849 2826 2850 2827 if (apc->port_st_save) { 2851 2828 err = mana_dealloc_queues(ndev); 2852 - if (err) 2829 + if (err) { 2830 + netdev_err(ndev, "%s failed to deallocate queues: %d\n", __func__, err); 2853 2831 return err; 2832 + } 2854 2833 } 2855 2834 2856 2835 if (!from_close) { ··· 2998 2973 goto add_fail; 2999 2974 3000 2975 gd->adev = adev; 2976 + dev_dbg(gd->gdma_context->dev, 2977 + "Auxiliary device added successfully\n"); 3001 2978 return 0; 3002 2979 3003 2980 add_fail: ··· 3041 3014 } 3042 3015 3043 3016 err = mana_create_eq(ac); 3044 - if (err) 3017 + if (err) { 3018 + dev_err(dev, "Failed to create EQs: %d\n", err); 3045 3019 goto out; 3020 + } 3046 3021 3047 3022 err = mana_query_device_cfg(ac, MANA_MAJOR_VERSION, MANA_MINOR_VERSION, 3048 3023 MANA_MICRO_VERSION, &num_ports); ··· 3100 3071 3101 3072 err = add_adev(gd); 3102 3073 out: 3103 - if (err) 3074 + if (err) { 3104 3075 mana_remove(gd, false); 3076 + } else { 3077 + dev_dbg(dev, "gd=%p, id=%u, num_ports=%d, type=%u, instance=%u\n", 3078 + gd, gd->dev_id.as_uint32, ac->num_ports, 3079 + gd->dev_id.type, gd->dev_id.instance); 3080 + dev_dbg(dev, "%s succeeded\n", __func__); 3081 + } 3105 3082 3106 3083 return err; 3107 3084 } ··· 3169 3134 gd->driver_data = NULL; 3170 3135 gd->gdma_context = NULL; 3171 3136 kfree(ac); 3137 + dev_dbg(dev, "%s succeeded\n", __func__); 3172 3138 } 3173 3139 3174 3140 struct net_device *mana_get_primary_netdev_rcu(struct mana_context *ac, u32 port_index)