|
@@ -177,9 +177,9 @@ int determine_fw_capabilities(struct orinoco_private *priv,
|
|
/* 3Com MAC : 00:50:DA:* */
|
|
/* 3Com MAC : 00:50:DA:* */
|
|
memset(tmp, 0, sizeof(tmp));
|
|
memset(tmp, 0, sizeof(tmp));
|
|
/* Get the Symbol firmware version */
|
|
/* Get the Symbol firmware version */
|
|
- err = hermes_read_ltv(hw, USER_BAP,
|
|
|
|
- HERMES_RID_SECONDARYVERSION_SYMBOL,
|
|
|
|
- SYMBOL_MAX_VER_LEN, NULL, &tmp);
|
|
|
|
|
|
+ err = hw->ops->read_ltv(hw, USER_BAP,
|
|
|
|
+ HERMES_RID_SECONDARYVERSION_SYMBOL,
|
|
|
|
+ SYMBOL_MAX_VER_LEN, NULL, &tmp);
|
|
if (err) {
|
|
if (err) {
|
|
dev_warn(dev, "Error %d reading Symbol firmware info. "
|
|
dev_warn(dev, "Error %d reading Symbol firmware info. "
|
|
"Wildly guessing capabilities...\n", err);
|
|
"Wildly guessing capabilities...\n", err);
|
|
@@ -286,8 +286,8 @@ int orinoco_hw_read_card_settings(struct orinoco_private *priv, u8 *dev_addr)
|
|
u16 reclen;
|
|
u16 reclen;
|
|
|
|
|
|
/* Get the MAC address */
|
|
/* Get the MAC address */
|
|
- err = hermes_read_ltv(hw, USER_BAP, HERMES_RID_CNFOWNMACADDR,
|
|
|
|
- ETH_ALEN, NULL, dev_addr);
|
|
|
|
|
|
+ err = hw->ops->read_ltv(hw, USER_BAP, HERMES_RID_CNFOWNMACADDR,
|
|
|
|
+ ETH_ALEN, NULL, dev_addr);
|
|
if (err) {
|
|
if (err) {
|
|
dev_warn(dev, "Failed to read MAC address!\n");
|
|
dev_warn(dev, "Failed to read MAC address!\n");
|
|
goto out;
|
|
goto out;
|
|
@@ -296,8 +296,8 @@ int orinoco_hw_read_card_settings(struct orinoco_private *priv, u8 *dev_addr)
|
|
dev_dbg(dev, "MAC address %pM\n", dev_addr);
|
|
dev_dbg(dev, "MAC address %pM\n", dev_addr);
|
|
|
|
|
|
/* Get the station name */
|
|
/* Get the station name */
|
|
- err = hermes_read_ltv(hw, USER_BAP, HERMES_RID_CNFOWNNAME,
|
|
|
|
- sizeof(nickbuf), &reclen, &nickbuf);
|
|
|
|
|
|
+ err = hw->ops->read_ltv(hw, USER_BAP, HERMES_RID_CNFOWNNAME,
|
|
|
|
+ sizeof(nickbuf), &reclen, &nickbuf);
|
|
if (err) {
|
|
if (err) {
|
|
dev_err(dev, "failed to read station name\n");
|
|
dev_err(dev, "failed to read station name\n");
|
|
goto out;
|
|
goto out;
|
|
@@ -413,11 +413,11 @@ int orinoco_hw_allocate_fid(struct orinoco_private *priv)
|
|
struct hermes *hw = &priv->hw;
|
|
struct hermes *hw = &priv->hw;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
- err = hermes_allocate(hw, priv->nicbuf_size, &priv->txfid);
|
|
|
|
|
|
+ err = hw->ops->allocate(hw, priv->nicbuf_size, &priv->txfid);
|
|
if (err == -EIO && priv->nicbuf_size > TX_NICBUF_SIZE_BUG) {
|
|
if (err == -EIO && priv->nicbuf_size > TX_NICBUF_SIZE_BUG) {
|
|
/* Try workaround for old Symbol firmware bug */
|
|
/* Try workaround for old Symbol firmware bug */
|
|
priv->nicbuf_size = TX_NICBUF_SIZE_BUG;
|
|
priv->nicbuf_size = TX_NICBUF_SIZE_BUG;
|
|
- err = hermes_allocate(hw, priv->nicbuf_size, &priv->txfid);
|
|
|
|
|
|
+ err = hw->ops->allocate(hw, priv->nicbuf_size, &priv->txfid);
|
|
|
|
|
|
dev_warn(dev, "Firmware ALLOC bug detected "
|
|
dev_warn(dev, "Firmware ALLOC bug detected "
|
|
"(old Symbol firmware?). Work around %s\n",
|
|
"(old Symbol firmware?). Work around %s\n",
|
|
@@ -463,8 +463,9 @@ int orinoco_hw_program_rids(struct orinoco_private *priv)
|
|
struct hermes_idstring idbuf;
|
|
struct hermes_idstring idbuf;
|
|
|
|
|
|
/* Set the MAC address */
|
|
/* Set the MAC address */
|
|
- err = hermes_write_ltv(hw, USER_BAP, HERMES_RID_CNFOWNMACADDR,
|
|
|
|
- HERMES_BYTES_TO_RECLEN(ETH_ALEN), dev->dev_addr);
|
|
|
|
|
|
+ err = hw->ops->write_ltv(hw, USER_BAP, HERMES_RID_CNFOWNMACADDR,
|
|
|
|
+ HERMES_BYTES_TO_RECLEN(ETH_ALEN),
|
|
|
|
+ dev->dev_addr);
|
|
if (err) {
|
|
if (err) {
|
|
printk(KERN_ERR "%s: Error %d setting MAC address\n",
|
|
printk(KERN_ERR "%s: Error %d setting MAC address\n",
|
|
dev->name, err);
|
|
dev->name, err);
|
|
@@ -527,7 +528,7 @@ int orinoco_hw_program_rids(struct orinoco_private *priv)
|
|
idbuf.len = cpu_to_le16(strlen(priv->desired_essid));
|
|
idbuf.len = cpu_to_le16(strlen(priv->desired_essid));
|
|
memcpy(&idbuf.val, priv->desired_essid, sizeof(idbuf.val));
|
|
memcpy(&idbuf.val, priv->desired_essid, sizeof(idbuf.val));
|
|
/* WinXP wants partner to configure OWNSSID even in IBSS mode. (jimc) */
|
|
/* WinXP wants partner to configure OWNSSID even in IBSS mode. (jimc) */
|
|
- err = hermes_write_ltv(hw, USER_BAP, HERMES_RID_CNFOWNSSID,
|
|
|
|
|
|
+ err = hw->ops->write_ltv(hw, USER_BAP, HERMES_RID_CNFOWNSSID,
|
|
HERMES_BYTES_TO_RECLEN(strlen(priv->desired_essid)+2),
|
|
HERMES_BYTES_TO_RECLEN(strlen(priv->desired_essid)+2),
|
|
&idbuf);
|
|
&idbuf);
|
|
if (err) {
|
|
if (err) {
|
|
@@ -535,7 +536,7 @@ int orinoco_hw_program_rids(struct orinoco_private *priv)
|
|
dev->name, err);
|
|
dev->name, err);
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
- err = hermes_write_ltv(hw, USER_BAP, HERMES_RID_CNFDESIREDSSID,
|
|
|
|
|
|
+ err = hw->ops->write_ltv(hw, USER_BAP, HERMES_RID_CNFDESIREDSSID,
|
|
HERMES_BYTES_TO_RECLEN(strlen(priv->desired_essid)+2),
|
|
HERMES_BYTES_TO_RECLEN(strlen(priv->desired_essid)+2),
|
|
&idbuf);
|
|
&idbuf);
|
|
if (err) {
|
|
if (err) {
|
|
@@ -547,9 +548,9 @@ int orinoco_hw_program_rids(struct orinoco_private *priv)
|
|
/* Set the station name */
|
|
/* Set the station name */
|
|
idbuf.len = cpu_to_le16(strlen(priv->nick));
|
|
idbuf.len = cpu_to_le16(strlen(priv->nick));
|
|
memcpy(&idbuf.val, priv->nick, sizeof(idbuf.val));
|
|
memcpy(&idbuf.val, priv->nick, sizeof(idbuf.val));
|
|
- err = hermes_write_ltv(hw, USER_BAP, HERMES_RID_CNFOWNNAME,
|
|
|
|
- HERMES_BYTES_TO_RECLEN(strlen(priv->nick)+2),
|
|
|
|
- &idbuf);
|
|
|
|
|
|
+ err = hw->ops->write_ltv(hw, USER_BAP, HERMES_RID_CNFOWNNAME,
|
|
|
|
+ HERMES_BYTES_TO_RECLEN(strlen(priv->nick)+2),
|
|
|
|
+ &idbuf);
|
|
if (err) {
|
|
if (err) {
|
|
printk(KERN_ERR "%s: Error %d setting nickname\n",
|
|
printk(KERN_ERR "%s: Error %d setting nickname\n",
|
|
dev->name, err);
|
|
dev->name, err);
|
|
@@ -664,12 +665,12 @@ int orinoco_hw_program_rids(struct orinoco_private *priv)
|
|
if (priv->iw_mode == NL80211_IFTYPE_MONITOR) {
|
|
if (priv->iw_mode == NL80211_IFTYPE_MONITOR) {
|
|
/* Enable monitor mode */
|
|
/* Enable monitor mode */
|
|
dev->type = ARPHRD_IEEE80211;
|
|
dev->type = ARPHRD_IEEE80211;
|
|
- err = hermes_docmd_wait(hw, HERMES_CMD_TEST |
|
|
|
|
|
|
+ err = hw->ops->cmd_wait(hw, HERMES_CMD_TEST |
|
|
HERMES_TEST_MONITOR, 0, NULL);
|
|
HERMES_TEST_MONITOR, 0, NULL);
|
|
} else {
|
|
} else {
|
|
/* Disable monitor mode */
|
|
/* Disable monitor mode */
|
|
dev->type = ARPHRD_ETHER;
|
|
dev->type = ARPHRD_ETHER;
|
|
- err = hermes_docmd_wait(hw, HERMES_CMD_TEST |
|
|
|
|
|
|
+ err = hw->ops->cmd_wait(hw, HERMES_CMD_TEST |
|
|
HERMES_TEST_STOP, 0, NULL);
|
|
HERMES_TEST_STOP, 0, NULL);
|
|
}
|
|
}
|
|
if (err)
|
|
if (err)
|
|
@@ -695,8 +696,8 @@ int orinoco_hw_get_tkip_iv(struct orinoco_private *priv, int key, u8 *tsc)
|
|
if ((key < 0) || (key >= 4))
|
|
if ((key < 0) || (key >= 4))
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
|
|
|
|
- err = hermes_read_ltv(hw, USER_BAP, HERMES_RID_CURRENT_TKIP_IV,
|
|
|
|
- sizeof(tsc_arr), NULL, &tsc_arr);
|
|
|
|
|
|
+ err = hw->ops->read_ltv(hw, USER_BAP, HERMES_RID_CURRENT_TKIP_IV,
|
|
|
|
+ sizeof(tsc_arr), NULL, &tsc_arr);
|
|
if (!err)
|
|
if (!err)
|
|
memcpy(tsc, &tsc_arr[key][0], sizeof(tsc_arr[0]));
|
|
memcpy(tsc, &tsc_arr[key][0], sizeof(tsc_arr[0]));
|
|
|
|
|
|
@@ -875,7 +876,7 @@ int __orinoco_hw_setup_wepkeys(struct orinoco_private *priv)
|
|
memcpy(key, priv->keys[i].key,
|
|
memcpy(key, priv->keys[i].key,
|
|
priv->keys[i].key_len);
|
|
priv->keys[i].key_len);
|
|
|
|
|
|
- err = hermes_write_ltv(hw, USER_BAP,
|
|
|
|
|
|
+ err = hw->ops->write_ltv(hw, USER_BAP,
|
|
HERMES_RID_CNFDEFAULTKEY0 + i,
|
|
HERMES_RID_CNFDEFAULTKEY0 + i,
|
|
HERMES_BYTES_TO_RECLEN(keylen),
|
|
HERMES_BYTES_TO_RECLEN(keylen),
|
|
key);
|
|
key);
|
|
@@ -1092,7 +1093,7 @@ int __orinoco_hw_set_multicast_list(struct orinoco_private *priv,
|
|
memcpy(mclist.addr[i++], p->dmi_addr, ETH_ALEN);
|
|
memcpy(mclist.addr[i++], p->dmi_addr, ETH_ALEN);
|
|
}
|
|
}
|
|
|
|
|
|
- err = hermes_write_ltv(hw, USER_BAP,
|
|
|
|
|
|
+ err = hw->ops->write_ltv(hw, USER_BAP,
|
|
HERMES_RID_CNFGROUPADDRESSES,
|
|
HERMES_RID_CNFGROUPADDRESSES,
|
|
HERMES_BYTES_TO_RECLEN(mc_count * ETH_ALEN),
|
|
HERMES_BYTES_TO_RECLEN(mc_count * ETH_ALEN),
|
|
&mclist);
|
|
&mclist);
|
|
@@ -1134,15 +1135,15 @@ int orinoco_hw_get_essid(struct orinoco_private *priv, int *active,
|
|
rid = (priv->port_type == 3) ? HERMES_RID_CNFOWNSSID :
|
|
rid = (priv->port_type == 3) ? HERMES_RID_CNFOWNSSID :
|
|
HERMES_RID_CNFDESIREDSSID;
|
|
HERMES_RID_CNFDESIREDSSID;
|
|
|
|
|
|
- err = hermes_read_ltv(hw, USER_BAP, rid, sizeof(essidbuf),
|
|
|
|
- NULL, &essidbuf);
|
|
|
|
|
|
+ err = hw->ops->read_ltv(hw, USER_BAP, rid, sizeof(essidbuf),
|
|
|
|
+ NULL, &essidbuf);
|
|
if (err)
|
|
if (err)
|
|
goto fail_unlock;
|
|
goto fail_unlock;
|
|
} else {
|
|
} else {
|
|
*active = 0;
|
|
*active = 0;
|
|
|
|
|
|
- err = hermes_read_ltv(hw, USER_BAP, HERMES_RID_CURRENTSSID,
|
|
|
|
- sizeof(essidbuf), NULL, &essidbuf);
|
|
|
|
|
|
+ err = hw->ops->read_ltv(hw, USER_BAP, HERMES_RID_CURRENTSSID,
|
|
|
|
+ sizeof(essidbuf), NULL, &essidbuf);
|
|
if (err)
|
|
if (err)
|
|
goto fail_unlock;
|
|
goto fail_unlock;
|
|
}
|
|
}
|
|
@@ -1213,8 +1214,8 @@ int orinoco_hw_get_bitratelist(struct orinoco_private *priv,
|
|
if (orinoco_lock(priv, &flags) != 0)
|
|
if (orinoco_lock(priv, &flags) != 0)
|
|
return -EBUSY;
|
|
return -EBUSY;
|
|
|
|
|
|
- err = hermes_read_ltv(hw, USER_BAP, HERMES_RID_SUPPORTEDDATARATES,
|
|
|
|
- sizeof(list), NULL, &list);
|
|
|
|
|
|
+ err = hw->ops->read_ltv(hw, USER_BAP, HERMES_RID_SUPPORTEDDATARATES,
|
|
|
|
+ sizeof(list), NULL, &list);
|
|
orinoco_unlock(priv, &flags);
|
|
orinoco_unlock(priv, &flags);
|
|
|
|
|
|
if (err)
|
|
if (err)
|
|
@@ -1281,7 +1282,7 @@ int orinoco_hw_trigger_scan(struct orinoco_private *priv,
|
|
idbuf.len = cpu_to_le16(len);
|
|
idbuf.len = cpu_to_le16(len);
|
|
memcpy(idbuf.val, ssid->ssid, len);
|
|
memcpy(idbuf.val, ssid->ssid, len);
|
|
|
|
|
|
- err = hermes_write_ltv(hw, USER_BAP,
|
|
|
|
|
|
+ err = hw->ops->write_ltv(hw, USER_BAP,
|
|
HERMES_RID_CNFSCANSSID_AGERE,
|
|
HERMES_RID_CNFSCANSSID_AGERE,
|
|
HERMES_BYTES_TO_RECLEN(len + 2),
|
|
HERMES_BYTES_TO_RECLEN(len + 2),
|
|
&idbuf);
|
|
&idbuf);
|
|
@@ -1345,8 +1346,8 @@ int orinoco_hw_get_current_bssid(struct orinoco_private *priv,
|
|
hermes_t *hw = &priv->hw;
|
|
hermes_t *hw = &priv->hw;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
- err = hermes_read_ltv(hw, USER_BAP, HERMES_RID_CURRENTBSSID,
|
|
|
|
- ETH_ALEN, NULL, addr);
|
|
|
|
|
|
+ err = hw->ops->read_ltv(hw, USER_BAP, HERMES_RID_CURRENTBSSID,
|
|
|
|
+ ETH_ALEN, NULL, addr);
|
|
|
|
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|