+@@ -301,8 +301,9 @@ static int bgmac_dma_rx_read(struct bgma
+ bgmac_err(bgmac, "Found poisoned packet at slot %d, DMA issue!\n",
+ ring->start);
+ } else {
+- new_skb = netdev_alloc_skb(bgmac->net_dev, len);
++ new_skb = netdev_alloc_skb(bgmac->net_dev, len + 2);
+ if (new_skb) {
++ skb_reserve(new_skb, 2);
+ skb_put(new_skb, len);
+ skb_copy_from_linear_data_offset(skb, BGMAC_RX_FRAME_OFFSET,
+ new_skb->data,
+@@ -535,7 +536,7 @@ static void bgmac_dma_init(struct bgmac
+ * PHY ops
+ **************************************************/
+
+-u16 bgmac_phy_read(struct bgmac *bgmac, u8 phyaddr, u8 reg)
++static u16 bgmac_phy_read(struct bgmac *bgmac, u8 phyaddr, u8 reg)
+ {
+ struct bcma_device *core;
+ u16 phy_access_addr;
+@@ -584,7 +585,7 @@ u16 bgmac_phy_read(struct bgmac *bgmac,
+ }
+
+ /* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipphywr */
+-void bgmac_phy_write(struct bgmac *bgmac, u8 phyaddr, u8 reg, u16 value)
++static int bgmac_phy_write(struct bgmac *bgmac, u8 phyaddr, u8 reg, u16 value)
+ {
+ struct bcma_device *core;
+ u16 phy_access_addr;
+@@ -617,9 +618,13 @@ void bgmac_phy_write(struct bgmac *bgmac
+ tmp |= value;
+ bcma_write32(core, phy_access_addr, tmp);
+
+- if (!bgmac_wait_value(core, phy_access_addr, BGMAC_PA_START, 0, 1000))
++ if (!bgmac_wait_value(core, phy_access_addr, BGMAC_PA_START, 0, 1000)) {
+ bgmac_err(bgmac, "Writing to PHY %d register 0x%X failed\n",
+ phyaddr, reg);
++ return -ETIMEDOUT;
++ }
++
++ return 0;
+ }
+
+ /* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipphyforce */
+@@ -761,6 +766,26 @@ static void bgmac_cmdcfg_maskset(struct