From patchwork Mon Mar 27 17:20:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 75590 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1678337vqo; Mon, 27 Mar 2023 10:34:37 -0700 (PDT) X-Google-Smtp-Source: AKy350YUTVML4zxeRzeJu1KdJ349qhoM8gmzMqBHHs0C21d5Agq2zzHLn8Q7+y5lI7FqTNaiG7+4 X-Received: by 2002:aa7:954a:0:b0:625:cb74:9e01 with SMTP id w10-20020aa7954a000000b00625cb749e01mr12117165pfq.25.1679938477101; Mon, 27 Mar 2023 10:34:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679938477; cv=none; d=google.com; s=arc-20160816; b=zMMGQWQfeHQHz/GZON8IUFBfExdXUMSfzHZute/WieXzhpU4mlzDAb1NQ7qT8QjzWF K3MRqXZDFCcSuxubkkMpMSToXNTfgn1zBLuc9wYC8lnWh3wKaCF+bMJfA7y5kUsu2ISV zuzEaBkB+9+7m/9E5ogolEDdgzgqNE36zKC9nI9+89DSN6SGzH4v0JOd+fBfMNfHTkL/ x8b7+jnsKwoz5YsBFuH6otn9Qk2QXBfenKwgVIkbQ8aqVa07itH0u0+KaSl8KtJHTRpn ql9Av6+6MY+Wdbt79iZm+5W3ILsayQfUxwwx0+lYsVbKtcSqRQFYhI3H+JIb5CcRxjI+ 3hww== 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=iqcy+1kYTptaUIiI9+dDuLV43XE+/S6tfg9O6ag4xCY=; b=FrsSaxGyXpP/FolbYDMcJFJnFrnqCD9hfan0uoSJqKan8yFUGtWC9z86I4DC3lnE4d plSA6RATAqIH8e7j5FGSKwM+isEYI6jz0BGOX0qi00pY8Cx/DAkM9mEZS/mFLcemMbOa NfqXQwpzKQ5wc8TW+OBHAdFWYXWDHOrAhuS42VCAdc0jIqAnX8kLw73qMBuwA94pVsyd uSa/AxCp9KQZMp/b4r3DotgU4W8Fe98pVO1VbwbKdcvdxKLVMYTmqJiARmNtaHzZ7Eh6 YEvljPimhlu/IZHVAfVIU3lZ7hkKbgdnyww1QWlh9qvvG0+LUYQJAuvKGOvRrlfBCgrB tFQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BOb7GUKu; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f10-20020a63de0a000000b005030925d300si27762886pgg.179.2023.03.27.10.34.23; Mon, 27 Mar 2023 10:34:37 -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=@intel.com header.s=Intel header.b=BOb7GUKu; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232588AbjC0RUh (ORCPT + 99 others); Mon, 27 Mar 2023 13:20:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52802 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232115AbjC0RUf (ORCPT ); Mon, 27 Mar 2023 13:20:35 -0400 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B8AFB4494; Mon, 27 Mar 2023 10:20:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679937629; x=1711473629; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=9vfPHAhf77CU6X/CYXCEa6OblOK0wvYIlcDR/R0TO/M=; b=BOb7GUKuWv+hdaTMlyak+QanQc0/tFAPCaE5XCRsStVC5kELDlSpIRQc VCAreW4DrC5IKixOS1fkiPMGsZtPHnUV4anov2YVhjr/hRspiG9eMJbIU LH040aKKCwfngtPjyu0G3RMjKUHbhSnCVV9LJVuv3c3gFK6C7mGa1P4n2 FzMvneP5iQEsXHmMei1QTHAgb0Z6lV7bdcosf6naLGYtvs5/r0OiryQET qtWOXCCH/MQt6eMV7zHFRWc5qUFH7gs8+vwxylHt9ppNgMKXLEpmca7Ue AqwU32NwSekBH+wOk6csa9oUal7nBCMrEB3ldz16RZoBNe3QO6UMpBPap w==; X-IronPort-AV: E=McAfee;i="6600,9927,10662"; a="341910499" X-IronPort-AV: E=Sophos;i="5.98,295,1673942400"; d="scan'208";a="341910499" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Mar 2023 10:20:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10662"; a="807569019" X-IronPort-AV: E=Sophos;i="5.98,295,1673942400"; d="scan'208";a="807569019" Received: from black.fi.intel.com ([10.237.72.28]) by orsmga004.jf.intel.com with ESMTP; 27 Mar 2023 10:20:26 -0700 Received: by black.fi.intel.com (Postfix, from userid 1003) id 533EC79C; Mon, 27 Mar 2023 20:20:27 +0300 (EEST) From: Andy Shevchenko To: Mika Westerberg , Andy Shevchenko , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Andreas Noever , Michael Jamet , Yehezkel Bernat Subject: [PATCH v1 1/2] thunderbolt: Get rid of redundant 'else' Date: Mon, 27 Mar 2023 20:20:16 +0300 Message-Id: <20230327172017.20078-1-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.40.0.1.gaa8946217a0b MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761543168728763006?= X-GMAIL-MSGID: =?utf-8?q?1761543168728763006?= In the snippets like the following if (...) return / goto / break / continue ...; else ... the 'else' is redundant. Get rid of it. Signed-off-by: Andy Shevchenko --- drivers/thunderbolt/acpi.c | 2 +- drivers/thunderbolt/ctl.c | 2 +- drivers/thunderbolt/nhi.c | 3 ++- drivers/thunderbolt/switch.c | 4 ++-- drivers/thunderbolt/usb4.c | 6 +++--- drivers/thunderbolt/xdomain.c | 24 ++++++++++-------------- 6 files changed, 19 insertions(+), 22 deletions(-) diff --git a/drivers/thunderbolt/acpi.c b/drivers/thunderbolt/acpi.c index 628225deb8fe..3514bf65b7a4 100644 --- a/drivers/thunderbolt/acpi.c +++ b/drivers/thunderbolt/acpi.c @@ -341,7 +341,7 @@ static struct acpi_device *tb_acpi_find_companion(struct device *dev) */ if (tb_is_switch(dev)) return tb_acpi_switch_find_companion(tb_to_switch(dev)); - else if (tb_is_usb4_port_device(dev)) + if (tb_is_usb4_port_device(dev)) return acpi_find_child_by_adr(ACPI_COMPANION(dev->parent), tb_to_usb4_port_device(dev)->port->port); return NULL; diff --git a/drivers/thunderbolt/ctl.c b/drivers/thunderbolt/ctl.c index 6e7d28e8d81a..3a213322ec7a 100644 --- a/drivers/thunderbolt/ctl.c +++ b/drivers/thunderbolt/ctl.c @@ -1033,7 +1033,7 @@ static int tb_cfg_get_error(struct tb_ctl *ctl, enum tb_cfg_space space, if (res->tb_error == TB_CFG_ERROR_LOCK) return -EACCES; - else if (res->tb_error == TB_CFG_ERROR_PORT_NOT_CONNECTED) + if (res->tb_error == TB_CFG_ERROR_PORT_NOT_CONNECTED) return -ENOTCONN; return -EIO; diff --git a/drivers/thunderbolt/nhi.c b/drivers/thunderbolt/nhi.c index cfebec107f3f..d76e923fbc6a 100644 --- a/drivers/thunderbolt/nhi.c +++ b/drivers/thunderbolt/nhi.c @@ -526,7 +526,8 @@ static int nhi_alloc_hop(struct tb_nhi *nhi, struct tb_ring *ring) ring->hop); ret = -EBUSY; goto err_unlock; - } else if (!ring->is_tx && nhi->rx_rings[ring->hop]) { + } + if (!ring->is_tx && nhi->rx_rings[ring->hop]) { dev_warn(&nhi->pdev->dev, "RX hop %d already allocated\n", ring->hop); ret = -EBUSY; diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c index da373ac38285..51e86b5171c7 100644 --- a/drivers/thunderbolt/switch.c +++ b/drivers/thunderbolt/switch.c @@ -271,9 +271,9 @@ static int nvm_authenticate(struct tb_switch *sw, bool auth_only) } sw->nvm->authenticating = true; return usb4_switch_nvm_authenticate(sw); - } else if (auth_only) { - return -EOPNOTSUPP; } + if (auth_only) + return -EOPNOTSUPP; sw->nvm->authenticating = true; if (!tb_route(sw)) { diff --git a/drivers/thunderbolt/usb4.c b/drivers/thunderbolt/usb4.c index a0996cb2893c..2d4b6f3e6141 100644 --- a/drivers/thunderbolt/usb4.c +++ b/drivers/thunderbolt/usb4.c @@ -851,7 +851,7 @@ bool usb4_switch_query_dp_resource(struct tb_switch *sw, struct tb_port *in) */ if (ret == -EOPNOTSUPP) return true; - else if (ret) + if (ret) return false; return !status; @@ -877,7 +877,7 @@ int usb4_switch_alloc_dp_resource(struct tb_switch *sw, struct tb_port *in) &status); if (ret == -EOPNOTSUPP) return 0; - else if (ret) + if (ret) return ret; return status ? -EBUSY : 0; @@ -900,7 +900,7 @@ int usb4_switch_dealloc_dp_resource(struct tb_switch *sw, struct tb_port *in) &status); if (ret == -EOPNOTSUPP) return 0; - else if (ret) + if (ret) return ret; return status ? -EIO : 0; diff --git a/drivers/thunderbolt/xdomain.c b/drivers/thunderbolt/xdomain.c index a48335c95d39..e2b54887d331 100644 --- a/drivers/thunderbolt/xdomain.c +++ b/drivers/thunderbolt/xdomain.c @@ -1178,9 +1178,8 @@ static int tb_xdomain_get_uuid(struct tb_xdomain *xd) if (xd->state_retries-- > 0) { dev_dbg(&xd->dev, "failed to request UUID, retrying\n"); return -EAGAIN; - } else { - dev_dbg(&xd->dev, "failed to read remote UUID\n"); } + dev_dbg(&xd->dev, "failed to read remote UUID\n"); return ret; } @@ -1367,12 +1366,10 @@ static int tb_xdomain_get_properties(struct tb_xdomain *xd) dev_dbg(&xd->dev, "failed to request remote properties, retrying\n"); return -EAGAIN; - } else { - /* Give up now */ - dev_err(&xd->dev, - "failed read XDomain properties from %pUb\n", - xd->remote_uuid); } + /* Give up now */ + dev_err(&xd->dev, "failed read XDomain properties from %pUb\n", + xd->remote_uuid); return ret; } @@ -2179,13 +2176,12 @@ static struct tb_xdomain *switch_find_xdomain(struct tb_switch *sw, if (xd->remote_uuid && uuid_equal(xd->remote_uuid, lookup->uuid)) return xd; - } else if (lookup->link && - lookup->link == xd->link && - lookup->depth == xd->depth) { - return xd; - } else if (lookup->route && - lookup->route == xd->route) { - return xd; + } else { + if (lookup->link && lookup->link == xd->link && + lookup->depth == xd->depth) + return xd; + if (lookup->route && lookup->route == xd->route) + return xd; } } else if (tb_port_has_remote(port)) { xd = switch_find_xdomain(port->remote->sw, lookup); From patchwork Mon Mar 27 17:20:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 75593 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1684316vqo; Mon, 27 Mar 2023 10:46:03 -0700 (PDT) X-Google-Smtp-Source: AKy350YiP0j2FmJnCymlz701XeaA1IBfrXhNCKuObyXydjzNoXGW8y2L8z/6SLNRzINiU2xUbiD0 X-Received: by 2002:a17:902:c941:b0:1a0:65d3:bae4 with SMTP id i1-20020a170902c94100b001a065d3bae4mr13743194pla.38.1679939163687; Mon, 27 Mar 2023 10:46:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679939163; cv=none; d=google.com; s=arc-20160816; b=i4FGullim4Yiptv7UHr4ike5wUBps2CZC+w2psERwJR0azkBZmIzT11/cTfBi5bMer a59M2Q7LV8MSiNfGDtfCq4O2JLUnh+xiq9tuuS/Fr76/y+oFSjkNMoJRx6E23bE6GrlU 16fmNuF1zRr3HMOzsDJu0vUM29MppFAUwFiKnbKAFJxQdSQyIUkija5BCv49hG/TnKpw 4cAjlrwmLGLE3VBXty8S5X8LRo8/3VBsAihXB/k4Ny4agZYTlhDSQC6SBgHPRzOujujq bnownv+HwjnC6qItCDUjRsHycG4EaE3L9Cp9P2DrVXTq9eBzE7NeSS/VHekVJ9dTJyZ7 9+UA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=3sMNTSe/RXf/UzYSo0xryIfdfm2fmJVV4UpF6Sifie8=; b=rnDn8BDWwFUTzWCrTMlptRJPBoRw6xmfi5PKb9z1hvxi1oTzzg1EyOAERdItKAg7Gw jANUTvajOy/9GFLoNiDPpiKikkr6qbisKNjq4K8U0azod8veCesbufyfdR3Jqd1xoVKx EK6Jq7IB49JuveCzxJrPYghNNim4cX5U8g0eUoboVLNMf76hAk4FlJ7fTy73316ldwWA 6k4eVXzNA/DJGaelkMnlLHLAddCqx0gX15L8iWVwqE44iBb85mDl8qq+FLTsDExiypbo L/kLOjJZs61ruUOPamW4dlv/zamY6syvkLeqRlhsifSNVLTW+hwq5J6yXrUaeVcFgcWR rihg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=KeHbdFa8; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u11-20020a170902e80b00b001a1abc91952si28374757plg.194.2023.03.27.10.45.50; Mon, 27 Mar 2023 10:46:03 -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=@intel.com header.s=Intel header.b=KeHbdFa8; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230417AbjC0RUk (ORCPT + 99 others); Mon, 27 Mar 2023 13:20:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52796 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232207AbjC0RUf (ORCPT ); Mon, 27 Mar 2023 13:20:35 -0400 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 481CD3A82; Mon, 27 Mar 2023 10:20:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679937631; x=1711473631; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=4hisg40aJmrsK8xqexK+I9xoMoksxoHrWuTzGu9o9F0=; b=KeHbdFa8Fwv/OQ8AMvGfPvg/o+W5KInMtf3kmIS+M/lFrqG2W1k8DAcb VbAZp+x219GD1snHBqGwHmXLpblbQqy1VdvS1uPhjcoqSvsXfHtYMtbXp MYOZttqmoJ5sx8NmVnxI10qr7UUd7LXgs/VSHftMRBT3bp8OmOdnUQaM8 DfawX8sjE9YELP74utxGRfy+HSSlGfDo05GwIn9dLVOcxplfZDy14wqjL BycqgnATkMBbGMjYj+wkKr5Ttd7yo7ohEIwvz28vJkHgeYRl3AyxeePgX GrjlvdviqG6q6XhkLfjTXxrJWRb8fruzjQ9pVFTzSqdG5W7N6P864bvD2 g==; X-IronPort-AV: E=McAfee;i="6600,9927,10662"; a="368086554" X-IronPort-AV: E=Sophos;i="5.98,295,1673942400"; d="scan'208";a="368086554" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Mar 2023 10:20:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10662"; a="857734893" X-IronPort-AV: E=Sophos;i="5.98,295,1673942400"; d="scan'208";a="857734893" Received: from black.fi.intel.com ([10.237.72.28]) by orsmga005.jf.intel.com with ESMTP; 27 Mar 2023 10:20:28 -0700 Received: by black.fi.intel.com (Postfix, from userid 1003) id 0658380A; Mon, 27 Mar 2023 20:20:28 +0300 (EEST) From: Andy Shevchenko To: Mika Westerberg , Andy Shevchenko , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Andreas Noever , Michael Jamet , Yehezkel Bernat Subject: [PATCH v1 2/2] thunderbolt: Make use of SI units from units.h Date: Mon, 27 Mar 2023 20:20:17 +0300 Message-Id: <20230327172017.20078-2-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.40.0.1.gaa8946217a0b In-Reply-To: <20230327172017.20078-1-andriy.shevchenko@linux.intel.com> References: <20230327172017.20078-1-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761543888978753109?= X-GMAIL-MSGID: =?utf-8?q?1761543888978753109?= In a couple of places it seems reasonable to use MEGA intead of explicit number. It makes code more readable and robust. Signed-off-by: Andy Shevchenko --- drivers/thunderbolt/usb4.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/thunderbolt/usb4.c b/drivers/thunderbolt/usb4.c index 2d4b6f3e6141..12355929e586 100644 --- a/drivers/thunderbolt/usb4.c +++ b/drivers/thunderbolt/usb4.c @@ -9,6 +9,7 @@ #include #include +#include #include "sb_regs.h" #include "tb.h" @@ -1995,7 +1996,7 @@ static unsigned int usb3_bw_to_mbps(u32 bw, u8 scale) unsigned long uframes; uframes = bw * 512UL << scale; - return DIV_ROUND_CLOSEST(uframes * 8000, 1000 * 1000); + return DIV_ROUND_CLOSEST(uframes * 8000, MEGA); } static u32 mbps_to_usb3_bw(unsigned int mbps, u8 scale) @@ -2003,7 +2004,7 @@ static u32 mbps_to_usb3_bw(unsigned int mbps, u8 scale) unsigned long uframes; /* 1 uframe is 1/8 ms (125 us) -> 1 / 8000 s */ - uframes = ((unsigned long)mbps * 1000 * 1000) / 8000; + uframes = ((unsigned long)mbps * MEGA) / 8000; return DIV_ROUND_UP(uframes, 512UL << scale); }