hv_netvsc: Define a macro RNDIS_AND_PPI_SIZE
authorHaiyang Zhang <haiyangz@microsoft.com>
Mon, 6 Apr 2015 22:22:53 +0000 (15:22 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 7 Apr 2015 22:45:33 +0000 (18:45 -0400)
The sum of RNDIS msg and PPI struct sizes is used in multiple places, so we define
a macro for them.

Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hyperv/hyperv_net.h
drivers/net/hyperv/netvsc_drv.c

index 95a25e4b26016bd808b14959bffffa6fa363911f..80bc52eb000c7e0500f0e6d0a9242ad9c8ed3f21 100644 (file)
@@ -958,6 +958,10 @@ struct ndis_tcp_lso_info {
 #define NDIS_HASH_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
                sizeof(u32))
 
+/* Total size of all PPI data */
+#define NDIS_ALL_PPI_SIZE (NDIS_VLAN_PPI_SIZE + NDIS_CSUM_PPI_SIZE + \
+                          NDIS_LSO_PPI_SIZE + NDIS_HASH_PPI_SIZE)
+
 /* Format of Information buffer passed in a SetRequest for the OID */
 /* OID_GEN_RNDIS_CONFIG_PARAMETER. */
 struct rndis_config_parameter_info {
@@ -1170,6 +1174,8 @@ struct rndis_message {
 #define RNDIS_HEADER_SIZE      (sizeof(struct rndis_message) - \
                                 sizeof(union rndis_message_container))
 
+#define RNDIS_AND_PPI_SIZE (sizeof(struct rndis_message) + NDIS_ALL_PPI_SIZE)
+
 #define NDIS_PACKET_TYPE_DIRECTED      0x00000001
 #define NDIS_PACKET_TYPE_MULTICAST     0x00000002
 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
index f9db6bc513e954b0831d881baae5048ad7cc9f87..73f8fba62a521e69e93277834b8ef942e7c2c4c3 100644 (file)
@@ -401,10 +401,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
                return NETDEV_TX_OK;
        }
 
-       pkt_sz = sizeof(struct hv_netvsc_packet) +
-                       sizeof(struct rndis_message) +
-                       NDIS_VLAN_PPI_SIZE + NDIS_CSUM_PPI_SIZE +
-                       NDIS_LSO_PPI_SIZE + NDIS_HASH_PPI_SIZE;
+       pkt_sz = sizeof(struct hv_netvsc_packet) + RNDIS_AND_PPI_SIZE;
 
        if (head_room < pkt_sz) {
                packet = kmalloc(pkt_sz, GFP_ATOMIC);
@@ -436,11 +433,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
        packet->rndis_msg = (struct rndis_message *)((unsigned long)packet +
                                sizeof(struct hv_netvsc_packet));
 
-       memset(packet->rndis_msg, 0, sizeof(struct rndis_message) +
-                                       NDIS_VLAN_PPI_SIZE +
-                                       NDIS_CSUM_PPI_SIZE +
-                                       NDIS_LSO_PPI_SIZE +
-                                       NDIS_HASH_PPI_SIZE);
+       memset(packet->rndis_msg, 0, RNDIS_AND_PPI_SIZE);
 
        /* Set the completion routine */
        packet->send_completion = netvsc_xmit_completion;
@@ -872,9 +865,7 @@ static int netvsc_probe(struct hv_device *dev,
                return -ENOMEM;
 
        max_needed_headroom = sizeof(struct hv_netvsc_packet) +
-                               sizeof(struct rndis_message) +
-                               NDIS_VLAN_PPI_SIZE + NDIS_CSUM_PPI_SIZE +
-                               NDIS_LSO_PPI_SIZE + NDIS_HASH_PPI_SIZE;
+                             RNDIS_AND_PPI_SIZE;
 
        netif_carrier_off(net);