orinoco: add hermes_ops
Pave the way for introducing USB alternative functions. Force callers to dereference ops instead of providing wrappers. Signed-off-by: David Kilroy <kilroyd@googlemail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
f7c65594f7
commit
b42f2074de
@@ -177,9 +177,9 @@ int determine_fw_capabilities(struct orinoco_private *priv,
|
||||
/* 3Com MAC : 00:50:DA:* */
|
||||
memset(tmp, 0, sizeof(tmp));
|
||||
/* 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) {
|
||||
dev_warn(dev, "Error %d reading Symbol firmware info. "
|
||||
"Wildly guessing capabilities...\n", err);
|
||||
@@ -286,8 +286,8 @@ int orinoco_hw_read_card_settings(struct orinoco_private *priv, u8 *dev_addr)
|
||||
u16 reclen;
|
||||
|
||||
/* 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) {
|
||||
dev_warn(dev, "Failed to read MAC address!\n");
|
||||
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);
|
||||
|
||||
/* 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) {
|
||||
dev_err(dev, "failed to read station name\n");
|
||||
goto out;
|
||||
@@ -413,11 +413,11 @@ int orinoco_hw_allocate_fid(struct orinoco_private *priv)
|
||||
struct hermes *hw = &priv->hw;
|
||||
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) {
|
||||
/* Try workaround for old Symbol firmware 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 "
|
||||
"(old Symbol firmware?). Work around %s\n",
|
||||
@@ -463,8 +463,9 @@ int orinoco_hw_program_rids(struct orinoco_private *priv)
|
||||
struct hermes_idstring idbuf;
|
||||
|
||||
/* 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) {
|
||||
printk(KERN_ERR "%s: Error %d setting MAC address\n",
|
||||
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));
|
||||
memcpy(&idbuf.val, priv->desired_essid, sizeof(idbuf.val));
|
||||
/* 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),
|
||||
&idbuf);
|
||||
if (err) {
|
||||
@@ -535,7 +536,7 @@ int orinoco_hw_program_rids(struct orinoco_private *priv)
|
||||
dev->name, 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),
|
||||
&idbuf);
|
||||
if (err) {
|
||||
@@ -547,9 +548,9 @@ int orinoco_hw_program_rids(struct orinoco_private *priv)
|
||||
/* Set the station name */
|
||||
idbuf.len = cpu_to_le16(strlen(priv->nick));
|
||||
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) {
|
||||
printk(KERN_ERR "%s: Error %d setting nickname\n",
|
||||
dev->name, err);
|
||||
@@ -664,12 +665,12 @@ int orinoco_hw_program_rids(struct orinoco_private *priv)
|
||||
if (priv->iw_mode == NL80211_IFTYPE_MONITOR) {
|
||||
/* Enable monitor mode */
|
||||
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);
|
||||
} else {
|
||||
/* Disable monitor mode */
|
||||
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);
|
||||
}
|
||||
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))
|
||||
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)
|
||||
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,
|
||||
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_BYTES_TO_RECLEN(keylen),
|
||||
key);
|
||||
@@ -1092,7 +1093,7 @@ int __orinoco_hw_set_multicast_list(struct orinoco_private *priv,
|
||||
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_BYTES_TO_RECLEN(mc_count * ETH_ALEN),
|
||||
&mclist);
|
||||
@@ -1134,15 +1135,15 @@ int orinoco_hw_get_essid(struct orinoco_private *priv, int *active,
|
||||
rid = (priv->port_type == 3) ? HERMES_RID_CNFOWNSSID :
|
||||
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)
|
||||
goto fail_unlock;
|
||||
} else {
|
||||
*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)
|
||||
goto fail_unlock;
|
||||
}
|
||||
@@ -1213,8 +1214,8 @@ int orinoco_hw_get_bitratelist(struct orinoco_private *priv,
|
||||
if (orinoco_lock(priv, &flags) != 0)
|
||||
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);
|
||||
|
||||
if (err)
|
||||
@@ -1281,7 +1282,7 @@ int orinoco_hw_trigger_scan(struct orinoco_private *priv,
|
||||
idbuf.len = cpu_to_le16(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_BYTES_TO_RECLEN(len + 2),
|
||||
&idbuf);
|
||||
@@ -1345,8 +1346,8 @@ int orinoco_hw_get_current_bssid(struct orinoco_private *priv,
|
||||
hermes_t *hw = &priv->hw;
|
||||
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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user