Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F141152979
D7541.id19376.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D7541.id19376.diff
View Options
Index: sys/dev/hyperv/netvsc/hv_net_vsc.h
===================================================================
--- sys/dev/hyperv/netvsc/hv_net_vsc.h
+++ sys/dev/hyperv/netvsc/hv_net_vsc.h
@@ -275,7 +275,6 @@
#endif
typedef struct netvsc_packet_ {
- uint16_t vlan_tci;
uint32_t status;
uint32_t tot_data_buf_len;
void *data;
Index: sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
===================================================================
--- sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
+++ sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
@@ -1278,9 +1278,7 @@
*/
int
netvsc_recv(struct hn_rx_ring *rxr, netvsc_packet *packet,
- const rndis_tcp_ip_csum_info *csum_info,
- const struct rndis_hash_info *hash_info,
- const struct rndis_hash_value *hash_value)
+ const struct hn_recvinfo *info)
{
struct ifnet *ifp = rxr->hn_ifp;
struct mbuf *m_new;
@@ -1332,28 +1330,28 @@
do_csum = 0;
/* receive side checksum offload */
- if (csum_info != NULL) {
+ if (info->csum_info != NULL) {
/* IP csum offload */
- if (csum_info->receive.ip_csum_succeeded && do_csum) {
+ if (info->csum_info->receive.ip_csum_succeeded && do_csum) {
m_new->m_pkthdr.csum_flags |=
(CSUM_IP_CHECKED | CSUM_IP_VALID);
rxr->hn_csum_ip++;
}
/* TCP/UDP csum offload */
- if ((csum_info->receive.tcp_csum_succeeded ||
- csum_info->receive.udp_csum_succeeded) && do_csum) {
+ if ((info->csum_info->receive.tcp_csum_succeeded ||
+ info->csum_info->receive.udp_csum_succeeded) && do_csum) {
m_new->m_pkthdr.csum_flags |=
(CSUM_DATA_VALID | CSUM_PSEUDO_HDR);
m_new->m_pkthdr.csum_data = 0xffff;
- if (csum_info->receive.tcp_csum_succeeded)
+ if (info->csum_info->receive.tcp_csum_succeeded)
rxr->hn_csum_tcp++;
else
rxr->hn_csum_udp++;
}
- if (csum_info->receive.ip_csum_succeeded &&
- csum_info->receive.tcp_csum_succeeded)
+ if (info->csum_info->receive.ip_csum_succeeded &&
+ info->csum_info->receive.tcp_csum_succeeded)
do_lro = 1;
} else {
const struct ether_header *eh;
@@ -1409,19 +1407,18 @@
}
}
skip:
- if ((packet->vlan_tci != 0) &&
- (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) {
- m_new->m_pkthdr.ether_vtag = packet->vlan_tci;
+ if (info->vlan_info != NULL) {
+ m_new->m_pkthdr.ether_vtag = info->vlan_info->u1.s1.vlan_id;
m_new->m_flags |= M_VLANTAG;
}
- if (hash_info != NULL && hash_value != NULL) {
+ if (info->hash_info != NULL && info->hash_value != NULL) {
rxr->hn_rss_pkts++;
- m_new->m_pkthdr.flowid = hash_value->hash_value;
- if ((hash_info->hash_info & NDIS_HASH_FUNCTION_MASK) ==
+ m_new->m_pkthdr.flowid = info->hash_value->hash_value;
+ if ((info->hash_info->hash_info & NDIS_HASH_FUNCTION_MASK) ==
NDIS_HASH_FUNCTION_TOEPLITZ) {
uint32_t type =
- (hash_info->hash_info & NDIS_HASH_TYPE_MASK);
+ (info->hash_info->hash_info & NDIS_HASH_TYPE_MASK);
switch (type) {
case NDIS_HASH_IPV4:
@@ -1450,8 +1447,8 @@
}
}
} else {
- if (hash_value != NULL) {
- m_new->m_pkthdr.flowid = hash_value->hash_value;
+ if (info->hash_value != NULL) {
+ m_new->m_pkthdr.flowid = info->hash_value->hash_value;
} else {
m_new->m_pkthdr.flowid = rxr->hn_rx_idx;
hash_type = M_HASHTYPE_OPAQUE;
Index: sys/dev/hyperv/netvsc/hv_rndis.h
===================================================================
--- sys/dev/hyperv/netvsc/hv_rndis.h
+++ sys/dev/hyperv/netvsc/hv_rndis.h
@@ -1088,11 +1088,10 @@
*/
struct hn_rx_ring;
struct hn_tx_ring;
+struct hn_recvinfo;
int netvsc_recv(struct hn_rx_ring *rxr,
- netvsc_packet *packet, const rndis_tcp_ip_csum_info *csum_info,
- const struct rndis_hash_info *hash_info,
- const struct rndis_hash_value *hash_value);
+ netvsc_packet *packet, const struct hn_recvinfo *info);
void netvsc_channel_rollup(struct hn_rx_ring *rxr, struct hn_tx_ring *txr);
void* hv_set_rppi_data(rndis_msg *rndis_mesg,
Index: sys/dev/hyperv/netvsc/hv_rndis_filter.c
===================================================================
--- sys/dev/hyperv/netvsc/hv_rndis_filter.c
+++ sys/dev/hyperv/netvsc/hv_rndis_filter.c
@@ -52,13 +52,6 @@
#include <dev/hyperv/netvsc/hv_rndis_filter.h>
#include <dev/hyperv/netvsc/if_hnreg.h>
-struct hv_rf_recvinfo {
- const ndis_8021q_info *vlan_info;
- const rndis_tcp_ip_csum_info *csum_info;
- const struct rndis_hash_info *hash_info;
- const struct rndis_hash_value *hash_value;
-};
-
#define HV_RF_RECVINFO_VLAN 0x1
#define HV_RF_RECVINFO_CSUM 0x2
#define HV_RF_RECVINFO_HASHINF 0x4
@@ -444,7 +437,7 @@
}
static int
-hv_rf_find_recvinfo(const rndis_packet *rpkt, struct hv_rf_recvinfo *info)
+hv_rf_find_recvinfo(const rndis_packet *rpkt, struct hn_recvinfo *info)
{
const rndis_per_packet_info *ppi;
uint32_t mask, len;
@@ -530,7 +523,7 @@
{
rndis_packet *rndis_pkt;
uint32_t data_offset;
- struct hv_rf_recvinfo info;
+ struct hn_recvinfo info;
rndis_pkt = &message->msg.packet;
@@ -559,13 +552,7 @@
if_printf(rxr->hn_ifp, "recvinfo parsing failed\n");
return;
}
-
- if (info.vlan_info != NULL)
- pkt->vlan_tci = info.vlan_info->u1.s1.vlan_id;
- else
- pkt->vlan_tci = 0;
-
- netvsc_recv(rxr, pkt, info.csum_info, info.hash_info, info.hash_value);
+ netvsc_recv(rxr, pkt, &info);
}
/*
Index: sys/dev/hyperv/netvsc/if_hnvar.h
===================================================================
--- sys/dev/hyperv/netvsc/if_hnvar.h
+++ sys/dev/hyperv/netvsc/if_hnvar.h
@@ -35,7 +35,6 @@
#include <dev/hyperv/netvsc/if_hnreg.h>
struct netvsc_dev_;
-struct nvsp_msg_;
struct vmbus_channel;
struct hn_send_ctx;
@@ -51,6 +50,18 @@
int hn_chim_sz;
};
+struct rndis_hash_info;
+struct rndix_hash_value;
+struct ndis_8021q_info_;
+struct rndis_tcp_ip_csum_info_;
+
+struct hn_recvinfo {
+ const struct ndis_8021q_info_ *vlan_info;
+ const struct rndis_tcp_ip_csum_info_ *csum_info;
+ const struct rndis_hash_info *hash_info;
+ const struct rndis_hash_value *hash_value;
+};
+
#define HN_SEND_CTX_INITIALIZER(cb, cbarg) \
{ \
.hn_cb = cb, \
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jan 2, 2:27 PM (9 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27458246
Default Alt Text
D7541.id19376.diff (5 KB)
Attached To
Mode
D7541: hyperv/hn: Pass RX packet info to netvsc_recv.
Attached
Detach File
Event Timeline
Log In to Comment