2010-07-29 23:58:27

by Joe Perches

[permalink] [raw]
Subject: [PATCH net-next 0/3] drivers/net/bfin_mac.c: Neatening

Ho-hum, broken up into pieces just for Mike Frysinger.

Still uncompiled, untested

Joe Perches (3):
drivers/net/bfin_mac.c: Neatening
drivers/net/bfin_mac.c: Use pr_<level>, netdev_<level>
drivers/net/bfin_mac.c: Misc function cleanups, neatening

drivers/net/bfin_mac.c | 329 ++++++++++++++++++++++++++----------------------
1 files changed, 176 insertions(+), 153 deletions(-)

--
1.7.2.19.g9a302


2010-07-29 23:58:33

by Joe Perches

[permalink] [raw]
Subject: [PATCH net-next 2/3] drivers/net/bfin_mac.c: Use pr_<level>, netdev_<level>

Add and use pr_fmt, pr_<level> and netdev_<level>

Signed-off-by: Joe Perches <[email protected]>
---
drivers/net/bfin_mac.c | 56 +++++++++++++++++++++--------------------------
1 files changed, 25 insertions(+), 31 deletions(-)

diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c
index 0b032a5..a1d8119 100644
--- a/drivers/net/bfin_mac.c
+++ b/drivers/net/bfin_mac.c
@@ -195,8 +195,7 @@ static int desc_list_init(void)
/* allocate a new skb for next time receive */
new_skb = dev_alloc_skb(PKT_BUF_SZ + NET_IP_ALIGN);
if (!new_skb) {
- printk(KERN_NOTICE DRV_NAME
- ": init: low on mem - packet dropped\n");
+ pr_notice("init: low on mem - packet dropped\n");
goto init_error;
}
skb_reserve(new_skb, NET_IP_ALIGN);
@@ -247,7 +246,7 @@ static int desc_list_init(void)

init_error:
desc_list_free();
- printk(KERN_ERR DRV_NAME ": kmalloc failed\n");
+ pr_err("kmalloc failed\n");
return -ENOMEM;
}

@@ -264,12 +263,11 @@ static int bfin_mdio_poll(void)

/* poll the STABUSY bit */
while ((bfin_read_EMAC_STAADD()) & STABUSY) {
- udelay(1);
if (timeout_cnt-- < 0) {
- printk(KERN_ERR DRV_NAME
- ": wait MDC/MDIO transaction to complete timeout\n");
+ pr_err("wait MDC/MDIO transaction to complete timeout\n");
return -ETIMEDOUT;
}
+ udelay(1);
}

return 0;
@@ -357,9 +355,9 @@ static void bfin_mac_adjust_link(struct net_device *dev)
opmode &= ~(RMII_10);
break;
default:
- printk(KERN_WARNING
- "%s: Ack! Speed (%d) is not 10/100!\n",
- DRV_NAME, phydev->speed);
+ netdev_warn(dev,
+ "Ack! Speed (%d) is not 10/100!\n",
+ phydev->speed);
break;
}
bfin_write_EMAC_OPMODE(opmode);
@@ -383,7 +381,7 @@ static void bfin_mac_adjust_link(struct net_device *dev)
if (new_state) {
u32 opmode = bfin_read_EMAC_OPMODE();
phy_print_status(phydev);
- pr_debug("EMAC_OPMODE = 0x%08x\n", opmode);
+ netdev_dbg(dev, "EMAC_OPMODE = 0x%08x\n", opmode);
}

spin_unlock_irqrestore(&lp->lock, flags);
@@ -424,8 +422,7 @@ static int mii_probe(struct net_device *dev)

/* now we are supposed to have a proper phydev to attach to... */
if (!phydev) {
- printk(KERN_INFO "%s: Don't found any phy device at all\n",
- dev->name);
+ netdev_info(dev, "No PHY device found\n");
return -ENODEV;
}

@@ -438,7 +435,7 @@ static int mii_probe(struct net_device *dev)
#endif

if (IS_ERR(phydev)) {
- printk(KERN_ERR "%s: Could not attach to PHY\n", dev->name);
+ netdev_err(dev, "Could not attach to PHY\n");
return PTR_ERR(phydev);
}

@@ -460,11 +457,11 @@ static int mii_probe(struct net_device *dev)
lp->old_duplex = -1;
lp->phydev = phydev;

- printk(KERN_INFO "%s: attached PHY driver [%s] "
- "(mii_bus:phy_addr=%s, irq=%d, mdc_clk=%dHz(mdc_div=%d)"
- "@sclk=%dMHz)\n",
- DRV_NAME, phydev->drv->name, dev_name(&phydev->dev), phydev->irq,
- MDC_CLK, mdc_div, sclk/1000000);
+ netdev_info(dev, "attached PHY driver [%s] "
+ "(mii_bus:phy_addr=%s, irq=%d, mdc_clk=%dHz(mdc_div=%d)"
+ "@sclk=%dMHz)\n",
+ phydev->drv->name, dev_name(&phydev->dev), phydev->irq,
+ MDC_CLK, mdc_div, sclk/1000000);

return 0;
}
@@ -833,8 +830,7 @@ static void bfin_tx_hwtstamp(struct net_device *netdev, struct sk_buff *skb)
(--timeout_cnt))
udelay(1);
if (timeout_cnt == 0)
- printk(KERN_ERR DRV_NAME
- ": fails to timestamp the TX packet\n");
+ pr_err("failed to timestamp the TX packet\n");
else {
struct skb_shared_hwtstamps shhwtstamps;
u64 ns;
@@ -1091,8 +1087,7 @@ static void bfin_mac_rx(struct net_device *dev)
* we which case we simply drop the packet
*/
if (current_rx_ptr->status.status_word & RX_ERROR_MASK) {
- printk(KERN_NOTICE DRV_NAME
- ": rx: receive error - packet dropped\n");
+ netdev_notice(dev, "rx: receive error - packet dropped\n");
dev->stats.rx_dropped++;
goto out;
}
@@ -1102,8 +1097,7 @@ static void bfin_mac_rx(struct net_device *dev)

new_skb = dev_alloc_skb(PKT_BUF_SZ + NET_IP_ALIGN);
if (!new_skb) {
- printk(KERN_NOTICE DRV_NAME
- ": rx: low on mem - packet dropped\n");
+ pr_notice("rx: low on mem - packet dropped\n");
dev->stats.rx_dropped++;
goto out;
}
@@ -1226,7 +1220,7 @@ static int bfin_mac_enable(void)
int ret;
u32 opmode;

- pr_debug("%s: %s\n", DRV_NAME, __func__);
+ pr_debug("%s\n", __func__);

/* Set RX DMA */
bfin_write_DMA1_NEXT_DESC_PTR(&(rx_list_head->desc_a));
@@ -1268,7 +1262,7 @@ static void bfin_mac_timeout(struct net_device *dev)
{
struct bfin_mac_local *lp = netdev_priv(dev);

- pr_debug("%s: %s\n", dev->name, __func__);
+ netdev_dbg(dev, "%s\n", __func__);

bfin_mac_disable();

@@ -1335,7 +1329,7 @@ static void bfin_mac_set_multicast_list(struct net_device *dev)
u32 sysctl;

if (dev->flags & IFF_PROMISC) {
- printk(KERN_INFO "%s: set to promisc mode\n", dev->name);
+ netdev_info(dev, "set to promisc mode\n");
sysctl = bfin_read_EMAC_OPMODE();
sysctl |= PR;
bfin_write_EMAC_OPMODE(sysctl);
@@ -1389,7 +1383,7 @@ static int bfin_mac_open(struct net_device *dev)
{
struct bfin_mac_local *lp = netdev_priv(dev);
int ret;
- pr_debug("%s: %s\n", dev->name, __func__);
+ netdev_dbg(dev, "%s\n", __func__);

/*
* Check that the address is valid. If its not, refuse
@@ -1397,7 +1391,7 @@ static int bfin_mac_open(struct net_device *dev)
* address using ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
*/
if (!is_valid_ether_addr(dev->dev_addr)) {
- printk(KERN_WARNING DRV_NAME ": no valid ethernet hw addr\n");
+ netdev_warn(dev, "no valid ethernet hw addr\n");
return -EINVAL;
}

@@ -1415,7 +1409,7 @@ static int bfin_mac_open(struct net_device *dev)
ret = bfin_mac_enable();
if (ret)
return ret;
- pr_debug("hardware init finished\n");
+ netdev_dbg(dev, "hardware init finished\n");

netif_start_queue(dev);
netif_carrier_on(dev);
@@ -1431,7 +1425,7 @@ static int bfin_mac_open(struct net_device *dev)
static int bfin_mac_close(struct net_device *dev)
{
struct bfin_mac_local *lp = netdev_priv(dev);
- pr_debug("%s: %s\n", dev->name, __func__);
+ netdev_dbg(dev, "%s\n", __func__);

netif_stop_queue(dev);
netif_carrier_off(dev);
--
1.7.2.19.g9a302

2010-07-29 23:58:36

by Joe Perches

[permalink] [raw]
Subject: [PATCH net-next 1/3] drivers/net/bfin_mac.c: Neatening

80 column fixes
Spelling/typo corrections
Argument alignment

checkpatch clean

Signed-off-by: Joe Perches <[email protected]>
---
drivers/net/bfin_mac.c | 204 ++++++++++++++++++++++++++----------------------
1 files changed, 112 insertions(+), 92 deletions(-)

diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c
index 012613f..0b032a5 100644
--- a/drivers/net/bfin_mac.c
+++ b/drivers/net/bfin_mac.c
@@ -132,14 +132,14 @@ static int desc_list_init(void)
#endif

tx_desc = bfin_mac_alloc(&dma_handle,
- sizeof(struct net_dma_desc_tx) *
- CONFIG_BFIN_TX_DESC_NUM);
+ sizeof(struct net_dma_desc_tx) *
+ CONFIG_BFIN_TX_DESC_NUM);
if (tx_desc == NULL)
goto init_error;

rx_desc = bfin_mac_alloc(&dma_handle,
- sizeof(struct net_dma_desc_rx) *
- CONFIG_BFIN_RX_DESC_NUM);
+ sizeof(struct net_dma_desc_rx) *
+ CONFIG_BFIN_RX_DESC_NUM);
if (rx_desc == NULL)
goto init_error;

@@ -200,8 +200,9 @@ static int desc_list_init(void)
goto init_error;
}
skb_reserve(new_skb, NET_IP_ALIGN);
- /* Invidate the data cache of skb->data range when it is write back
- * cache. It will prevent overwritting the new data from DMA
+ /* Invalidate the data cache of skb->data range when it is
+ * write back cache.
+ * It will prevent overwriting the new data from DMA
*/
blackfin_dcache_invalidate_range((unsigned long)new_skb->head,
(unsigned long)new_skb->end);
@@ -229,8 +230,8 @@ static int desc_list_init(void)
* 6 half words is desc size
* large desc flow
*/
- b->config = DMAEN | WNR | WDSIZE_32 | DI_EN |
- NDSIZE_6 | DMAFLOW_LARGE;
+ b->config = (DMAEN | WNR | WDSIZE_32 | DI_EN |
+ NDSIZE_6 | DMAFLOW_LARGE);
b->start_addr = (unsigned long)(&(r->status));
b->x_count = 0;

@@ -284,15 +285,15 @@ static int bfin_mdiobus_read(struct mii_bus *bus, int phy_addr, int regnum)
return ret;

/* read mode */
- bfin_write_EMAC_STAADD(SET_PHYAD((u16) phy_addr) |
- SET_REGAD((u16) regnum) |
- STABUSY);
+ bfin_write_EMAC_STAADD((SET_PHYAD((u16)phy_addr) |
+ SET_REGAD((u16)regnum) |
+ STABUSY));

ret = bfin_mdio_poll();
if (ret)
return ret;

- return (int) bfin_read_EMAC_STADAT();
+ return (int)bfin_read_EMAC_STADAT();
}

/* Write an off-chip register in a PHY through the MDC/MDIO port */
@@ -308,10 +309,10 @@ static int bfin_mdiobus_write(struct mii_bus *bus, int phy_addr, int regnum,
bfin_write_EMAC_STADAT((u32) value);

/* write mode */
- bfin_write_EMAC_STAADD(SET_PHYAD((u16) phy_addr) |
- SET_REGAD((u16) regnum) |
+ bfin_write_EMAC_STAADD((SET_PHYAD((u16)phy_addr) |
+ SET_REGAD((u16)regnum) |
STAOP |
- STABUSY);
+ STABUSY));

return bfin_mdio_poll();
}
@@ -421,7 +422,7 @@ static int mii_probe(struct net_device *dev)
break; /* found it */
}

- /* now we are supposed to have a proper phydev, to attach to... */
+ /* now we are supposed to have a proper phydev to attach to... */
if (!phydev) {
printk(KERN_INFO "%s: Don't found any phy device at all\n",
dev->name);
@@ -430,10 +431,10 @@ static int mii_probe(struct net_device *dev)

#if defined(CONFIG_BFIN_MAC_RMII)
phydev = phy_connect(dev, dev_name(&phydev->dev), &bfin_mac_adjust_link,
- 0, PHY_INTERFACE_MODE_RMII);
+ 0, PHY_INTERFACE_MODE_RMII);
#else
phydev = phy_connect(dev, dev_name(&phydev->dev), &bfin_mac_adjust_link,
- 0, PHY_INTERFACE_MODE_MII);
+ 0, PHY_INTERFACE_MODE_MII);
#endif

if (IS_ERR(phydev)) {
@@ -442,14 +443,15 @@ static int mii_probe(struct net_device *dev)
}

/* mask with MAC supported features */
- phydev->supported &= (SUPPORTED_10baseT_Half
- | SUPPORTED_10baseT_Full
- | SUPPORTED_100baseT_Half
- | SUPPORTED_100baseT_Full
- | SUPPORTED_Autoneg
- | SUPPORTED_Pause | SUPPORTED_Asym_Pause
- | SUPPORTED_MII
- | SUPPORTED_TP);
+ phydev->supported &= (SUPPORTED_10baseT_Half |
+ SUPPORTED_10baseT_Full |
+ SUPPORTED_100baseT_Half |
+ SUPPORTED_100baseT_Full |
+ SUPPORTED_Autoneg |
+ SUPPORTED_Pause |
+ SUPPORTED_Asym_Pause |
+ SUPPORTED_MII |
+ SUPPORTED_TP);

phydev->advertising = phydev->supported;

@@ -514,7 +516,7 @@ static void bfin_mac_ethtool_getdrvinfo(struct net_device *dev,
}

static void bfin_mac_ethtool_getwol(struct net_device *dev,
- struct ethtool_wolinfo *wolinfo)
+ struct ethtool_wolinfo *wolinfo)
{
struct bfin_mac_local *lp = netdev_priv(dev);

@@ -523,7 +525,7 @@ static void bfin_mac_ethtool_getwol(struct net_device *dev,
}

static int bfin_mac_ethtool_setwol(struct net_device *dev,
- struct ethtool_wolinfo *wolinfo)
+ struct ethtool_wolinfo *wolinfo)
{
struct bfin_mac_local *lp = netdev_priv(dev);
int rc;
@@ -601,8 +603,8 @@ void setup_system_regs(struct net_device *dev)

static void setup_mac_addr(u8 *mac_addr)
{
- u32 addr_low = le32_to_cpu(*(__le32 *) & mac_addr[0]);
- u16 addr_hi = le16_to_cpu(*(__le16 *) & mac_addr[4]);
+ u32 addr_low = le32_to_cpu(*(__le32 *)&mac_addr[0]);
+ u16 addr_hi = le16_to_cpu(*(__le16 *)&mac_addr[4]);

/* this depends on a little-endian machine */
bfin_write_EMAC_ADDRLO(addr_low);
@@ -612,6 +614,7 @@ static void setup_mac_addr(u8 *mac_addr)
static int bfin_mac_set_mac_address(struct net_device *dev, void *p)
{
struct sockaddr *addr = p;
+
if (netif_running(dev))
return -EBUSY;
memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
@@ -623,7 +626,7 @@ static int bfin_mac_set_mac_address(struct net_device *dev, void *p)
#define bfin_mac_hwtstamp_is_none(cfg) ((cfg) == HWTSTAMP_FILTER_NONE)

static int bfin_mac_hwtstamp_ioctl(struct net_device *netdev,
- struct ifreq *ifr, int cmd)
+ struct ifreq *ifr, int cmd)
{
struct hwtstamp_config config;
struct bfin_mac_local *lp = netdev_priv(netdev);
@@ -634,14 +637,14 @@ static int bfin_mac_hwtstamp_ioctl(struct net_device *netdev,
return -EFAULT;

pr_debug("%s config flag:0x%x, tx_type:0x%x, rx_filter:0x%x\n",
- __func__, config.flags, config.tx_type, config.rx_filter);
+ __func__, config.flags, config.tx_type, config.rx_filter);

/* reserved for future extensions */
if (config.flags)
return -EINVAL;

if ((config.tx_type != HWTSTAMP_TX_OFF) &&
- (config.tx_type != HWTSTAMP_TX_ON))
+ (config.tx_type != HWTSTAMP_TX_ON))
return -ERANGE;

ptpctl = bfin_read_EMAC_PTP_CTL();
@@ -658,7 +661,8 @@ static int bfin_mac_hwtstamp_ioctl(struct net_device *netdev,
case HWTSTAMP_FILTER_PTP_V1_L4_SYNC:
case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ:
/*
- * Clear the five comparison mask bits (bits[12:8]) in EMAC_PTP_CTL)
+ * Clear the five comparison mask bits
+ * (bits[12:8] in EMAC_PTP_CTL)
* to enable all the field matches.
*/
ptpctl &= ~0x1F00;
@@ -694,8 +698,8 @@ static int bfin_mac_hwtstamp_ioctl(struct net_device *netdev,
ptpctl &= ~0x1F00;
bfin_write_EMAC_PTP_CTL(ptpctl);
/*
- * Keep the default values of the EMAC_PTP_FOFF register, except set
- * the PTPCOF field to 0x2A.
+ * Keep the default values of the EMAC_PTP_FOFF register,
+ * except set the PTPCOF field to 0x2A.
*/
ptpfoff = 0x2A24170C;
bfin_write_EMAC_PTP_FOFF(ptpfoff);
@@ -720,20 +724,20 @@ static int bfin_mac_hwtstamp_ioctl(struct net_device *netdev,
case HWTSTAMP_FILTER_PTP_V2_L2_SYNC:
case HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ:
/*
- * Clear bits 8 and 12 of the EMAC_PTP_CTL register to enable only the
- * EFTM and PTPCM field comparison.
+ * Clear bits 8 and 12 of the EMAC_PTP_CTL register to enable
+ * only the EFTM and PTPCM field comparison.
*/
ptpctl &= ~0x1100;
bfin_write_EMAC_PTP_CTL(ptpctl);
/*
- * Keep the default values of all the fields of the EMAC_PTP_FOFF
- * register, except set the PTPCOF field to 0x0E.
+ * Keep the default values of all the fields of the
+ * EMAC_PTP_FOFF register, except set the PTPCOF field to 0x0E.
*/
ptpfoff = 0x0E24170C;
bfin_write_EMAC_PTP_FOFF(ptpfoff);
/*
- * Program bits [15:0] of the EMAC_PTP_FV1 register to 0x88F7, which
- * corresponds to PTP messages on the MAC layer.
+ * Program bits [15:0] of the EMAC_PTP_FV1 register to 0x88F7,
+ * which corresponds to PTP messages on the MAC layer.
*/
ptpfv1 = 0x110488F7;
bfin_write_EMAC_PTP_FV1(ptpfv1);
@@ -780,24 +784,29 @@ static int bfin_mac_hwtstamp_ioctl(struct net_device *netdev,
SSYNC();

lp->compare.last_update = 0;
- timecounter_init(&lp->clock,
- &lp->cycles,
- ktime_to_ns(ktime_get_real()));
+ timecounter_init(&lp->clock, &lp->cycles,
+ ktime_to_ns(ktime_get_real()));
timecompare_update(&lp->compare, 0);
}

lp->stamp_cfg = config;
- return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ?
- -EFAULT : 0;
+ if (copy_to_user(ifr->ifr_data, &config, sizeof(config)))
+ return -EFAULT;
+
+ return 0;
}

-static void bfin_dump_hwtamp(char *s, ktime_t *hw, ktime_t *ts, struct timecompare *cmp)
+static void bfin_dump_hwtamp(char *s, ktime_t *hw, ktime_t *ts,
+ struct timecompare *cmp)
{
ktime_t sys = ktime_get_real();

pr_debug("%s %s hardware:%d,%d transform system:%d,%d system:%d,%d, cmp:%lld, %lld\n",
- __func__, s, hw->tv.sec, hw->tv.nsec, ts->tv.sec, ts->tv.nsec, sys.tv.sec,
- sys.tv.nsec, cmp->offset, cmp->skew);
+ __func__, s,
+ hw->tv.sec, hw->tv.nsec,
+ ts->tv.sec, ts->tv.nsec,
+ sys.tv.sec, sys.tv.nsec,
+ cmp->offset, cmp->skew);
}

static void bfin_tx_hwtstamp(struct net_device *netdev, struct sk_buff *skb)
@@ -814,12 +823,14 @@ static void bfin_tx_hwtstamp(struct net_device *netdev, struct sk_buff *skb)
shtx->in_progress = 1;

/*
- * The timestamping is done at the EMAC module's MII/RMII interface
- * when the module sees the Start of Frame of an event message packet. This
- * interface is the closest possible place to the physical Ethernet transmission
+ * The timestamping is done at the EMAC module's MII/RMII
+ * interface when the module sees the Start of Frame of an
+ * event message packet. This interface is the closest
+ * possible place to the physical Ethernet transmission
* medium, providing the best timing accuracy.
*/
- while ((!(bfin_read_EMAC_PTP_ISTAT() & TXTL)) && (--timeout_cnt))
+ while ((!(bfin_read_EMAC_PTP_ISTAT() & TXTL)) &&
+ (--timeout_cnt))
udelay(1);
if (timeout_cnt == 0)
printk(KERN_ERR DRV_NAME
@@ -832,15 +843,15 @@ static void bfin_tx_hwtstamp(struct net_device *netdev, struct sk_buff *skb)
regval = bfin_read_EMAC_PTP_TXSNAPLO();
regval |= (u64)bfin_read_EMAC_PTP_TXSNAPHI() << 32;
memset(&shhwtstamps, 0, sizeof(shhwtstamps));
- ns = timecounter_cyc2time(&lp->clock,
- regval);
+ ns = timecounter_cyc2time(&lp->clock, regval);
timecompare_update(&lp->compare, ns);
shhwtstamps.hwtstamp = ns_to_ktime(ns);
shhwtstamps.syststamp =
timecompare_transform(&lp->compare, ns);
skb_tstamp_tx(skb, &shhwtstamps);

- bfin_dump_hwtamp("TX", &shhwtstamps.hwtstamp, &shhwtstamps.syststamp, &lp->compare);
+ bfin_dump_hwtamp("TX", &shhwtstamps.hwtstamp,
+ &shhwtstamps.syststamp, &lp->compare);
}
}
}
@@ -869,7 +880,8 @@ static void bfin_rx_hwtstamp(struct net_device *netdev, struct sk_buff *skb)
shhwtstamps->hwtstamp = ns_to_ktime(ns);
shhwtstamps->syststamp = timecompare_transform(&lp->compare, ns);

- bfin_dump_hwtamp("RX", &shhwtstamps->hwtstamp, &shhwtstamps->syststamp, &lp->compare);
+ bfin_dump_hwtamp("RX", &shhwtstamps->hwtstamp,
+ &shhwtstamps->syststamp, &lp->compare);
}

/*
@@ -879,8 +891,8 @@ static cycle_t bfin_read_clock(const struct cyclecounter *tc)
{
u64 stamp;

- stamp = bfin_read_EMAC_PTP_TIMELO();
- stamp |= (u64)bfin_read_EMAC_PTP_TIMEHI() << 32ULL;
+ stamp = bfin_read_EMAC_PTP_TIMELO();
+ stamp |= ((u64)bfin_read_EMAC_PTP_TIMEHI()) << 32;

return stamp;
}
@@ -961,7 +973,7 @@ static void tx_reclaim_skb(struct bfin_mac_local *lp)
}

if (current_tx_ptr->next != tx_list_head &&
- netif_queue_stopped(lp->ndev))
+ netif_queue_stopped(lp->ndev))
netif_wake_queue(lp->ndev);

if (tx_list_head != current_tx_ptr) {
@@ -974,10 +986,8 @@ static void tx_reclaim_skb(struct bfin_mac_local *lp)
jiffies + TX_RECLAIM_JIFFIES;

mod_timer(&lp->tx_reclaim_timer,
- lp->tx_reclaim_timer.expires);
+ lp->tx_reclaim_timer.expires);
}
-
- return;
}

static void tx_reclaim_skb_timeout(unsigned long lp)
@@ -985,8 +995,7 @@ static void tx_reclaim_skb_timeout(unsigned long lp)
tx_reclaim_skb((struct bfin_mac_local *)lp);
}

-static int bfin_mac_hard_start_xmit(struct sk_buff *skb,
- struct net_device *dev)
+static int bfin_mac_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct bfin_mac_local *lp = netdev_priv(dev);
u16 *data;
@@ -1000,10 +1009,11 @@ static int bfin_mac_hard_start_xmit(struct sk_buff *skb,
data = (u16 *)(skb->data) - 1;
*data = (u16)(skb->len);
/*
- * When transmitting an Ethernet packet, the PTP_TSYNC module requires
- * a DMA_Length_Word field associated with the packet. The lower 12 bits
- * of this field are the length of the packet payload in bytes and the higher
- * 4 bits are the timestamping enable field.
+ * When transmitting an Ethernet packet, the PTP_TSYNC module
+ * requires a DMA_Length_Word field associated with the packet.
+ * The lower 12 bits of this field are the length of the packet
+ * payload in bytes and the higher 4 bits are the timestamping
+ * enable field.
*/
if (shtx->hardware)
*data |= 0x1000;
@@ -1011,7 +1021,7 @@ static int bfin_mac_hard_start_xmit(struct sk_buff *skb,
current_tx_ptr->desc_a.start_addr = (u32)data;
/* this is important! */
blackfin_dcache_flush_range((u32)data,
- (u32)((u8 *)data + skb->len + 4));
+ (u32)((u8 *)data + skb->len + 4));
} else {
*((u16 *)(current_tx_ptr->packet)) = (u16)(skb->len);
/* enable timestamping for the sent packet */
@@ -1026,7 +1036,8 @@ static int bfin_mac_hard_start_xmit(struct sk_buff *skb,
(u32)(current_tx_ptr->packet + skb->len + 2));
}

- /* make sure the internal data buffers in the core are drained
+ /*
+ * Make sure the internal data buffers in the core are drained
* so that the DMA descriptors are completely written when the
* DMA engine goes to fetch them below
*/
@@ -1063,7 +1074,8 @@ out:

#define IP_HEADER_OFF 0
#define RX_ERROR_MASK (RX_LONG | RX_ALIGN | RX_CRC | RX_LEN | \
- RX_FRAG | RX_ADDR | RX_DMAO | RX_PHY | RX_LATE | RX_RANGE)
+ RX_FRAG | RX_ADDR | RX_DMAO | RX_PHY | \
+ RX_LATE | RX_RANGE)

static void bfin_mac_rx(struct net_device *dev)
{
@@ -1097,8 +1109,9 @@ static void bfin_mac_rx(struct net_device *dev)
}
/* reserve 2 bytes for RXDWA padding */
skb_reserve(new_skb, NET_IP_ALIGN);
- /* Invidate the data cache of skb->data range when it is write back
- * cache. It will prevent overwritting the new data from DMA
+ /*
+ * Invalidate the data cache of skb->data range when it is write back
+ * cache. It will prevent overwriting the new data from DMA
*/
blackfin_dcache_invalidate_range((unsigned long)new_skb->head,
(unsigned long)new_skb->end);
@@ -1116,25 +1129,29 @@ static void bfin_mac_rx(struct net_device *dev)
bfin_rx_hwtstamp(dev, skb);

#if defined(BFIN_MAC_CSUM_OFFLOAD)
- /* Checksum offloading only works for IPv4 packets with the standard IP header
- * length of 20 bytes, because the blackfin MAC checksum calculation is
- * based on that assumption. We must NOT use the calculated checksum if our
- * IP version or header break that assumption.
+ /*
+ * Checksum offloading only works for IPv4 packets with the standard
+ * IP header length of 20 bytes, because the blackfin MAC checksum
+ * calculation is based on that assumption. We must NOT use the
+ * calculated checksum if our IP version or header break that
+ * assumption.
*/
if (skb->data[IP_HEADER_OFF] == 0x45) {
skb->csum = current_rx_ptr->status.ip_payload_csum;
/*
- * Deduce Ethernet FCS from hardware generated IP payload checksum.
- * IP checksum is based on 16-bit one's complement algorithm.
- * To deduce a value from checksum is equal to add its inversion.
- * If the IP payload len is odd, the inversed FCS should also
- * begin from odd address and leave first byte zero.
+ * Deduce Ethernet FCS from hardware generated IP payload
+ * checksum. IP checksum is based on 16-bit one's complement
+ * algorithm. To deduce a value from checksum is equal to
+ * add its inversion. If the IP payload len is odd, the
+ * inversed FCS should also begin from odd address and leave
+ * first byte zero.
*/
if (skb->len % 2) {
fcs[0] = 0;
for (i = 0; i < ETH_FCS_LEN; i++)
fcs[i + 1] = ~skb->data[skb->len + i];
- skb->csum = csum_partial(fcs, ETH_FCS_LEN + 1, skb->csum);
+ skb->csum = csum_partial(fcs, ETH_FCS_LEN + 1,
+ skb->csum);
} else {
for (i = 0; i < ETH_FCS_LEN; i++)
fcs[i] = ~skb->data[skb->len + i];
@@ -1465,8 +1482,10 @@ static int __devinit bfin_mac_probe(struct platform_device *pdev)
lp->ndev = ndev;

/* Grab the MAC address in the MAC */
- *(__le32 *) (&(ndev->dev_addr[0])) = cpu_to_le32(bfin_read_EMAC_ADDRLO());
- *(__le16 *) (&(ndev->dev_addr[4])) = cpu_to_le16((u16) bfin_read_EMAC_ADDRHI());
+ *(__le32 *)(&(ndev->dev_addr[0])) =
+ cpu_to_le32(bfin_read_EMAC_ADDRLO());
+ *(__le16 *)(&(ndev->dev_addr[4])) =
+ cpu_to_le16((u16)bfin_read_EMAC_ADDRHI());

/* probe mac */
/*todo: how to proble? which is revision_register */
@@ -1526,8 +1545,8 @@ static int __devinit bfin_mac_probe(struct platform_device *pdev)

/* now, enable interrupts */
/* register irq handler */
- rc = request_irq(IRQ_MAC_RX, bfin_mac_interrupt,
- IRQF_DISABLED, "EMAC_RX", ndev);
+ rc = request_irq(IRQ_MAC_RX, bfin_mac_interrupt, IRQF_DISABLED,
+ "EMAC_RX", ndev);
if (rc) {
dev_err(&pdev->dev, "Cannot request Blackfin MAC RX IRQ!\n");
rc = -EBUSY;
@@ -1647,7 +1666,7 @@ static int __devinit bfin_mii_bus_probe(struct platform_device *pdev)
miibus->parent = &pdev->dev;
miibus->name = "bfin_mii_bus";
snprintf(miibus->id, MII_BUS_ID_SIZE, "0");
- miibus->irq = kmalloc(sizeof(int)*PHY_MAX_ADDR, GFP_KERNEL);
+ miibus->irq = kmalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL);
if (miibus->irq == NULL)
goto out_err_alloc;
for (i = 0; i < PHY_MAX_ADDR; ++i)
@@ -1674,6 +1693,7 @@ out_err_alloc:
static int __devexit bfin_mii_bus_remove(struct platform_device *pdev)
{
struct mii_bus *miibus = platform_get_drvdata(pdev);
+
platform_set_drvdata(pdev, NULL);
mdiobus_unregister(miibus);
kfree(miibus->irq);
@@ -1698,13 +1718,14 @@ static struct platform_driver bfin_mac_driver = {
.suspend = bfin_mac_suspend,
.driver = {
.name = DRV_NAME,
- .owner = THIS_MODULE,
+ .owner = THIS_MODULE,
},
};

static int __init bfin_mac_init(void)
{
int ret;
+
ret = platform_driver_register(&bfin_mii_bus_driver);
if (!ret)
return platform_driver_register(&bfin_mac_driver);
@@ -1720,4 +1741,3 @@ static void __exit bfin_mac_cleanup(void)
}

module_exit(bfin_mac_cleanup);
-
--
1.7.2.19.g9a302

2010-07-29 23:58:32

by Joe Perches

[permalink] [raw]
Subject: [PATCH net-next 3/3] drivers/net/bfin_mac.c: Misc function cleanups, neatening

Use new bfin_alloc_skb to centralize skb allocations
Add and use get_mac_addr function
Neaten bfin_mac_init
Neaten bfin_mac_hard_start_xmit

Signed-off-by: Joe Perches <[email protected]>
---
drivers/net/bfin_mac.c | 93 ++++++++++++++++++++++++++---------------------
1 files changed, 51 insertions(+), 42 deletions(-)

diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c
index a1d8119..68afb2a 100644
--- a/drivers/net/bfin_mac.c
+++ b/drivers/net/bfin_mac.c
@@ -81,6 +81,26 @@ static u16 pin_req[] = P_RMII0;
static u16 pin_req[] = P_MII0;
#endif

+static struct sk_buff *bfin_alloc_skb(void)
+{
+ /* allocate a new skb */
+ struct sk_buff *new_skb = dev_alloc_skb(PKT_BUF_SZ + NET_IP_ALIGN);
+
+ if (!new_skb)
+ return NULL;
+
+ skb_reserve(new_skb, NET_IP_ALIGN);
+ /*
+ * Invalidate the data cache of skb->data range
+ * when it is write back cache to prevent overwriting
+ * the new data from DMA.
+ */
+ blackfin_dcache_invalidate_range((unsigned long)new_skb->head,
+ (unsigned long)new_skb->end);
+
+ return new_skb;
+}
+
static void desc_list_free(void)
{
struct net_dma_desc_rx *r;
@@ -193,18 +213,12 @@ static int desc_list_init(void)
struct dma_descriptor *b = &(r->desc_b);

/* allocate a new skb for next time receive */
- new_skb = dev_alloc_skb(PKT_BUF_SZ + NET_IP_ALIGN);
+ new_skb = bfin_alloc_skb();
if (!new_skb) {
pr_notice("init: low on mem - packet dropped\n");
goto init_error;
}
- skb_reserve(new_skb, NET_IP_ALIGN);
- /* Invalidate the data cache of skb->data range when it is
- * write back cache.
- * It will prevent overwriting the new data from DMA
- */
- blackfin_dcache_invalidate_range((unsigned long)new_skb->head,
- (unsigned long)new_skb->end);
+
r->skb = new_skb;

/*
@@ -598,6 +612,16 @@ void setup_system_regs(struct net_device *dev)
bfin_write_DMA1_Y_MODIFY(0);
}

+/* Grab the MAC address in the MAC */
+static void get_mac_addr(u8 *mac_addr)
+{
+ __le32 addr_low = cpu_to_le32(bfin_read_EMAC_ADDRLO());
+ __le16 addr_hi = cpu_to_le16((u16)bfin_read_EMAC_ADDRHI());
+
+ memcpy(mac_addr, &addr_low, 4);
+ memcpy(mac_addr + 4, &addr_hi, 2);
+}
+
static void setup_mac_addr(u8 *mac_addr)
{
u32 addr_low = le32_to_cpu(*(__le32 *)&mac_addr[0]);
@@ -994,15 +1018,17 @@ static void tx_reclaim_skb_timeout(unsigned long lp)
static int bfin_mac_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct bfin_mac_local *lp = netdev_priv(dev);
- u16 *data;
u32 data_align = (unsigned long)(skb->data) & 0x3;
+ unsigned long buf_start;
+ unsigned long buf_len;
union skb_shared_tx *shtx = skb_tx(skb);

current_tx_ptr->skb = skb;

if (data_align == 0x2) {
/* move skb->data to current_tx_ptr payload */
- data = (u16 *)(skb->data) - 1;
+ u16 *data = (u16 *)(skb->data) - 1;
+
*data = (u16)(skb->len);
/*
* When transmitting an Ethernet packet, the PTP_TSYNC module
@@ -1014,23 +1040,21 @@ static int bfin_mac_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
if (shtx->hardware)
*data |= 0x1000;

- current_tx_ptr->desc_a.start_addr = (u32)data;
- /* this is important! */
- blackfin_dcache_flush_range((u32)data,
- (u32)((u8 *)data + skb->len + 4));
+ buf_start = (unsigned long)data;
+ buf_len = skb->len + 4;
} else {
*((u16 *)(current_tx_ptr->packet)) = (u16)(skb->len);
/* enable timestamping for the sent packet */
if (shtx->hardware)
*((u16 *)(current_tx_ptr->packet)) |= 0x1000;
- memcpy((u8 *)(current_tx_ptr->packet + 2), skb->data,
- skb->len);
- current_tx_ptr->desc_a.start_addr =
- (u32)current_tx_ptr->packet;
- blackfin_dcache_flush_range(
- (u32)current_tx_ptr->packet,
- (u32)(current_tx_ptr->packet + skb->len + 2));
+ memcpy(current_tx_ptr->packet + 2, skb->data, skb->len);
+
+ buf_start = (unsigned long)current_tx_ptr->packet;
+ buf_len = skb->len + 2;
}
+ current_tx_ptr->desc_a.start_addr = buf_start;
+ /* this is important! */
+ blackfin_dcache_flush_range(buf_start, buf_start + buf_len);

/*
* Make sure the internal data buffers in the core are drained
@@ -1095,20 +1119,12 @@ static void bfin_mac_rx(struct net_device *dev)
/* allocate a new skb for next time receive */
skb = current_rx_ptr->skb;

- new_skb = dev_alloc_skb(PKT_BUF_SZ + NET_IP_ALIGN);
+ new_skb = bfin_alloc_skb();
if (!new_skb) {
pr_notice("rx: low on mem - packet dropped\n");
dev->stats.rx_dropped++;
goto out;
}
- /* reserve 2 bytes for RXDWA padding */
- skb_reserve(new_skb, NET_IP_ALIGN);
- /*
- * Invalidate the data cache of skb->data range when it is write back
- * cache. It will prevent overwriting the new data from DMA
- */
- blackfin_dcache_invalidate_range((unsigned long)new_skb->head,
- (unsigned long)new_skb->end);

current_rx_ptr->skb = new_skb;
current_rx_ptr->desc_a.start_addr = (unsigned long)new_skb->data - 2;
@@ -1475,14 +1491,10 @@ static int __devinit bfin_mac_probe(struct platform_device *pdev)
lp = netdev_priv(ndev);
lp->ndev = ndev;

- /* Grab the MAC address in the MAC */
- *(__le32 *)(&(ndev->dev_addr[0])) =
- cpu_to_le32(bfin_read_EMAC_ADDRLO());
- *(__le16 *)(&(ndev->dev_addr[4])) =
- cpu_to_le16((u16)bfin_read_EMAC_ADDRHI());
+ get_mac_addr(ndev->dev_addr);

/* probe mac */
- /*todo: how to proble? which is revision_register */
+ /* todo: how to probe? which is revision_register */
bfin_write_EMAC_ADDRLO(0x12345678);
if (bfin_read_EMAC_ADDRLO() != 0x12345678) {
dev_err(&pdev->dev, "Cannot detect Blackfin on-chip ethernet MAC controller!\n");
@@ -1718,12 +1730,9 @@ static struct platform_driver bfin_mac_driver = {

static int __init bfin_mac_init(void)
{
- int ret;
-
- ret = platform_driver_register(&bfin_mii_bus_driver);
- if (!ret)
- return platform_driver_register(&bfin_mac_driver);
- return -ENODEV;
+ if (platform_driver_register(&bfin_mii_bus_driver))
+ return -ENODEV;
+ return platform_driver_register(&bfin_mac_driver);
}

module_init(bfin_mac_init);
--
1.7.2.19.g9a302

2010-07-30 00:17:42

by Mike Frysinger

[permalink] [raw]
Subject: Re: [PATCH net-next 2/3] drivers/net/bfin_mac.c: Use pr_<level>, netdev_<level>

On Thu, Jul 29, 2010 at 19:58, Joe Perches wrote:
> Add and use pr_fmt, pr_<level> and netdev_<level>

your changelog says add pr_fmt, but i dont see it in the patch ...

> @@ -833,8 +830,7 @@ static void bfin_tx_hwtstamp(struct net_device *netdev, struct sk_buff *skb)
>                       (--timeout_cnt))
>                        udelay(1);
>                if (timeout_cnt == 0)
> -                       printk(KERN_ERR DRV_NAME
> -                                       ": fails to timestamp the TX packet\n");
> +                       pr_err("failed to timestamp the TX packet\n");

this func has a net_device, so cant you use netdev_err here ?

> @@ -1102,8 +1097,7 @@ static void bfin_mac_rx(struct net_device *dev)
>
>        new_skb = dev_alloc_skb(PKT_BUF_SZ + NET_IP_ALIGN);
>        if (!new_skb) {
> -               printk(KERN_NOTICE DRV_NAME
> -                      ": rx: low on mem - packet dropped\n");
> +               pr_notice("rx: low on mem - packet dropped\n");

same here

otherwise this patch looks good
-mike
????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?

2010-07-30 00:18:47

by Mike Frysinger

[permalink] [raw]
Subject: Re: [PATCH net-next 3/3] drivers/net/bfin_mac.c: Misc function cleanups, neatening

On Thu, Jul 29, 2010 at 19:58, Joe Perches wrote:
> Use new bfin_alloc_skb to centralize skb allocations
> Add and use get_mac_addr function
> Neaten bfin_mac_init
> Neaten bfin_mac_hard_start_xmit

i'll ack the idea, but i think it better i pull these patches into the
Blackfin repo to get some real hardware testing before i forward them
back to David/netdev ...

that OK with you ?
-mike

2010-07-30 01:44:42

by Joe Perches

[permalink] [raw]
Subject: [PATCH V2 net-next 2/3] drivers/net/bfin_mac.c: Use pr_<level>, netdev_<level>

Add and use pr_fmt, pr_<level> and netdev_<level>

Signed-off-by: Joe Perches <[email protected]>
---
drivers/net/bfin_mac.c | 64 +++++++++++++++++++++++------------------------
1 files changed, 31 insertions(+), 33 deletions(-)

diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c
index 0b032a5..7543b07 100644
--- a/drivers/net/bfin_mac.c
+++ b/drivers/net/bfin_mac.c
@@ -8,6 +8,8 @@
* Licensed under the GPL-2 or later.
*/

+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
@@ -195,8 +197,7 @@ static int desc_list_init(void)
/* allocate a new skb for next time receive */
new_skb = dev_alloc_skb(PKT_BUF_SZ + NET_IP_ALIGN);
if (!new_skb) {
- printk(KERN_NOTICE DRV_NAME
- ": init: low on mem - packet dropped\n");
+ pr_notice("init: low on mem - packet dropped\n");
goto init_error;
}
skb_reserve(new_skb, NET_IP_ALIGN);
@@ -247,7 +248,7 @@ static int desc_list_init(void)

init_error:
desc_list_free();
- printk(KERN_ERR DRV_NAME ": kmalloc failed\n");
+ pr_err("kmalloc failed\n");
return -ENOMEM;
}

@@ -264,12 +265,11 @@ static int bfin_mdio_poll(void)

/* poll the STABUSY bit */
while ((bfin_read_EMAC_STAADD()) & STABUSY) {
- udelay(1);
if (timeout_cnt-- < 0) {
- printk(KERN_ERR DRV_NAME
- ": wait MDC/MDIO transaction to complete timeout\n");
+ pr_err("wait MDC/MDIO transaction to complete timeout\n");
return -ETIMEDOUT;
}
+ udelay(1);
}

return 0;
@@ -357,9 +357,9 @@ static void bfin_mac_adjust_link(struct net_device *dev)
opmode &= ~(RMII_10);
break;
default:
- printk(KERN_WARNING
- "%s: Ack! Speed (%d) is not 10/100!\n",
- DRV_NAME, phydev->speed);
+ netdev_warn(dev,
+ "Ack! Speed (%d) is not 10/100!\n",
+ phydev->speed);
break;
}
bfin_write_EMAC_OPMODE(opmode);
@@ -383,7 +383,7 @@ static void bfin_mac_adjust_link(struct net_device *dev)
if (new_state) {
u32 opmode = bfin_read_EMAC_OPMODE();
phy_print_status(phydev);
- pr_debug("EMAC_OPMODE = 0x%08x\n", opmode);
+ netdev_dbg(dev, "EMAC_OPMODE = 0x%08x\n", opmode);
}

spin_unlock_irqrestore(&lp->lock, flags);
@@ -424,8 +424,7 @@ static int mii_probe(struct net_device *dev)

/* now we are supposed to have a proper phydev to attach to... */
if (!phydev) {
- printk(KERN_INFO "%s: Don't found any phy device at all\n",
- dev->name);
+ netdev_info(dev, "No PHY device found\n");
return -ENODEV;
}

@@ -438,7 +437,7 @@ static int mii_probe(struct net_device *dev)
#endif

if (IS_ERR(phydev)) {
- printk(KERN_ERR "%s: Could not attach to PHY\n", dev->name);
+ netdev_err(dev, "Could not attach to PHY\n");
return PTR_ERR(phydev);
}

@@ -460,11 +459,11 @@ static int mii_probe(struct net_device *dev)
lp->old_duplex = -1;
lp->phydev = phydev;

- printk(KERN_INFO "%s: attached PHY driver [%s] "
- "(mii_bus:phy_addr=%s, irq=%d, mdc_clk=%dHz(mdc_div=%d)"
- "@sclk=%dMHz)\n",
- DRV_NAME, phydev->drv->name, dev_name(&phydev->dev), phydev->irq,
- MDC_CLK, mdc_div, sclk/1000000);
+ netdev_info(dev, "attached PHY driver [%s] "
+ "(mii_bus:phy_addr=%s, irq=%d, mdc_clk=%dHz(mdc_div=%d)"
+ "@sclk=%dMHz)\n",
+ phydev->drv->name, dev_name(&phydev->dev), phydev->irq,
+ MDC_CLK, mdc_div, sclk/1000000);

return 0;
}
@@ -636,8 +635,9 @@ static int bfin_mac_hwtstamp_ioctl(struct net_device *netdev,
if (copy_from_user(&config, ifr->ifr_data, sizeof(config)))
return -EFAULT;

- pr_debug("%s config flag:0x%x, tx_type:0x%x, rx_filter:0x%x\n",
- __func__, config.flags, config.tx_type, config.rx_filter);
+ netdev_dbg(netdev,
+ "%s config flag:0x%x, tx_type:0x%x, rx_filter:0x%x\n",
+ __func__, config.flags, config.tx_type, config.rx_filter);

/* reserved for future extensions */
if (config.flags)
@@ -833,8 +833,8 @@ static void bfin_tx_hwtstamp(struct net_device *netdev, struct sk_buff *skb)
(--timeout_cnt))
udelay(1);
if (timeout_cnt == 0)
- printk(KERN_ERR DRV_NAME
- ": fails to timestamp the TX packet\n");
+ netdev_err(netdev,
+ "failed to timestamp the TX packet\n");
else {
struct skb_shared_hwtstamps shhwtstamps;
u64 ns;
@@ -1091,8 +1091,7 @@ static void bfin_mac_rx(struct net_device *dev)
* we which case we simply drop the packet
*/
if (current_rx_ptr->status.status_word & RX_ERROR_MASK) {
- printk(KERN_NOTICE DRV_NAME
- ": rx: receive error - packet dropped\n");
+ netdev_notice(dev, "rx: receive error - packet dropped\n");
dev->stats.rx_dropped++;
goto out;
}
@@ -1102,8 +1101,7 @@ static void bfin_mac_rx(struct net_device *dev)

new_skb = dev_alloc_skb(PKT_BUF_SZ + NET_IP_ALIGN);
if (!new_skb) {
- printk(KERN_NOTICE DRV_NAME
- ": rx: low on mem - packet dropped\n");
+ netdev_notice(dev, "rx: low on mem - packet dropped\n");
dev->stats.rx_dropped++;
goto out;
}
@@ -1226,7 +1224,7 @@ static int bfin_mac_enable(void)
int ret;
u32 opmode;

- pr_debug("%s: %s\n", DRV_NAME, __func__);
+ pr_debug("%s\n", __func__);

/* Set RX DMA */
bfin_write_DMA1_NEXT_DESC_PTR(&(rx_list_head->desc_a));
@@ -1268,7 +1266,7 @@ static void bfin_mac_timeout(struct net_device *dev)
{
struct bfin_mac_local *lp = netdev_priv(dev);

- pr_debug("%s: %s\n", dev->name, __func__);
+ netdev_dbg(dev, "%s\n", __func__);

bfin_mac_disable();

@@ -1335,7 +1333,7 @@ static void bfin_mac_set_multicast_list(struct net_device *dev)
u32 sysctl;

if (dev->flags & IFF_PROMISC) {
- printk(KERN_INFO "%s: set to promisc mode\n", dev->name);
+ netdev_info(dev, "set to promisc mode\n");
sysctl = bfin_read_EMAC_OPMODE();
sysctl |= PR;
bfin_write_EMAC_OPMODE(sysctl);
@@ -1389,7 +1387,7 @@ static int bfin_mac_open(struct net_device *dev)
{
struct bfin_mac_local *lp = netdev_priv(dev);
int ret;
- pr_debug("%s: %s\n", dev->name, __func__);
+ netdev_dbg(dev, "%s\n", __func__);

/*
* Check that the address is valid. If its not, refuse
@@ -1397,7 +1395,7 @@ static int bfin_mac_open(struct net_device *dev)
* address using ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
*/
if (!is_valid_ether_addr(dev->dev_addr)) {
- printk(KERN_WARNING DRV_NAME ": no valid ethernet hw addr\n");
+ netdev_warn(dev, "no valid ethernet hw addr\n");
return -EINVAL;
}

@@ -1415,7 +1413,7 @@ static int bfin_mac_open(struct net_device *dev)
ret = bfin_mac_enable();
if (ret)
return ret;
- pr_debug("hardware init finished\n");
+ netdev_dbg(dev, "hardware init finished\n");

netif_start_queue(dev);
netif_carrier_on(dev);
@@ -1431,7 +1429,7 @@ static int bfin_mac_open(struct net_device *dev)
static int bfin_mac_close(struct net_device *dev)
{
struct bfin_mac_local *lp = netdev_priv(dev);
- pr_debug("%s: %s\n", dev->name, __func__);
+ netdev_dbg(dev, "%s\n", __func__);

netif_stop_queue(dev);
netif_carrier_off(dev);
--
1.7.2.19.g9a302


2010-07-30 01:45:28

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH net-next 3/3] drivers/net/bfin_mac.c: Misc function cleanups, neatening

On Thu, 2010-07-29 at 20:18 -0400, Mike Frysinger wrote:
> i'll ack the idea, but i think it better i pull these patches into the
> Blackfin repo to get some real hardware testing before i forward them
> back to David/netdev ...
>
> that OK with you ?

Fine by me. These are trivial patches.
I don't have the hardware.

2010-07-30 01:47:07

by Joe Perches

[permalink] [raw]
Subject: [PATCH V2 net-next 3/3] drivers/net/bfin_mac.c: Misc function cleanups, neatening

Use new bfin_alloc_skb to centralize skb allocations
Add and use get_mac_addr function
Neaten bfin_mac_init
Neaten bfin_mac_hard_start_xmit

Signed-off-by: Joe Perches <[email protected]>
---
drivers/net/bfin_mac.c | 93 ++++++++++++++++++++++++++---------------------
1 files changed, 51 insertions(+), 42 deletions(-)

diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c
index 7543b07..6c23a91 100644
--- a/drivers/net/bfin_mac.c
+++ b/drivers/net/bfin_mac.c
@@ -83,6 +83,26 @@ static u16 pin_req[] = P_RMII0;
static u16 pin_req[] = P_MII0;
#endif

+static struct sk_buff *bfin_alloc_skb(void)
+{
+ /* allocate a new skb */
+ struct sk_buff *new_skb = dev_alloc_skb(PKT_BUF_SZ + NET_IP_ALIGN);
+
+ if (!new_skb)
+ return NULL;
+
+ skb_reserve(new_skb, NET_IP_ALIGN);
+ /*
+ * Invalidate the data cache of skb->data range
+ * when it is write back cache to prevent overwriting
+ * the new data from DMA.
+ */
+ blackfin_dcache_invalidate_range((unsigned long)new_skb->head,
+ (unsigned long)new_skb->end);
+
+ return new_skb;
+}
+
static void desc_list_free(void)
{
struct net_dma_desc_rx *r;
@@ -195,18 +215,12 @@ static int desc_list_init(void)
struct dma_descriptor *b = &(r->desc_b);

/* allocate a new skb for next time receive */
- new_skb = dev_alloc_skb(PKT_BUF_SZ + NET_IP_ALIGN);
+ new_skb = bfin_alloc_skb();
if (!new_skb) {
pr_notice("init: low on mem - packet dropped\n");
goto init_error;
}
- skb_reserve(new_skb, NET_IP_ALIGN);
- /* Invalidate the data cache of skb->data range when it is
- * write back cache.
- * It will prevent overwriting the new data from DMA
- */
- blackfin_dcache_invalidate_range((unsigned long)new_skb->head,
- (unsigned long)new_skb->end);
+
r->skb = new_skb;

/*
@@ -600,6 +614,16 @@ void setup_system_regs(struct net_device *dev)
bfin_write_DMA1_Y_MODIFY(0);
}

+/* Grab the MAC address in the MAC */
+static void get_mac_addr(u8 *mac_addr)
+{
+ __le32 addr_low = cpu_to_le32(bfin_read_EMAC_ADDRLO());
+ __le16 addr_hi = cpu_to_le16((u16)bfin_read_EMAC_ADDRHI());
+
+ memcpy(mac_addr, &addr_low, 4);
+ memcpy(mac_addr + 4, &addr_hi, 2);
+}
+
static void setup_mac_addr(u8 *mac_addr)
{
u32 addr_low = le32_to_cpu(*(__le32 *)&mac_addr[0]);
@@ -998,15 +1022,17 @@ static void tx_reclaim_skb_timeout(unsigned long lp)
static int bfin_mac_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct bfin_mac_local *lp = netdev_priv(dev);
- u16 *data;
u32 data_align = (unsigned long)(skb->data) & 0x3;
+ unsigned long buf_start;
+ unsigned long buf_len;
union skb_shared_tx *shtx = skb_tx(skb);

current_tx_ptr->skb = skb;

if (data_align == 0x2) {
/* move skb->data to current_tx_ptr payload */
- data = (u16 *)(skb->data) - 1;
+ u16 *data = (u16 *)(skb->data) - 1;
+
*data = (u16)(skb->len);
/*
* When transmitting an Ethernet packet, the PTP_TSYNC module
@@ -1018,23 +1044,21 @@ static int bfin_mac_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
if (shtx->hardware)
*data |= 0x1000;

- current_tx_ptr->desc_a.start_addr = (u32)data;
- /* this is important! */
- blackfin_dcache_flush_range((u32)data,
- (u32)((u8 *)data + skb->len + 4));
+ buf_start = (unsigned long)data;
+ buf_len = skb->len + 4;
} else {
*((u16 *)(current_tx_ptr->packet)) = (u16)(skb->len);
/* enable timestamping for the sent packet */
if (shtx->hardware)
*((u16 *)(current_tx_ptr->packet)) |= 0x1000;
- memcpy((u8 *)(current_tx_ptr->packet + 2), skb->data,
- skb->len);
- current_tx_ptr->desc_a.start_addr =
- (u32)current_tx_ptr->packet;
- blackfin_dcache_flush_range(
- (u32)current_tx_ptr->packet,
- (u32)(current_tx_ptr->packet + skb->len + 2));
+ memcpy(current_tx_ptr->packet + 2, skb->data, skb->len);
+
+ buf_start = (unsigned long)current_tx_ptr->packet;
+ buf_len = skb->len + 2;
}
+ current_tx_ptr->desc_a.start_addr = buf_start;
+ /* this is important! */
+ blackfin_dcache_flush_range(buf_start, buf_start + buf_len);

/*
* Make sure the internal data buffers in the core are drained
@@ -1099,20 +1123,12 @@ static void bfin_mac_rx(struct net_device *dev)
/* allocate a new skb for next time receive */
skb = current_rx_ptr->skb;

- new_skb = dev_alloc_skb(PKT_BUF_SZ + NET_IP_ALIGN);
+ new_skb = bfin_alloc_skb();
if (!new_skb) {
netdev_notice(dev, "rx: low on mem - packet dropped\n");
dev->stats.rx_dropped++;
goto out;
}
- /* reserve 2 bytes for RXDWA padding */
- skb_reserve(new_skb, NET_IP_ALIGN);
- /*
- * Invalidate the data cache of skb->data range when it is write back
- * cache. It will prevent overwriting the new data from DMA
- */
- blackfin_dcache_invalidate_range((unsigned long)new_skb->head,
- (unsigned long)new_skb->end);

current_rx_ptr->skb = new_skb;
current_rx_ptr->desc_a.start_addr = (unsigned long)new_skb->data - 2;
@@ -1479,14 +1495,10 @@ static int __devinit bfin_mac_probe(struct platform_device *pdev)
lp = netdev_priv(ndev);
lp->ndev = ndev;

- /* Grab the MAC address in the MAC */
- *(__le32 *)(&(ndev->dev_addr[0])) =
- cpu_to_le32(bfin_read_EMAC_ADDRLO());
- *(__le16 *)(&(ndev->dev_addr[4])) =
- cpu_to_le16((u16)bfin_read_EMAC_ADDRHI());
+ get_mac_addr(ndev->dev_addr);

/* probe mac */
- /*todo: how to proble? which is revision_register */
+ /* todo: how to probe? which is revision_register */
bfin_write_EMAC_ADDRLO(0x12345678);
if (bfin_read_EMAC_ADDRLO() != 0x12345678) {
dev_err(&pdev->dev, "Cannot detect Blackfin on-chip ethernet MAC controller!\n");
@@ -1722,12 +1734,9 @@ static struct platform_driver bfin_mac_driver = {

static int __init bfin_mac_init(void)
{
- int ret;
-
- ret = platform_driver_register(&bfin_mii_bus_driver);
- if (!ret)
- return platform_driver_register(&bfin_mac_driver);
- return -ENODEV;
+ if (platform_driver_register(&bfin_mii_bus_driver))
+ return -ENODEV;
+ return platform_driver_register(&bfin_mac_driver);
}

module_init(bfin_mac_init);
--
1.7.2.19.g9a302


2010-08-03 13:40:35

by Robin Getz

[permalink] [raw]
Subject: Re: [PATCH net-next 3/3] drivers/net/bfin_mac.c: Misc function cleanups, neatening

On Thu 29 Jul 2010 21:45, Joe Perches pondered:
> On Thu, 2010-07-29 at 20:18 -0400, Mike Frysinger wrote:
> > i'll ack the idea, but i think it better i pull these patches into the
> > Blackfin repo to get some real hardware testing before i forward them
> > back to David/netdev ...
> >
> > that OK with you ?
>
> Fine by me. These are trivial patches.
> I don't have the hardware.

Do you want the hardware?

I'm moving my office, and found some extras if anyone wants them...

-Robin

2010-08-03 14:48:16

by Denis Kirjanov

[permalink] [raw]
Subject: Re: [PATCH net-next 3/3] drivers/net/bfin_mac.c: Misc function cleanups, neatening

On Tue, Aug 3, 2010 at 5:40 PM, Robin Getz <[email protected]> wrote:
> On Thu 29 Jul 2010 21:45, Joe Perches pondered:
>> On Thu, 2010-07-29 at 20:18 -0400, Mike Frysinger wrote:
>> > i'll ack the idea, but i think it better i pull these patches into the
>> > Blackfin repo to get some real hardware testing before i forward them
>> > back to David/netdev ...
>> >
>> > that OK with you ?
>>
>> Fine by me. ?These are trivial patches.
>> I don't have the hardware.
>
> Do you want the hardware?
>
> I'm moving my office, and found some extras if anyone wants them...

I can take one if that is no problem..

>
> -Robin
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>



--
Regards,
Denis