2017-03-24 18:28:15

by Bin Liu

[permalink] [raw]
Subject: Re: [PATCH] usb: musb: cppi_dma.c: use DIV_ROUND_UP macro in cppi_next_(r|t)x_segment()

On Wed, Feb 15, 2017 at 11:12:36AM +0300, Ivan Safonov wrote:
> DIV_ROUND_UP is bit useful than series of "/" and "%" operations.
> Replace "/%" sequence with DIV_ROUND_UP macro.
>
> Signed-off-by: Ivan Safonov <[email protected]>
> ---
> drivers/usb/musb/cppi_dma.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/usb/musb/cppi_dma.c b/drivers/usb/musb/cppi_dma.c
> index 1ae48e6..d376188 100644
> --- a/drivers/usb/musb/cppi_dma.c
> +++ b/drivers/usb/musb/cppi_dma.c
> @@ -582,9 +582,9 @@ cppi_next_tx_segment(struct musb *musb, struct cppi_channel *tx)
> maxpacket = length;
> n_bds = 1;
> } else {
> - n_bds = length / maxpacket;
> - if (!length || (length % maxpacket))
> - n_bds++;
> + n_bds = DIV_ROUND_UP(length, maxpacket);
> + if (length == 0)
> + n_bds = 1;

Is it a little better logically if

+ if (length)
+ n_bds = DIV_ROUND_UP(length, maxpacket);
+ else
+ n_bds = 1;

or

+ n_bds = length ? DIV_ROUND_UP(length, maxpacket) : 1;

Regards,
-Bin.


2017-03-25 06:57:22

by Ivan Safonov

[permalink] [raw]
Subject: [PATCH v2] usb: musb: cppi_dma.c: use DIV_ROUND_UP macro in cppi_next_(r|t)x_segment()

DIV_ROUND_UP is bit useful than series of "/" and "%" operations.
Replace "/%" sequence with DIV_ROUND_UP macro.

Signed-off-by: Ivan Safonov <[email protected]>
---
Changes in v2:
- little style fix

drivers/usb/musb/cppi_dma.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/usb/musb/cppi_dma.c b/drivers/usb/musb/cppi_dma.c
index c4fabe95..a13bd36 100644
--- a/drivers/usb/musb/cppi_dma.c
+++ b/drivers/usb/musb/cppi_dma.c
@@ -582,9 +582,10 @@ cppi_next_tx_segment(struct musb *musb, struct cppi_channel *tx)
maxpacket = length;
n_bds = 1;
} else {
- n_bds = length / maxpacket;
- if (!length || (length % maxpacket))
- n_bds++;
+ if (length)
+ n_bds = DIV_ROUND_UP(length, maxpacket);
+ else
+ n_bds = 1;
n_bds = min(n_bds, (unsigned) NUM_TXCHAN_BD);
length = min(n_bds * maxpacket, length);
}
@@ -790,9 +791,7 @@ cppi_next_rx_segment(struct musb *musb, struct cppi_channel *rx, int onepacket)
n_bds = 0xffff / maxpacket;
length = n_bds * maxpacket;
} else {
- n_bds = length / maxpacket;
- if (length % maxpacket)
- n_bds++;
+ n_bds = DIV_ROUND_UP(length, maxpacket);
}
if (n_bds == 1)
onepacket = 1;
--
2.10.2

2017-03-27 15:48:26

by Bin Liu

[permalink] [raw]
Subject: Re: [PATCH v2] usb: musb: cppi_dma.c: use DIV_ROUND_UP macro in cppi_next_(r|t)x_segment()

On Sat, Mar 25, 2017 at 12:52:58PM +0300, Ivan Safonov wrote:
> DIV_ROUND_UP is bit useful than series of "/" and "%" operations.
> Replace "/%" sequence with DIV_ROUND_UP macro.
>
> Signed-off-by: Ivan Safonov <[email protected]>

Applied. Thanks.
-Bin.

> ---
> Changes in v2:
> - little style fix
>
> drivers/usb/musb/cppi_dma.c | 11 +++++------
> 1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/usb/musb/cppi_dma.c b/drivers/usb/musb/cppi_dma.c
> index c4fabe95..a13bd36 100644
> --- a/drivers/usb/musb/cppi_dma.c
> +++ b/drivers/usb/musb/cppi_dma.c
> @@ -582,9 +582,10 @@ cppi_next_tx_segment(struct musb *musb, struct cppi_channel *tx)
> maxpacket = length;
> n_bds = 1;
> } else {
> - n_bds = length / maxpacket;
> - if (!length || (length % maxpacket))
> - n_bds++;
> + if (length)
> + n_bds = DIV_ROUND_UP(length, maxpacket);
> + else
> + n_bds = 1;
> n_bds = min(n_bds, (unsigned) NUM_TXCHAN_BD);
> length = min(n_bds * maxpacket, length);
> }
> @@ -790,9 +791,7 @@ cppi_next_rx_segment(struct musb *musb, struct cppi_channel *rx, int onepacket)
> n_bds = 0xffff / maxpacket;
> length = n_bds * maxpacket;
> } else {
> - n_bds = length / maxpacket;
> - if (length % maxpacket)
> - n_bds++;
> + n_bds = DIV_ROUND_UP(length, maxpacket);
> }
> if (n_bds == 1)
> onepacket = 1;
> --
> 2.10.2
>