replace packed attributes
[dpdk.git] / examples / l3fwd-power / main.c
index e90d18b..0cd9e6f 100644 (file)
@@ -280,7 +280,7 @@ struct ipv4_5tuple {
        uint16_t port_dst;
        uint16_t port_src;
        uint8_t  proto;
-} __attribute__((__packed__));
+} __rte_packed;
 
 struct ipv6_5tuple {
        uint8_t  ip_dst[IPV6_ADDR_LEN];
@@ -288,7 +288,7 @@ struct ipv6_5tuple {
        uint16_t port_dst;
        uint16_t port_src;
        uint8_t  proto;
-} __attribute__((__packed__));
+} __rte_packed;
 
 struct ipv4_l3fwd_route {
        struct ipv4_5tuple key;
@@ -870,9 +870,6 @@ sleep_until_rx_interrupt(int num)
                port_id = ((uintptr_t)data) >> CHAR_BIT;
                queue_id = ((uintptr_t)data) &
                        RTE_LEN2MASK(CHAR_BIT, uint8_t);
-               rte_spinlock_lock(&(locks[port_id]));
-               rte_eth_dev_rx_intr_disable(port_id, queue_id);
-               rte_spinlock_unlock(&(locks[port_id]));
                RTE_LOG(INFO, L3FWD_POWER,
                        "lcore %u is waked up from rx interrupt on"
                        " port %d queue %d\n",
@@ -882,7 +879,7 @@ sleep_until_rx_interrupt(int num)
        return 0;
 }
 
-static void turn_on_intr(struct lcore_conf *qconf)
+static void turn_on_off_intr(struct lcore_conf *qconf, bool on)
 {
        int i;
        struct lcore_rx_queue *rx_queue;
@@ -895,7 +892,10 @@ static void turn_on_intr(struct lcore_conf *qconf)
                queue_id = rx_queue->queue_id;
 
                rte_spinlock_lock(&(locks[port_id]));
-               rte_eth_dev_rx_intr_enable(port_id, queue_id);
+               if (on)
+                       rte_eth_dev_rx_intr_enable(port_id, queue_id);
+               else
+                       rte_eth_dev_rx_intr_disable(port_id, queue_id);
                rte_spinlock_unlock(&(locks[port_id]));
        }
 }
@@ -1328,11 +1328,12 @@ start_rx:
                                 */
                                rte_delay_us(lcore_idle_hint);
                        else {
-                               /* suspend until rx interrupt trigges */
+                               /* suspend until rx interrupt triggers */
                                if (intr_en) {
-                                       turn_on_intr(qconf);
+                                       turn_on_off_intr(qconf, 1);
                                        sleep_until_rx_interrupt(
                                                qconf->n_rx_queue);
+                                       turn_on_off_intr(qconf, 0);
                                        /**
                                         * start receiving packets immediately
                                         */