net: add rte prefix to ether structures
[dpdk.git] / drivers / net / tap / rte_eth_tap.c
index 9aae4c7..71be763 100644 (file)
@@ -261,7 +261,7 @@ tap_verify_csum(struct rte_mbuf *mbuf)
        uint32_t l2 = mbuf->packet_type & RTE_PTYPE_L2_MASK;
        uint32_t l3 = mbuf->packet_type & RTE_PTYPE_L3_MASK;
        uint32_t l4 = mbuf->packet_type & RTE_PTYPE_L4_MASK;
-       unsigned int l2_len = sizeof(struct ether_hdr);
+       unsigned int l2_len = sizeof(struct rte_ether_hdr);
        unsigned int l3_len;
        uint16_t cksum = 0;
        void *l3_hdr;
@@ -760,9 +760,9 @@ tap_ioctl(struct pmd_internals *pmd, unsigned long request,
         */
 apply:
        if (remote)
-               snprintf(ifr->ifr_name, IFNAMSIZ, "%s", pmd->remote_iface);
+               strlcpy(ifr->ifr_name, pmd->remote_iface, IFNAMSIZ);
        else if (mode == LOCAL_ONLY || mode == LOCAL_AND_REMOTE)
-               snprintf(ifr->ifr_name, IFNAMSIZ, "%s", pmd->name);
+               strlcpy(ifr->ifr_name, pmd->name, IFNAMSIZ);
        switch (request) {
        case SIOCSIFFLAGS:
                /* fetch current flags to leave other flags untouched */
@@ -1150,7 +1150,7 @@ tap_allmulti_disable(struct rte_eth_dev *dev)
 }
 
 static int
-tap_mac_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)
+tap_mac_set(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr)
 {
        struct pmd_internals *pmd = dev->data->dev_private;
        enum ioctl_mode mode = LOCAL_ONLY;
@@ -1172,15 +1172,16 @@ tap_mac_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)
        ret = tap_ioctl(pmd, SIOCGIFHWADDR, &ifr, 0, LOCAL_ONLY);
        if (ret < 0)
                return ret;
-       if (is_same_ether_addr((struct ether_addr *)&ifr.ifr_hwaddr.sa_data,
+       if (is_same_ether_addr((struct rte_ether_addr *)&ifr.ifr_hwaddr.sa_data,
                               mac_addr))
                return 0;
        /* Check the current MAC address on the remote */
        ret = tap_ioctl(pmd, SIOCGIFHWADDR, &ifr, 0, REMOTE_ONLY);
        if (ret < 0)
                return ret;
-       if (!is_same_ether_addr((struct ether_addr *)&ifr.ifr_hwaddr.sa_data,
-                              mac_addr))
+       if (!is_same_ether_addr(
+                       (struct rte_ether_addr *)&ifr.ifr_hwaddr.sa_data,
+                       mac_addr))
                mode = LOCAL_AND_REMOTE;
        ifr.ifr_hwaddr.sa_family = AF_LOCAL;
        rte_memcpy(ifr.ifr_hwaddr.sa_data, mac_addr, ETHER_ADDR_LEN);
@@ -1458,7 +1459,7 @@ tap_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
 
 static int
 tap_set_mc_addr_list(struct rte_eth_dev *dev __rte_unused,
-                    struct ether_addr *mc_addr_set __rte_unused,
+                    struct rte_ether_addr *mc_addr_set __rte_unused,
                     uint32_t nb_mc_addr __rte_unused)
 {
        /*
@@ -1682,7 +1683,7 @@ static const char *tuntap_types[ETH_TUNTAP_TYPE_MAX] = {
 
 static int
 eth_dev_tap_create(struct rte_vdev_device *vdev, const char *tap_name,
-                  char *remote_iface, struct ether_addr *mac_addr,
+                  char *remote_iface, struct rte_ether_addr *mac_addr,
                   enum rte_tuntap_type type)
 {
        int numa_node = rte_socket_id();
@@ -1714,7 +1715,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, const char *tap_name,
        pmd = dev->data->dev_private;
        dev->process_private = process_private;
        pmd->dev = dev;
-       snprintf(pmd->name, sizeof(pmd->name), "%s", tap_name);
+       strlcpy(pmd->name, tap_name, sizeof(pmd->name));
        pmd->type = type;
 
        pmd->ioctl_sock = socket(AF_INET, SOCK_DGRAM, 0);
@@ -1823,8 +1824,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, const char *tap_name,
                                pmd->name, remote_iface);
                        goto error_remote;
                }
-               snprintf(pmd->remote_iface, RTE_ETH_NAME_MAX_LEN,
-                        "%s", remote_iface);
+               strlcpy(pmd->remote_iface, remote_iface, RTE_ETH_NAME_MAX_LEN);
 
                /* Save state of remote device */
                tap_ioctl(pmd, SIOCGIFFLAGS, &pmd->remote_initial_flags, 0, REMOTE_ONLY);
@@ -1958,7 +1958,7 @@ set_remote_iface(const char *key __rte_unused,
        return 0;
 }
 
-static int parse_user_mac(struct ether_addr *user_mac,
+static int parse_user_mac(struct rte_ether_addr *user_mac,
                const char *value)
 {
        unsigned int index = 0;
@@ -1986,7 +1986,7 @@ set_mac_type(const char *key __rte_unused,
             const char *value,
             void *extra_args)
 {
-       struct ether_addr *user_mac = extra_args;
+       struct rte_ether_addr *user_mac = extra_args;
 
        if (!value)
                return 0;
@@ -2102,7 +2102,7 @@ tap_mp_attach_queues(const char *port_name, struct rte_eth_dev *dev)
        request.len_param = sizeof(*request_param);
        /* Send request and receive reply */
        ret = rte_mp_request_sync(&request, &replies, &timeout);
-       if (ret < 0) {
+       if (ret < 0 || replies.nb_received != 1) {
                TAP_LOG(ERR, "Failed to request queues from primary: %d",
                        rte_errno);
                return -1;
@@ -2112,6 +2112,11 @@ tap_mp_attach_queues(const char *port_name, struct rte_eth_dev *dev)
        TAP_LOG(DEBUG, "Received IPC reply for %s", reply_param->port_name);
 
        /* Attach the queues from received file descriptors */
+       if (reply_param->rxq_count + reply_param->txq_count != reply->num_fds) {
+               TAP_LOG(ERR, "Unexpected number of fds received");
+               return -1;
+       }
+
        dev->data->nb_rx_queues = reply_param->rxq_count;
        dev->data->nb_tx_queues = reply_param->txq_count;
        fd_iterator = 0;
@@ -2119,7 +2124,7 @@ tap_mp_attach_queues(const char *port_name, struct rte_eth_dev *dev)
                process_private->rxq_fds[queue] = reply->fds[fd_iterator++];
        for (queue = 0; queue < reply_param->txq_count; queue++)
                process_private->txq_fds[queue] = reply->fds[fd_iterator++];
-
+       free(reply);
        return 0;
 }
 
@@ -2152,19 +2157,24 @@ tap_mp_sync_queues(const struct rte_mp_msg *request, const void *peer)
        /* Fill file descriptors for all queues */
        reply.num_fds = 0;
        reply_param->rxq_count = 0;
+       if (dev->data->nb_rx_queues + dev->data->nb_tx_queues >
+                       RTE_MP_MAX_FD_NUM){
+               TAP_LOG(ERR, "Number of rx/tx queues exceeds max number of fds");
+               return -1;
+       }
+
        for (queue = 0; queue < dev->data->nb_rx_queues; queue++) {
                reply.fds[reply.num_fds++] = process_private->rxq_fds[queue];
                reply_param->rxq_count++;
        }
        RTE_ASSERT(reply_param->rxq_count == dev->data->nb_rx_queues);
-       RTE_ASSERT(reply_param->txq_count == dev->data->nb_tx_queues);
-       RTE_ASSERT(reply.num_fds <= RTE_MP_MAX_FD_NUM);
 
        reply_param->txq_count = 0;
        for (queue = 0; queue < dev->data->nb_tx_queues; queue++) {
                reply.fds[reply.num_fds++] = process_private->txq_fds[queue];
                reply_param->txq_count++;
        }
+       RTE_ASSERT(reply_param->txq_count == dev->data->nb_tx_queues);
 
        /* Send reply */
        strlcpy(reply.name, request->name, sizeof(reply.name));
@@ -2189,7 +2199,7 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev)
        int speed;
        char tap_name[RTE_ETH_NAME_MAX_LEN];
        char remote_iface[RTE_ETH_NAME_MAX_LEN];
-       struct ether_addr user_mac = { .addr_bytes = {0} };
+       struct rte_ether_addr user_mac = { .addr_bytes = {0} };
        struct rte_eth_dev *eth_dev;
        int tap_devices_count_increased = 0;