net: thunderx: mailboxes: remove code duplication
authorSunil Goutham <sgoutham@cavium.com>
Sun, 30 Aug 2015 09:29:11 +0000 (12:29 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 31 Aug 2015 04:54:11 +0000 (21:54 -0700)
Use the nicvf_send_msg_to_pf() function in the mailbox code.

Signed-off-by: Sunil Goutham <sgoutham@cavium.com>
Signed-off-by: Robert Richter <rrichter@cavium.com>
Signed-off-by: Aleksey Makarov <aleksey.makarov@caviumnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cavium/thunder/nic.h
drivers/net/ethernet/cavium/thunder/nicvf_main.c

index 58adfd64e506af5ff0ce4768269eac1a1cb1cbd7..a83f567a574004b91250afa92eb75c4e78860544 100644 (file)
@@ -295,10 +295,9 @@ struct nicvf {
        char                    irq_name[NIC_VF_MSIX_VECTORS][20];
        bool                    irq_allocated[NIC_VF_MSIX_VECTORS];
 
-       bool                    pf_ready_to_rcv_msg;
+       /* VF <-> PF mailbox communication */
        bool                    pf_acked;
        bool                    pf_nacked;
-       bool                    bgx_stats_acked;
        bool                    set_mac_pending;
 } ____cacheline_aligned_in_smp;
 
index 670ff9bf90b04128281a3076cbf928bc6a9e2712..d4ad36e6bac0b9e4886917693a23aeec504106ce 100644 (file)
@@ -105,7 +105,6 @@ u64 nicvf_queue_reg_read(struct nicvf *nic, u64 offset, u64 qidx)
 }
 
 /* VF -> PF mailbox communication */
-
 static void nicvf_write_to_mbx(struct nicvf *nic, union nic_mbx *mbx)
 {
        u64 *msg = (u64 *)mbx;
@@ -147,26 +146,15 @@ int nicvf_send_msg_to_pf(struct nicvf *nic, union nic_mbx *mbx)
 */
 static int nicvf_check_pf_ready(struct nicvf *nic)
 {
-       int timeout = 5000, sleep = 20;
        union nic_mbx mbx = {};
 
        mbx.msg.msg = NIC_MBOX_MSG_READY;
-
-       nic->pf_ready_to_rcv_msg = false;
-
-       nicvf_write_to_mbx(nic, &mbx);
-
-       while (!nic->pf_ready_to_rcv_msg) {
-               msleep(sleep);
-               if (nic->pf_ready_to_rcv_msg)
-                       break;
-               timeout -= sleep;
-               if (!timeout) {
-                       netdev_err(nic->netdev,
-                                  "PF didn't respond to READY msg\n");
-                       return 0;
-               }
+       if (nicvf_send_msg_to_pf(nic, &mbx)) {
+               netdev_err(nic->netdev,
+                          "PF didn't respond to READY msg\n");
+               return 0;
        }
+
        return 1;
 }
 
@@ -197,7 +185,7 @@ static void  nicvf_handle_mbx_intr(struct nicvf *nic)
        netdev_dbg(nic->netdev, "Mbox message: msg: 0x%x\n", mbx.msg.msg);
        switch (mbx.msg.msg) {
        case NIC_MBOX_MSG_READY:
-               nic->pf_ready_to_rcv_msg = true;
+               nic->pf_acked = true;
                nic->vf_id = mbx.nic_cfg.vf_id & 0x7F;
                nic->tns_mode = mbx.nic_cfg.tns_mode & 0x7F;
                nic->node = mbx.nic_cfg.node_id;
@@ -221,7 +209,6 @@ static void  nicvf_handle_mbx_intr(struct nicvf *nic)
        case NIC_MBOX_MSG_BGX_STATS:
                nicvf_read_bgx_stats(nic, &mbx.bgx_stats);
                nic->pf_acked = true;
-               nic->bgx_stats_acked = true;
                break;
        case NIC_MBOX_MSG_BGX_LINK_CHANGE:
                nic->pf_acked = true;
@@ -1083,7 +1070,6 @@ void nicvf_update_lmac_stats(struct nicvf *nic)
 {
        int stat = 0;
        union nic_mbx mbx = {};
-       int timeout;
 
        if (!netif_running(nic->netdev))
                return;
@@ -1093,14 +1079,9 @@ void nicvf_update_lmac_stats(struct nicvf *nic)
        /* Rx stats */
        mbx.bgx_stats.rx = 1;
        while (stat < BGX_RX_STATS_COUNT) {
-               nic->bgx_stats_acked = 0;
                mbx.bgx_stats.idx = stat;
-               nicvf_send_msg_to_pf(nic, &mbx);
-               timeout = 0;
-               while ((!nic->bgx_stats_acked) && (timeout < 10)) {
-                       msleep(2);
-                       timeout++;
-               }
+               if (nicvf_send_msg_to_pf(nic, &mbx))
+                       return;
                stat++;
        }
 
@@ -1109,14 +1090,9 @@ void nicvf_update_lmac_stats(struct nicvf *nic)
        /* Tx stats */
        mbx.bgx_stats.rx = 0;
        while (stat < BGX_TX_STATS_COUNT) {
-               nic->bgx_stats_acked = 0;
                mbx.bgx_stats.idx = stat;
-               nicvf_send_msg_to_pf(nic, &mbx);
-               timeout = 0;
-               while ((!nic->bgx_stats_acked) && (timeout < 10)) {
-                       msleep(2);
-                       timeout++;
-               }
+               if (nicvf_send_msg_to_pf(nic, &mbx))
+                       return;
                stat++;
        }
 }