Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a6863489 authored by Jakub Kicinski's avatar Jakub Kicinski Committed by David S. Miller
Browse files

nfp: parse the mailbox cmsg TLV



Parse the mailbox TLV.  When control message queue is not available
we can fall back to passing the control messages via the vNIC
mailbox.

Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: default avatarDirk van der Merwe <dirk.vandermerwe@netronome.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3ed77bf7
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -99,6 +99,10 @@ int nfp_net_tlv_caps_parse(struct device *dev, u8 __iomem *ctrl_mem,

			caps->repr_cap = readl(data);
			break;
		case NFP_NET_CFG_TLV_TYPE_MBOX_CMSG_TYPES:
			if (length >= 4)
				caps->mbox_cmsg_types = readl(data);
			break;
		default:
			if (!FIELD_GET(NFP_NET_CFG_TLV_HEADER_REQUIRED, hdr))
				break;
+8 −0
Original line number Diff line number Diff line
@@ -466,6 +466,11 @@
 * %NFP_NET_CFG_TLV_TYPE_REPR_CAP:
 * Single word, equivalent of %NFP_NET_CFG_CAP for representors, features which
 * can be used on representors.
 *
 * %NFP_NET_CFG_TLV_TYPE_MBOX_CMSG_TYPES:
 * Variable, bitmap of control message types supported by the mailbox handler.
 * Bit 0 corresponds to message type 0, bit 1 to 1, etc.  Control messages are
 * encapsulated into simple TLVs, with an end TLV and written to the Mailbox.
 */
#define NFP_NET_CFG_TLV_TYPE_UNKNOWN		0
#define NFP_NET_CFG_TLV_TYPE_RESERVED		1
@@ -475,6 +480,7 @@
#define NFP_NET_CFG_TLV_TYPE_EXPERIMENTAL0	5
#define NFP_NET_CFG_TLV_TYPE_EXPERIMENTAL1	6
#define NFP_NET_CFG_TLV_TYPE_REPR_CAP		7
#define NFP_NET_CFG_TLV_TYPE_MBOX_CMSG_TYPES	10

struct device;

@@ -484,12 +490,14 @@ struct device;
 * @mbox_off:		vNIC mailbox area offset
 * @mbox_len:		vNIC mailbox area length
 * @repr_cap:		capabilities for representors
 * @mbox_cmsg_types:	cmsgs which can be passed through the mailbox
 */
struct nfp_net_tlv_caps {
	u32 me_freq_mhz;
	unsigned int mbox_off;
	unsigned int mbox_len;
	u32 repr_cap;
	u32 mbox_cmsg_types;
};

int nfp_net_tlv_caps_parse(struct device *dev, u8 __iomem *ctrl_mem,