hv_netvsc: replace divide with mask when computing padding
authorStephen Hemminger <stephen@networkplumber.org>
Fri, 1 Dec 2017 19:01:46 +0000 (11:01 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 3 Dec 2017 15:10:02 +0000 (10:10 -0500)
Packet alignment is always a power of 2 therefore modulus can
be replaced with a faster and operation

Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hyperv/netvsc.c

index ee31faa67cadbf41774f2e402e11a9bbd315113f..4b931f017a253b5f137420be4cd98b7839346f9e 100644 (file)
@@ -712,11 +712,12 @@ static u32 netvsc_copy_to_send_buf(struct netvsc_device *net_device,
        int i;
        u32 msg_size = 0;
        u32 padding = 0;
-       u32 remain = packet->total_data_buflen % net_device->pkt_align;
        u32 page_count = packet->cp_partial ? packet->rmsg_pgcnt :
                packet->page_buf_cnt;
+       u32 remain;
 
        /* Add padding */
+       remain = packet->total_data_buflen & (net_device->pkt_align - 1);
        if (skb->xmit_more && remain && !packet->cp_partial) {
                padding = net_device->pkt_align - remain;
                rndis_msg->msg_len += padding;