From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DF1E4A034F; Mon, 11 Oct 2021 17:46:40 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C1D4C41102; Mon, 11 Oct 2021 17:46:40 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 2BE79410F6 for ; Mon, 11 Oct 2021 17:46:39 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10134"; a="213851567" X-IronPort-AV: E=Sophos;i="5.85,364,1624345200"; d="scan'208";a="213851567" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Oct 2021 08:45:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,364,1624345200"; d="scan'208";a="523880582" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga001.jf.intel.com with ESMTP; 11 Oct 2021 08:45:03 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 11 Oct 2021 08:45:02 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Mon, 11 Oct 2021 08:45:02 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.108) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Mon, 11 Oct 2021 08:45:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f+jwvds6CqbVvhpbUyNd7vPrJcbV5+6VrKGv6ve7EhhBgH+euzxn8fFgbRQFgW+59ckG3mLtyl9EqOrf0C+SDyU4DjiWeznUDyDwcBcHUHrhyB+2xQJpg0tTZKl+u10tKMM141fongpDL6JsLhc58jPBfSvq2halXYOID5lEpTsbrdBvdoRnnez753mYnS3RpCjRZHKMpDcsx4eFGD+vx2lk7A8WHiUh6nIipDhLHhzMjpzrUFD/ASP2hJjlbRr1vYHO+sSQGFFdg4qgVfVElWjb+SlSf8YOYvvWqnfPdD2Pl/6nAC+qR8yX7Av9V/10TcOmt7d68wK69YuHX00DSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GY+mqzFJwj7GVO44DCG3cyXdvnePInOgiNhHY4buYkg=; b=nue+RZk1hTkQsjH+NELQ8G0kDdOaWw1FZ2Om7R43BWSEvtiCl3gCyVS+iUnbV286IttNEy9IemKpgyEFWnICbrkls+lwdEKfAh94xPkGSu+SxHkaELUoVuW1OLcINqjvhAVhvUGitGAnQ9oyhSLEn1p+g4VIpW/HJQ9QaA1Qptju1csOX33iqa5FjYVbObIMFGqfCEBhYTJ/xeXl3eKpHwUvamn7mGddwvlXj6A8sS5liNPhpPtJNz4H0w2PGyQCgHgfKYriAzR44TSEmvJVBbgnq0EW/S6+lFHGbtE0xZyl7d/Lwkk5qlEW9Qn6woL3Wm90QJF6r2tyWAK/4xHvfw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GY+mqzFJwj7GVO44DCG3cyXdvnePInOgiNhHY4buYkg=; b=YwDMcyMnze9G1YmKWJ7+zzXh7QBP6HPO9urWZiC34fExgsetltOT5qJEb72GeTyHWhhdjJLcF8P8wqBzVtDCGqrQp/k8Pq9e8oE3jtAexP/Avd0hlwz4DedMl3QGSNK5d5kfgZ5LyEGtuUZAon3em+PHSwq67C1lDL5MeqvNeB0= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; Received: from PH0PR11MB5000.namprd11.prod.outlook.com (2603:10b6:510:41::19) by PH0PR11MB5045.namprd11.prod.outlook.com (2603:10b6:510:3f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.18; Mon, 11 Oct 2021 15:44:56 +0000 Received: from PH0PR11MB5000.namprd11.prod.outlook.com ([fe80::bd7d:29be:3342:632c]) by PH0PR11MB5000.namprd11.prod.outlook.com ([fe80::bd7d:29be:3342:632c%5]) with mapi id 15.20.4587.026; Mon, 11 Oct 2021 15:44:56 +0000 Message-ID: Date: Mon, 11 Oct 2021 16:44:50 +0100 Content-Language: en-US To: Bruce Richardson CC: Gowrishankar Muthukrishnan , , Thomas Monjalon , Andrew Rybchenko , , Ciara Power References: <2eaeef2ece0ff3a5a3fc9323f15a47be617a73a4.1632219073.git.gmuthukrishn@marvell.com> <64d6649a4374f0b5c48d0f27d0d540064afdbe38.1632888548.git.gmuthukrishn@marvell.com> <53e36586-89a5-68c3-5dc1-b61524bbe4cf@intel.com> From: Ferruh Yigit X-User: ferruhy In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: DB8PR06CA0015.eurprd06.prod.outlook.com (2603:10a6:10:100::28) To PH0PR11MB5000.namprd11.prod.outlook.com (2603:10b6:510:41::19) MIME-Version: 1.0 Received: from [192.168.0.206] (37.228.236.146) by DB8PR06CA0015.eurprd06.prod.outlook.com (2603:10a6:10:100::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.21 via Frontend Transport; Mon, 11 Oct 2021 15:44:54 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2d843779-8c7e-4fed-ad0c-08d98cce133f X-MS-TrafficTypeDiagnostic: PH0PR11MB5045: X-LD-Processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Lt5oMjDIhqrKrUKHppFjtQFDwmycUtXxPuCS8FGoi7jwSFqzmXU5B9/eNYKpyugOH+YbW/M7bwP/7uQRNRc+IkMlp4ivDBumVmHu7KrLa3jOfwyvvztjRBFRvdbIyAGxd8nEbLji7Cm/oejcsZu3UcGCUEpZnxBULO3ZdozsQ7vZfw3Tegr6GsWQMcyhMgFa9uLOR8sXQilUoJMIoASqlgto7Y4CcN8D8cILJTThX1fOLIKJfjFz/JfTl/wy72WD5VAvjGsbFfK4X95Xb2ZEDBx+yf+b2X3ldlPCyEij2+ytr2kb54FmEuYTZhtkCzcbam+qqL5LB2BrwWx0Yzs6DHozsURsYcP0UoOGeHgHLll28WvUYowGViEzUWj2gN9fXj+pijr0McTtY8OIieswAUj3wZwKNB4Ad2GUYOahNip0f+bKuTwF3IrZ/kr2Ze9Cq6yVzZY8UBNYmq8J0HUYprAXA3SgsxCOOTzwIMnIBsEE74MlI93yqwZHqk09pNLDic6q127AyiYYeNpUUrDMFFQtkzOPELBSRfAWneEl3LJKdKj6hke/pbfCRB81SR1upPOp0LSzT0brJ8ANMwCV8vhZgvF/bvYnWwq2uvNRvwhbNYzEi4hiek5KZYssnd2OH36UNTFlx/TNQ/Ir/7pilHklJgZm0Bp24ewPY6fxUNj+hMnd72Y9PDa4f5ZhkR/9Ejh8HFABILV9ni3Ijv3Smw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR11MB5000.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(66946007)(8936002)(53546011)(36756003)(6666004)(107886003)(186003)(26005)(86362001)(5660300002)(6486002)(8676002)(38100700002)(83380400001)(6862004)(44832011)(66556008)(37006003)(6636002)(316002)(31696002)(66476007)(16576012)(2906002)(2616005)(956004)(31686004)(54906003)(4326008)(508600001)(45980500001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SExoai9ZZGFYZ0J1eTdyYzV0dm04RU1TYU1KaTFac2RENFlyK0tLcld3czk5?= =?utf-8?B?eUpGa1c2bGJtNmcrU0ZtajBaeW5CVWMreGJxOHQvdkRZeVNZSlBzVENFbXZM?= =?utf-8?B?Mkd5b3ZhSE1LNWZrTk5CSS90QVlRWmZ6MkpxRzFRTi9RY2JzMnVjMkFoK3dQ?= =?utf-8?B?MHBsZ3IxMUI5cWoyaWxzWnpJZHErTWhYaTk2NmJaVU83NjZMTzV2Sm9CeUls?= =?utf-8?B?cWFSRjRFWDUvWDU0TTE3ZnBDaC9hcDZPSDJJUUZUSFdEa09pZDA4ZWNZQnNX?= =?utf-8?B?YXdkclcyVjdpditoemRZRVk5QnVRK2d3TGczV3VoZFdCenBqMFlUS2EwakYx?= =?utf-8?B?d2R5b0lOaDQ3b0NPQTBsajNicFhiMTYxSno2bVdQaDhaQjFteWVvY0l6NzNZ?= =?utf-8?B?YXE0dEswaFliVGxHeWlNM2JqMURVb3N2YWV3Zm5JVFFiSzlPajFqZ1l1ajR6?= =?utf-8?B?YnVVZFNXTlR0ejNYM1VCWnBNMU9CZStiSU91djlNUTBWbDVXQVNpMytuL3E2?= =?utf-8?B?R1lwYlRxSnVlM2RxdDFKVGI5TktlMVdlaE1GRnVvc0xSdlRNZit5U0RldDdP?= =?utf-8?B?OENPelRHWVVZTTgrSk5XQmx1YjhhZlE5d3JicHRqaTk3eGluNWlUSnNiSFpm?= =?utf-8?B?UFYveEhxYmdNWmtreEhTTGxUd0VVRnQwMGRRMGxLbDU4dGdLY0htWmNTUFZa?= =?utf-8?B?N3RCNWhESmw3OGNOM0syWXFONW9RWGluSEp3QWhDRnVQWGsrZFRGcE5iZlY3?= =?utf-8?B?YzBFamtUT3dXM25jQVByUzdoaFhIdWRjb0tKVHlqcjhPK1kzb0p3SGNkdG1B?= =?utf-8?B?REdwY09DNW1oYlMwLzBmK1Q5MGJIOUxjcURuMytZTGlLWUZqRkcvUGVNVEJG?= =?utf-8?B?Wk1zVXVyaFZmSmp2N1FzWXlhVWlTZDZyYmpqS082WjV6VUhWUUlmT0hoQlE1?= =?utf-8?B?V25SY3ZjN202Z0RmOVdOUEdiOVBOYTM5dUN3WWRKazZ5WEdVN1pid0c3aW5w?= =?utf-8?B?c2VkVmtOZW8zQTVVQm5kakFVSGJ2ejNFMmVab2ErcGtKQkdoNlcyeXdyeEVl?= =?utf-8?B?Z2dRNStrR0phWU5WbXZCZUs4SXNDaXBhdzZXNzdwVjdrdzZBZllZcUYxczYw?= =?utf-8?B?STQ1ZlpaQkgwRWM4QUdZblMvbjNVTFNubUY2ZGcwRFJGMFJkTWtodnkyUXBn?= =?utf-8?B?Rkp3Zkh4ZnlEbkNBekN3N0JOeWJ1VjRkUUcvdUFGTXA3TDE1RTZseXg4N0cw?= =?utf-8?B?YUw0Mko4N21LS3htYXF2aHJGVkROdkFyQ2RoK1lDM0VpT3JIQ1VBNHVnR20r?= =?utf-8?B?SHJkbUR4a3YvMUc2MVoxa3JrUVI3MzU0ZjM3SUdha3hoTHZDQTY1YnNweHJC?= =?utf-8?B?ZllPWjlsMktHb3VMa2lvUE9RM2ExSFdydUZ0M1I1ajRjbUNNUkpuY3B1VUxk?= =?utf-8?B?MFl6VGxUNWFzMkFvZGNNU3pGaEh0WkI2TktlNENjWk5IYlliL25jck04Y003?= =?utf-8?B?MnhWZ01DTXJDa2lDbUlKbEk3a2huRUs1UEo1bzYrUlR5UVhKY1luNndBMmxa?= =?utf-8?B?bFJCV2VIV282SzRhYzNTcTFMN3VoV2JtUDlwazZvMmFUVUVpNW51b1FTYjJr?= =?utf-8?B?WkdqMk1aZFlJY2RDaFVXVEJIVmZPdGlaYVdXSGwzcGtKZUNWQ1FtZHp2c0RE?= =?utf-8?B?dUVFY0NjdEtUcnZ6a1ZzU2RTSm85RmFyYmd3YXIzV1NnL0lxdC9zS1dQQW9E?= =?utf-8?Q?/vAdS5be6svB9nkaBaMnuuTKNV/xx70X2Ne58H7?= X-MS-Exchange-CrossTenant-Network-Message-Id: 2d843779-8c7e-4fed-ad0c-08d98cce133f X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5000.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Oct 2021 15:44:56.6405 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: fkOij/7F1brkMLPVjROpZeOsc2DtH7Q9MENSmVqD8x/c87RcA8S2gRjDRbMWv8rFMbb8SjM+Rg6p3KzY5kXWYQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5045 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [v1] ethdev: add telemetry endpoint for device info X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 10/11/2021 4:40 PM, Bruce Richardson wrote: > On Mon, Oct 11, 2021 at 03:40:58PM +0100, Ferruh Yigit wrote: >> On 9/29/2021 5:25 AM, Gowrishankar Muthukrishnan wrote: >>> Add telemetry endpoint /ethdev/info for device info. >>> >>> Signed-off-by: Gowrishankar Muthukrishnan >>> Change-Id: I3e6ee2bd1a80675473adf0bd884b194f98e28536 >>> --- >>> lib/ethdev/rte_ethdev.c | 92 +++++++++++++++++++++++++++++++++++++++++ >>> 1 file changed, 92 insertions(+) >>> >>> diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c >>> index daf5ca9242..9b7bfa5f63 100644 >>> --- a/lib/ethdev/rte_ethdev.c >>> +++ b/lib/ethdev/rte_ethdev.c >>> @@ -6242,6 +6242,96 @@ eth_dev_handle_port_link_status(const char *cmd __rte_unused, >>> return 0; >>> } >>> +static int >>> +eth_dev_handle_port_info(const char *cmd __rte_unused, >>> + const char *params, >>> + struct rte_tel_data *d) >>> +{ >>> + struct rte_tel_data *rxq_state, *txq_state; >>> + char mac_addr[RTE_ETHER_ADDR_LEN]; >>> + struct rte_eth_dev *eth_dev; >>> + char *end_param; >>> + int port_id, i; >>> + >>> + if (params == NULL || strlen(params) == 0 || !isdigit(*params)) >>> + return -1; >>> + >>> + port_id = strtoul(params, &end_param, 0); >>> + if (*end_param != '\0') >>> + RTE_ETHDEV_LOG(NOTICE, >>> + "Extra parameters passed to ethdev telemetry command, ignoring"); >>> + >>> + if (!rte_eth_dev_is_valid_port(port_id)) >>> + return -EINVAL; >>> + >>> + eth_dev = &rte_eth_devices[port_id]; >>> + if (!eth_dev) >>> + return -EINVAL; >>> + >>> + rxq_state = rte_tel_data_alloc(); >>> + if (!rxq_state) >>> + return -ENOMEM; >>> + >>> + txq_state = rte_tel_data_alloc(); >>> + if (!txq_state) >>> + return -ENOMEM; >>> + >>> + rte_tel_data_start_dict(d); >>> + rte_tel_data_add_dict_string(d, "name", eth_dev->data->name); >>> + rte_tel_data_add_dict_int(d, "state", eth_dev->state); >>> + rte_tel_data_add_dict_int(d, "nb_rx_queues", >>> + eth_dev->data->nb_rx_queues); >>> + rte_tel_data_add_dict_int(d, "nb_tx_queues", >>> + eth_dev->data->nb_tx_queues); >>> + rte_tel_data_add_dict_int(d, "port_id", eth_dev->data->port_id); >>> + rte_tel_data_add_dict_int(d, "mtu", eth_dev->data->mtu); >>> + rte_tel_data_add_dict_int(d, "rx_mbuf_size_min", >>> + eth_dev->data->min_rx_buf_size); >>> + rte_tel_data_add_dict_int(d, "rx_mbuf_alloc_fail", >>> + eth_dev->data->rx_mbuf_alloc_failed); >>> + snprintf(mac_addr, RTE_ETHER_ADDR_LEN, "%02x:%02x:%02x:%02x:%02x:%02x", >>> + eth_dev->data->mac_addrs->addr_bytes[0], >>> + eth_dev->data->mac_addrs->addr_bytes[1], >>> + eth_dev->data->mac_addrs->addr_bytes[2], >>> + eth_dev->data->mac_addrs->addr_bytes[3], >>> + eth_dev->data->mac_addrs->addr_bytes[4], >>> + eth_dev->data->mac_addrs->addr_bytes[5]); >>> + rte_tel_data_add_dict_string(d, "mac_addr", mac_addr); >>> + rte_tel_data_add_dict_int(d, "promiscuous", >>> + eth_dev->data->promiscuous); >>> + rte_tel_data_add_dict_int(d, "scattered_rx", >>> + eth_dev->data->scattered_rx); >>> + rte_tel_data_add_dict_int(d, "all_multicast", >>> + eth_dev->data->all_multicast); >>> + rte_tel_data_add_dict_int(d, "dev_started", eth_dev->data->dev_started); >>> + rte_tel_data_add_dict_int(d, "lro", eth_dev->data->lro); >>> + rte_tel_data_add_dict_int(d, "dev_configured", >>> + eth_dev->data->dev_configured); >>> + >>> + rte_tel_data_start_array(rxq_state, RTE_TEL_INT_VAL); >>> + for (i = 0; i < eth_dev->data->nb_rx_queues; i++) >>> + rte_tel_data_add_array_int(rxq_state, >>> + eth_dev->data->rx_queue_state[i]); >>> + >>> + rte_tel_data_start_array(txq_state, RTE_TEL_INT_VAL); >>> + for (i = 0; i < eth_dev->data->nb_tx_queues; i++) >>> + rte_tel_data_add_array_int(txq_state, >>> + eth_dev->data->tx_queue_state[i]); >>> + >>> + rte_tel_data_add_dict_container(d, "rxq_state", rxq_state, 0); >>> + rte_tel_data_add_dict_container(d, "txq_state", txq_state, 0); >>> + rte_tel_data_add_dict_int(d, "numa_node", eth_dev->data->numa_node); >>> + rte_tel_data_add_dict_int(d, "dev_flags", eth_dev->data->dev_flags); >>> + rte_tel_data_add_dict_int(d, "rx_offloads", >>> + eth_dev->data->dev_conf.rxmode.offloads); >>> + rte_tel_data_add_dict_int(d, "tx_offloads", >>> + eth_dev->data->dev_conf.txmode.offloads); >>> + rte_tel_data_add_dict_int(d, "ethdev_rss_hf", >>> + eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf); >>> + >>> + return 0; >>> +} >>> + >>> int >>> rte_eth_hairpin_queue_peer_update(uint16_t peer_port, uint16_t peer_queue, >>> struct rte_hairpin_peer_info *cur_info, >>> @@ -6323,4 +6413,6 @@ RTE_INIT(ethdev_init_telemetry) >>> rte_telemetry_register_cmd("/ethdev/link_status", >>> eth_dev_handle_port_link_status, >>> "Returns the link status for a port. Parameters: int port_id"); >>> + rte_telemetry_register_cmd("/ethdev/info", eth_dev_handle_port_info, >>> + "Returns the device info for a port. Parameters: int port_id"); >>> } >>> >> >> @Ciara, @Bruce, can you please review the set from telemetry perspective? >> >> And overall looks like good idea to provide more ethdev information via telemetry, >> but when we have this it becomes interface since applications may rely on it, >> is extending it breaks the apps? >> If so perhaps we should consider multiple small commands instead of one big 'info' >> one, what do you think? >> > > I think the info command is fine enough granularity as it is. Since > (currently) the only output format used is json, we don't need to worry > about adding in extra info later, because AFAIK referencing json nodes is by > name, rather than by offset. For example, "response['tx_offloads']" should be > valid no matter how many extra fields are added into the response later on. > Thanks, so it is extendible, in that case agree to continue as it is.