diff options
| author | KY Srinivasan <kys@microsoft.com> | 2014-02-16 19:38:43 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2014-02-17 16:32:31 -0500 |
| commit | 86eedacc63074dbf304ce9c8b261bef9503c796d (patch) | |
| tree | a88baf2f49ad8056d62c1408dca7b766ef954d5c /drivers/net/hyperv | |
| parent | c1b5994770ad5ae03336b5cdd1e0ad622a870a00 (diff) | |
Drivers: net: hyperv: Get rid of the rndis_filter_packet structure
This structure is redundant; get rid of it make the code little more efficient -
get rid of the unnecessary indirection.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/hyperv')
| -rw-r--r-- | drivers/net/hyperv/hyperv_net.h | 6 | ||||
| -rw-r--r-- | drivers/net/hyperv/netvsc_drv.c | 2 | ||||
| -rw-r--r-- | drivers/net/hyperv/rndis_filter.c | 41 |
3 files changed, 4 insertions, 45 deletions
diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h index 7b594ce3f21d..7645ba38bde8 100644 --- a/drivers/net/hyperv/hyperv_net.h +++ b/drivers/net/hyperv/hyperv_net.h | |||
| @@ -846,12 +846,6 @@ struct rndis_message { | |||
| 846 | }; | 846 | }; |
| 847 | 847 | ||
| 848 | 848 | ||
| 849 | struct rndis_filter_packet { | ||
| 850 | void *completion_ctx; | ||
| 851 | void (*completion)(void *context); | ||
| 852 | struct rndis_message msg; | ||
| 853 | }; | ||
| 854 | |||
| 855 | /* Handy macros */ | 849 | /* Handy macros */ |
| 856 | 850 | ||
| 857 | /* get the size of an RNDIS message. Pass in the message type, */ | 851 | /* get the size of an RNDIS message. Pass in the message type, */ |
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index 7756118c2f0a..1eadc136a372 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c | |||
| @@ -146,7 +146,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net) | |||
| 146 | /* Allocate a netvsc packet based on # of frags. */ | 146 | /* Allocate a netvsc packet based on # of frags. */ |
| 147 | packet = kzalloc(sizeof(struct hv_netvsc_packet) + | 147 | packet = kzalloc(sizeof(struct hv_netvsc_packet) + |
| 148 | (num_pages * sizeof(struct hv_page_buffer)) + | 148 | (num_pages * sizeof(struct hv_page_buffer)) + |
| 149 | sizeof(struct rndis_filter_packet) + | 149 | sizeof(struct rndis_message) + |
| 150 | NDIS_VLAN_PPI_SIZE, GFP_ATOMIC); | 150 | NDIS_VLAN_PPI_SIZE, GFP_ATOMIC); |
| 151 | if (!packet) { | 151 | if (!packet) { |
| 152 | /* out of memory, drop packet */ | 152 | /* out of memory, drop packet */ |
diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c index 1084e5de3ceb..f0cc8ef21e1c 100644 --- a/drivers/net/hyperv/rndis_filter.c +++ b/drivers/net/hyperv/rndis_filter.c | |||
| @@ -58,9 +58,6 @@ struct rndis_request { | |||
| 58 | u8 request_ext[RNDIS_EXT_LEN]; | 58 | u8 request_ext[RNDIS_EXT_LEN]; |
| 59 | }; | 59 | }; |
| 60 | 60 | ||
| 61 | static void rndis_filter_send_completion(void *ctx); | ||
| 62 | |||
| 63 | |||
| 64 | static struct rndis_device *get_rndis_device(void) | 61 | static struct rndis_device *get_rndis_device(void) |
| 65 | { | 62 | { |
| 66 | struct rndis_device *device; | 63 | struct rndis_device *device; |
| @@ -277,7 +274,7 @@ static void rndis_filter_receive_response(struct rndis_device *dev, | |||
| 277 | "rndis response buffer overflow " | 274 | "rndis response buffer overflow " |
| 278 | "detected (size %u max %zu)\n", | 275 | "detected (size %u max %zu)\n", |
| 279 | resp->msg_len, | 276 | resp->msg_len, |
| 280 | sizeof(struct rndis_filter_packet)); | 277 | sizeof(struct rndis_message)); |
| 281 | 278 | ||
| 282 | if (resp->ndis_msg_type == | 279 | if (resp->ndis_msg_type == |
| 283 | RNDIS_MSG_RESET_C) { | 280 | RNDIS_MSG_RESET_C) { |
| @@ -898,17 +895,14 @@ int rndis_filter_close(struct hv_device *dev) | |||
| 898 | int rndis_filter_send(struct hv_device *dev, | 895 | int rndis_filter_send(struct hv_device *dev, |
| 899 | struct hv_netvsc_packet *pkt) | 896 | struct hv_netvsc_packet *pkt) |
| 900 | { | 897 | { |
| 901 | int ret; | ||
| 902 | struct rndis_filter_packet *filter_pkt; | ||
| 903 | struct rndis_message *rndis_msg; | 898 | struct rndis_message *rndis_msg; |
| 904 | struct rndis_packet *rndis_pkt; | 899 | struct rndis_packet *rndis_pkt; |
| 905 | u32 rndis_msg_size; | 900 | u32 rndis_msg_size; |
| 906 | bool isvlan = pkt->vlan_tci & VLAN_TAG_PRESENT; | 901 | bool isvlan = pkt->vlan_tci & VLAN_TAG_PRESENT; |
| 907 | 902 | ||
| 908 | /* Add the rndis header */ | 903 | /* Add the rndis header */ |
| 909 | filter_pkt = (struct rndis_filter_packet *)pkt->extension; | 904 | rndis_msg = (struct rndis_message *)pkt->extension; |
| 910 | 905 | ||
| 911 | rndis_msg = &filter_pkt->msg; | ||
| 912 | rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet); | 906 | rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet); |
| 913 | if (isvlan) | 907 | if (isvlan) |
| 914 | rndis_msg_size += NDIS_VLAN_PPI_SIZE; | 908 | rndis_msg_size += NDIS_VLAN_PPI_SIZE; |
| @@ -961,34 +955,5 @@ int rndis_filter_send(struct hv_device *dev, | |||
| 961 | pkt->page_buf[1].len = rndis_msg_size - pkt->page_buf[0].len; | 955 | pkt->page_buf[1].len = rndis_msg_size - pkt->page_buf[0].len; |
| 962 | } | 956 | } |
| 963 | 957 | ||
| 964 | /* Save the packet send completion and context */ | 958 | return netvsc_send(dev, pkt); |
| 965 | filter_pkt->completion = pkt->completion.send.send_completion; | ||
| 966 | filter_pkt->completion_ctx = | ||
| 967 | pkt->completion.send.send_completion_ctx; | ||
| 968 | |||
| 969 | /* Use ours */ | ||
| 970 | pkt->completion.send.send_completion = rndis_filter_send_completion; | ||
| 971 | pkt->completion.send.send_completion_ctx = filter_pkt; | ||
| 972 | |||
| 973 | ret = netvsc_send(dev, pkt); | ||
| 974 | if (ret != 0) { | ||
| 975 | /* | ||
| 976 | * Reset the completion to originals to allow retries from | ||
| 977 | * above | ||
| 978 | */ | ||
| 979 | pkt->completion.send.send_completion = | ||
| 980 | filter_pkt->completion; | ||
| 981 | pkt->completion.send.send_completion_ctx = | ||
| 982 | filter_pkt->completion_ctx; | ||
| 983 | } | ||
| 984 | |||
| 985 | return ret; | ||
| 986 | } | ||
| 987 | |||
| 988 | static void rndis_filter_send_completion(void *ctx) | ||
| 989 | { | ||
| 990 | struct rndis_filter_packet *filter_pkt = ctx; | ||
| 991 | |||
| 992 | /* Pass it back to the original handler */ | ||
| 993 | filter_pkt->completion(filter_pkt->completion_ctx); | ||
| 994 | } | 959 | } |
