Received: by 2002:a05:6358:5282:b0:b5:90e7:25cb with SMTP id g2csp2428663rwa; Mon, 22 Aug 2022 07:35:41 -0700 (PDT) X-Google-Smtp-Source: AA6agR7oouDFfXrCezGUOsu3RFtzVBH3nlt8/pny1q1MGPuzdVs4OQvzrC3PDNLqQlNjpdBQgN29 X-Received: by 2002:aa7:d352:0:b0:446:eebe:9e73 with SMTP id m18-20020aa7d352000000b00446eebe9e73mr1910912edr.400.1661178941746; Mon, 22 Aug 2022 07:35:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661178941; cv=none; d=google.com; s=arc-20160816; b=wSpwD8RuSrTwZzW35qfmNxroDFbrFh7w/n6pz5LmE+UYynSSfrwwjKoto2Wsc39OLp TAt1cIx9qPdTIGQGGBCJJ9KbBfNzer1QgV/neXms9FvChIbLa8NplG5WnuPifc5eF/Ka BzhIQSklFM8Wf52OgVRV/U75Meui5vXjwfGbbVwwnu7V66y3YB31Lsla63bk4eGVkaGF /tLdGfReZdm2NVIgNv/heGbGYDFd5PM+7IzxL+4yUTyGwXp2s3jH4+IoF/vVlmrX5RsZ LHvyYBhtUIuh/ikwVpP2aw5d/zaA+tR5cemQr35oPpAkx3O5FaWL4nkfswAugD8tX1Vd cN5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=shbfVsWu96uc3080vFE02rFSUQok5BcsheCh1Y/h5IY=; b=F7MrNdpUOeBwT2XJhpidJf3MuGdXSzz1pl6me8lbF1xARo5FsDAL5uqJxgY6gLvKQq Q33c96U2acT5Bg5vpKIL6ZsFg12kdXcp5oguELZraBzLYn4LUs9gKS0jsd1nyDmTR8La 0MklRez5md1lccjEtnmQ0H4G0X0cmeRSJeD5KyUdURoo2ZQyRmH55yWKVqCNQEueZp4C /u2j8EKfLzm4pf0/WEJkqopinA3Js2ZiAxE7OV3Y06jH3kH6jyYQO8BFS0rB3jmpFgpf ZUB7zLlpw4KbjNcfjW4IvJwMl3RA3tU1toxnssleNTo1ygTJlayrnjZL6HY9Nj/ujlMb L7sQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=CWAvfwi4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h4-20020a0564020e0400b00445b20fff06si8691804edh.147.2022.08.22.07.35.15; Mon, 22 Aug 2022 07:35:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=CWAvfwi4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S235295AbiHVOc5 (ORCPT + 99 others); Mon, 22 Aug 2022 10:32:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235262AbiHVOcy (ORCPT ); Mon, 22 Aug 2022 10:32:54 -0400 Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8D47530F60; Mon, 22 Aug 2022 07:32:53 -0700 (PDT) Received: by mail-ej1-x630.google.com with SMTP id j21so16206792ejs.0; Mon, 22 Aug 2022 07:32:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc; bh=shbfVsWu96uc3080vFE02rFSUQok5BcsheCh1Y/h5IY=; b=CWAvfwi4L3uQJGgH8M2BW35LvL4Z/PzSav9V7qvdya6tOgncfobWxyAxkbWap9ej4D ieK4eYgdwHXGS1QpGLOVoJ0Ujr+/IWDv/0naLjuxJlxF8h4Fld8mwTSMHy4gJK+SEuU9 5ojg6OSwrxjpxyUBJ5hWMClzK1Jn8gXjSyYgC1vmXyOK4t7Obl78Dh0p4wcZRxUHGCns FHrfWEvUS5Nmbw1MPh2TN1+AzRF5yiA7omwXHpjCib53iiKCQrSZdQxC7uOZ7HV3k59Q Naz93WNf1g6z36ZfVf2wvMPBFT2k0lIzmTtiZtIgYLSKHKCGg/IN0NQ01cGvQO+XyrdM pmDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc; bh=shbfVsWu96uc3080vFE02rFSUQok5BcsheCh1Y/h5IY=; b=Kvwfjd8R8LOMRUCf9Ofll7vAyRuBu26zskJLjQ0zTYd2U3BxEQPdSyO0mNJRUAp0am 8PB1El2Gc4SLZIkwxG9Aq1XZiX6Ip+SraTndsuTMNkJdYlGurhi7tjsKtac4yJSL3TMW uBs9ML8yKeJShzxH5qu57sLXiEW+e1PXZC3NoBDnJrF6jERFxIpSzkqQyzNx2KH9ysO4 +DMseduzX6+V3Je2rhHMoBoi8Sxm91rHAfDXWk0tLDR91jJAIDa65aRSmqoRPWdmu88O 3oj9NUiuF8FGCtgir+LioaIBSu+vmAh+Jp09fKXJey+QE2WhT+mwAHFKfu9J6VTVgnY7 nNxA== X-Gm-Message-State: ACgBeo0rfN4p7yxQMC85bGV7anT+RoG6AHnGfl6tJjUnN0b7EII3Qqa2 h9T8kUEm3o8GcFTNS8b+PA3HW6rO8Kew+A== X-Received: by 2002:a17:907:6e18:b0:73d:63d9:945f with SMTP id sd24-20020a1709076e1800b0073d63d9945fmr7513576ejc.12.1661178771870; Mon, 22 Aug 2022 07:32:51 -0700 (PDT) Received: from localhost.localdomain ([46.248.82.114]) by smtp.gmail.com with ESMTPSA id n3-20020a170906b30300b007081282cbd8sm6225115ejz.76.2022.08.22.07.32.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Aug 2022 07:32:51 -0700 (PDT) From: Uros Bizjak To: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Uros Bizjak , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Subject: [PATCH] netdev: Use try_cmpxchg in napi_if_scheduled_mark_missed Date: Mon, 22 Aug 2022 16:32:43 +0200 Message-Id: <20220822143243.2798-1-ubizjak@gmail.com> X-Mailer: git-send-email 2.37.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use try_cmpxchg instead of cmpxchg (*ptr, old, new) == old in napi_if_scheduled_mark_missed. x86 CMPXCHG instruction returns success in ZF flag, so this change saves a compare after cmpxchg (and related move instruction in front of cmpxchg). Also, try_cmpxchg implicitly assigns old *ptr value to "old" when cmpxchg fails, enabling further code simplifications. Cc: "David S. Miller" Cc: Eric Dumazet Cc: Jakub Kicinski Cc: Paolo Abeni Signed-off-by: Uros Bizjak --- include/linux/netdevice.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 1a3cb93c3dcc..51c916894661 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -546,8 +546,8 @@ static inline bool napi_if_scheduled_mark_missed(struct napi_struct *n) { unsigned long val, new; + val = READ_ONCE(n->state); do { - val = READ_ONCE(n->state); if (val & NAPIF_STATE_DISABLE) return true; @@ -555,7 +555,7 @@ static inline bool napi_if_scheduled_mark_missed(struct napi_struct *n) return false; new = val | NAPIF_STATE_MISSED; - } while (cmpxchg(&n->state, val, new) != val); + } while (!try_cmpxchg(&n->state, &val, new)); return true; } -- 2.37.1