Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 07a6b037 authored by Ali Bahar's avatar Ali Bahar Committed by Greg Kroah-Hartman
Browse files

staging: r8712u: Merging Realtek's latest (v2.6.6). Tx-code refactoring.



Refactor the TX code to prepare for aggregation.

Signed-off-by: default avatarAli Bahar <ali@internetDog.org>
Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent c13b6f24
Loading
Loading
Loading
Loading
+24 −24
Original line number Diff line number Diff line
@@ -423,12 +423,13 @@ int r8712_xmitframe_complete(struct _adapter *padapter,
		if (!pxmitbuf)
			return false;
	}
	do {
	/* 1st frame dequeued */
	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;
	/* 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,
@@ -442,12 +443,11 @@ int r8712_xmitframe_complete(struct _adapter *padapter,
		else
			r8712_free_xmitframe_ex(pxmitpriv, pxmitframe);
		xcnt++;
		} else {

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

+14 −3
Original line number Diff line number Diff line
@@ -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
@@ -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;
+5 −0
Original line number Diff line number Diff line
@@ -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 {
@@ -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_*/