git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/mlx5: make VLAN network interface thread safe
[dpdk.git]
/
drivers
/
net
/
tap
/
rte_eth_tap.c
diff --git
a/drivers/net/tap/rte_eth_tap.c
b/drivers/net/tap/rte_eth_tap.c
index
b127ce6
..
2f8abb1
100644
(file)
--- a/
drivers/net/tap/rte_eth_tap.c
+++ b/
drivers/net/tap/rte_eth_tap.c
@@
-316,8
+316,7
@@
tap_verify_csum(struct rte_mbuf *mbuf)
if (l3 == RTE_PTYPE_L3_IPV4 || l3 == RTE_PTYPE_L3_IPV4_EXT) {
struct rte_ipv4_hdr *iph = l3_hdr;
if (l3 == RTE_PTYPE_L3_IPV4 || l3 == RTE_PTYPE_L3_IPV4_EXT) {
struct rte_ipv4_hdr *iph = l3_hdr;
- /* ihl contains the number of 4-byte words in the header */
- l3_len = 4 * (iph->version_ihl & 0xf);
+ l3_len = rte_ipv4_hdr_len(iph);
if (unlikely(l2_len + l3_len > rte_pktmbuf_data_len(mbuf)))
return;
/* check that the total length reported by header is not
if (unlikely(l2_len + l3_len > rte_pktmbuf_data_len(mbuf)))
return;
/* check that the total length reported by header is not
@@
-752,8
+751,16
@@
pmd_tx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
if (num_tso_mbufs < 0)
break;
if (num_tso_mbufs < 0)
break;
- mbuf = gso_mbufs;
- num_mbufs = num_tso_mbufs;
+ if (num_tso_mbufs >= 1) {
+ mbuf = gso_mbufs;
+ num_mbufs = num_tso_mbufs;
+ } else {
+ /* 0 means it can be transmitted directly
+ * without gso.
+ */
+ mbuf = &mbuf_in;
+ num_mbufs = 1;
+ }
} else {
/* stats.errs will be incremented */
if (rte_pktmbuf_pkt_len(mbuf_in) > max_size)
} else {
/* stats.errs will be incremented */
if (rte_pktmbuf_pkt_len(mbuf_in) > max_size)
@@
-901,7
+908,7
@@
tap_dev_start(struct rte_eth_dev *dev)
/* This function gets called when the current port gets stopped.
*/
/* This function gets called when the current port gets stopped.
*/
-static
void
+static
int
tap_dev_stop(struct rte_eth_dev *dev)
{
int i;
tap_dev_stop(struct rte_eth_dev *dev)
{
int i;
@@
-913,6
+920,8
@@
tap_dev_stop(struct rte_eth_dev *dev)
tap_intr_handle_set(dev, 0);
tap_link_set_down(dev);
tap_intr_handle_set(dev, 0);
tap_link_set_down(dev);
+
+ return 0;
}
static int
}
static int
@@
-1134,7
+1143,6
@@
tap_dev_close(struct rte_eth_dev *dev)
internals->ioctl_sock = -1;
}
rte_free(dev->process_private);
internals->ioctl_sock = -1;
}
rte_free(dev->process_private);
- dev->process_private = NULL;
if (tap_devices_count == 1)
rte_mp_action_unregister(TAP_MP_KEY);
tap_devices_count--;
if (tap_devices_count == 1)
rte_mp_action_unregister(TAP_MP_KEY);
tap_devices_count--;
@@
-1922,7
+1930,8
@@
eth_dev_tap_create(struct rte_vdev_device *vdev, const char *tap_name,
/* Setup some default values */
data = dev->data;
data->dev_private = pmd;
/* Setup some default values */
data = dev->data;
data->dev_private = pmd;
- data->dev_flags = RTE_ETH_DEV_INTR_LSC;
+ data->dev_flags = RTE_ETH_DEV_INTR_LSC |
+ RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
data->numa_node = numa_node;
data->dev_link = pmd_link;
data->numa_node = numa_node;
data->dev_link = pmd_link;