From patchwork Fri Aug 9 17:36:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tony Nguyen X-Patchwork-Id: 13759047 X-Patchwork-Delegate: kuba@kernel.org Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B7AD914830A for ; Fri, 9 Aug 2024 17:36:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723225001; cv=none; b=pEJbLEtCLe+8cQ5waQZKVq6tTiG4vLdcIxT4Cnuoy71zfeBP3/qwiyLxyp0r7dYyo+vrDvQ+fkGdvVQtDgrDWg3laNLyWEKQlgjGFQH+SKFlS6MIEuKzZKnw3AVsQ3lY08K0yz2pg57UEy0yKiAHHU1gvizjSVJ1EmtBHo501bA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723225001; c=relaxed/simple; bh=CcQgzfTQFOOFWMKkzuwilAdxpY11f/Y1xW1+W48wJd8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GxI1kt+jMFMJy+equu76gv2AZaO99ptx4Vxff1xNgKy8fTB3dcFpcFnM2l51TF5eTG1GjvjRdXp/5MotPEs5Jnxknu/U2Q2J+AgVc6giElH3IrMzz6/8DhfhWutjR5qZR1c/QttmOkDpCPZ7rxyst2Kpv6xAstAqMrS5+l59ooY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=TredjPmm; arc=none smtp.client-ip=198.175.65.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="TredjPmm" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1723225000; x=1754761000; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=CcQgzfTQFOOFWMKkzuwilAdxpY11f/Y1xW1+W48wJd8=; b=TredjPmmUDrEAOxHMrF7heW/ZEvkAiZ+PuGwUiOzL0F7qhi+Jcy+xLJv k5NeytWiLs+Zp+1ybxuJFm1pqW7yczp9dVMM7Cg5Vltbg8/xxJTMNFsjl /1SM/jsMWC29hjDJ1IJ89+JBZLWtTICoXhycER+0WIkT1hJAaR+5uG7cc +Zl7N6YVnJkKHhIPcynEgpozcPW5RRMCPLvfjBmGpajUhwcRhJQhSDJLf zZ9SpVRi8/3w1/xUPezDjdUFjFeRGp7xsdPGkVZqr1MDH7iMgtOWaEXlO bwp/zXJhozXXrBDqJRn9oECwi22P2C3arbsm598S6H9mRGTnbjsGjyxnJ A==; X-CSE-ConnectionGUID: hrCM1l8+RzipJ5LewA39tw== X-CSE-MsgGUID: fvCMzZD1SUaLHstykl3f7A== X-IronPort-AV: E=McAfee;i="6700,10204,11159"; a="21551316" X-IronPort-AV: E=Sophos;i="6.09,276,1716274800"; d="scan'208";a="21551316" Received: from fmviesa009.fm.intel.com ([10.60.135.149]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Aug 2024 10:36:31 -0700 X-CSE-ConnectionGUID: qAbgB7Z8TX+hDBqjJSwxmg== X-CSE-MsgGUID: CC11BDpBRgudk+p4QYiOPQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,276,1716274800"; d="scan'208";a="57589192" Received: from anguy11-upstream.jf.intel.com ([10.166.9.133]) by fmviesa009.fm.intel.com with ESMTP; 09 Aug 2024 10:36:31 -0700 From: Tony Nguyen To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, netdev@vger.kernel.org Cc: Junfeng Guo , anthony.l.nguyen@intel.com, ahmed.zaki@intel.com, madhu.chittim@intel.com, horms@kernel.org, hkelam@marvell.com, Marcin Szycik , Qi Zhang , Rafal Romanowski Subject: [PATCH net-next 09/13] virtchnl: support raw packet in protocol header Date: Fri, 9 Aug 2024 10:36:08 -0700 Message-ID: <20240809173615.2031516-10-anthony.l.nguyen@intel.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240809173615.2031516-1-anthony.l.nguyen@intel.com> References: <20240809173615.2031516-1-anthony.l.nguyen@intel.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org From: Junfeng Guo The patch extends existing virtchnl_proto_hdrs structure to allow VF to pass a pair of buffers as packet data and mask that describe a match pattern of a filter rule. Then the kernel PF driver is requested to parse the pair of buffer and figure out low level hardware metadata (ptype, profile, field vector.. ) to program the expected FDIR or RSS rules. Reviewed-by: Simon Horman Reviewed-by: Marcin Szycik Signed-off-by: Qi Zhang Signed-off-by: Junfeng Guo Signed-off-by: Ahmed Zaki Tested-by: Rafal Romanowski Signed-off-by: Tony Nguyen --- include/linux/avf/virtchnl.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/include/linux/avf/virtchnl.h b/include/linux/avf/virtchnl.h index 8e177b67e82f..4f78a65e33dc 100644 --- a/include/linux/avf/virtchnl.h +++ b/include/linux/avf/virtchnl.h @@ -1121,6 +1121,7 @@ enum virtchnl_vfr_states { }; #define VIRTCHNL_MAX_NUM_PROTO_HDRS 32 +#define VIRTCHNL_MAX_SIZE_RAW_PACKET 1024 #define PROTO_HDR_SHIFT 5 #define PROTO_HDR_FIELD_START(proto_hdr_type) ((proto_hdr_type) << PROTO_HDR_SHIFT) #define PROTO_HDR_FIELD_MASK ((1UL << PROTO_HDR_SHIFT) - 1) @@ -1266,13 +1267,22 @@ struct virtchnl_proto_hdrs { u8 pad[3]; /** * specify where protocol header start from. + * must be 0 when sending a raw packet request. * 0 - from the outer layer * 1 - from the first inner layer * 2 - from the second inner layer * .... **/ int count; /* the proto layers must < VIRTCHNL_MAX_NUM_PROTO_HDRS */ - struct virtchnl_proto_hdr proto_hdr[VIRTCHNL_MAX_NUM_PROTO_HDRS]; + union { + struct virtchnl_proto_hdr + proto_hdr[VIRTCHNL_MAX_NUM_PROTO_HDRS]; + struct { + u16 pkt_len; + u8 spec[VIRTCHNL_MAX_SIZE_RAW_PACKET]; + u8 mask[VIRTCHNL_MAX_SIZE_RAW_PACKET]; + } raw; + }; }; VIRTCHNL_CHECK_STRUCT_LEN(2312, virtchnl_proto_hdrs);