* Re: [net-next-2.6 00/15][pull-request] Intel Wired LAN Driver Update
From: Jeff Kirsher @ 2010-12-25 6:35 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, bphilips
In-Reply-To: <1293257174-15498-1-git-send-email-jeffrey.t.kirsher@intel.com>
On Fri, Dec 24, 2010 at 22:05, <jeffrey.t.kirsher@intel.com> wrote:
> From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
>
> The following series addresses the more significant issues reported by
> checkpatch when run against the e1000e driver files. The less serious
> whitespace and lines over 80 characters issues are not addressed. In
> addition, added support for anti-spoofing and X540 SR-IOV.
>
> The remaining warnings for msleep < 20ms will be addressed in a follow-on
> patch after a thorough investigation into the timings tolerated by the
> hardware.
>
> The following changes since commit e1928c86c4829703b800c81cc9edc939b5634e6f:
>
> cnic: Add FCoE support on 57712
>
> are available in the git repository at:
>
> master.kernel.org:/pub/scm/linux/kernel/git/jkirsher/net-next-2.6.git master
... and happy holidays everyone!
^ permalink raw reply
* Re: [net-next-2.6 04/15] e1000e: checkpatch error - open braces
From: Jeff Garzik @ 2010-12-25 10:29 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: davem, Bruce Allan, netdev, gospo, bphilips
In-Reply-To: <1293257174-15498-5-git-send-email-jeffrey.t.kirsher@intel.com>
On 12/25/2010 01:06 AM, jeffrey.t.kirsher@intel.com wrote:
> From: Bruce Allan<bruce.w.allan@intel.com>
>
> ERROR: that open brace { should be on the previous line
>
> Signed-off-by: Bruce Allan<bruce.w.allan@intel.com>
> Tested-by: Emil Tantilov<emil.s.tantilov@intel.com>
> Signed-off-by: Jeff Kirsher<jeffrey.t.kirsher@intel.com>
> ---
> drivers/net/e1000e/es2lan.c | 4 ++--
> drivers/net/e1000e/ethtool.c | 4 ++--
> drivers/net/e1000e/phy.c | 22 +++++++++++-----------
> 3 files changed, 15 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/net/e1000e/es2lan.c b/drivers/net/e1000e/es2lan.c
> index 79da646..b18c644 100644
> --- a/drivers/net/e1000e/es2lan.c
> +++ b/drivers/net/e1000e/es2lan.c
> @@ -100,8 +100,8 @@
> * with a lower bound at "index" and the upper bound at
> * "index + 5".
> */
> -static const u16 e1000_gg82563_cable_length_table[] =
> - { 0, 60, 115, 150, 150, 60, 115, 150, 180, 180, 0xFF };
> +static const u16 e1000_gg82563_cable_length_table[] = {
> + 0, 60, 115, 150, 150, 60, 115, 150, 180, 180, 0xFF };
> #define GG82563_CABLE_LENGTH_TABLE_SIZE \
> ARRAY_SIZE(e1000_gg82563_cable_length_table)
>
> diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c
> index 15c6330..affcacf 100644
> --- a/drivers/net/e1000e/ethtool.c
> +++ b/drivers/net/e1000e/ethtool.c
> @@ -753,8 +753,8 @@ static bool reg_pattern_test(struct e1000_adapter *adapter, u64 *data,
> int reg, int offset, u32 mask, u32 write)
> {
> u32 pat, val;
> - static const u32 test[] =
> - {0x5A5A5A5A, 0xA5A5A5A5, 0x00000000, 0xFFFFFFFF};
> + static const u32 test[] = {
> + 0x5A5A5A5A, 0xA5A5A5A5, 0x00000000, 0xFFFFFFFF};
> for (pat = 0; pat< ARRAY_SIZE(test); pat++) {
> E1000_WRITE_REG_ARRAY(&adapter->hw, reg, offset,
> (test[pat]& write));
Gah, that looks worse than the unpatched code.
I think this was an over-literal checkpatch interpretation. If you look
at e.g. drivers/net/tg3.c, you see that longer tables have the trailing
braces on a separate line, where they should be.
IMO, the single-line cases should just be left as they are now in the
source code.
Jeff
^ permalink raw reply
* Re: Help: major pppoe regression since 2.6.35 (panic on first ppp conection)?
From: Jarek Poplawski @ 2010-12-25 12:10 UTC (permalink / raw)
To: Joel Soete; +Cc: Eric Dumazet, Andrew Morton, Linux Kernel, netdev
In-Reply-To: <20101224151325.GA1895@del.dom.local>
On Fri, Dec 24, 2010 at 04:13:25PM +0100, Jarek Poplawski wrote:
> On Fri, Dec 24, 2010 at 11:22:25AM +0000, Joel Soete wrote:
> > Hello Jarek,
> Hi Joel,
>
> > Ok I get a clean 2.6.37-rc7 vanilla src and apply your debugging
> > patch and grab the attached syslog-2.6.37-rc7-t2.gz with obviously a
> > lot of "warning" (but as well as with Eric's patch, kernel survived
> > to a lynx connection to ftp.eu.kernel.org to download of a snapshot
> > patch ;<) )
>
> Yes, even more than I expected... I hope the list will forgive us ;-)
Alas the list rejected your message (try to limit it to ~200kb next
time).
Anyway, it looks like the sundance driver is the main guilty. The
patch below removes one obvious bug but there could be something more.
Please, apply this one and my previous debugging patch to the clean
2.6.37-rc7. (If there're still warnings the first ~20kb should do.)
Thanks,
Jarek P.
---
diff --git a/drivers/net/sundance.c b/drivers/net/sundance.c
index 3ed2a67..b409d7e 100644
--- a/drivers/net/sundance.c
+++ b/drivers/net/sundance.c
@@ -1016,7 +1016,7 @@ static void init_ring(struct net_device *dev)
/* Fill in the Rx buffers. Handle allocation failure gracefully. */
for (i = 0; i < RX_RING_SIZE; i++) {
- struct sk_buff *skb = dev_alloc_skb(np->rx_buf_sz);
+ struct sk_buff *skb = dev_alloc_skb(np->rx_buf_sz + 2);
np->rx_skbuff[i] = skb;
if (skb == NULL)
break;
@@ -1407,7 +1407,7 @@ static void refill_rx (struct net_device *dev)
struct sk_buff *skb;
entry = np->dirty_rx % RX_RING_SIZE;
if (np->rx_skbuff[entry] == NULL) {
- skb = dev_alloc_skb(np->rx_buf_sz);
+ skb = dev_alloc_skb(np->rx_buf_sz + 2);
np->rx_skbuff[entry] = skb;
if (skb == NULL)
break; /* Better luck next round. */
^ permalink raw reply related
* Re: [net-next-2.6 01/15] Documentation/networking: Update Intel Wired LAN docs
From: Ben Hutchings @ 2010-12-25 12:30 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: davem, netdev, gospo, bphilips
In-Reply-To: <1293257174-15498-2-git-send-email-jeffrey.t.kirsher@intel.com>
On Fri, 2010-12-24 at 22:06 -0800, jeffrey.t.kirsher@intel.com wrote:
> From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
>
> - Update the Intel Wired LAN documentation with the latest
> URL for ethtool.
>
> - replace "Ethtool" with "ethtool"
[...]
Thanks Jeff.
Ben.
--
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [net-next-2.6 04/15] e1000e: checkpatch error - open braces
From: Krzysztof Halasa @ 2010-12-25 13:10 UTC (permalink / raw)
To: Jeff Garzik
Cc: jeffrey.t.kirsher, davem, Bruce Allan, netdev, gospo, bphilips
In-Reply-To: <4D15C77C.9030306@garzik.org>
Jeff Garzik <jeff@garzik.org> writes:
>> ERROR: that open brace { should be on the previous line
>> -static const u16 e1000_gg82563_cable_length_table[] =
>> - { 0, 60, 115, 150, 150, 60, 115, 150, 180, 180, 0xFF };
>> - static const u32 test[] =
>> - {0x5A5A5A5A, 0xA5A5A5A5, 0x00000000, 0xFFFFFFFF};
> Gah, that looks worse than the unpatched code.
>
> I think this was an over-literal checkpatch interpretation. If you
> look at e.g. drivers/net/tg3.c, you see that longer tables have the
> trailing braces on a separate line, where they should be.
>
> IMO, the single-line cases should just be left as they are now in the
> source code.
I think so. Also I think it's a false positive - the above aren't the
typical
if()
{
xxx
}
They are instead single lines:
type var[] = {a, b, c, d};
broken into two to meet the (former) line length limit.
Makes me think that we should never break long lines in the code. This
is best left for the text editors and viewers (only while displaying).
--
Krzysztof Halasa
^ permalink raw reply
* looking for testers for CDC EEM runtime power management
From: Oliver Neukum @ 2010-12-25 13:29 UTC (permalink / raw)
To: netdev-u79uwXL29TY76Z2rM5mHXA, linux-usb-u79uwXL29TY76Z2rM5mHXA
Hi,
this patch implements runtime power management for CDC EEM.
I lack the hardware and need testers.
Regards
Oliver
>From b9e2ecb3a81c122d37528af4283d9e2ebbb43d23 Mon Sep 17 00:00:00 2001
From: Oliver Neukum <oliver-GvhC2dPhHPQdnm+yROfE0A@public.gmane.org>
Date: Sat, 25 Dec 2010 14:25:45 +0100
Subject: [PATCH] cdc_eem: runtime power management
This patch grants CDC EEM devices which request to be suspended
their wish.
Signed-off-by: Oliver Neukum <oneukum-l3A5Bk7waGM@public.gmane.org>
---
drivers/net/usb/cdc_eem.c | 2 ++
drivers/net/usb/usbnet.c | 20 ++++++++++++++++++++
include/linux/usb/usbnet.h | 2 ++
3 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/drivers/net/usb/cdc_eem.c b/drivers/net/usb/cdc_eem.c
index 5f3b976..be319bd 100644
--- a/drivers/net/usb/cdc_eem.c
+++ b/drivers/net/usb/cdc_eem.c
@@ -245,6 +245,8 @@ static int eem_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
* - response complete: suggest N sec polling
*/
case 2: /* Suspend hint */
+ usbnet_notify_idle(dev);
+ continue;
case 3: /* Response hint */
case 4: /* Response complete hint */
continue;
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index c04d49e..95727a7 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -1201,6 +1201,24 @@ static void usbnet_bh (unsigned long param)
}
}
+/*-------------------------------------------------------------------------*/
+
+/*
+ * Some devices notify the host of an idle condition
+ * this makes use of this information
+ */
+
+void usbnet_notify_idle(struct usbnet *dev)
+{
+ int r;
+
+ if (!test_and_set_bit(EVENT_REP_IDLE, &dev->flags)) {
+ r = usb_autopm_get_interface_async(dev->intf);
+ if (r < 0)
+ clear_bit(EVENT_REP_IDLE, &dev->flags);
+ }
+}
+EXPORT_SYMBOL_GPL(usbnet_notify_idle);
/*-------------------------------------------------------------------------
*
@@ -1495,6 +1513,8 @@ int usbnet_resume (struct usb_interface *intf)
spin_unlock_irq(&dev->txq.lock);
if (!(dev->txq.qlen >= TX_QLEN(dev)))
netif_start_queue(dev->net);
+ if (test_and_clear_bit(EVENT_REP_IDLE, &dev->flags))
+ usb_autopm_get_interface_no_resume(intf);
tasklet_schedule (&dev->bh);
}
return 0;
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h
index 7ae27a4..1cb929a 100644
--- a/include/linux/usb/usbnet.h
+++ b/include/linux/usb/usbnet.h
@@ -68,6 +68,7 @@ struct usbnet {
# define EVENT_RX_PAUSED 5
# define EVENT_DEV_WAKING 6
# define EVENT_DEV_ASLEEP 7
+# define EVENT_REP_IDLE 8
};
static inline struct usb_driver *driver_of(struct usb_interface *intf)
@@ -205,6 +206,7 @@ extern void usbnet_unlink_rx_urbs(struct usbnet *);
extern void usbnet_pause_rx(struct usbnet *);
extern void usbnet_resume_rx(struct usbnet *);
extern void usbnet_purge_paused_rxq(struct usbnet *);
+extern void usbnet_notify_idle(struct usbnet *);
extern int usbnet_get_settings(struct net_device *net,
struct ethtool_cmd *cmd);
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related
* [PATCH] net: bridge: check the length of skb after nf_bridge_maybe_copy_header()
From: Changli Gao @ 2010-12-25 13:41 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: David S. Miller, bridge, netdev, Changli Gao
Since nf_bridge_maybe_copy_header() may change the length of skb,
we should check the length of skb after it to handle the ppoe skbs.
Signed-off-by: Changli Gao <xiaosuo@gmail.com>
---
net/bridge/br_forward.c | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
index 2bd11ec..ee64287 100644
--- a/net/bridge/br_forward.c
+++ b/net/bridge/br_forward.c
@@ -41,17 +41,13 @@ static inline unsigned packet_length(const struct sk_buff *skb)
int br_dev_queue_push_xmit(struct sk_buff *skb)
{
- /* drop mtu oversized packets except gso */
- if (packet_length(skb) > skb->dev->mtu && !skb_is_gso(skb))
+ /* ip_fragment doesn't copy the MAC header */
+ if (nf_bridge_maybe_copy_header(skb) ||
+ (packet_length(skb) > skb->dev->mtu && !skb_is_gso(skb))) {
kfree_skb(skb);
- else {
- /* ip_fragment doesn't copy the MAC header */
- if (nf_bridge_maybe_copy_header(skb))
- kfree_skb(skb);
- else {
- skb_push(skb, ETH_HLEN);
- dev_queue_xmit(skb);
- }
+ } else {
+ skb_push(skb, ETH_HLEN);
+ dev_queue_xmit(skb);
}
return 0;
^ permalink raw reply related
* Re: Help: major pppoe regression since 2.6.35 (panic on first ppp conection)?
From: Joel Soete @ 2010-12-25 13:51 UTC (permalink / raw)
To: Jarek Poplawski; +Cc: Eric Dumazet, Andrew Morton, Linux Kernel, netdev
In-Reply-To: <20101225121044.GA1841@del.dom.local>
Hello Jarek,
On 12/25/2010 12:10 PM, Jarek Poplawski wrote:
> On Fri, Dec 24, 2010 at 04:13:25PM +0100, Jarek Poplawski wrote:
>> On Fri, Dec 24, 2010 at 11:22:25AM +0000, Joel Soete wrote:
>>> Hello Jarek,
>> Hi Joel,
>>
[snip]
>
> Alas the list rejected your message (try to limit it to ~200kb next
> time).
>
Ah ok I will take care next ;<)
> Anyway, it looks like the sundance driver is the main guilty. The
> patch below removes one obvious bug but there could be something more.
> Please, apply this one and my previous debugging patch to the clean
> 2.6.37-rc7. (If there're still warnings the first ~20kb should do.)
>
> Thanks,
> Jarek P.
> ---
>
> diff --git a/drivers/net/sundance.c b/drivers/net/sundance.c
> index 3ed2a67..b409d7e 100644
> --- a/drivers/net/sundance.c
> +++ b/drivers/net/sundance.c
> @@ -1016,7 +1016,7 @@ static void init_ring(struct net_device *dev)
>
> /* Fill in the Rx buffers. Handle allocation failure gracefully. */
> for (i = 0; i< RX_RING_SIZE; i++) {
> - struct sk_buff *skb = dev_alloc_skb(np->rx_buf_sz);
> + struct sk_buff *skb = dev_alloc_skb(np->rx_buf_sz + 2);
> np->rx_skbuff[i] = skb;
> if (skb == NULL)
> break;
> @@ -1407,7 +1407,7 @@ static void refill_rx (struct net_device *dev)
> struct sk_buff *skb;
> entry = np->dirty_rx % RX_RING_SIZE;
> if (np->rx_skbuff[entry] == NULL) {
> - skb = dev_alloc_skb(np->rx_buf_sz);
> + skb = dev_alloc_skb(np->rx_buf_sz + 2);
> np->rx_skbuff[entry] = skb;
> if (skb == NULL)
> break; /* Better luck next round. */
>
I don't have any more warnings :<)
Awesome job.
Thanks a lot for help and I wish you a Happy new year,
J.
^ permalink raw reply
* [PATCH 0/9] can: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 14:40 UTC (permalink / raw)
To: netdev-u79uwXL29TY76Z2rM5mHXA; +Cc: socketcan-core-0fE9KPoRgkgATYTw5x5z8w
Hello,
this series of patches changes the can driver's RX path. If a RTR frame is
received no data is copied.
As discussed on socketcan-core:
https://lists.berlios.de/pipermail/socketcan-core/2010-October/004836.html
cheers,
Marc
---
The following changes since commit e1928c86c4829703b800c81cc9edc939b5634e6f:
cnic: Add FCoE support on 57712 (2010-12-23 11:44:34 -0800)
are available in the git repository at:
git://git.pengutronix.de/git/mkl/linux-2.6.git public/can/rtr-for-net-next
Marc Kleine-Budde (9):
can: at91_can: don't copy data to rx'ed RTR frames
can: bfin_can: don't copy data to rx'ed RTR frames
can: flexcan: don't copy data to rx'ed RTR frames
can: sja1000: don't copy data to rx'ed RTR frames
can: mcp251x: don't copy data to rx'ed RTR frames
can: ti_hecc: don't copy data to rx'ed RTR frames
can: janz-ican3: cleanup of ican3_to_can_frame and can_frame_to_ican3
can: janz-ican3: don't copy data to rx'ed RTR frames
can: pch_can: don't copy data to rx'ed RTR frames
drivers/net/can/at91_can.c | 10 ++++++----
drivers/net/can/bfin_can.c | 17 +++++++++--------
drivers/net/can/flexcan.c | 10 ++++++----
drivers/net/can/janz-ican3.c | 26 +++++++++++++++-----------
drivers/net/can/mcp251x.c | 3 ++-
drivers/net/can/pch_can.c | 15 ++++++++-------
drivers/net/can/sja1000/sja1000.c | 7 +++----
drivers/net/can/ti_hecc.c | 18 ++++++++++--------
8 files changed, 59 insertions(+), 47 deletions(-)
^ permalink raw reply
* [PATCH 1/9] can: at91_can: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 14:40 UTC (permalink / raw)
To: netdev-u79uwXL29TY76Z2rM5mHXA
Cc: socketcan-core-0fE9KPoRgkgATYTw5x5z8w, Marc Kleine-Budde
In-Reply-To: <1293288034-22428-1-git-send-email-mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Signed-off-by: Marc Kleine-Budde <mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Acked-by: Wolfgang Grandegger <wg-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
---
drivers/net/can/at91_can.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/can/at91_can.c b/drivers/net/can/at91_can.c
index 7ef83d0..53c6598 100644
--- a/drivers/net/can/at91_can.c
+++ b/drivers/net/can/at91_can.c
@@ -491,12 +491,14 @@ static void at91_read_mb(struct net_device *dev, unsigned int mb,
cf->can_id = (reg_mid >> 18) & CAN_SFF_MASK;
reg_msr = at91_read(priv, AT91_MSR(mb));
- if (reg_msr & AT91_MSR_MRTR)
- cf->can_id |= CAN_RTR_FLAG;
cf->can_dlc = get_can_dlc((reg_msr >> 16) & 0xf);
- *(u32 *)(cf->data + 0) = at91_read(priv, AT91_MDL(mb));
- *(u32 *)(cf->data + 4) = at91_read(priv, AT91_MDH(mb));
+ if (reg_msr & AT91_MSR_MRTR)
+ cf->can_id |= CAN_RTR_FLAG;
+ else {
+ *(u32 *)(cf->data + 0) = at91_read(priv, AT91_MDL(mb));
+ *(u32 *)(cf->data + 4) = at91_read(priv, AT91_MDH(mb));
+ }
/* allow RX of extended frames */
at91_write(priv, AT91_MID(mb), AT91_MID_MIDE);
--
1.7.2.3
^ permalink raw reply related
* [PATCH 3/9] can: flexcan: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 14:40 UTC (permalink / raw)
To: netdev-u79uwXL29TY76Z2rM5mHXA
Cc: socketcan-core-0fE9KPoRgkgATYTw5x5z8w, Marc Kleine-Budde
In-Reply-To: <1293288034-22428-1-git-send-email-mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Signed-off-by: Marc Kleine-Budde <mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Acked-by: Wolfgang Grandegger <wg-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
---
drivers/net/can/flexcan.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index d499056..b0e16f5 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -471,12 +471,14 @@ static void flexcan_read_fifo(const struct net_device *dev,
else
cf->can_id = (reg_id >> 18) & CAN_SFF_MASK;
- if (reg_ctrl & FLEXCAN_MB_CNT_RTR)
- cf->can_id |= CAN_RTR_FLAG;
cf->can_dlc = get_can_dlc((reg_ctrl >> 16) & 0xf);
- *(__be32 *)(cf->data + 0) = cpu_to_be32(readl(&mb->data[0]));
- *(__be32 *)(cf->data + 4) = cpu_to_be32(readl(&mb->data[1]));
+ if (reg_ctrl & FLEXCAN_MB_CNT_RTR)
+ cf->can_id |= CAN_RTR_FLAG;
+ else {
+ *(__be32 *)(cf->data + 0) = cpu_to_be32(readl(&mb->data[0]));
+ *(__be32 *)(cf->data + 4) = cpu_to_be32(readl(&mb->data[1]));
+ }
/* mark as read */
writel(FLEXCAN_IFLAG_RX_FIFO_AVAILABLE, ®s->iflag1);
--
1.7.2.3
^ permalink raw reply related
* [PATCH 6/9] can: ti_hecc: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 14:40 UTC (permalink / raw)
To: netdev-u79uwXL29TY76Z2rM5mHXA
Cc: socketcan-core-0fE9KPoRgkgATYTw5x5z8w, Marc Kleine-Budde
In-Reply-To: <1293288034-22428-1-git-send-email-mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
While there, remove clearing of data if the dlc isn't longer as 4.
can frames have data initializes to zero.
Signed-off-by: Marc Kleine-Budde <mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Cc:Anant Gole <anantgole-l0cyMroinI0@public.gmane.org>
Acked-by: Wolfgang Grandegger <wg-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
---
drivers/net/can/ti_hecc.c | 18 ++++++++++--------
1 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/drivers/net/can/ti_hecc.c b/drivers/net/can/ti_hecc.c
index 4d07f1e..b33581b 100644
--- a/drivers/net/can/ti_hecc.c
+++ b/drivers/net/can/ti_hecc.c
@@ -560,18 +560,20 @@ static int ti_hecc_rx_pkt(struct ti_hecc_priv *priv, int mbxno)
cf->can_id = (data & CAN_EFF_MASK) | CAN_EFF_FLAG;
else
cf->can_id = (data >> 18) & CAN_SFF_MASK;
+
data = hecc_read_mbx(priv, mbxno, HECC_CANMCF);
+ cf->can_dlc = get_can_dlc(data & 0xF);
if (data & HECC_CANMCF_RTR)
cf->can_id |= CAN_RTR_FLAG;
- cf->can_dlc = get_can_dlc(data & 0xF);
- data = hecc_read_mbx(priv, mbxno, HECC_CANMDL);
- *(u32 *)(cf->data) = cpu_to_be32(data);
- if (cf->can_dlc > 4) {
- data = hecc_read_mbx(priv, mbxno, HECC_CANMDH);
- *(u32 *)(cf->data + 4) = cpu_to_be32(data);
- } else {
- *(u32 *)(cf->data + 4) = 0;
+ else {
+ data = hecc_read_mbx(priv, mbxno, HECC_CANMDL);
+ *(u32 *)(cf->data) = cpu_to_be32(data);
+ if (cf->can_dlc > 4) {
+ data = hecc_read_mbx(priv, mbxno, HECC_CANMDH);
+ *(u32 *)(cf->data + 4) = cpu_to_be32(data);
+ }
}
+
spin_lock_irqsave(&priv->mbx_lock, flags);
hecc_clear_bit(priv, HECC_CANME, mbx_mask);
hecc_write(priv, HECC_CANRMP, mbx_mask);
--
1.7.2.3
^ permalink raw reply related
* [PATCH 2/9] can: bfin_can: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 14:40 UTC (permalink / raw)
To: netdev; +Cc: socketcan-core, Marc Kleine-Budde, Barry Song
In-Reply-To: <1293288034-22428-1-git-send-email-mkl@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: Barry Song <21cnbao@gmail.com>
Acked-by: Wolfgang Grandegger <wg@grandegger.com>
---
drivers/net/can/bfin_can.c | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/net/can/bfin_can.c b/drivers/net/can/bfin_can.c
index b6e890d..07222ca 100644
--- a/drivers/net/can/bfin_can.c
+++ b/drivers/net/can/bfin_can.c
@@ -306,18 +306,19 @@ static void bfin_can_rx(struct net_device *dev, u16 isrc)
& 0x1ffc) >> 2;
obj = RECEIVE_STD_CHL;
}
- if (bfin_read16(®->chl[obj].id1) & RTR)
- cf->can_id |= CAN_RTR_FLAG;
/* get data length code */
cf->can_dlc = get_can_dlc(bfin_read16(®->chl[obj].dlc) & 0xF);
- /* get payload */
- for (i = 0; i < 8; i += 2) {
- val = bfin_read16(®->chl[obj].data[i]);
- cf->data[7 - i] = (7 - i) < cf->can_dlc ? val : 0;
- cf->data[6 - i] = (6 - i) < cf->can_dlc ? (val >> 8) : 0;
- }
+ if (bfin_read16(®->chl[obj].id1) & RTR)
+ cf->can_id |= CAN_RTR_FLAG;
+ else /* get payload */
+ for (i = 0; i < 8; i += 2) {
+ val = bfin_read16(®->chl[obj].data[i]);
+ cf->data[7 - i] = (7 - i) < cf->can_dlc ? val : 0;
+ cf->data[6 - i] = (6 - i) < cf->can_dlc ?
+ (val >> 8) : 0;
+ }
netif_rx(skb);
--
1.7.2.3
^ permalink raw reply related
* [PATCH 4/9] can: sja1000: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 14:40 UTC (permalink / raw)
To: netdev; +Cc: socketcan-core, Marc Kleine-Budde, Wolfgang Grandegger
In-Reply-To: <1293288034-22428-1-git-send-email-mkl@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: Wolfgang Grandegger <wg@grandegger.com>
Acked-by: Wolfgang Grandegger <wg@grandegger.com>
---
drivers/net/can/sja1000/sja1000.c | 7 +++----
1 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/net/can/sja1000/sja1000.c b/drivers/net/can/sja1000/sja1000.c
index 0a8de01..bb4bfe3 100644
--- a/drivers/net/can/sja1000/sja1000.c
+++ b/drivers/net/can/sja1000/sja1000.c
@@ -346,13 +346,12 @@ static void sja1000_rx(struct net_device *dev)
| (priv->read_reg(priv, REG_ID2) >> 5);
}
- if (fi & FI_RTR) {
+ cf->can_dlc = get_can_dlc(fi & 0x0F);
+ if (fi & FI_RTR)
id |= CAN_RTR_FLAG;
- } else {
- cf->can_dlc = get_can_dlc(fi & 0x0F);
+ else
for (i = 0; i < cf->can_dlc; i++)
cf->data[i] = priv->read_reg(priv, dreg++);
- }
cf->can_id = id;
--
1.7.2.3
^ permalink raw reply related
* [PATCH 5/9] can: mcp251x: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 14:40 UTC (permalink / raw)
To: netdev; +Cc: socketcan-core, Marc Kleine-Budde, Christian Pellegrin
In-Reply-To: <1293288034-22428-1-git-send-email-mkl@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: Christian Pellegrin <chripell@fsfe.org>
Acked-by: Wolfgang Grandegger <wg@grandegger.com>
---
drivers/net/can/mcp251x.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drivers/net/can/mcp251x.c b/drivers/net/can/mcp251x.c
index 7ab534a..9e08acc 100644
--- a/drivers/net/can/mcp251x.c
+++ b/drivers/net/can/mcp251x.c
@@ -481,7 +481,8 @@ static void mcp251x_hw_rx(struct spi_device *spi, int buf_idx)
}
/* Data length */
frame->can_dlc = get_can_dlc(buf[RXBDLC_OFF] & RXBDLC_LEN_MASK);
- memcpy(frame->data, buf + RXBDAT_OFF, frame->can_dlc);
+ if (!(frame->can_id & CAN_RTR_FLAG))
+ memcpy(frame->data, buf + RXBDAT_OFF, frame->can_dlc);
priv->net->stats.rx_packets++;
priv->net->stats.rx_bytes += frame->can_dlc;
--
1.7.2.3
^ permalink raw reply related
* [PATCH 7/9] can: janz-ican3: cleanup of ican3_to_can_frame and can_frame_to_ican3
From: Marc Kleine-Budde @ 2010-12-25 14:40 UTC (permalink / raw)
To: netdev; +Cc: socketcan-core, Marc Kleine-Budde, Ira W. Snyder
In-Reply-To: <1293288034-22428-1-git-send-email-mkl@pengutronix.de>
This patch cleans up the ICAN3 to Linux CAN frame and vice versa
conversion functions:
- RX: Use get_can_dlc() to limit the dlc value.
- TX: Drop invalid skbs wiht can_dropped_invalid_skb
- both: Don't copy the whole frame, only copy the amount of bytes specified
in cf->can_dlc.
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
Acked-by: Wolfgang Grandegger <wg@grandegger.com>
---
drivers/net/can/janz-ican3.c | 13 ++++++++-----
1 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/net/can/janz-ican3.c b/drivers/net/can/janz-ican3.c
index b9a6d7a..810345f 100644
--- a/drivers/net/can/janz-ican3.c
+++ b/drivers/net/can/janz-ican3.c
@@ -812,10 +812,10 @@ static void ican3_to_can_frame(struct ican3_dev *mod,
cf->can_id |= desc->data[0] << 3;
cf->can_id |= (desc->data[1] & 0xe0) >> 5;
- cf->can_dlc = desc->data[1] & ICAN3_CAN_DLC_MASK;
- memcpy(cf->data, &desc->data[2], sizeof(cf->data));
+ cf->can_dlc = get_can_dlc(desc->data[1] & ICAN3_CAN_DLC_MASK);
+ memcpy(cf->data, &desc->data[2], cf->can_dlc);
} else {
- cf->can_dlc = desc->data[0] & ICAN3_CAN_DLC_MASK;
+ cf->can_dlc = get_can_dlc(desc->data[0] & ICAN3_CAN_DLC_MASK);
if (desc->data[0] & ICAN3_EFF_RTR)
cf->can_id |= CAN_RTR_FLAG;
@@ -830,7 +830,7 @@ static void ican3_to_can_frame(struct ican3_dev *mod,
cf->can_id |= desc->data[3] >> 5; /* 2-0 */
}
- memcpy(cf->data, &desc->data[6], sizeof(cf->data));
+ memcpy(cf->data, &desc->data[6], cf->can_dlc);
}
}
@@ -862,7 +862,7 @@ static void can_frame_to_ican3(struct ican3_dev *mod,
}
/* copy the data bits into the descriptor */
- memcpy(&desc->data[6], cf->data, sizeof(cf->data));
+ memcpy(&desc->data[6], cf->data, cf->can_dlc);
}
/*
@@ -1421,6 +1421,9 @@ static int ican3_xmit(struct sk_buff *skb, struct net_device *ndev)
void __iomem *desc_addr;
unsigned long flags;
+ if (can_dropped_invalid_skb(dev, skb))
+ return NETDEV_TX_OK;
+
spin_lock_irqsave(&mod->lock, flags);
/* check that we can actually transmit */
--
1.7.2.3
^ permalink raw reply related
* [PATCH 8/9] can: janz-ican3: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 14:40 UTC (permalink / raw)
To: netdev; +Cc: socketcan-core, Marc Kleine-Budde
In-Reply-To: <1293288034-22428-1-git-send-email-mkl@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Acked-by: Ira W. Snyder <iws@ovro.caltech.edu>
Acked-by: Wolfgang Grandegger <wg@grandegger.com>
---
drivers/net/can/janz-ican3.c | 19 ++++++++++---------
1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/net/can/janz-ican3.c b/drivers/net/can/janz-ican3.c
index 810345f..77c8413 100644
--- a/drivers/net/can/janz-ican3.c
+++ b/drivers/net/can/janz-ican3.c
@@ -807,18 +807,15 @@ static void ican3_to_can_frame(struct ican3_dev *mod,
struct can_frame *cf)
{
if ((desc->command & ICAN3_CAN_TYPE_MASK) == ICAN3_CAN_TYPE_SFF) {
- if (desc->data[1] & ICAN3_SFF_RTR)
- cf->can_id |= CAN_RTR_FLAG;
-
cf->can_id |= desc->data[0] << 3;
cf->can_id |= (desc->data[1] & 0xe0) >> 5;
+
cf->can_dlc = get_can_dlc(desc->data[1] & ICAN3_CAN_DLC_MASK);
- memcpy(cf->data, &desc->data[2], cf->can_dlc);
- } else {
- cf->can_dlc = get_can_dlc(desc->data[0] & ICAN3_CAN_DLC_MASK);
- if (desc->data[0] & ICAN3_EFF_RTR)
+ if (desc->data[1] & ICAN3_SFF_RTR)
cf->can_id |= CAN_RTR_FLAG;
-
+ else
+ memcpy(cf->data, &desc->data[2], cf->can_dlc);
+ } else {
if (desc->data[0] & ICAN3_EFF) {
cf->can_id |= CAN_EFF_FLAG;
cf->can_id |= desc->data[2] << 21; /* 28-21 */
@@ -830,7 +827,11 @@ static void ican3_to_can_frame(struct ican3_dev *mod,
cf->can_id |= desc->data[3] >> 5; /* 2-0 */
}
- memcpy(cf->data, &desc->data[6], cf->can_dlc);
+ cf->can_dlc = get_can_dlc(desc->data[0] & ICAN3_CAN_DLC_MASK);
+ if (desc->data[0] & ICAN3_EFF_RTR)
+ cf->can_id |= CAN_RTR_FLAG;
+ else
+ memcpy(cf->data, &desc->data[6], cf->can_dlc);
}
}
--
1.7.2.3
^ permalink raw reply related
* [PATCH 9/9] can: pch_can: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 14:40 UTC (permalink / raw)
To: netdev; +Cc: socketcan-core, Marc Kleine-Budde, Tomoya
In-Reply-To: <1293288034-22428-1-git-send-email-mkl@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: Tomoya <tomoya-linux@dsn.okisemi.com>
---
drivers/net/can/pch_can.c | 15 ++++++++-------
1 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/net/can/pch_can.c b/drivers/net/can/pch_can.c
index c42e972..ee488ac 100644
--- a/drivers/net/can/pch_can.c
+++ b/drivers/net/can/pch_can.c
@@ -692,16 +692,17 @@ static int pch_can_rx_normal(struct net_device *ndev, u32 obj_num, int quota)
cf->can_id = id;
}
- if (id2 & PCH_ID2_DIR)
- cf->can_id |= CAN_RTR_FLAG;
-
cf->can_dlc = get_can_dlc((ioread32(&priv->regs->
ifregs[0].mcont)) & 0xF);
- for (i = 0; i < cf->can_dlc; i += 2) {
- data_reg = ioread16(&priv->regs->ifregs[0].data[i / 2]);
- cf->data[i] = data_reg;
- cf->data[i + 1] = data_reg >> 8;
+ if (id2 & PCH_ID2_DIR) {
+ cf->can_id |= CAN_RTR_FLAG;
+
+ for (i = 0; i < cf->can_dlc; i += 2) {
+ data_reg = ioread16(&priv->regs->ifregs[0].data[i / 2]);
+ cf->data[i] = data_reg;
+ cf->data[i + 1] = data_reg >> 8;
+ }
}
netif_receive_skb(skb);
--
1.7.2.3
^ permalink raw reply related
* [PATCH net-2.6] sundance: Fix oopses with corrupted skb_shared_info
From: Jarek Poplawski @ 2010-12-25 15:12 UTC (permalink / raw)
To: David Miller
Cc: Joel Soete, Eric Dumazet, Andrew Morton, Linux Kernel, netdev
In-Reply-To: <4D15F6C9.50700@scarlet.be>
[Was: Help: major pppoe regression since 2.6.35 (panic on first ppp
conection)?]
On Sat, Dec 25, 2010 at 01:51:05PM +0000, Joel Soete wrote:
> Hello Jarek,
Hello Joel,
...
> I don't have any more warnings :<)
>
> Awesome job.
Awesome help.
Thanks and Happy New Year to you as well!
Jarek P.
-------------->
[PATCH net-2.6] sundance: Fix oopses with corrupted skb_shared_info
Joel Soete reported oopses at the beginning of pppoe connections since
v2.6.35. After debugging the bug was found in sundance skb allocation
and dma mapping code, where skb_reserve() bytes aren't taken into
account. This is an old bug, only uncovered by some change in 2.6.35.
Initial debugging patch by: Eric Dumazet <eric.dumazet@gmail.com>
Reported-by: Joel Soete <soete.joel@scarlet.be>
Tested-by: Joel Soete <soete.joel@scarlet.be>
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
---
diff --git a/drivers/net/sundance.c b/drivers/net/sundance.c
index 3ed2a67..b409d7e 100644
--- a/drivers/net/sundance.c
+++ b/drivers/net/sundance.c
@@ -1016,7 +1016,7 @@ static void init_ring(struct net_device *dev)
/* Fill in the Rx buffers. Handle allocation failure gracefully. */
for (i = 0; i < RX_RING_SIZE; i++) {
- struct sk_buff *skb = dev_alloc_skb(np->rx_buf_sz);
+ struct sk_buff *skb = dev_alloc_skb(np->rx_buf_sz + 2);
np->rx_skbuff[i] = skb;
if (skb == NULL)
break;
@@ -1407,7 +1407,7 @@ static void refill_rx (struct net_device *dev)
struct sk_buff *skb;
entry = np->dirty_rx % RX_RING_SIZE;
if (np->rx_skbuff[entry] == NULL) {
- skb = dev_alloc_skb(np->rx_buf_sz);
+ skb = dev_alloc_skb(np->rx_buf_sz + 2);
np->rx_skbuff[entry] = skb;
if (skb == NULL)
break; /* Better luck next round. */
^ permalink raw reply related
* Re: [PATCH 9/9] can: pch_can: don't copy data to rx'ed RTR frames
From: Oliver Hartkopp @ 2010-12-25 15:52 UTC (permalink / raw)
To: Marc Kleine-Budde
Cc: socketcan-core-0fE9KPoRgkgATYTw5x5z8w,
netdev-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1293288034-22428-10-git-send-email-mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
On 25.12.2010 15:40, Marc Kleine-Budde wrote:
> Signed-off-by: Marc Kleine-Budde <mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
> Cc: Tomoya <tomoya-linux-ECg8zkTtlr0C6LszWs/t0g@public.gmane.org>
> ---
> drivers/net/can/pch_can.c | 15 ++++++++-------
> 1 files changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/net/can/pch_can.c b/drivers/net/can/pch_can.c
> index c42e972..ee488ac 100644
> --- a/drivers/net/can/pch_can.c
> +++ b/drivers/net/can/pch_can.c
> @@ -692,16 +692,17 @@ static int pch_can_rx_normal(struct net_device *ndev, u32 obj_num, int quota)
> cf->can_id = id;
> }
>
> - if (id2 & PCH_ID2_DIR)
> - cf->can_id |= CAN_RTR_FLAG;
> -
> cf->can_dlc = get_can_dlc((ioread32(&priv->regs->
> ifregs[0].mcont)) & 0xF);
>
> - for (i = 0; i < cf->can_dlc; i += 2) {
> - data_reg = ioread16(&priv->regs->ifregs[0].data[i / 2]);
> - cf->data[i] = data_reg;
> - cf->data[i + 1] = data_reg >> 8;
> + if (id2 & PCH_ID2_DIR) {
> + cf->can_id |= CAN_RTR_FLAG;
> +
} else {
???
> + for (i = 0; i < cf->can_dlc; i += 2) {
> + data_reg = ioread16(&priv->regs->ifregs[0].data[i / 2]);
> + cf->data[i] = data_reg;
> + cf->data[i + 1] = data_reg >> 8;
> + }
> }
>
> netif_receive_skb(skb);
Regards,
Oliver
^ permalink raw reply
* Re: [PATCH 9/9] can: pch_can: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 16:25 UTC (permalink / raw)
To: Oliver Hartkopp
Cc: socketcan-core-0fE9KPoRgkgATYTw5x5z8w,
netdev-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <4D161334.3090100-fJ+pQTUTwRTk1uMJSBkQmQ@public.gmane.org>
[-- Attachment #1.1: Type: text/plain, Size: 1764 bytes --]
On 12/25/2010 04:52 PM, Oliver Hartkopp wrote:
> On 25.12.2010 15:40, Marc Kleine-Budde wrote:
>> Signed-off-by: Marc Kleine-Budde <mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
>> Cc: Tomoya <tomoya-linux-ECg8zkTtlr0C6LszWs/t0g@public.gmane.org>
>> ---
>> drivers/net/can/pch_can.c | 15 ++++++++-------
>> 1 files changed, 8 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/net/can/pch_can.c b/drivers/net/can/pch_can.c
>> index c42e972..ee488ac 100644
>> --- a/drivers/net/can/pch_can.c
>> +++ b/drivers/net/can/pch_can.c
>> @@ -692,16 +692,17 @@ static int pch_can_rx_normal(struct net_device *ndev, u32 obj_num, int quota)
>> cf->can_id = id;
>> }
>>
>> - if (id2 & PCH_ID2_DIR)
>> - cf->can_id |= CAN_RTR_FLAG;
>> -
>> cf->can_dlc = get_can_dlc((ioread32(&priv->regs->
>> ifregs[0].mcont)) & 0xF);
>>
>> - for (i = 0; i < cf->can_dlc; i += 2) {
>> - data_reg = ioread16(&priv->regs->ifregs[0].data[i / 2]);
>> - cf->data[i] = data_reg;
>> - cf->data[i + 1] = data_reg >> 8;
>> + if (id2 & PCH_ID2_DIR) {
>> + cf->can_id |= CAN_RTR_FLAG;
>> +
>
> } else {
doh! Should not write patches after big xmas lunch.
>
> ???
>
>> + for (i = 0; i < cf->can_dlc; i += 2) {
>> + data_reg = ioread16(&priv->regs->ifregs[0].data[i / 2]);
>> + cf->data[i] = data_reg;
>> + cf->data[i + 1] = data_reg >> 8;
>> + }
>> }
>>
>> netif_receive_skb(skb);
>
> Regards,
> Oliver
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]
[-- Attachment #2: Type: text/plain, Size: 188 bytes --]
_______________________________________________
Socketcan-core mailing list
Socketcan-core-0fE9KPoRgkgATYTw5x5z8w@public.gmane.org
https://lists.berlios.de/mailman/listinfo/socketcan-core
^ permalink raw reply
* [PATCH v2 0/9] can: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 16:55 UTC (permalink / raw)
To: netdev-u79uwXL29TY76Z2rM5mHXA; +Cc: socketcan-core-0fE9KPoRgkgATYTw5x5z8w
Hello,
this series of patches changes the can driver's RX path. If a RTR frame is
received no data is copied.
As discussed on socketcan-core:
https://lists.berlios.de/pipermail/socketcan-core/2010-October/004836.html
cheers,
Marc
--
The following changes since commit e1928c86c4829703b800c81cc9edc939b5634e6f:
cnic: Add FCoE support on 57712 (2010-12-23 11:44:34 -0800)
are available in the git repository at:
git://git.pengutronix.de/git/mkl/linux-2.6.git public/can/rtr-for-net-next
Marc Kleine-Budde (9):
can: at91_can: don't copy data to rx'ed RTR frames
can: bfin_can: don't copy data to rx'ed RTR frames
can: flexcan: don't copy data to rx'ed RTR frames
can: sja1000: don't copy data to rx'ed RTR frames
can: mcp251x: don't copy data to rx'ed RTR frames
can: ti_hecc: don't copy data to rx'ed RTR frames
can: janz-ican3: cleanup of ican3_to_can_frame and can_frame_to_ican3
can: janz-ican3: don't copy data to rx'ed RTR frames
can: pch_can: don't copy data to rx'ed RTR frames
drivers/net/can/at91_can.c | 10 ++++++----
drivers/net/can/bfin_can.c | 17 +++++++++--------
drivers/net/can/flexcan.c | 10 ++++++----
drivers/net/can/janz-ican3.c | 26 +++++++++++++++-----------
drivers/net/can/mcp251x.c | 3 ++-
drivers/net/can/pch_can.c | 15 ++++++++-------
drivers/net/can/sja1000/sja1000.c | 7 +++----
drivers/net/can/ti_hecc.c | 18 ++++++++++--------
8 files changed, 59 insertions(+), 47 deletions(-)
^ permalink raw reply
* [PATCH v2 1/9] can: at91_can: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 16:55 UTC (permalink / raw)
To: netdev-u79uwXL29TY76Z2rM5mHXA
Cc: socketcan-core-0fE9KPoRgkgATYTw5x5z8w, Marc Kleine-Budde
In-Reply-To: <1293296117-27624-1-git-send-email-mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Signed-off-by: Marc Kleine-Budde <mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Acked-by: Wolfgang Grandegger <wg-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
---
drivers/net/can/at91_can.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/can/at91_can.c b/drivers/net/can/at91_can.c
index 7ef83d0..53c6598 100644
--- a/drivers/net/can/at91_can.c
+++ b/drivers/net/can/at91_can.c
@@ -491,12 +491,14 @@ static void at91_read_mb(struct net_device *dev, unsigned int mb,
cf->can_id = (reg_mid >> 18) & CAN_SFF_MASK;
reg_msr = at91_read(priv, AT91_MSR(mb));
- if (reg_msr & AT91_MSR_MRTR)
- cf->can_id |= CAN_RTR_FLAG;
cf->can_dlc = get_can_dlc((reg_msr >> 16) & 0xf);
- *(u32 *)(cf->data + 0) = at91_read(priv, AT91_MDL(mb));
- *(u32 *)(cf->data + 4) = at91_read(priv, AT91_MDH(mb));
+ if (reg_msr & AT91_MSR_MRTR)
+ cf->can_id |= CAN_RTR_FLAG;
+ else {
+ *(u32 *)(cf->data + 0) = at91_read(priv, AT91_MDL(mb));
+ *(u32 *)(cf->data + 4) = at91_read(priv, AT91_MDH(mb));
+ }
/* allow RX of extended frames */
at91_write(priv, AT91_MID(mb), AT91_MID_MIDE);
--
1.7.2.3
^ permalink raw reply related
* [PATCH v2 2/9] can: bfin_can: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 16:55 UTC (permalink / raw)
To: netdev-u79uwXL29TY76Z2rM5mHXA
Cc: socketcan-core-0fE9KPoRgkgATYTw5x5z8w, Marc Kleine-Budde
In-Reply-To: <1293296117-27624-1-git-send-email-mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Signed-off-by: Marc Kleine-Budde <mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Cc: Barry Song <21cnbao-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Acked-by: Wolfgang Grandegger <wg-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
---
drivers/net/can/bfin_can.c | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/net/can/bfin_can.c b/drivers/net/can/bfin_can.c
index b6e890d..07222ca 100644
--- a/drivers/net/can/bfin_can.c
+++ b/drivers/net/can/bfin_can.c
@@ -306,18 +306,19 @@ static void bfin_can_rx(struct net_device *dev, u16 isrc)
& 0x1ffc) >> 2;
obj = RECEIVE_STD_CHL;
}
- if (bfin_read16(®->chl[obj].id1) & RTR)
- cf->can_id |= CAN_RTR_FLAG;
/* get data length code */
cf->can_dlc = get_can_dlc(bfin_read16(®->chl[obj].dlc) & 0xF);
- /* get payload */
- for (i = 0; i < 8; i += 2) {
- val = bfin_read16(®->chl[obj].data[i]);
- cf->data[7 - i] = (7 - i) < cf->can_dlc ? val : 0;
- cf->data[6 - i] = (6 - i) < cf->can_dlc ? (val >> 8) : 0;
- }
+ if (bfin_read16(®->chl[obj].id1) & RTR)
+ cf->can_id |= CAN_RTR_FLAG;
+ else /* get payload */
+ for (i = 0; i < 8; i += 2) {
+ val = bfin_read16(®->chl[obj].data[i]);
+ cf->data[7 - i] = (7 - i) < cf->can_dlc ? val : 0;
+ cf->data[6 - i] = (6 - i) < cf->can_dlc ?
+ (val >> 8) : 0;
+ }
netif_rx(skb);
--
1.7.2.3
^ permalink raw reply related
* [PATCH v2 3/9] can: flexcan: don't copy data to rx'ed RTR frames
From: Marc Kleine-Budde @ 2010-12-25 16:55 UTC (permalink / raw)
To: netdev-u79uwXL29TY76Z2rM5mHXA
Cc: socketcan-core-0fE9KPoRgkgATYTw5x5z8w, Marc Kleine-Budde
In-Reply-To: <1293296117-27624-1-git-send-email-mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Signed-off-by: Marc Kleine-Budde <mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Acked-by: Wolfgang Grandegger <wg-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
---
drivers/net/can/flexcan.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index d499056..b0e16f5 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -471,12 +471,14 @@ static void flexcan_read_fifo(const struct net_device *dev,
else
cf->can_id = (reg_id >> 18) & CAN_SFF_MASK;
- if (reg_ctrl & FLEXCAN_MB_CNT_RTR)
- cf->can_id |= CAN_RTR_FLAG;
cf->can_dlc = get_can_dlc((reg_ctrl >> 16) & 0xf);
- *(__be32 *)(cf->data + 0) = cpu_to_be32(readl(&mb->data[0]));
- *(__be32 *)(cf->data + 4) = cpu_to_be32(readl(&mb->data[1]));
+ if (reg_ctrl & FLEXCAN_MB_CNT_RTR)
+ cf->can_id |= CAN_RTR_FLAG;
+ else {
+ *(__be32 *)(cf->data + 0) = cpu_to_be32(readl(&mb->data[0]));
+ *(__be32 *)(cf->data + 4) = cpu_to_be32(readl(&mb->data[1]));
+ }
/* mark as read */
writel(FLEXCAN_IFLAG_RX_FIFO_AVAILABLE, ®s->iflag1);
--
1.7.2.3
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox