[PATCH] net:mctp: split mctp hdr version to ver and rsvd

wit_yuan posted 1 patch 2 months ago
include/net/mctp.h | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
[PATCH] net:mctp: split mctp hdr version to ver and rsvd
Posted by wit_yuan 2 months ago
From: yuanzhaoming <yuanzm2@lenovo.com>

from spec dsp0236_1.2.1.pdf page 26, the mctp header contains the
RSVD(4bit) and Hdr version(4 bit).

mctp_pkttype_receive invoke mctp_hdr, and get mh->ver whole byte 
compare the MCTP_VER_MIN, MCTP_VER_MAX. the reserver bits may be
by misleading used.

Signed-off-by: yuanzhaoming <yuanzm2@lenovo.com>
---
 include/net/mctp.h | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/include/net/mctp.h b/include/net/mctp.h
index e1e0a69afdce..80cc9c63f6ba 100644
--- a/include/net/mctp.h
+++ b/include/net/mctp.h
@@ -14,10 +14,17 @@
 #include <linux/netdevice.h>
 #include <net/net_namespace.h>
 #include <net/sock.h>
+#include <asm/byteorder.h>
 
 /* MCTP packet definitions */
 struct mctp_hdr {
-	u8	ver;
+#if defined(__LITTLE_ENDIAN_BITFIELD)
+	u8	ver:4, rsvd: 4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+	u8	rsvd:4, ver: 4;
+#else
+#error	"Please fix <asm/byteorder.h>"
+#endif
 	u8	dest;
 	u8	src;
 	u8	flags_seq_tag;
-- 
2.49.0
Re: [PATCH] net:mctp: split mctp hdr version to ver and rsvd
Posted by kernel test robot 1 month, 2 weeks ago
Hi wit_yuan,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v7.1-rc1 next-20260429]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/wit_yuan/net-mctp-split-mctp-hdr-version-to-ver-and-rsvd/20260414-044431
base:   linus/master
patch link:    https://lore.kernel.org/r/20260409125129.9210-1-yuanzhaoming901030%40126.com
patch subject: [PATCH] net:mctp: split mctp hdr version to ver and rsvd
config: riscv-allyesconfig (https://download.01.org/0day-ci/archive/20260430/202604301714.OQSuNMur-lkp@intel.com/config)
compiler: clang version 16.0.6 (https://github.com/llvm/llvm-project 7cbf1a2591520c2491aa35339f227775f4d3adf6)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260430/202604301714.OQSuNMur-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202604301714.OQSuNMur-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from net/mctp/route.c:1793:
>> net/mctp/test/route-test.c:70:3: error: invalid application of 'typeof' to bit-field
                   KUNIT_EXPECT_EQ(test, hdr2->ver, hdr.ver);
                   ^
   include/kunit/test.h:1033:2: note: expanded from macro 'KUNIT_EXPECT_EQ'
           KUNIT_EXPECT_EQ_MSG(test, left, right, NULL)
           ^
   include/kunit/test.h:1036:2: note: expanded from macro 'KUNIT_EXPECT_EQ_MSG'
           KUNIT_BINARY_INT_ASSERTION(test,                                       \
           ^
   include/kunit/test.h:869:2: note: expanded from macro 'KUNIT_BINARY_INT_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                      \
           ^
   include/kunit/test.h:839:14: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION'
           const typeof(left) __left = (left);                                    \
                       ^
   In file included from net/mctp/route.c:1793:
>> net/mctp/test/route-test.c:70:3: error: invalid application of 'typeof' to bit-field
   include/kunit/test.h:1033:2: note: expanded from macro 'KUNIT_EXPECT_EQ'
           KUNIT_EXPECT_EQ_MSG(test, left, right, NULL)
           ^
   include/kunit/test.h:1036:2: note: expanded from macro 'KUNIT_EXPECT_EQ_MSG'
           KUNIT_BINARY_INT_ASSERTION(test,                                       \
           ^
   include/kunit/test.h:869:2: note: expanded from macro 'KUNIT_BINARY_INT_ASSERTION'
           KUNIT_BASE_BINARY_ASSERTION(test,                                      \
           ^
   include/kunit/test.h:840:14: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION'
           const typeof(right) __right = (right);                                 \
                       ^
   2 errors generated.


vim +/typeof +70 net/mctp/test/route-test.c

161eba50e183ed4 Jeremy Kerr 2021-10-03   19  
161eba50e183ed4 Jeremy Kerr 2021-10-03   20  static void mctp_test_fragment(struct kunit *test)
161eba50e183ed4 Jeremy Kerr 2021-10-03   21  {
161eba50e183ed4 Jeremy Kerr 2021-10-03   22  	const struct mctp_frag_test *params;
161eba50e183ed4 Jeremy Kerr 2021-10-03   23  	int rc, i, n, mtu, msgsize;
269936db5eb3962 Jeremy Kerr 2025-07-02   24  	struct mctp_test_dev *dev;
269936db5eb3962 Jeremy Kerr 2025-07-02   25  	struct mctp_dst dst;
161eba50e183ed4 Jeremy Kerr 2021-10-03   26  	struct sk_buff *skb;
161eba50e183ed4 Jeremy Kerr 2021-10-03   27  	struct mctp_hdr hdr;
161eba50e183ed4 Jeremy Kerr 2021-10-03   28  	u8 seq;
161eba50e183ed4 Jeremy Kerr 2021-10-03   29  
161eba50e183ed4 Jeremy Kerr 2021-10-03   30  	params = test->param_value;
161eba50e183ed4 Jeremy Kerr 2021-10-03   31  	mtu = params->mtu;
161eba50e183ed4 Jeremy Kerr 2021-10-03   32  	msgsize = params->msgsize;
161eba50e183ed4 Jeremy Kerr 2021-10-03   33  
161eba50e183ed4 Jeremy Kerr 2021-10-03   34  	hdr.ver = 1;
161eba50e183ed4 Jeremy Kerr 2021-10-03   35  	hdr.src = 8;
161eba50e183ed4 Jeremy Kerr 2021-10-03   36  	hdr.dest = 10;
161eba50e183ed4 Jeremy Kerr 2021-10-03   37  	hdr.flags_seq_tag = MCTP_HDR_FLAG_TO;
161eba50e183ed4 Jeremy Kerr 2021-10-03   38  
161eba50e183ed4 Jeremy Kerr 2021-10-03   39  	skb = mctp_test_create_skb(&hdr, msgsize);
161eba50e183ed4 Jeremy Kerr 2021-10-03   40  	KUNIT_ASSERT_TRUE(test, skb);
161eba50e183ed4 Jeremy Kerr 2021-10-03   41  
269936db5eb3962 Jeremy Kerr 2025-07-02   42  	dev = mctp_test_create_dev();
269936db5eb3962 Jeremy Kerr 2025-07-02   43  	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
269936db5eb3962 Jeremy Kerr 2025-07-02   44  
6ab578739a4c1f5 Jeremy Kerr 2025-11-26   45  	mctp_test_dst_setup(test, &dst, dev, mtu);
161eba50e183ed4 Jeremy Kerr 2021-10-03   46  
269936db5eb3962 Jeremy Kerr 2025-07-02   47  	rc = mctp_do_fragment_route(&dst, skb, mtu, MCTP_TAG_OWNER);
161eba50e183ed4 Jeremy Kerr 2021-10-03   48  	KUNIT_EXPECT_FALSE(test, rc);
161eba50e183ed4 Jeremy Kerr 2021-10-03   49  
6ab578739a4c1f5 Jeremy Kerr 2025-11-26   50  	n = dev->pkts.qlen;
161eba50e183ed4 Jeremy Kerr 2021-10-03   51  	KUNIT_EXPECT_EQ(test, n, params->n_frags);
161eba50e183ed4 Jeremy Kerr 2021-10-03   52  
161eba50e183ed4 Jeremy Kerr 2021-10-03   53  	for (i = 0;; i++) {
161eba50e183ed4 Jeremy Kerr 2021-10-03   54  		struct mctp_hdr *hdr2;
161eba50e183ed4 Jeremy Kerr 2021-10-03   55  		struct sk_buff *skb2;
161eba50e183ed4 Jeremy Kerr 2021-10-03   56  		u8 tag_mask, seq2;
161eba50e183ed4 Jeremy Kerr 2021-10-03   57  		bool first, last;
161eba50e183ed4 Jeremy Kerr 2021-10-03   58  
161eba50e183ed4 Jeremy Kerr 2021-10-03   59  		first = i == 0;
161eba50e183ed4 Jeremy Kerr 2021-10-03   60  		last = i == (n - 1);
161eba50e183ed4 Jeremy Kerr 2021-10-03   61  
6ab578739a4c1f5 Jeremy Kerr 2025-11-26   62  		skb2 = skb_dequeue(&dev->pkts);
161eba50e183ed4 Jeremy Kerr 2021-10-03   63  		if (!skb2)
161eba50e183ed4 Jeremy Kerr 2021-10-03   64  			break;
161eba50e183ed4 Jeremy Kerr 2021-10-03   65  
161eba50e183ed4 Jeremy Kerr 2021-10-03   66  		hdr2 = mctp_hdr(skb2);
161eba50e183ed4 Jeremy Kerr 2021-10-03   67  
161eba50e183ed4 Jeremy Kerr 2021-10-03   68  		tag_mask = MCTP_HDR_TAG_MASK | MCTP_HDR_FLAG_TO;
161eba50e183ed4 Jeremy Kerr 2021-10-03   69  
161eba50e183ed4 Jeremy Kerr 2021-10-03  @70  		KUNIT_EXPECT_EQ(test, hdr2->ver, hdr.ver);
161eba50e183ed4 Jeremy Kerr 2021-10-03   71  		KUNIT_EXPECT_EQ(test, hdr2->src, hdr.src);
161eba50e183ed4 Jeremy Kerr 2021-10-03   72  		KUNIT_EXPECT_EQ(test, hdr2->dest, hdr.dest);
161eba50e183ed4 Jeremy Kerr 2021-10-03   73  		KUNIT_EXPECT_EQ(test, hdr2->flags_seq_tag & tag_mask,
161eba50e183ed4 Jeremy Kerr 2021-10-03   74  				hdr.flags_seq_tag & tag_mask);
161eba50e183ed4 Jeremy Kerr 2021-10-03   75  
161eba50e183ed4 Jeremy Kerr 2021-10-03   76  		KUNIT_EXPECT_EQ(test,
161eba50e183ed4 Jeremy Kerr 2021-10-03   77  				!!(hdr2->flags_seq_tag & MCTP_HDR_FLAG_SOM), first);
161eba50e183ed4 Jeremy Kerr 2021-10-03   78  		KUNIT_EXPECT_EQ(test,
161eba50e183ed4 Jeremy Kerr 2021-10-03   79  				!!(hdr2->flags_seq_tag & MCTP_HDR_FLAG_EOM), last);
161eba50e183ed4 Jeremy Kerr 2021-10-03   80  
161eba50e183ed4 Jeremy Kerr 2021-10-03   81  		seq2 = (hdr2->flags_seq_tag >> MCTP_HDR_SEQ_SHIFT) &
161eba50e183ed4 Jeremy Kerr 2021-10-03   82  			MCTP_HDR_SEQ_MASK;
161eba50e183ed4 Jeremy Kerr 2021-10-03   83  
161eba50e183ed4 Jeremy Kerr 2021-10-03   84  		if (first) {
161eba50e183ed4 Jeremy Kerr 2021-10-03   85  			seq = seq2;
161eba50e183ed4 Jeremy Kerr 2021-10-03   86  		} else {
161eba50e183ed4 Jeremy Kerr 2021-10-03   87  			seq++;
161eba50e183ed4 Jeremy Kerr 2021-10-03   88  			KUNIT_EXPECT_EQ(test, seq2, seq & MCTP_HDR_SEQ_MASK);
161eba50e183ed4 Jeremy Kerr 2021-10-03   89  		}
161eba50e183ed4 Jeremy Kerr 2021-10-03   90  
161eba50e183ed4 Jeremy Kerr 2021-10-03   91  		if (!last)
161eba50e183ed4 Jeremy Kerr 2021-10-03   92  			KUNIT_EXPECT_EQ(test, skb2->len, mtu);
161eba50e183ed4 Jeremy Kerr 2021-10-03   93  		else
161eba50e183ed4 Jeremy Kerr 2021-10-03   94  			KUNIT_EXPECT_LE(test, skb2->len, mtu);
161eba50e183ed4 Jeremy Kerr 2021-10-03   95  
161eba50e183ed4 Jeremy Kerr 2021-10-03   96  		kfree_skb(skb2);
161eba50e183ed4 Jeremy Kerr 2021-10-03   97  	}
161eba50e183ed4 Jeremy Kerr 2021-10-03   98  
6ab578739a4c1f5 Jeremy Kerr 2025-11-26   99  	mctp_dst_release(&dst);
269936db5eb3962 Jeremy Kerr 2025-07-02  100  	mctp_test_destroy_dev(dev);
161eba50e183ed4 Jeremy Kerr 2021-10-03  101  }
161eba50e183ed4 Jeremy Kerr 2021-10-03  102  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Re: [PATCH] net:mctp: split mctp hdr version to ver and rsvd
Posted by kernel test robot 1 month, 2 weeks ago
Hi wit_yuan,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v7.1-rc1 next-20260429]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/wit_yuan/net-mctp-split-mctp-hdr-version-to-ver-and-rsvd/20260414-044431
base:   linus/master
patch link:    https://lore.kernel.org/r/20260409125129.9210-1-yuanzhaoming901030%40126.com
patch subject: [PATCH] net:mctp: split mctp hdr version to ver and rsvd
config: m68k-allyesconfig (https://download.01.org/0day-ci/archive/20260430/202604300641.2Ml6rWOe-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260430/202604300641.2Ml6rWOe-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202604300641.2Ml6rWOe-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from include/kunit/static_stub.h:18,
                    from net/mctp/route.c:20:
   net/mctp/test/route-test.c: In function 'mctp_test_fragment':
>> net/mctp/test/route-test.c:70:39: error: 'typeof' applied to a bit-field
      70 |                 KUNIT_EXPECT_EQ(test, hdr2->ver, hdr.ver);
         |                                       ^~~~
   include/kunit/test.h:839:22: note: in definition of macro 'KUNIT_BASE_BINARY_ASSERTION'
     839 |         const typeof(left) __left = (left);                                    \
         |                      ^~~~
   include/kunit/test.h:1036:9: note: in expansion of macro 'KUNIT_BINARY_INT_ASSERTION'
    1036 |         KUNIT_BINARY_INT_ASSERTION(test,                                       \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:1033:9: note: in expansion of macro 'KUNIT_EXPECT_EQ_MSG'
    1033 |         KUNIT_EXPECT_EQ_MSG(test, left, right, NULL)
         |         ^~~~~~~~~~~~~~~~~~~
   net/mctp/test/route-test.c:70:17: note: in expansion of macro 'KUNIT_EXPECT_EQ'
      70 |                 KUNIT_EXPECT_EQ(test, hdr2->ver, hdr.ver);
         |                 ^~~~~~~~~~~~~~~
   net/mctp/test/route-test.c:70:50: error: 'typeof' applied to a bit-field
      70 |                 KUNIT_EXPECT_EQ(test, hdr2->ver, hdr.ver);
         |                                                  ^~~
   include/kunit/test.h:840:22: note: in definition of macro 'KUNIT_BASE_BINARY_ASSERTION'
     840 |         const typeof(right) __right = (right);                                 \
         |                      ^~~~~
   include/kunit/test.h:1036:9: note: in expansion of macro 'KUNIT_BINARY_INT_ASSERTION'
    1036 |         KUNIT_BINARY_INT_ASSERTION(test,                                       \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kunit/test.h:1033:9: note: in expansion of macro 'KUNIT_EXPECT_EQ_MSG'
    1033 |         KUNIT_EXPECT_EQ_MSG(test, left, right, NULL)
         |         ^~~~~~~~~~~~~~~~~~~
   net/mctp/test/route-test.c:70:17: note: in expansion of macro 'KUNIT_EXPECT_EQ'
      70 |                 KUNIT_EXPECT_EQ(test, hdr2->ver, hdr.ver);
         |                 ^~~~~~~~~~~~~~~


vim +/typeof +70 net/mctp/test/route-test.c

161eba50e183ed Jeremy Kerr 2021-10-03   19  
161eba50e183ed Jeremy Kerr 2021-10-03   20  static void mctp_test_fragment(struct kunit *test)
161eba50e183ed Jeremy Kerr 2021-10-03   21  {
161eba50e183ed Jeremy Kerr 2021-10-03   22  	const struct mctp_frag_test *params;
161eba50e183ed Jeremy Kerr 2021-10-03   23  	int rc, i, n, mtu, msgsize;
269936db5eb396 Jeremy Kerr 2025-07-02   24  	struct mctp_test_dev *dev;
269936db5eb396 Jeremy Kerr 2025-07-02   25  	struct mctp_dst dst;
161eba50e183ed Jeremy Kerr 2021-10-03   26  	struct sk_buff *skb;
161eba50e183ed Jeremy Kerr 2021-10-03   27  	struct mctp_hdr hdr;
161eba50e183ed Jeremy Kerr 2021-10-03   28  	u8 seq;
161eba50e183ed Jeremy Kerr 2021-10-03   29  
161eba50e183ed Jeremy Kerr 2021-10-03   30  	params = test->param_value;
161eba50e183ed Jeremy Kerr 2021-10-03   31  	mtu = params->mtu;
161eba50e183ed Jeremy Kerr 2021-10-03   32  	msgsize = params->msgsize;
161eba50e183ed Jeremy Kerr 2021-10-03   33  
161eba50e183ed Jeremy Kerr 2021-10-03   34  	hdr.ver = 1;
161eba50e183ed Jeremy Kerr 2021-10-03   35  	hdr.src = 8;
161eba50e183ed Jeremy Kerr 2021-10-03   36  	hdr.dest = 10;
161eba50e183ed Jeremy Kerr 2021-10-03   37  	hdr.flags_seq_tag = MCTP_HDR_FLAG_TO;
161eba50e183ed Jeremy Kerr 2021-10-03   38  
161eba50e183ed Jeremy Kerr 2021-10-03   39  	skb = mctp_test_create_skb(&hdr, msgsize);
161eba50e183ed Jeremy Kerr 2021-10-03   40  	KUNIT_ASSERT_TRUE(test, skb);
161eba50e183ed Jeremy Kerr 2021-10-03   41  
269936db5eb396 Jeremy Kerr 2025-07-02   42  	dev = mctp_test_create_dev();
269936db5eb396 Jeremy Kerr 2025-07-02   43  	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
269936db5eb396 Jeremy Kerr 2025-07-02   44  
6ab578739a4c1f Jeremy Kerr 2025-11-26   45  	mctp_test_dst_setup(test, &dst, dev, mtu);
161eba50e183ed Jeremy Kerr 2021-10-03   46  
269936db5eb396 Jeremy Kerr 2025-07-02   47  	rc = mctp_do_fragment_route(&dst, skb, mtu, MCTP_TAG_OWNER);
161eba50e183ed Jeremy Kerr 2021-10-03   48  	KUNIT_EXPECT_FALSE(test, rc);
161eba50e183ed Jeremy Kerr 2021-10-03   49  
6ab578739a4c1f Jeremy Kerr 2025-11-26   50  	n = dev->pkts.qlen;
161eba50e183ed Jeremy Kerr 2021-10-03   51  	KUNIT_EXPECT_EQ(test, n, params->n_frags);
161eba50e183ed Jeremy Kerr 2021-10-03   52  
161eba50e183ed Jeremy Kerr 2021-10-03   53  	for (i = 0;; i++) {
161eba50e183ed Jeremy Kerr 2021-10-03   54  		struct mctp_hdr *hdr2;
161eba50e183ed Jeremy Kerr 2021-10-03   55  		struct sk_buff *skb2;
161eba50e183ed Jeremy Kerr 2021-10-03   56  		u8 tag_mask, seq2;
161eba50e183ed Jeremy Kerr 2021-10-03   57  		bool first, last;
161eba50e183ed Jeremy Kerr 2021-10-03   58  
161eba50e183ed Jeremy Kerr 2021-10-03   59  		first = i == 0;
161eba50e183ed Jeremy Kerr 2021-10-03   60  		last = i == (n - 1);
161eba50e183ed Jeremy Kerr 2021-10-03   61  
6ab578739a4c1f Jeremy Kerr 2025-11-26   62  		skb2 = skb_dequeue(&dev->pkts);
161eba50e183ed Jeremy Kerr 2021-10-03   63  		if (!skb2)
161eba50e183ed Jeremy Kerr 2021-10-03   64  			break;
161eba50e183ed Jeremy Kerr 2021-10-03   65  
161eba50e183ed Jeremy Kerr 2021-10-03   66  		hdr2 = mctp_hdr(skb2);
161eba50e183ed Jeremy Kerr 2021-10-03   67  
161eba50e183ed Jeremy Kerr 2021-10-03   68  		tag_mask = MCTP_HDR_TAG_MASK | MCTP_HDR_FLAG_TO;
161eba50e183ed Jeremy Kerr 2021-10-03   69  
161eba50e183ed Jeremy Kerr 2021-10-03  @70  		KUNIT_EXPECT_EQ(test, hdr2->ver, hdr.ver);
161eba50e183ed Jeremy Kerr 2021-10-03   71  		KUNIT_EXPECT_EQ(test, hdr2->src, hdr.src);
161eba50e183ed Jeremy Kerr 2021-10-03   72  		KUNIT_EXPECT_EQ(test, hdr2->dest, hdr.dest);
161eba50e183ed Jeremy Kerr 2021-10-03   73  		KUNIT_EXPECT_EQ(test, hdr2->flags_seq_tag & tag_mask,
161eba50e183ed Jeremy Kerr 2021-10-03   74  				hdr.flags_seq_tag & tag_mask);
161eba50e183ed Jeremy Kerr 2021-10-03   75  
161eba50e183ed Jeremy Kerr 2021-10-03   76  		KUNIT_EXPECT_EQ(test,
161eba50e183ed Jeremy Kerr 2021-10-03   77  				!!(hdr2->flags_seq_tag & MCTP_HDR_FLAG_SOM), first);
161eba50e183ed Jeremy Kerr 2021-10-03   78  		KUNIT_EXPECT_EQ(test,
161eba50e183ed Jeremy Kerr 2021-10-03   79  				!!(hdr2->flags_seq_tag & MCTP_HDR_FLAG_EOM), last);
161eba50e183ed Jeremy Kerr 2021-10-03   80  
161eba50e183ed Jeremy Kerr 2021-10-03   81  		seq2 = (hdr2->flags_seq_tag >> MCTP_HDR_SEQ_SHIFT) &
161eba50e183ed Jeremy Kerr 2021-10-03   82  			MCTP_HDR_SEQ_MASK;
161eba50e183ed Jeremy Kerr 2021-10-03   83  
161eba50e183ed Jeremy Kerr 2021-10-03   84  		if (first) {
161eba50e183ed Jeremy Kerr 2021-10-03   85  			seq = seq2;
161eba50e183ed Jeremy Kerr 2021-10-03   86  		} else {
161eba50e183ed Jeremy Kerr 2021-10-03   87  			seq++;
161eba50e183ed Jeremy Kerr 2021-10-03   88  			KUNIT_EXPECT_EQ(test, seq2, seq & MCTP_HDR_SEQ_MASK);
161eba50e183ed Jeremy Kerr 2021-10-03   89  		}
161eba50e183ed Jeremy Kerr 2021-10-03   90  
161eba50e183ed Jeremy Kerr 2021-10-03   91  		if (!last)
161eba50e183ed Jeremy Kerr 2021-10-03   92  			KUNIT_EXPECT_EQ(test, skb2->len, mtu);
161eba50e183ed Jeremy Kerr 2021-10-03   93  		else
161eba50e183ed Jeremy Kerr 2021-10-03   94  			KUNIT_EXPECT_LE(test, skb2->len, mtu);
161eba50e183ed Jeremy Kerr 2021-10-03   95  
161eba50e183ed Jeremy Kerr 2021-10-03   96  		kfree_skb(skb2);
161eba50e183ed Jeremy Kerr 2021-10-03   97  	}
161eba50e183ed Jeremy Kerr 2021-10-03   98  
6ab578739a4c1f Jeremy Kerr 2025-11-26   99  	mctp_dst_release(&dst);
269936db5eb396 Jeremy Kerr 2025-07-02  100  	mctp_test_destroy_dev(dev);
161eba50e183ed Jeremy Kerr 2021-10-03  101  }
161eba50e183ed Jeremy Kerr 2021-10-03  102  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Re: [PATCH] net:mctp: split mctp hdr version to ver and rsvd
Posted by Jeremy Kerr 2 months ago
Hi yuanxhaoming,

> from spec dsp0236_1.2.1.pdf page 26, the mctp header contains the
> RSVD(4bit) and Hdr version(4 bit).
> 
> mctp_pkttype_receive invoke mctp_hdr, and get mh->ver whole byte 
> compare the MCTP_VER_MIN, MCTP_VER_MAX. the reserver bits may be
> by misleading used.
> 
> Signed-off-by: yuanzhaoming <yuanzm2@lenovo.com>
> ---
>  include/net/mctp.h | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/include/net/mctp.h b/include/net/mctp.h
> index e1e0a69afdce..80cc9c63f6ba 100644
> --- a/include/net/mctp.h
> +++ b/include/net/mctp.h
> @@ -14,10 +14,17 @@
>  #include <linux/netdevice.h>
>  #include <net/net_namespace.h>
>  #include <net/sock.h>
> +#include <asm/byteorder.h>
>  
>  /* MCTP packet definitions */
>  struct mctp_hdr {
> -       u8      ver;
> +#if defined(__LITTLE_ENDIAN_BITFIELD)
> +       u8      ver:4, rsvd: 4;
> +#elif defined(__BIG_ENDIAN_BITFIELD)
> +       u8      rsvd:4, ver: 4;
> +#else
> +#error "Please fix <asm/byteorder.h>"
> +#endif

I would strongly prefer that we do not use C bitfields for a wire
format. The existing flags_seq_tag member contains three fields, which
we use with a couple of helpers to extract the flag, sequence number or
tag values - please follow that convention if we need changes here.

Also, this introduces a few subtle bugs in that we are no longer setting
the reserved bits to zero when preparing an outgoing TX packet header.

What is the underlying issue are you fixing here? Are you seeing a peer
that is sending us packets with bits set in the reserved field?

(if so, that would also be handy information to include in the commit
message)

> From: yuanzhaoming <yuanzm2@lenovo.com>

Is this the preferred format of your name? These are generally in
a full-name format, or a known identity. There's no particular issue
with what you're using there, if that's what you prefer.

Cheers,


Jeremy