aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Aring <alex.aring@gmail.com>2014-10-27 12:13:42 -0400
committerMarcel Holtmann <marcel@holtmann.org>2014-10-27 13:07:50 -0400
commitb89c33417ffcc816df5755aec375a16d2657e4d3 (patch)
treedab27f4c57518b02ab337aab4a038401870a219a
parentd0e73c470471a0f2eda02de44fb17f020b32269c (diff)
at86rf230: improve receive handling
Current behaviour it to copy the frame inclusive CRC into a skb, then remove the CRC from the skb. This patch optimizes this by not copying the CRC at the first place. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-rw-r--r--drivers/net/ieee802154/at86rf230.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c
index 368791b28585..a1558385bac9 100644
--- a/drivers/net/ieee802154/at86rf230.c
+++ b/drivers/net/ieee802154/at86rf230.c
@@ -788,7 +788,7 @@ at86rf230_tx_trac_status(void *context)
788 788
789static void 789static void
790at86rf230_rx(struct at86rf230_local *lp, 790at86rf230_rx(struct at86rf230_local *lp,
791 const u8 *data, const u8 len) 791 const u8 *data, const u8 len, const u8 lqi)
792{ 792{
793 struct sk_buff *skb; 793 struct sk_buff *skb;
794 u8 rx_local_buf[AT86RF2XX_MAX_BUF]; 794 u8 rx_local_buf[AT86RF2XX_MAX_BUF];
@@ -803,11 +803,7 @@ at86rf230_rx(struct at86rf230_local *lp,
803 } 803 }
804 804
805 memcpy(skb_put(skb, len), rx_local_buf, len); 805 memcpy(skb_put(skb, len), rx_local_buf, len);
806 806 ieee802154_rx_irqsafe(lp->hw, skb, lqi);
807 /* We do not put CRC into the frame */
808 skb_trim(skb, len - 2);
809
810 ieee802154_rx_irqsafe(lp->hw, skb, rx_local_buf[len]);
811} 807}
812 808
813static void 809static void
@@ -823,7 +819,7 @@ at86rf230_rx_read_frame_complete(void *context)
823 len = IEEE802154_MTU; 819 len = IEEE802154_MTU;
824 } 820 }
825 821
826 at86rf230_rx(lp, buf + 2, len); 822 at86rf230_rx(lp, buf + 2, len - 2, buf[2 + len]);
827} 823}
828 824
829static void 825static void