}
}
+}
-
-- if (ring->cpu_base) {
-- /* Free ring of descriptors */
-- size = ring->num_slots * sizeof(struct bgmac_dma_desc);
-- dma_free_coherent(dma_dev, size, ring->cpu_base,
-- ring->dma_base);
++
+static void bgmac_dma_rx_ring_free(struct bgmac *bgmac,
+ struct bgmac_dma_ring *ring)
+{
+ slot = &ring->slots[i];
+ if (!slot->buf)
+ continue;
-+
+
+- if (ring->cpu_base) {
+- /* Free ring of descriptors */
+- size = ring->num_slots * sizeof(struct bgmac_dma_desc);
+- dma_free_coherent(dma_dev, size, ring->cpu_base,
+- ring->dma_base);
+ if (slot->dma_addr)
+ dma_unmap_single(dma_dev, slot->dma_addr,
+ BGMAC_RX_BUF_SIZE,
#include <bcm47xx_nvram.h>
static const struct bcma_device_id bgmac_bcma_tbl[] = {
-@@ -1432,6 +1433,17 @@ static void bgmac_mii_unregister(struct
+@@ -1538,6 +1539,17 @@ static void bgmac_mii_unregister(struct
mdiobus_free(mii_bus);
}
/**************************************************
* BCMA bus ops
**************************************************/
-@@ -1551,6 +1563,16 @@ static int bgmac_probe(struct bcma_devic
- goto err_dma_free;
- }
+@@ -1661,6 +1673,16 @@ static int bgmac_probe(struct bcma_devic
+ net_dev->hw_features = net_dev->features;
+ net_dev->vlan_features = net_dev->features;
+ if ((ci->id == BCMA_CHIP_ID_BCM4707 ||
+ ci->id == BCMA_CHIP_ID_BCM53018) &&
err = register_netdev(bgmac->net_dev);
if (err) {
bgmac_err(bgmac, "Cannot register net device\n");
-@@ -1577,6 +1599,10 @@ static void bgmac_remove(struct bcma_dev
+@@ -1687,6 +1709,10 @@ static void bgmac_remove(struct bcma_dev
{
struct bgmac *bgmac = bcma_get_drvdata(core);
netif_napi_del(&bgmac->napi);
--- a/drivers/net/ethernet/broadcom/bgmac.h
+++ b/drivers/net/ethernet/broadcom/bgmac.h
-@@ -457,6 +457,9 @@ struct bgmac {
+@@ -462,6 +462,9 @@ struct bgmac {
bool has_robosw;
bool loopback;
--- a/kernel/seccomp.c
+++ b/kernel/seccomp.c
-@@ -614,6 +614,7 @@
+@@ -614,6 +614,7 @@ int __secure_computing(void)
#ifdef CONFIG_SECCOMP_FILTER
static u32 __seccomp_phase1_filter(int this_syscall, struct seccomp_data *sd)
{
u32 filter_ret, action;
int data;
-@@ -644,6 +645,13 @@
+@@ -644,6 +645,13 @@ static u32 __seccomp_phase1_filter(int t
case SECCOMP_RET_TRACE:
return filter_ret; /* Save the rest for phase 2. */