"Could not get RID" error - RID len mismatch

Michal Semler cijoml at volny.cz
Thu Mar 20 12:51:06 EST 2003


please send diff against latest CVS.

Michal

Dne ?t 20. b?ezen 2003 12:42 jste napsal(a):
> I modified the sources from version 2002-10-12 of HostAP.
> Here is the patch of my modifications.
> Copy the diff above in the file "hostap_pci.patch" and apply with "patch
> -p1 < hostap_pci.patch".
>
> Hope it will be useful !
>
> Chris
>
> ---------------------------------------------- cut here
> ----------------------------------------------- --- old/hostap_hw.c Thu Mar
> 20 13:38:53 2003
> +++ new/hostap_hw.c Thu Mar 20 13:39:36 2003
> @@ -696,9 +696,7 @@
>   return 0;
>  }
>
> -
> -static int hfa384x_get_rid(struct net_device *dev, u16 rid, void *buf, int
> len, -      int exact_len)
> +static int hfa384x_get_rid_deported(struct net_device *dev, u16 rid, void
> *buf, int len, int exact_len) {
>   local_info_t *local = (local_info_t *) dev->priv;
>   int res, rlen = 0;
> @@ -750,6 +748,19 @@
>   return rlen;
>  }
>
> +static int hfa384x_get_rid(struct net_device *dev, u16 rid, void *buf, int
> len, int exact_len) +{
> + int ret;
> + int counter = 0;
> +
> + ret = hfa384x_get_rid_deported(dev, rid, buf, len, exact_len);
> + while((ret < 0) && (counter<20)) {
> +  counter++;
> +  ret = hfa384x_get_rid_deported(dev, rid, buf, len, exact_len);
> + }
> +
> + return ret;
> +}
>
>  static int hfa384x_set_rid(struct net_device *dev, u16 rid, void *buf, int
> len) {
> @@ -884,13 +895,21 @@
>  }
>
>
> -static int prism2_get_version_info(struct net_device *dev, u16 rid,
> -       const char *txt)
> +static int prism2_get_version_info(struct net_device *dev, u16 rid, const
> char *txt) {
>   struct hfa384x_comp_ident comp;
> + int ret;
> + int counter = 0;
>
> - if (hfa384x_get_rid(dev, rid, &comp, sizeof(comp), 1) < 0) {
> -  printk(KERN_DEBUG "Could not get RID for component %s\n", txt);
> + ret = hfa384x_get_rid(dev, rid, &comp, sizeof(comp), 1);
> + printk(KERN_DEBUG "Reading %s with multiple attempts :\n", txt);
> + while((ret < 0) && (counter<20)) {
> +  counter++;
> +  ret = hfa384x_get_rid(dev, rid, &comp, sizeof(comp), 1);
> + }
> +
> + if (counter>=20) {
> +  printk(KERN_DEBUG "\nAborting\nCould not get RID for component %s\n",
> txt); return -1;
>   }
>
> @@ -1077,6 +1096,8 @@
>  {
>   local_info_t *local = (local_info_t *) dev->priv;
>   int ret, i, first = 1;
> + int counter = 0;
> +
>
>   PDEBUG(DEBUG_FLOW, "prism2_hw_init()\n");
>
> @@ -1165,11 +1186,20 @@
>
>    prism2_check_sta_fw_version(local);
>
> -  if (hfa384x_get_rid(dev, HFA384X_RID_CNFOWNMACADDR,
> -        &dev->dev_addr, 6, 1) < 0) {
> -   printk("%s: could not get own MAC address\n",
> -          dev->name);
> +  ret = hfa384x_get_rid(dev, HFA384X_RID_CNFOWNMACADDR, &dev->dev_addr, 6,
> 1); +  printk(KERN_DEBUG "Reading MAC address with multiple attempts :\n");
> +  while((ret < 0) && (counter<20)) {
> +   counter++;
> +   ret = hfa384x_get_rid(dev, HFA384X_RID_CNFOWNMACADDR, &dev->dev_addr,
> 6, 1); }
> +
> +  if (counter>=20) {
> +   printk(KERN_DEBUG "\nAborting\n%s: could not get own MAC address\n",
> dev->name); +   return -1;
> +  }
> +
> +  printk(KERN_DEBUG "%s: MAC address OK\n", dev->name);
> +
>  #ifdef PRISM2_HOSTAPD
>    memcpy(local->apdev->dev_addr, dev->dev_addr, ETH_ALEN);
>  #endif /* PRISM2_HOSTAPD */
> ---------------------------------------------- cut here
> -----------------------------------------------



More information about the HostAP mailing list