Messages in this thread Patch in this message | | | From | Ivan Safonov <> | Subject | [PATCH 23/37] staging:r8188eu: update rx_tail and pkt->tail synchronously | Date | Wed, 19 Oct 2016 22:07:51 +0700 |
| |
To replace rx_tail with pkt->tail. Now pkt->tail is equal to rx_tail and pkt->len is equal to len.
Signed-off-by: Ivan Safonov <insafonov@gmail.com> --- drivers/staging/rtl8188eu/include/rtw_recv.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/staging/rtl8188eu/include/rtw_recv.h b/drivers/staging/rtl8188eu/include/rtw_recv.h index 9a3a978..34d13f8 100644 --- a/drivers/staging/rtl8188eu/include/rtw_recv.h +++ b/drivers/staging/rtl8188eu/include/rtw_recv.h @@ -279,17 +279,17 @@ static inline u8 *recvframe_put(struct recv_frame *precvframe, uint sz) * and return the updated rx_tail to the caller */ /* after putting, rx_tail must be still larger than rx_end. */ + u8 *tail; + if (precvframe == NULL) return NULL; - precvframe->rx_tail += sz; - - if (precvframe->rx_tail > precvframe->pkt->end) { - precvframe->rx_tail -= sz; + tail = skb_put(precvframe->pkt, sz); + if (!tail) return NULL; - } + precvframe->rx_tail += sz; precvframe->len += sz; - return precvframe->rx_tail; + return tail; } static inline void recvframe_pull_tail(struct recv_frame *precvframe, uint sz) @@ -302,11 +302,11 @@ static inline void recvframe_pull_tail(struct recv_frame *precvframe, uint sz) if (precvframe == NULL) return; - precvframe->rx_tail -= sz; - if (precvframe->rx_tail < precvframe->pkt->data) { - precvframe->rx_tail += sz; + + if (precvframe->len < sz) return; - } + precvframe->rx_tail -= sz; + skb_trim(precvframe->pkt, precvframe->pkt->len - sz); precvframe->len -= sz; } -- 2.7.3
| |