Message ID | 1527284654-24835-3-git-send-email-jennifer.dahm@ni.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
Series | net: macb: Disable TX checksum offloading on all Zynq | expand |
On 25/05/2018 at 23:44, Jennifer Dahm wrote: > The Zynq ethernet hardware has checksum offloading bugs that cause > small UDP packets (<= 2 bytes) to be sent with an incorrect checksum > (0xffff) and forwarded UDP packets to be re-checksummed, which is > illegal behavior. The best solution we have right now is to disable > hardware TX checksum offloading entirely. > > Signed-off-by: Jennifer Dahm <jennifer.dahm@ni.com> Adding some xilinx people I know... > --- > drivers/net/ethernet/cadence/macb_main.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c > index a5d564b..e8cc68a 100644 > --- a/drivers/net/ethernet/cadence/macb_main.c > +++ b/drivers/net/ethernet/cadence/macb_main.c > @@ -3807,7 +3807,8 @@ static const struct macb_config zynqmp_config = { > }; > > static const struct macb_config zynq_config = { > - .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_NO_GIGABIT_HALF, > + .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_NO_GIGABIT_HALF > + | MACB_CAPS_DISABLE_TX_HW_CSUM, > .dma_burst_length = 16, > .clk_init = macb_clk_init, > .init = macb_init, >
On 4.6.2018 17:06, Nicolas Ferre wrote: > On 25/05/2018 at 23:44, Jennifer Dahm wrote: >> The Zynq ethernet hardware has checksum offloading bugs that cause >> small UDP packets (<= 2 bytes) to be sent with an incorrect checksum >> (0xffff) and forwarded UDP packets to be re-checksummed, which is >> illegal behavior. The best solution we have right now is to disable >> hardware TX checksum offloading entirely. >> >> Signed-off-by: Jennifer Dahm <jennifer.dahm@ni.com> > > Adding some xilinx people I know... Harini: Please look at this. Thanks, Michal
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index a5d564b..e8cc68a 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -3807,7 +3807,8 @@ static const struct macb_config zynqmp_config = { }; static const struct macb_config zynq_config = { - .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_NO_GIGABIT_HALF, + .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_NO_GIGABIT_HALF + | MACB_CAPS_DISABLE_TX_HW_CSUM, .dma_burst_length = 16, .clk_init = macb_clk_init, .init = macb_init,
The Zynq ethernet hardware has checksum offloading bugs that cause small UDP packets (<= 2 bytes) to be sent with an incorrect checksum (0xffff) and forwarded UDP packets to be re-checksummed, which is illegal behavior. The best solution we have right now is to disable hardware TX checksum offloading entirely. Signed-off-by: Jennifer Dahm <jennifer.dahm@ni.com> --- drivers/net/ethernet/cadence/macb_main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)