Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6b4a7e0fbd772495572e038d296853a741e0454b Commit: 6b4a7e0fbd772495572e038d296853a741e0454b Parent: 2abdc0b7756ece70b1f0fd65a651bf8ce487a223 Author: David Woodhouse <[EMAIL PROTECTED]> AuthorDate: Sun Dec 9 12:48:10 2007 -0500 Committer: David S. Miller <[EMAIL PROTECTED]> CommitDate: Mon Jan 28 15:06:23 2008 -0800
libertas: kill SendSinglePacket() function. Make a start on reducing the number of pointless nested functions, starting with the StudlyCaps. No semantic changes (yet) -- we can sort out the now-obvious discrepancy in the failure paths in a separate commit. Signed-off-by: David Woodhouse <[EMAIL PROTECTED]> Signed-off-by: John W. Linville <[EMAIL PROTECTED]> --- drivers/net/wireless/libertas/tx.c | 66 +++++++++++++----------------------- 1 files changed, 24 insertions(+), 42 deletions(-) diff --git a/drivers/net/wireless/libertas/tx.c b/drivers/net/wireless/libertas/tx.c index 749535e..10596f3 100644 --- a/drivers/net/wireless/libertas/tx.c +++ b/drivers/net/wireless/libertas/tx.c @@ -49,16 +49,16 @@ static u32 convert_radiotap_rate_to_mv(u8 rate) } /** - * @brief This function processes a single packet and sends - * to IF layer + * @brief This function checks the conditions and sends packet to IF + * layer if everything is ok. * * @param priv A pointer to struct lbs_private structure * @param skb A pointer to skb which includes TX packet * @return 0 or -1 */ -static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb) +int lbs_process_tx(struct lbs_private *priv, struct sk_buff *skb) { - int ret = 0; + int ret = -1; struct txpd localtxpd; struct txpd *plocaltxpd = &localtxpd; u8 *p802x_hdr; @@ -68,16 +68,31 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb) lbs_deb_enter(LBS_DEB_TX); + lbs_deb_hex(LBS_DEB_TX, "TX Data", skb->data, min_t(unsigned int, skb->len, 100)); + + if (priv->dnld_sent) { + lbs_pr_alert( "TX error: dnld_sent = %d, not sending\n", + priv->dnld_sent); + goto done; + } + + if ((priv->psstate == PS_STATE_SLEEP) || + (priv->psstate == PS_STATE_PRE_SLEEP)) { + lbs_pr_alert("TX error: packet xmit in %ssleep mode\n", + priv->psstate == PS_STATE_SLEEP?"":"pre-"); + goto done; + } + if (priv->surpriseremoved) return -1; if (!skb->len || (skb->len > MRVDRV_ETH_TX_PACKET_BUFFER_SIZE)) { lbs_deb_tx("tx err: skb length %d 0 or > %zd\n", skb->len, MRVDRV_ETH_TX_PACKET_BUFFER_SIZE); - ret = -1; - goto done; + goto done_tx; } + ret = 0; memset(plocaltxpd, 0, sizeof(struct txpd)); plocaltxpd->tx_packet_length = cpu_to_le16(skb->len); @@ -130,12 +145,12 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb) if (ret) { lbs_deb_tx("tx err: hw_host_to_card returned 0x%X\n", ret); - goto done; + goto done_tx; } - lbs_deb_tx("SendSinglePacket succeeds\n"); + lbs_deb_tx("%s succeeds\n", __func__); -done: +done_tx: if (!ret) { priv->stats.tx_packets++; priv->stats.tx_bytes += skb->len; @@ -159,39 +174,6 @@ done: dev_kfree_skb_any(skb); } - lbs_deb_leave_args(LBS_DEB_TX, "ret %d", ret); - return ret; -} - - -/** - * @brief This function checks the conditions and sends packet to IF - * layer if everything is ok. - * - * @param priv A pointer to struct lbs_private structure - * @return n/a - */ -int lbs_process_tx(struct lbs_private *priv, struct sk_buff *skb) -{ - int ret = -1; - - lbs_deb_enter(LBS_DEB_TX); - lbs_deb_hex(LBS_DEB_TX, "TX Data", skb->data, min_t(unsigned int, skb->len, 100)); - - if (priv->dnld_sent) { - lbs_pr_alert( "TX error: dnld_sent = %d, not sending\n", - priv->dnld_sent); - goto done; - } - - if ((priv->psstate == PS_STATE_SLEEP) || - (priv->psstate == PS_STATE_PRE_SLEEP)) { - lbs_pr_alert("TX error: packet xmit in %ssleep mode\n", - priv->psstate == PS_STATE_SLEEP?"":"pre-"); - goto done; - } - - ret = SendSinglePacket(priv, skb); done: lbs_deb_leave_args(LBS_DEB_TX, "ret %d", ret); return ret; - To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html