]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net/smc: set rmb's SG_MAX_SINGLE_ALLOC limitation only when CONFIG_ARCH_NO_SG_CHAIN...
authorGuangguan Wang <guangguan.wang@linux.alibaba.com>
Mon, 3 Jun 2024 03:00:18 +0000 (11:00 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 3 Jun 2024 11:12:41 +0000 (12:12 +0100)
SG_MAX_SINGLE_ALLOC is used to limit maximum number of entries that
will be allocated in one piece of scatterlist. When the entries of
scatterlist exceeds SG_MAX_SINGLE_ALLOC, sg chain will be used. From
commit 7c703e54cc71 ("arch: switch the default on ARCH_HAS_SG_CHAIN"),
we can know that the macro CONFIG_ARCH_NO_SG_CHAIN is used to identify
whether sg chain is supported. So, SMC-R's rmb buffer should be limited
by SG_MAX_SINGLE_ALLOC only when the macro CONFIG_ARCH_NO_SG_CHAIN is
defined.

Fixes: a3fe3d01bd0d ("net/smc: introduce sg-logic for RMBs")
Signed-off-by: Guangguan Wang <guangguan.wang@linux.alibaba.com>
Co-developed-by: Wen Gu <guwen@linux.alibaba.com>
Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/smc/smc_core.c

index fafdb97adfad9f897c989ac6ddae0197f3318b57..acca3b1a068f0659031f493c4e4e64d625446851 100644 (file)
@@ -2015,7 +2015,6 @@ out:
  */
 static u8 smc_compress_bufsize(int size, bool is_smcd, bool is_rmb)
 {
-       const unsigned int max_scat = SG_MAX_SINGLE_ALLOC * PAGE_SIZE;
        u8 compressed;
 
        if (size <= SMC_BUF_MIN_SIZE)
@@ -2025,9 +2024,11 @@ static u8 smc_compress_bufsize(int size, bool is_smcd, bool is_rmb)
        compressed = min_t(u8, ilog2(size) + 1,
                           is_smcd ? SMCD_DMBE_SIZES : SMCR_RMBE_SIZES);
 
+#ifdef CONFIG_ARCH_NO_SG_CHAIN
        if (!is_smcd && is_rmb)
                /* RMBs are backed by & limited to max size of scatterlists */
-               compressed = min_t(u8, compressed, ilog2(max_scat >> 14));
+               compressed = min_t(u8, compressed, ilog2((SG_MAX_SINGLE_ALLOC * PAGE_SIZE) >> 14));
+#endif
 
        return compressed;
 }