From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 4CC49695D for ; Thu, 23 Mar 2017 13:13:05 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=intel.com; i=@intel.com; q=dns/txt; s=intel; t=1490271186; x=1521807186; h=subject:to:references:cc:from:message-id:date: mime-version:in-reply-to:content-transfer-encoding; bh=av5UnqoxzTf+o+5GdKGq23c89Ih/b1qxM5eYE3T3sds=; b=f9t5UlxOBZsHuOQGXslop+4wp+i6S0BnI5wzWWTC00hlg7CdbeTbyeDt lD9qf4wkdEZaZ01Z3kRKSW/flFG47g==; Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Mar 2017 05:13:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,209,1486454400"; d="scan'208";a="80206621" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.237.220.122]) ([10.237.220.122]) by fmsmga006.fm.intel.com with ESMTP; 23 Mar 2017 05:13:00 -0700 To: Ed Czeck , dev@dpdk.org, Thomas Monjalon References: <1490231015-31748-1-git-send-email-ed.czeck@atomicrules.com> <1490231015-31748-7-git-send-email-ed.czeck@atomicrules.com> Cc: Shepard Siegel , John Miller From: Ferruh Yigit Message-ID: Date: Thu, 23 Mar 2017 12:13:00 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <1490231015-31748-7-git-send-email-ed.czeck@atomicrules.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH v4 7/7] net/ark: Arkville PMD component integration X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Mar 2017 12:13:06 -0000 On 3/23/2017 1:03 AM, Ed Czeck wrote: > * Flesh out device configuration > * Add links dev_ops > * allow dynamic extension loading > > Signed-off-by: Shepard Siegel > Signed-off-by: John Miller > Signed-off-by: Ed Czeck <...> > > int > @@ -129,8 +182,86 @@ static void eth_ark_dev_info_get(struct rte_eth_dev *dev, > return -1; > } > > +static > +int Can be in same line. > +check_for_ext(struct rte_eth_dev *dev __rte_unused, > + struct ark_adapter *ark __rte_unused) __rte_unused can go away > +{ > + int found = 0; > + > + /* Get the env */ > + const char *dllpath = getenv("ARK_EXT_PATH"); > + > + if (dllpath == NULL) { > + ARK_DEBUG_TRACE("ARK EXT NO dll path specified\n"); > + return 0; > + } > + ARK_DEBUG_TRACE("ARK EXT found dll path at %s\n", dllpath); > + > + /* Open and load the .so */ > + ark->d_handle = dlopen(dllpath, RTLD_LOCAL | RTLD_LAZY); > + if (ark->d_handle == NULL) > + PMD_DRV_LOG(ERR, "Could not load user extension %s\n", dllpath); > + else > + ARK_DEBUG_TRACE("SUCCESS: loaded user extension %s\n", dllpath); Hi Ed, Can you give some more details on "user extension" that loaded dynamically? How much the driver depends on it, what happens if the library is missing? And how do you deliver that shared library? > + > + /* Get the entry points */ > + ark->user_ext.dev_init = > + (void *(*)(struct rte_eth_dev *, void *, int)) > + dlsym(ark->d_handle, "dev_init"); > + ARK_DEBUG_TRACE("device ext init pointer = %p\n", > + ark->user_ext.dev_init); > + ark->user_ext.dev_get_port_count = > + (int (*)(struct rte_eth_dev *, void *)) > + dlsym(ark->d_handle, "dev_get_port_count"); <...>