staging: vt6656: fix C99 // comments in main_usb.c
authorAndres More <more.andres@gmail.com>
Thu, 31 Jan 2013 23:23:07 +0000 (18:23 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 4 Feb 2013 01:32:26 +0000 (17:32 -0800)
Resolved 'do not use C99 // comments' checkpatch errors.
Many warnings about odd indentation were left.

Signed-off-by: Andres More <more.andres@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/vt6656/main_usb.c

index 99ac7eb..d258cb2 100644 (file)
 #include "iowpa.h"
 
 /*---------------------  Static Definitions -------------------------*/
-//static int          msglevel                =MSG_LEVEL_DEBUG;
+/* static int msglevel = MSG_LEVEL_DEBUG; */
 static int          msglevel                =MSG_LEVEL_INFO;
 
-//
-// Define module options
-//
+/*
+ * define module options
+ */
 
-// Version Information
-#define DRIVER_AUTHOR "VIA Networking Technologies, Inc., <lyndonchen@vntek.com.tw>"
+/* version information */
+#define DRIVER_AUTHOR \
+       "VIA Networking Technologies, Inc., <lyndonchen@vntek.com.tw>"
 MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION(DEVICE_FULL_DRV_NAM);
@@ -184,16 +185,16 @@ DEVICE_PARAM(BasebandType, "baseband type");
 DEVICE_PARAM(b80211hEnable, "802.11h mode");
 
 
-//
-// Static vars definitions
-//
+/*
+ * Static vars definitions
+ */
 
 static struct usb_device_id vt6656_table[] = {
        {USB_DEVICE(VNT_USB_VENDOR_ID, VNT_USB_PRODUCT_ID)},
        {}
 };
 
-// Frequency list (map channels to frequencies)
+/* frequency list (map channels to frequencies) */
 /*
 static const long frequency_list[] = {
     2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472, 2484,
@@ -288,7 +289,7 @@ device_set_options(struct vnt_private *pDevice) {
     pDevice->wCTSDuration = 0;
     pDevice->byPreambleType = 0;
     pDevice->bExistSWNetAddr = FALSE;
-//    pDevice->bDiversityRegCtlON = TRUE;
+    /* pDevice->bDiversityRegCtlON = TRUE; */
     pDevice->bDiversityRegCtlON = FALSE;
 }
 
@@ -314,9 +315,9 @@ static void device_init_diversity_timer(struct vnt_private *pDevice)
 }
 
 
-//
-// Initialization of MAC & BBP registers
-//
+/*
+ * initialization of MAC & BBP registers
+ */
 
 static int device_init_registers(struct vnt_private *pDevice,
        DEVICE_INIT_TYPE InitType)
@@ -372,7 +373,7 @@ static int device_init_registers(struct vnt_private *pDevice,
     sInitCmd.byShortRetryLimit = pDevice->byShortRetryLimit;
     sInitCmd.byLongRetryLimit = pDevice->byLongRetryLimit;
 
-    //issue Card_init command to device
+    /* issue card_init command to device */
     ntStatus = CONTROLnsRequestOut(pDevice,
                                     MESSAGE_TYPE_CARDINIT,
                                     0,
@@ -395,7 +396,7 @@ static int device_init_registers(struct vnt_private *pDevice,
             return FALSE;
         }
 
-        //Local ID for AES functions
+       /* local ID for AES functions */
         ntStatus = CONTROLnsRequestIn(pDevice,
                                     MESSAGE_TYPE_READ,
                                     MAC_REG_LOCALID,
@@ -408,10 +409,12 @@ static int device_init_registers(struct vnt_private *pDevice,
             return FALSE;
         }
 
-        // Do MACbSoftwareReset in MACvInitialize
-        // force CCK
+       /* do MACbSoftwareReset in MACvInitialize */
+
+       /* force CCK */
         pDevice->bCCK = TRUE;
-        pDevice->bProtectMode = FALSE;          //Only used in 11g type, sync with ERP IE
+       pDevice->bProtectMode = FALSE;
+       /* only used in 11g type, sync with ERP IE */
         pDevice->bNonERPPresent = FALSE;
         pDevice->bBarkerPreambleMd = FALSE;
         if ( pDevice->bFixRate ) {
@@ -427,13 +430,14 @@ static int device_init_registers(struct vnt_private *pDevice,
 
         pDevice->byTopOFDMBasicRate = RATE_24M;
         pDevice->byTopCCKBasicRate = RATE_1M;
-        pDevice->byRevId = 0;                   //Target to IF pin while programming to RF chip.
+       pDevice->byRevId = 0;
+       /* target to IF pin while programming to RF chip */
         pDevice->byCurPwr = 0xFF;
 
         pDevice->byCCKPwr = pDevice->abyEEPROM[EEP_OFS_PWR_CCK];
         pDevice->byOFDMPwrG = pDevice->abyEEPROM[EEP_OFS_PWR_OFDMG];
-        // Load power Table
-        for (ii=0;ii<14;ii++) {
+       /* load power table */
+       for (ii = 0; ii < 14; ii++) {
             pDevice->abyCCKPwrTbl[ii] = pDevice->abyEEPROM[ii + EEP_OFS_CCK_PWR_TBL];
             if (pDevice->abyCCKPwrTbl[ii] == 0)
                 pDevice->abyCCKPwrTbl[ii] = pDevice->byCCKPwr;
@@ -442,8 +446,10 @@ static int device_init_registers(struct vnt_private *pDevice,
                 pDevice->abyOFDMPwrTbl[ii] = pDevice->byOFDMPwrG;
         }
 
-         //original zonetype is USA,but customize zonetype is europe,
-         // then need recover 12,13 ,14 channel  with 11 channel
+       /*
+        * original zonetype is USA, but custom zonetype is Europe,
+        * then need to recover 12, 13, 14 channels with 11 channel
+        */
           if(((pDevice->abyEEPROM[EEP_OFS_ZONETYPE] == ZoneType_Japan) ||
                (pDevice->abyEEPROM[EEP_OFS_ZONETYPE] == ZoneType_Europe))&&
             (pDevice->byOriginalZonetype == ZoneType_USA)) {
@@ -453,15 +459,14 @@ static int device_init_registers(struct vnt_private *pDevice,
                }
          }
 
-        //{{ RobertYu: 20041124
-        pDevice->byOFDMPwrA = 0x34; // same as RFbMA2829SelectChannel
-        // Load OFDM A Power Table
-        for (ii=0;ii<CB_MAX_CHANNEL_5G;ii++) { //RobertYu:20041224, bug using CB_MAX_CHANNEL
+         pDevice->byOFDMPwrA = 0x34; /* same as RFbMA2829SelectChannel */
+
+         /* load OFDM A power table */
+         for (ii = 0; ii < CB_MAX_CHANNEL_5G; ii++) {
             pDevice->abyOFDMAPwrTbl[ii] = pDevice->abyEEPROM[ii + EEP_OFS_OFDMA_PWR_TBL];
             if (pDevice->abyOFDMAPwrTbl[ii] == 0)
                 pDevice->abyOFDMAPwrTbl[ii] = pDevice->byOFDMPwrA;
         }
-        //}} RobertYu
 
         byAntenna = pDevice->abyEEPROM[EEP_OFS_ANTENNA];
         if (byAntenna & EEP_ANTINV)
@@ -471,7 +476,7 @@ static int device_init_registers(struct vnt_private *pDevice,
 
         byAntenna &= (EEP_ANTENNA_AUX | EEP_ANTENNA_MAIN);
 
-        if (byAntenna == 0) // if not set default is All
+       if (byAntenna == 0) /* if not set default is both */
             byAntenna = (EEP_ANTENNA_AUX | EEP_ANTENNA_MAIN);
 
         if (byAntenna == (EEP_ANTENNA_AUX | EEP_ANTENNA_MAIN)) {
@@ -513,35 +518,34 @@ static int device_init_registers(struct vnt_private *pDevice,
         pDevice->byTMax2 = 4;
         pDevice->ulSQ3TH = 0;
         pDevice->byTMax3 = 64;
-        // -----------------------------------------------------------------
 
-        //Get Auto Fall Back Type
+       /* get Auto Fall Back type */
         pDevice->byAutoFBCtrl = AUTO_FB_0;
 
-        // Set SCAN Time
+       /* set SCAN Time */
         pDevice->uScanTime = WLAN_SCAN_MINITIME;
 
-        // default Auto Mode
-        //pDevice->NetworkType = Ndis802_11Automode;
+       /* default Auto Mode */
+       /* pDevice->NetworkType = Ndis802_11Automode; */
         pDevice->eConfigPHYMode = PHY_TYPE_AUTO;
         pDevice->byBBType = BB_TYPE_11G;
 
-        // initialize BBP registers
+       /* initialize BBP registers */
         pDevice->ulTxPower = 25;
 
-        // Get Channel range
+       /* get channel range */
         pDevice->byMinChannel = 1;
         pDevice->byMaxChannel = CB_MAX_CHANNEL;
 
-        // Get RFType
+       /* get RFType */
         pDevice->byRFType = sInitRsp.byRFType;
 
         if ((pDevice->byRFType & RF_EMU) != 0) {
-            // force change RevID for VT3253 emu
-            pDevice->byRevId = 0x80;
+               /* force change RevID for VT3253 emu */
+               pDevice->byRevId = 0x80;
         }
 
-        // Load EEPROM calibrated vt3266 parameters
+       /* load vt3266 calibration parameters in EEPROM */
         if (pDevice->byRFType == RF_VT3226D0) {
             if((pDevice->abyEEPROM[EEP_OFS_MAJOR_VER] == 0x1) &&
                 (pDevice->abyEEPROM[EEP_OFS_MINOR_VER] >= 0x4)) {
@@ -549,13 +553,32 @@ static int device_init_registers(struct vnt_private *pDevice,
                 byCalibTXDC = pDevice->abyEEPROM[EEP_OFS_CALIB_TX_DC];
                 byCalibRXIQ = pDevice->abyEEPROM[EEP_OFS_CALIB_RX_IQ];
                 if( (byCalibTXIQ || byCalibTXDC || byCalibRXIQ) ) {
-                    ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xFF, 0x03); // CR255, Set BB to support TX/RX IQ and DC compensation Mode
-                    ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xFB, byCalibTXIQ); // CR251, TX I/Q Imbalance Calibration
-                    ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xFC, byCalibTXDC); // CR252, TX DC-Offset Calibration
-                    ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xFD, byCalibRXIQ); // CR253, RX I/Q Imbalance Calibration
+                       /* CR255, enable TX/RX IQ and DC compensation mode */
+                       ControlvWriteByte(pDevice,
+                                         MESSAGE_REQUEST_BBREG,
+                                         0xFF,
+                                         0x03);
+                       /* CR251, TX I/Q Imbalance Calibration */
+                       ControlvWriteByte(pDevice,
+                                         MESSAGE_REQUEST_BBREG,
+                                         0xFB,
+                                         byCalibTXIQ);
+                       /* CR252, TX DC-Offset Calibration */
+                       ControlvWriteByte(pDevice,
+                                         MESSAGE_REQUEST_BBREG,
+                                         0xFC,
+                                         byCalibTXDC);
+                       /* CR253, RX I/Q Imbalance Calibration */
+                       ControlvWriteByte(pDevice,
+                                         MESSAGE_REQUEST_BBREG,
+                                         0xFD,
+                                         byCalibRXIQ);
                 } else {
-                // turn off BB Calibration compensation
-                    ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xFF, 0x0); // CR255
+                       /* CR255, turn off BB Calibration compensation */
+                       ControlvWriteByte(pDevice,
+                                         MESSAGE_REQUEST_BBREG,
+                                         0xFF,
+                                         0x0);
                 }
             }
         }
@@ -564,20 +587,21 @@ static int device_init_registers(struct vnt_private *pDevice,
         pMgmt->uIBSSChannel = pDevice->uChannel;
         CARDbSetMediaChannel(pDevice, pMgmt->uCurrChannel);
 
-        // get Permanent network address
+       /* get permanent network address */
         memcpy(pDevice->abyPermanentNetAddr,&(sInitRsp.byNetAddr[0]),6);
        memcpy(pDevice->abyCurrentNetAddr,
               pDevice->abyPermanentNetAddr,
               ETH_ALEN);
 
-        // if exist SW network address, use SW network address.
-
+       /* if exist SW network address, use it */
        DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Network address = %pM\n",
                pDevice->abyCurrentNetAddr);
     }
 
-    // Set BB and packet type at the same time.
-    // Set Short Slot Time, xIFS, and RSPINF.
+    /*
+     * set BB and packet type at the same time
+     * set Short Slot Time, xIFS, and RSPINF
+     */
     if (pDevice->byBBType == BB_TYPE_11A) {
         CARDbAddBasicRate(pDevice, RATE_6M);
         pDevice->bShortSlotTime = TRUE;
@@ -616,7 +640,7 @@ static int device_init_registers(struct vnt_private *pDevice,
             pDevice->bHWRadioOff = FALSE;
         }
 
-    } //EEP_RADIOCTL_ENABLE
+    }
 
     ControlvMaskByte(pDevice,MESSAGE_REQUEST_MACREG,MAC_REG_PAPEDELAY,LEDSTS_TMLEN,0x38);
     ControlvMaskByte(pDevice,MESSAGE_REQUEST_MACREG,MAC_REG_PAPEDELAY,LEDSTS_STS,LEDSTS_SLOW);
@@ -741,7 +765,7 @@ static void device_free_tx_bufs(struct vnt_private *pDevice)
     for (ii = 0; ii < pDevice->cbTD; ii++) {
 
         pTxContext = pDevice->apTD[ii];
-        //de-allocate URBs
+       /* deallocate URBs */
         if (pTxContext->pUrb) {
             usb_kill_urb(pTxContext->pUrb);
             usb_free_urb(pTxContext->pUrb);
@@ -760,12 +784,12 @@ static void device_free_rx_bufs(struct vnt_private *pDevice)
     for (ii = 0; ii < pDevice->cbRD; ii++) {
 
         pRCB = pDevice->apRCB[ii];
-        //de-allocate URBs
+       /* deallocate URBs */
         if (pRCB->pUrb) {
             usb_kill_urb(pRCB->pUrb);
             usb_free_urb(pRCB->pUrb);
         }
-        //de-allocate skb
+       /* deallocate skb */
         if (pRCB->skb)
             dev_kfree_skb(pRCB->skb);
     }
@@ -807,7 +831,7 @@ static BOOL device_alloc_bufs(struct vnt_private *pDevice)
         }
         pDevice->apTD[ii] = pTxContext;
        pTxContext->pDevice = (void *) pDevice;
-        //allocate URBs
+       /* allocate URBs */
         pTxContext->pUrb = usb_alloc_urb(0, GFP_ATOMIC);
         if (pTxContext->pUrb == NULL) {
             DBG_PRT(MSG_LEVEL_ERR,KERN_ERR "alloc tx urb failed\n");
@@ -816,7 +840,7 @@ static BOOL device_alloc_bufs(struct vnt_private *pDevice)
         pTxContext->bBoolInUse = FALSE;
     }
 
-    // allocate rcb mem
+    /* allocate RCB mem */
        pDevice->pRCBMem = kzalloc((sizeof(RCB) * pDevice->cbRD), GFP_KERNEL);
     if (pDevice->pRCBMem == NULL) {
         DBG_PRT(MSG_LEVEL_ERR,KERN_ERR "%s : alloc rx usb context failed\n", pDevice->dev->name);
@@ -835,7 +859,7 @@ static BOOL device_alloc_bufs(struct vnt_private *pDevice)
 
         pDevice->apRCB[ii] = pRCB;
        pRCB->pDevice = (void *) pDevice;
-        //allocate URBs
+       /* allocate URBs */
         pRCB->pUrb = usb_alloc_urb(0, GFP_ATOMIC);
 
         if (pRCB->pUrb == NULL) {
@@ -974,7 +998,7 @@ static int  device_open(struct net_device *dev)
     MP_SET_FLAG(pDevice, fMP_POST_READS);
     MP_SET_FLAG(pDevice, fMP_POST_WRITES);
 
-   //read config file
+    /* read config file */
     Read_config_file(pDevice);
 
     if (device_init_registers(pDevice, DEVICE_INIT_COLD) == FALSE) {
@@ -983,8 +1007,8 @@ static int  device_open(struct net_device *dev)
     }
 
     device_set_multi(pDevice->dev);
-    // Init for Key Management
 
+    /* init for key management */
     KeyvInitTable(pDevice,&pDevice->sKey);
        memcpy(pDevice->vnt_mgmt.abyMACAddr,
                pDevice->abyCurrentNetAddr, ETH_ALEN);
@@ -1003,7 +1027,7 @@ static int  device_open(struct net_device *dev)
     tasklet_init(&pDevice->ReadWorkItem, (void *)RXvWorkItem, (unsigned long)pDevice);
     tasklet_init(&pDevice->EventWorkItem, (void *)INTvWorkItem, (unsigned long)pDevice);
        add_timer(&pDevice->vnt_mgmt.sTimerSecondCallback);
-    pDevice->int_interval = 100;  //Max 100 microframes.
+       pDevice->int_interval = 100;  /* max 100 microframes */
     pDevice->eEncryptionStatus = Ndis802_11EncryptionDisabled;
 
     pDevice->bIsRxWorkItemQueued = TRUE;
@@ -1021,7 +1045,7 @@ static int  device_open(struct net_device *dev)
     RXvWorkItem(pDevice);
     INTvWorkItem(pDevice);
 
-    // Patch: if WEP key already set by iwconfig but device not yet open
+    /* if WEP key already set by iwconfig but device not yet open */
     if ((pDevice->bEncryptionEnable == TRUE) && (pDevice->bTransmitKey == TRUE)) {
          spin_lock_irq(&pDevice->lock);
          KeybSetDefaultKey( pDevice,
@@ -1221,7 +1245,7 @@ static inline u32 ether_crc(int length, unsigned char *data)
     return crc;
 }
 
-//find out the start  position of str2 from str1
+/* find out the start position of str2 from str1 */
 static unsigned char *kstrstr(const unsigned char *str1,
                              const unsigned char *str2) {
   int str1_len = strlen(str1);
@@ -1250,12 +1274,12 @@ static int Config_FileGetParameter(unsigned char *string,
     strcat(buf1, "=");
     source+=strlen(buf1);
 
-//find target string start point
+    /* find target string start point */
     start_p = kstrstr(source,buf1);
     if (start_p == NULL)
        return FALSE;
 
-//check if current config line is marked by "#" ??
+    /* check if current config line is marked by "#" */
     for (ii = 1; ; ii++) {
        if (memcmp(start_p - ii, "\n", 1) == 0)
                break;
@@ -1263,24 +1287,24 @@ static int Config_FileGetParameter(unsigned char *string,
                return FALSE;
     }
 
-//find target string end point
+    /* find target string end point */
      end_p = kstrstr(start_p,"\n");
-     if (end_p == NULL) {       //can't find "\n",but don't care
-          end_p=start_p+strlen(start_p);   //no include "\n"
-       }
+     if (end_p == NULL) {       /* can't find "\n", but don't care */
+            end_p = start_p + strlen(start_p);   /* no include "\n" */
+     }
 
    memset(buf2,0,100);
-   memcpy(buf2,start_p,end_p-start_p);    //get the target line
+   memcpy(buf2, start_p, end_p-start_p); /* get the target line */
    buf2[end_p-start_p]='\0';
 
-   //find value
+   /* find value */
    start_p = kstrstr(buf2,"=");
    if (start_p == NULL)
       return FALSE;
    memset(buf1,0,100);
    strcpy(buf1,start_p+1);
 
-  //except space
+   /* except space */
   tmp_p = buf1;
   while(*tmp_p != 0x00) {
        if(*tmp_p==' ')
@@ -1293,26 +1317,19 @@ static int Config_FileGetParameter(unsigned char *string,
  return TRUE;
 }
 
-//if read fail,return NULL,or return data pointer;
+/* if read fails, return NULL, or return data pointer */
 static unsigned char *Config_FileOperation(struct vnt_private *pDevice)
 {
     unsigned char *config_path = CONFIG_PATH;
     unsigned char *buffer = NULL;
     struct file   *filp=NULL;
     mm_segment_t old_fs = get_fs();
-    //int oldfsuid=0,oldfsgid=0;
+
     int result = 0;
 
     set_fs (KERNEL_DS);
-    /* Can't do this anymore, so we rely on correct filesystem permissions:
-    //Make sure a caller can read or write power as root
-    oldfsuid=current->fsuid;
-    oldfsgid=current->fsgid;
-    current->fsuid = 0;
-    current->fsgid = 0;
-    */
-
-    //open file
+
+    /* open file */
       filp = filp_open(config_path, O_RDWR, 0);
         if (IS_ERR(filp)) {
             printk("Config_FileOperation file Not exist\n");
@@ -1345,11 +1362,6 @@ error1:
 error2:
   set_fs (old_fs);
 
-  /*
-  current->fsuid=oldfsuid;
-  current->fsgid=oldfsgid;
-  */
-
 if(result!=0) {
     kfree(buffer);
     buffer=NULL;
@@ -1357,14 +1369,14 @@ if(result!=0) {
   return buffer;
 }
 
-//return --->-1:fail;  >=0:successful
+/* return --->-1:fail; >=0:successful */
 static int Read_config_file(struct vnt_private *pDevice)
 {
        int result = 0;
        unsigned char tmpbuffer[100];
        unsigned char *buffer = NULL;
 
-  //init config setting
+       /* init config setting */
  pDevice->config_file.ZoneType = -1;
  pDevice->config_file.eAuthenMode = -1;
  pDevice->config_file.eEncryptionStatus = -1;
@@ -1375,7 +1387,7 @@ static int Read_config_file(struct vnt_private *pDevice)
      return result;
   }
 
-//get zonetype
+/* get zonetype */
 {
     memset(tmpbuffer,0,sizeof(tmpbuffer));
     if(Config_FileGetParameter("ZONETYPE",tmpbuffer,buffer) ==TRUE) {
@@ -1394,7 +1406,7 @@ static int Read_config_file(struct vnt_private *pDevice)
  }
 }
 
-//get other parameter
+/* get other parameter */
   {
        memset(tmpbuffer,0,sizeof(tmpbuffer));
        if(Config_FileGetParameter("AUTHENMODE",tmpbuffer,buffer)==TRUE) {
@@ -1435,9 +1447,9 @@ static void device_set_multi(struct net_device *dev)
 
     DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "pDevice->byRxMode in= %x\n", pDevice->byRxMode);
 
-    if (dev->flags & IFF_PROMISC) {         // Set promiscuous.
+    if (dev->flags & IFF_PROMISC) { /* set promiscuous mode */
         DBG_PRT(MSG_LEVEL_ERR,KERN_NOTICE "%s: Promiscuous mode enabled.\n", dev->name);
-        // Unconditionally log net taps.
+       /* unconditionally log net taps */
         pDevice->byRxMode |= (RCR_MULTICAST|RCR_BROADCAST|RCR_UNICAST);
     }
     else if ((netdev_mc_count(dev) > pDevice->multicast_limit) ||
@@ -1466,7 +1478,10 @@ static void device_set_multi(struct net_device *dev)
     }
 
     if (pMgmt->eConfigMode == WMAC_CONFIG_AP) {
-        // If AP mode, don't enable RCR_UNICAST. Since hw only compare addr1 with local mac.
+       /*
+        * If AP mode, don't enable RCR_UNICAST since HW only compares
+        * addr1 with local MAC
+        */
         pDevice->byRxMode |= (RCR_MULTICAST|RCR_BROADCAST);
         pDevice->byRxMode &= ~(RCR_UNICAST);
     }
@@ -1530,9 +1545,6 @@ static int ethtool_ioctl(struct net_device *dev, void *useraddr)
        return -EOPNOTSUPP;
 }
 
-
-/*------------------------------------------------------------------*/
-
 MODULE_DEVICE_TABLE(usb, vt6656_table);
 
 static struct usb_driver vt6656_driver = {