From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 08424C282CE for ; Tue, 12 Feb 2019 21:44:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CF82C222C0 for ; Tue, 12 Feb 2019 21:44:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730173AbfBLVob (ORCPT ); Tue, 12 Feb 2019 16:44:31 -0500 Received: from mga09.intel.com ([134.134.136.24]:17163 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727722AbfBLVoa (ORCPT ); Tue, 12 Feb 2019 16:44:30 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Feb 2019 13:44:29 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,362,1544515200"; d="scan'208";a="319838908" Received: from ssaleem-mobl4.amr.corp.intel.com ([10.122.129.109]) by fmsmga005.fm.intel.com with ESMTP; 12 Feb 2019 13:44:29 -0800 From: Shiraz Saleem To: dledford@redhat.com, jgg@ziepe.ca, davem@davemloft.net Cc: linux-rdma@vger.kernel.org, netdev@vger.kernel.org, mustafa.ismail@intel.com, jeffrey.t.kirsher@intel.com, Shiraz Saleem Subject: [RFC 01/19] net/i40e: Add peer register/unregister to struct i40e_netdev_priv Date: Tue, 12 Feb 2019 15:43:44 -0600 Message-Id: <20190212214402.23284-2-shiraz.saleem@intel.com> X-Mailer: git-send-email 2.8.3 In-Reply-To: <20190212214402.23284-1-shiraz.saleem@intel.com> References: <20190212214402.23284-1-shiraz.saleem@intel.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Expose the register/unregister function pointers in the struct i40e_netdev_priv which is accesible via the netdev_priv() interface in the RDMA driver. On a netdev notification in the RDMA driver, the appropriate LAN driver register/unregister functions are invoked from the struct i40e_netdev_priv structure, This is done in order to support single RDMA driver to work with multiple LAN drivers over multi-generation Intel HW supporting RDMA Signed-off-by: Shiraz Saleem Signed-off-by: Jeff Kirsher --- drivers/net/ethernet/intel/i40e/i40e.h | 1 + drivers/net/ethernet/intel/i40e/i40e_client.h | 10 ++++++++++ drivers/net/ethernet/intel/i40e/i40e_main.c | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h index 8de9085..7bc6316 100644 --- a/drivers/net/ethernet/intel/i40e/i40e.h +++ b/drivers/net/ethernet/intel/i40e/i40e.h @@ -795,6 +795,7 @@ struct i40e_vsi { } ____cacheline_internodealigned_in_smp; struct i40e_netdev_priv { + struct idc_srv_provider prov_callbacks; struct i40e_vsi *vsi; }; diff --git a/drivers/net/ethernet/intel/i40e/i40e_client.h b/drivers/net/ethernet/intel/i40e/i40e_client.h index 72994ba..70ddb76 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_client.h +++ b/drivers/net/ethernet/intel/i40e/i40e_client.h @@ -44,6 +44,16 @@ enum i40e_client_instance_state { #define I40E_QUEUE_TYPE_PE_AEQ 0x80 #define I40E_QUEUE_INVALID_IDX 0xFFFF +#define IDC_SIGNATURE 0x494e54454c494443ULL /* INTELIDC */ +struct idc_srv_provider { + u64 signature; + u16 maj_ver; + u16 min_ver; + u8 rsvd[4]; + int (*reg_peer_driver)(struct i40e_client *client); + int (*unreg_peer_driver)(struct i40e_client *client); +}; + struct i40e_qv_info { u32 v_idx; /* msix_vector */ u16 ceq_idx; diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index f52e2c4..114ff0e 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -12243,6 +12243,13 @@ static int i40e_config_netdev(struct i40e_vsi *vsi) np = netdev_priv(netdev); np->vsi = vsi; + np->prov_callbacks.signature = IDC_SIGNATURE; + np->prov_callbacks.maj_ver = I40E_CLIENT_VERSION_MAJOR; + np->prov_callbacks.min_ver = I40E_CLIENT_VERSION_MINOR; + memset(np->prov_callbacks.rsvd, 0, sizeof(np->prov_callbacks.rsvd)); + np->prov_callbacks.reg_peer_driver = i40e_register_client; + np->prov_callbacks.unreg_peer_driver = i40e_unregister_client; + hw_enc_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | -- 1.8.3.1