Create a constant array with the values of the "phy->signal" for every
rate. Remove all "phy->signal" assignments inside the switch statement
and replace these with a single reading from the new vnt_phy_signal
array.

Signed-off-by: Oscar Carter <oscar.car...@gmx.com>
---
 drivers/staging/vt6656/baseband.c | 101 +++++++-----------------------
 1 file changed, 21 insertions(+), 80 deletions(-)

diff --git a/drivers/staging/vt6656/baseband.c 
b/drivers/staging/vt6656/baseband.c
index a19a563d8bcc..47f93bf6e07b 100644
--- a/drivers/staging/vt6656/baseband.c
+++ b/drivers/staging/vt6656/baseband.c
@@ -115,6 +115,21 @@ static const u16 vnt_frame_time[MAX_RATE] = {
        10, 20, 55, 110, 24, 36, 48, 72, 96, 144, 192, 216
 };

+static const u8 vnt_phy_signal[][2] = {
+       {0x00, 0x00},   /* RATE_1M  */
+       {0x01, 0x09},   /* RATE_2M  */
+       {0x02, 0x0a},   /* RATE_5M  */
+       {0x03, 0x0b},   /* RATE_11M */
+       {0x8b, 0x9b},   /* RATE_6M  */
+       {0x8f, 0x9f},   /* RATE_9M  */
+       {0x8a, 0x9a},   /* RATE_12M */
+       {0x8e, 0x9e},   /* RATE_18M */
+       {0x89, 0x99},   /* RATE_24M */
+       {0x8d, 0x9d},   /* RATE_36M */
+       {0x88, 0x98},   /* RATE_48M */
+       {0x8c, 0x9c}    /* RATE_54M */
+};
+
 /*
  * Description: Calculate data frame transmitting time
  *
@@ -183,6 +198,7 @@ void vnt_get_phy_field(struct vnt_private *priv, u32 
frame_length,
        u32 count = 0;
        u32 tmp;
        int ext_bit;
+       int i, j;
        u8 preamble_type = priv->preamble_type;

        bit_count = frame_length * 8;
@@ -191,27 +207,12 @@ void vnt_get_phy_field(struct vnt_private *priv, u32 
frame_length,
        switch (tx_rate) {
        case RATE_1M:
                count = bit_count;
-
-               phy->signal = 0x00;
-
                break;
        case RATE_2M:
                count = bit_count / 2;
-
-               if (preamble_type == 1)
-                       phy->signal = 0x09;
-               else
-                       phy->signal = 0x01;
-
                break;
        case RATE_5M:
                count = DIV_ROUND_UP(bit_count * 10, 55);
-
-               if (preamble_type == 1)
-                       phy->signal = 0x0a;
-               else
-                       phy->signal = 0x02;
-
                break;
        case RATE_11M:
                count = bit_count / 11;
@@ -224,74 +225,14 @@ void vnt_get_phy_field(struct vnt_private *priv, u32 
frame_length,
                                ext_bit = true;
                }

-               if (preamble_type == 1)
-                       phy->signal = 0x0b;
-               else
-                       phy->signal = 0x03;
-
-               break;
-       case RATE_6M:
-               if (pkt_type == PK_TYPE_11A)
-                       phy->signal = 0x9b;
-               else
-                       phy->signal = 0x8b;
-
-               break;
-       case RATE_9M:
-               if (pkt_type == PK_TYPE_11A)
-                       phy->signal = 0x9f;
-               else
-                       phy->signal = 0x8f;
-
-               break;
-       case RATE_12M:
-               if (pkt_type == PK_TYPE_11A)
-                       phy->signal = 0x9a;
-               else
-                       phy->signal = 0x8a;
-
-               break;
-       case RATE_18M:
-               if (pkt_type == PK_TYPE_11A)
-                       phy->signal = 0x9e;
-               else
-                       phy->signal = 0x8e;
-
-               break;
-       case RATE_24M:
-               if (pkt_type == PK_TYPE_11A)
-                       phy->signal = 0x99;
-               else
-                       phy->signal = 0x89;
-
                break;
-       case RATE_36M:
-               if (pkt_type == PK_TYPE_11A)
-                       phy->signal = 0x9d;
-               else
-                       phy->signal = 0x8d;
+       }

-               break;
-       case RATE_48M:
-               if (pkt_type == PK_TYPE_11A)
-                       phy->signal = 0x98;
-               else
-                       phy->signal = 0x88;
+       i = tx_rate > RATE_54M ? RATE_54M : tx_rate;
+       j = tx_rate > RATE_11M ? pkt_type == PK_TYPE_11A
+                              : preamble_type == PREAMBLE_SHORT;

-               break;
-       case RATE_54M:
-               if (pkt_type == PK_TYPE_11A)
-                       phy->signal = 0x9c;
-               else
-                       phy->signal = 0x8c;
-               break;
-       default:
-               if (pkt_type == PK_TYPE_11A)
-                       phy->signal = 0x9c;
-               else
-                       phy->signal = 0x8c;
-               break;
-       }
+       phy->signal = vnt_phy_signal[i][j];

        if (pkt_type == PK_TYPE_11B) {
                phy->service = 0x00;
--
2.20.1

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to