Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp5348888pxb; Wed, 26 Jan 2022 09:56:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJwXsHMudVoI8w0u3MLcYLtR+PaAHalxLFcV3Jz0l41RVS2fHtviFREGMnWHJaag4NkNwrqN X-Received: by 2002:aa7:918e:0:b0:4bb:793:b7a7 with SMTP id x14-20020aa7918e000000b004bb0793b7a7mr23471633pfa.71.1643219813847; Wed, 26 Jan 2022 09:56:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643219813; cv=none; d=google.com; s=arc-20160816; b=1Gb+tUNLpfK25m+hWzqpj7AwvpGVXsjh8GUVXKSNkNsByOKfHnet/fQChLRo2LCQCT MQzxXAlqHulUoIw3fASSniHUtNcI3AJrGNgGmIa6VJAGD8Z6JUuXXPqbGTRpLOwtKo1Z gpAfckDbH2oKGri7xw4AAC/X0ZYWM1ukkAp05GFmwRC/31OcxRJyUZXIcUX/77bQqjYK rWau6d1hybFnC/ExLkzk977AoCQpsh30EUpreO8uvo4rgUC+oZAfND8Mx9gRCwMFzFXp xBLpiN6PfVOL3fNh0IF6YeVme4H+PhXKyp3Fd8I6PbkKrVNoF6dzhVX2Szj53wPLVsoJ I5bg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:to:content-language:subject:user-agent:mime-version:date :message-id:dkim-signature; bh=YV1zTxzK/cL80YKh5C7Q+2qU/mN/EUwAAXT6OGx6VQc=; b=XSOCHLb4xKMyd+6y0ZOY7JB6oHyIrqTRe89wts14X2S2O9DmuKYDjxUhtiprDJmaC1 hNpWJUPfQJZgEX15gT5CQZWJ3tlnFmohr1rxDA4VgKkMLnbE8E6N5kIZxEop5sIK8J7o CgfN2knh20ktzACkRI0ZcoAUaTvYIPQ7pTB6pdoUhS7Sk8Vog4Fi/8c3ZRJ8oBKHnhkH jVdH30434Qcil+dMG+wduudnqp7pgcxaZEtp1XOV8s0AzHrmHF9B0bfBRAKs4u8rUR6f eZobXK7PZgEr/qWxTZGnnV/EJ2R+2U6q8nJmHoV5lZwO85DCNmWIlhRpkU2QAhIhq2ug H4qw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="IMl1VzH/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id nn8si3595834pjb.168.2022.01.26.09.56.35; Wed, 26 Jan 2022 09:56:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="IMl1VzH/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237396AbiAZD5P (ORCPT + 99 others); Tue, 25 Jan 2022 22:57:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53710 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237380AbiAZD5O (ORCPT ); Tue, 25 Jan 2022 22:57:14 -0500 Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6AB8EC06161C; Tue, 25 Jan 2022 19:57:14 -0800 (PST) Received: by mail-pf1-x432.google.com with SMTP id w190so15391468pfw.7; Tue, 25 Jan 2022 19:57:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:content-language:to :references:from:in-reply-to:content-transfer-encoding; bh=YV1zTxzK/cL80YKh5C7Q+2qU/mN/EUwAAXT6OGx6VQc=; b=IMl1VzH/GwBMc+2r/CP5K7NMsuoyzlpL8Yozj1pJypKFAfUGkv6VVeoxF8t3I/433t ATP5/a/gURAVJ1+v35RAAD+iUSVcnpiFXDOR1SNqptMLBIELCD3RNsC5jfDICGdGc8TT IZ+RjMGDFiqWCtSitgY7wQJUccRTdCceJIiSTsioSM6bK+yxKaPvKhFqBUJ8r6l2mBC3 sCA7lbc1sXjBJ6RePqMZ6H7daMbnZh7Cg1MxBHbmMIxaroJb/SXTjAAGjphSuxvnPjdC +Sn0v089fmaO4C1xqCWcp+ZrOug+NOk9zET7dPPu65QUWIxw+yUyroZ86HFrJ9UGpw0q UIxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=YV1zTxzK/cL80YKh5C7Q+2qU/mN/EUwAAXT6OGx6VQc=; b=V4NTRcHi1Suy2/XO5Ytoe7G0CEjikfb5hxiwHREtB2rvkW9SlG/63YQuQwlzivmqWh 0CoB/YIurZMevWtgD/auJ6JEuh0oSrmjZmaalMFpA8hU8K1SmyDLAF69l2AbcLEEuBuR zKNf3Nnu6NQg4qLjmI5HcC48GPhV7kW5lgh9BwpvyqoOGrPTnSa8RWA6q6b5IdgY0eGA xj7dz0CjE2ogF9h6ITDNR1zPLrD0WecXqu8jcR+lYV7pR7ANYy6ELq4UtXn+C7/tvdh9 Bmiw3zkkL1e3QM+RNcuUDcicb4kiEZ19tJFs32MPbRqJa0LjKQqmb0LVDS4l5aYKqzFY w/Hw== X-Gm-Message-State: AOAM533RQyaXFQZ/Bwl4GJPAbUV2/Ub2Iw4V2dmRWF7tmlLRt/m0z39T ZgO6DhKA2i4sky5EOzm25y8= X-Received: by 2002:a63:6b85:: with SMTP id g127mr17257525pgc.409.1643169433963; Tue, 25 Jan 2022 19:57:13 -0800 (PST) Received: from [192.168.1.3] (ip72-194-116-95.oc.oc.cox.net. [72.194.116.95]) by smtp.gmail.com with ESMTPSA id y42sm482786pfa.5.2022.01.25.19.57.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 25 Jan 2022 19:57:13 -0800 (PST) Message-ID: Date: Tue, 25 Jan 2022 19:57:11 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: [RFC PATCH v7 06/16] net: dsa: tag_qca: add define for handling mgmt Ethernet packet Content-Language: en-US To: Ansuel Smith , Andrew Lunn , Vivien Didelot , Vladimir Oltean , "David S. Miller" , Jakub Kicinski , linux-kernel@vger.kernel.org, netdev@vger.kernel.org References: <20220123013337.20945-1-ansuelsmth@gmail.com> <20220123013337.20945-7-ansuelsmth@gmail.com> From: Florian Fainelli In-Reply-To: <20220123013337.20945-7-ansuelsmth@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 1/22/2022 5:33 PM, Ansuel Smith wrote: > Add all the required define to prepare support for mgmt read/write in > Ethernet packet. Any packet of this type has to be dropped as the only > use of these special packet is receive ack for an mgmt write request or > receive data for an mgmt read request. > A struct is used that emulates the Ethernet header but is used for a > different purpose. > > Signed-off-by: Ansuel Smith > --- > include/linux/dsa/tag_qca.h | 44 +++++++++++++++++++++++++++++++++++++ > net/dsa/tag_qca.c | 13 ++++++++--- > 2 files changed, 54 insertions(+), 3 deletions(-) > > diff --git a/include/linux/dsa/tag_qca.h b/include/linux/dsa/tag_qca.h > index c02d2d39ff4a..1a02f695f3a3 100644 > --- a/include/linux/dsa/tag_qca.h > +++ b/include/linux/dsa/tag_qca.h > @@ -12,10 +12,54 @@ > #define QCA_HDR_RECV_FRAME_IS_TAGGED BIT(3) > #define QCA_HDR_RECV_SOURCE_PORT GENMASK(2, 0) > > +/* Packet type for recv */ > +#define QCA_HDR_RECV_TYPE_NORMAL 0x0 > +#define QCA_HDR_RECV_TYPE_MIB 0x1 > +#define QCA_HDR_RECV_TYPE_RW_REG_ACK 0x2 > + > #define QCA_HDR_XMIT_VERSION GENMASK(15, 14) > #define QCA_HDR_XMIT_PRIORITY GENMASK(13, 11) > #define QCA_HDR_XMIT_CONTROL GENMASK(10, 8) > #define QCA_HDR_XMIT_FROM_CPU BIT(7) > #define QCA_HDR_XMIT_DP_BIT GENMASK(6, 0) > > +/* Packet type for xmit */ > +#define QCA_HDR_XMIT_TYPE_NORMAL 0x0 > +#define QCA_HDR_XMIT_TYPE_RW_REG 0x1 > + > +/* Check code for a valid mgmt packet. Switch will ignore the packet > + * with this wrong. > + */ > +#define QCA_HDR_MGMT_CHECK_CODE_VAL 0x5 > + > +/* Specific define for in-band MDIO read/write with Ethernet packet */ > +#define QCA_HDR_MGMT_SEQ_LEN 4 /* 4 byte for the seq */ > +#define QCA_HDR_MGMT_COMMAND_LEN 4 /* 4 byte for the command */ > +#define QCA_HDR_MGMT_DATA1_LEN 4 /* First 4 byte for the mdio data */ > +#define QCA_HDR_MGMT_HEADER_LEN (QCA_HDR_MGMT_SEQ_LEN + \ > + QCA_HDR_MGMT_COMMAND_LEN + \ > + QCA_HDR_MGMT_DATA1_LEN) > + > +#define QCA_HDR_MGMT_DATA2_LEN 12 /* Other 12 byte for the mdio data */ > +#define QCA_HDR_MGMT_PADDING_LEN 34 /* Padding to reach the min Ethernet packet */ > + > +#define QCA_HDR_MGMT_PKG_LEN (QCA_HDR_MGMT_HEADER_LEN + \ > + QCA_HDR_LEN + \ > + QCA_HDR_MGMT_DATA2_LEN + \ > + QCA_HDR_MGMT_PADDING_LEN) > + > +#define QCA_HDR_MGMT_SEQ_NUM GENMASK(31, 0) /* 63, 32 */ > +#define QCA_HDR_MGMT_CHECK_CODE GENMASK(31, 29) /* 31, 29 */ > +#define QCA_HDR_MGMT_CMD BIT(28) /* 28 */ > +#define QCA_HDR_MGMT_LENGTH GENMASK(23, 20) /* 23, 20 */ > +#define QCA_HDR_MGMT_ADDR GENMASK(18, 0) /* 18, 0 */ > + > +/* Special struct emulating a Ethernet header */ > +struct mgmt_ethhdr { > + u32 command; /* command bit 31:0 */ > + u32 seq; /* seq 63:32 */ > + u32 mdio_data; /* first 4byte mdio */ > + __be16 hdr; /* qca hdr */ > +} __packed; > + > #endif /* __TAG_QCA_H */ > diff --git a/net/dsa/tag_qca.c b/net/dsa/tag_qca.c > index f8df49d5956f..c57d6e1a0c0c 100644 > --- a/net/dsa/tag_qca.c > +++ b/net/dsa/tag_qca.c > @@ -32,10 +32,10 @@ static struct sk_buff *qca_tag_xmit(struct sk_buff *skb, struct net_device *dev) > > static struct sk_buff *qca_tag_rcv(struct sk_buff *skb, struct net_device *dev) > { > - u8 ver; > - u16 hdr; > - int port; > + u16 hdr, pk_type; Should pk_type be u8 since there are only 5 bits for QCA_HDR_RECV_TYPE? With Vladimir's comments addressed: Reviewed-by: Florian Fainelli -- Florian