staging: wilc1000: refactor mgmt_tx to fix line over 80 chars
Refactor mgmt_tx() to fix line over 80 characters issue. Split the function to avoid the checkpatch.pl warning. Returning the same error code in case of memory allocation failure. Signed-off-by: Ajay Singh <ajay.kathat@microchip.com> Reviewed-by: Claudiu Beznea <claudiu.beznea@microchip.com> Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
34db1aac17
commit
7c4f6fe437
|
@ -1548,6 +1548,55 @@ static int cancel_remain_on_channel(struct wiphy *wiphy,
|
|||
priv->remain_on_ch_params.listen_session_id);
|
||||
}
|
||||
|
||||
static void wilc_wfi_cfg_tx_vendor_spec(struct p2p_mgmt_data *mgmt_tx,
|
||||
struct cfg80211_mgmt_tx_params *params,
|
||||
u8 iftype, u32 buf_len)
|
||||
{
|
||||
const u8 *buf = params->buf;
|
||||
size_t len = params->len;
|
||||
u32 i;
|
||||
u8 subtype = buf[P2P_PUB_ACTION_SUBTYPE];
|
||||
|
||||
if (subtype == GO_NEG_REQ || subtype == GO_NEG_RSP) {
|
||||
if (p2p_local_random == 1 &&
|
||||
p2p_recv_random < p2p_local_random) {
|
||||
get_random_bytes(&p2p_local_random, 1);
|
||||
p2p_local_random++;
|
||||
}
|
||||
}
|
||||
|
||||
if (p2p_local_random <= p2p_recv_random || !(subtype == GO_NEG_REQ ||
|
||||
subtype == GO_NEG_RSP ||
|
||||
subtype == P2P_INV_REQ ||
|
||||
subtype == P2P_INV_RSP))
|
||||
return;
|
||||
|
||||
for (i = P2P_PUB_ACTION_SUBTYPE + 2; i < len; i++) {
|
||||
if (buf[i] == P2PELEM_ATTR_ID &&
|
||||
!memcmp(p2p_oui, &buf[i + 2], 4)) {
|
||||
if (subtype == P2P_INV_REQ || subtype == P2P_INV_RSP)
|
||||
wilc_wfi_cfg_parse_tx_action(&mgmt_tx->buff[i + 6],
|
||||
len - (i + 6),
|
||||
true, iftype);
|
||||
else
|
||||
wilc_wfi_cfg_parse_tx_action(&mgmt_tx->buff[i + 6],
|
||||
len - (i + 6),
|
||||
false, iftype);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (subtype != P2P_INV_REQ && subtype != P2P_INV_RSP) {
|
||||
int vendor_spec_len = sizeof(p2p_vendor_spec);
|
||||
|
||||
memcpy(&mgmt_tx->buff[len], p2p_vendor_spec,
|
||||
vendor_spec_len);
|
||||
mgmt_tx->buff[len + vendor_spec_len] = p2p_local_random;
|
||||
mgmt_tx->size = buf_len;
|
||||
}
|
||||
}
|
||||
|
||||
static int mgmt_tx(struct wiphy *wiphy,
|
||||
struct wireless_dev *wdev,
|
||||
struct cfg80211_mgmt_tx_params *params,
|
||||
|
@ -1561,9 +1610,9 @@ static int mgmt_tx(struct wiphy *wiphy,
|
|||
struct p2p_mgmt_data *mgmt_tx;
|
||||
struct wilc_priv *priv;
|
||||
struct host_if_drv *wfi_drv;
|
||||
u32 i;
|
||||
struct wilc_vif *vif;
|
||||
u32 buf_len = len + sizeof(p2p_vendor_spec) + sizeof(p2p_local_random);
|
||||
int ret = 0;
|
||||
|
||||
vif = netdev_priv(wdev->netdev);
|
||||
priv = wiphy_priv(wiphy);
|
||||
|
@ -1573,92 +1622,75 @@ static int mgmt_tx(struct wiphy *wiphy,
|
|||
priv->tx_cookie = *cookie;
|
||||
mgmt = (const struct ieee80211_mgmt *)buf;
|
||||
|
||||
if (ieee80211_is_mgmt(mgmt->frame_control)) {
|
||||
mgmt_tx = kmalloc(sizeof(struct p2p_mgmt_data), GFP_KERNEL);
|
||||
if (!mgmt_tx)
|
||||
return -EFAULT;
|
||||
if (!ieee80211_is_mgmt(mgmt->frame_control))
|
||||
goto out;
|
||||
|
||||
mgmt_tx->buff = kmalloc(buf_len, GFP_KERNEL);
|
||||
if (!mgmt_tx->buff) {
|
||||
kfree(mgmt_tx);
|
||||
return -ENOMEM;
|
||||
}
|
||||
mgmt_tx = kmalloc(sizeof(struct p2p_mgmt_data), GFP_KERNEL);
|
||||
if (!mgmt_tx) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
memcpy(mgmt_tx->buff, buf, len);
|
||||
mgmt_tx->size = len;
|
||||
mgmt_tx->buff = kmalloc(buf_len, GFP_KERNEL);
|
||||
if (!mgmt_tx->buff) {
|
||||
ret = -ENOMEM;
|
||||
kfree(mgmt_tx);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (ieee80211_is_probe_resp(mgmt->frame_control)) {
|
||||
memcpy(mgmt_tx->buff, buf, len);
|
||||
mgmt_tx->size = len;
|
||||
|
||||
if (ieee80211_is_probe_resp(mgmt->frame_control)) {
|
||||
wilc_set_mac_chnl_num(vif, chan->hw_value);
|
||||
curr_channel = chan->hw_value;
|
||||
goto out_txq_add_pkt;
|
||||
}
|
||||
|
||||
if (!ieee80211_is_action(mgmt->frame_control))
|
||||
goto out_txq_add_pkt;
|
||||
|
||||
if (buf[ACTION_CAT_ID] == PUB_ACTION_ATTR_ID) {
|
||||
if (buf[ACTION_SUBTYPE_ID] != PUBLIC_ACT_VENDORSPEC ||
|
||||
buf[P2P_PUB_ACTION_SUBTYPE] != GO_NEG_CONF) {
|
||||
wilc_set_mac_chnl_num(vif, chan->hw_value);
|
||||
curr_channel = chan->hw_value;
|
||||
} else if (ieee80211_is_action(mgmt->frame_control)) {
|
||||
if (buf[ACTION_CAT_ID] == PUB_ACTION_ATTR_ID) {
|
||||
if (buf[ACTION_SUBTYPE_ID] != PUBLIC_ACT_VENDORSPEC ||
|
||||
buf[P2P_PUB_ACTION_SUBTYPE] != GO_NEG_CONF) {
|
||||
wilc_set_mac_chnl_num(vif,
|
||||
chan->hw_value);
|
||||
curr_channel = chan->hw_value;
|
||||
}
|
||||
switch (buf[ACTION_SUBTYPE_ID]) {
|
||||
case GAS_INITIAL_REQ:
|
||||
break;
|
||||
|
||||
case GAS_INITIAL_RSP:
|
||||
break;
|
||||
|
||||
case PUBLIC_ACT_VENDORSPEC:
|
||||
{
|
||||
if (!memcmp(p2p_oui, &buf[ACTION_SUBTYPE_ID + 1], 4)) {
|
||||
if ((buf[P2P_PUB_ACTION_SUBTYPE] == GO_NEG_REQ || buf[P2P_PUB_ACTION_SUBTYPE] == GO_NEG_RSP)) {
|
||||
if (p2p_local_random == 1 && p2p_recv_random < p2p_local_random) {
|
||||
get_random_bytes(&p2p_local_random, 1);
|
||||
p2p_local_random++;
|
||||
}
|
||||
}
|
||||
|
||||
if ((buf[P2P_PUB_ACTION_SUBTYPE] == GO_NEG_REQ || buf[P2P_PUB_ACTION_SUBTYPE] == GO_NEG_RSP ||
|
||||
buf[P2P_PUB_ACTION_SUBTYPE] == P2P_INV_REQ || buf[P2P_PUB_ACTION_SUBTYPE] == P2P_INV_RSP)) {
|
||||
if (p2p_local_random > p2p_recv_random) {
|
||||
for (i = P2P_PUB_ACTION_SUBTYPE + 2; i < len; i++) {
|
||||
if (buf[i] == P2PELEM_ATTR_ID && !(memcmp(p2p_oui, &buf[i + 2], 4))) {
|
||||
if (buf[P2P_PUB_ACTION_SUBTYPE] == P2P_INV_REQ || buf[P2P_PUB_ACTION_SUBTYPE] == P2P_INV_RSP)
|
||||
wilc_wfi_cfg_parse_tx_action(&mgmt_tx->buff[i + 6], len - (i + 6), true, vif->iftype);
|
||||
else
|
||||
wilc_wfi_cfg_parse_tx_action(&mgmt_tx->buff[i + 6], len - (i + 6), false, vif->iftype);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (buf[P2P_PUB_ACTION_SUBTYPE] != P2P_INV_REQ && buf[P2P_PUB_ACTION_SUBTYPE] != P2P_INV_RSP) {
|
||||
memcpy(&mgmt_tx->buff[len], p2p_vendor_spec, sizeof(p2p_vendor_spec));
|
||||
mgmt_tx->buff[len + sizeof(p2p_vendor_spec)] = p2p_local_random;
|
||||
mgmt_tx->size = buf_len;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
netdev_dbg(vif->ndev, "Not a P2P public action frame\n");
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
netdev_dbg(vif->ndev, "NOT HANDLED PUBLIC ACTION FRAME TYPE:%x\n", buf[ACTION_SUBTYPE_ID]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wfi_drv->p2p_timeout = (jiffies + msecs_to_jiffies(wait));
|
||||
}
|
||||
switch (buf[ACTION_SUBTYPE_ID]) {
|
||||
case GAS_INITIAL_REQ:
|
||||
case GAS_INITIAL_RSP:
|
||||
break;
|
||||
|
||||
wilc_wlan_txq_add_mgmt_pkt(wdev->netdev, mgmt_tx,
|
||||
mgmt_tx->buff, mgmt_tx->size,
|
||||
wilc_wfi_mgmt_tx_complete);
|
||||
case PUBLIC_ACT_VENDORSPEC:
|
||||
if (!memcmp(p2p_oui, &buf[ACTION_SUBTYPE_ID + 1], 4))
|
||||
wilc_wfi_cfg_tx_vendor_spec(mgmt_tx, params,
|
||||
vif->iftype,
|
||||
buf_len);
|
||||
else
|
||||
netdev_dbg(vif->ndev,
|
||||
"Not a P2P public action frame\n");
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
netdev_dbg(vif->ndev,
|
||||
"NOT HANDLED PUBLIC ACTION FRAME TYPE:%x\n",
|
||||
buf[ACTION_SUBTYPE_ID]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
wfi_drv->p2p_timeout = (jiffies + msecs_to_jiffies(wait));
|
||||
|
||||
out_txq_add_pkt:
|
||||
|
||||
wilc_wlan_txq_add_mgmt_pkt(wdev->netdev, mgmt_tx,
|
||||
mgmt_tx->buff, mgmt_tx->size,
|
||||
wilc_wfi_mgmt_tx_complete);
|
||||
|
||||
out:
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int mgmt_tx_cancel_wait(struct wiphy *wiphy,
|
||||
|
|
Loading…
Reference in New Issue