Skip to content

Commit

Permalink
staging: r8712u: Merging Realtek's latest (v2.6.6). Tx-code refactoring.
Browse files Browse the repository at this point in the history
Refactor the TX code to prepare for aggregation.

Signed-off-by: Ali Bahar <ali@internetDog.org>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Ali Bahar authored and Greg Kroah-Hartman committed Sep 7, 2011
1 parent c13b6f2 commit 07a6b03
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 27 deletions.
48 changes: 24 additions & 24 deletions drivers/staging/rtl8712/rtl8712_xmit.c
Original file line number Diff line number Diff line change
Expand Up @@ -423,31 +423,31 @@ int r8712_xmitframe_complete(struct _adapter *padapter,
if (!pxmitbuf)
return false;
}
do {
pxmitframe = dequeue_xframe_ex(pxmitpriv, phwxmits, hwentry);
if (pxmitframe) {
pxmitframe->pxmitbuf = pxmitbuf;
pxmitframe->pxmit_urb[0] = pxmitbuf->pxmit_urb[0];
pxmitframe->buf_addr = pxmitbuf->pbuf;
if (pxmitframe->frame_tag == DATA_FRAMETAG) {
if (pxmitframe->attrib.priority <= 15)
res = r8712_xmitframe_coalesce(padapter,
pxmitframe->pkt, pxmitframe);
/* always return ndis_packet after
* r8712_xmitframe_coalesce */
r8712_xmit_complete(padapter, pxmitframe);
}
if (res == _SUCCESS)
dump_xframe(padapter, pxmitframe);
else
r8712_free_xmitframe_ex(pxmitpriv, pxmitframe);
xcnt++;
} else {
r8712_free_xmitbuf(pxmitpriv, pxmitbuf);
return false;
/* 1st frame dequeued */
pxmitframe = dequeue_xframe_ex(pxmitpriv, phwxmits, hwentry);
/* need to remember the 1st frame */
if (pxmitframe != NULL) {


xmitframe_xmitbuf_attach(pxmitframe, pxmitbuf);
if (pxmitframe->frame_tag == DATA_FRAMETAG) {
if (pxmitframe->attrib.priority <= 15)
res = r8712_xmitframe_coalesce(padapter,
pxmitframe->pkt, pxmitframe);
/* always return ndis_packet after
* r8712_xmitframe_coalesce */
r8712_xmit_complete(padapter, pxmitframe);
}
break;
} while (0);
if (res == _SUCCESS)
dump_xframe(padapter, pxmitframe);
else
r8712_free_xmitframe_ex(pxmitpriv, pxmitframe);
xcnt++;

} else { /* pxmitframe == NULL && p2ndxmitframe == NULL */
r8712_free_xmitbuf(pxmitpriv, pxmitbuf);
return false;
}
return true;
}

Expand Down
17 changes: 14 additions & 3 deletions drivers/staging/rtl8712/rtl871x_xmit.c
Original file line number Diff line number Diff line change
Expand Up @@ -1011,6 +1011,19 @@ static void init_hwxmits(struct hw_xmit *phwxmit, sint entry)
}
}

void xmitframe_xmitbuf_attach(struct xmit_frame *pxmitframe,
struct xmit_buf *pxmitbuf)
{
/* pxmitbuf attach to pxmitframe */
pxmitframe->pxmitbuf = pxmitbuf;
/* urb and irp connection */
pxmitframe->pxmit_urb[0] = pxmitbuf->pxmit_urb[0];
/* buffer addr assoc */
pxmitframe->buf_addr = pxmitbuf->pbuf;
/* pxmitframe attach to pxmitbuf */
pxmitbuf->priv_data = pxmitframe;
}

/*
* tx_action == 0 == no frames to transmit
* tx_action > 0 ==> we have frames to transmit
Expand Down Expand Up @@ -1042,9 +1055,7 @@ int r8712_pre_xmit(struct _adapter *padapter, struct xmit_frame *pxmitframe)
} else { /*dump packet directly*/
spin_unlock_irqrestore(&pxmitpriv->lock, irqL);
ret = true;
pxmitframe->pxmitbuf = pxmitbuf;
pxmitframe->pxmit_urb[0] = pxmitbuf->pxmit_urb[0];
pxmitframe->buf_addr = pxmitbuf->pbuf;
xmitframe_xmitbuf_attach(pxmitframe, pxmitbuf);
r8712_xmit_direct(padapter, pxmitframe);
}
return ret;
Expand Down
5 changes: 5 additions & 0 deletions drivers/staging/rtl8712/rtl871x_xmit.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,9 @@ struct xmit_buf {

u8 *pallocated_buf;
u8 *pbuf;
void *priv_data;
struct urb *pxmit_urb[8];
u32 aggr_nr;
};

struct xmit_frame {
Expand Down Expand Up @@ -280,6 +282,9 @@ int r8712_xmit_enqueue(struct _adapter *padapter,
int r8712_xmit_direct(struct _adapter *padapter, struct xmit_frame *pxmitframe);
void r8712_xmit_bh(void *priv);

void xmitframe_xmitbuf_attach(struct xmit_frame *pxmitframe,
struct xmit_buf *pxmitbuf);

#include "rtl8712_xmit.h"

#endif /*_RTL871X_XMIT_H_*/
Expand Down

0 comments on commit 07a6b03

Please sign in to comment.