drivers/net/bfin_mac.c: Neatening
Subsystems (2)
cover 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(-)
Signature · 1 line
1.7.2.19.g9a302
PATCH 2/3 drivers/net/bfin_mac.c: Use pr_<level>, netdev_<level>
Add and use pr_fmt, pr_<level> and netdev_<level>
--- drivers/net/bfin_mac.c | 56 +++++++++++++++++++++-------------------------- 1 files changed, 25 insertions(+), 31 deletions(-)
drivers/net/bfin_mac.c +25 -31
@@ -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);
Signature · 1 line
1.7.2.19.g9a302
PATCH 3/3 drivers/net/bfin_mac.c: Misc function cleanups, neatening
In reply to Joe PerchesUse 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
--- drivers/net/bfin_mac.c | 93 ++++++++++++++++++++++++++--------------------- 1 files changed, 51 insertions(+), 42 deletions(-)
drivers/net/bfin_mac.c +51 -42
@@ -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);
Signature · 1 line
1.7.2.19.g9a302
PATCH 1/3 drivers/net/bfin_mac.c: Neatening
In reply to Joe Perches80 column fixes
Spelling/typo corrections
Argument alignment
checkpatch clean
--- drivers/net/bfin_mac.c | 204 ++++++++++++++++++++++++++---------------------- 1 files changed, 112 insertions(+), 92 deletions(-)
drivers/net/bfin_mac.c +112 -92
@@ -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); -
Signature · 1 line
1.7.2.19.g9a302
Re: [PATCH net-next 2/3] drivers/net/bfin_mac.c: Use pr_<level>, netdev_<level>
In reply to Joe PerchesQuoted 1 line · Joe Perches
Add and use
pr_fmt, pr_<level> and netdev_<level>
your changelog says add pr_fmt, but i dont see it in the patch ...
drivers/net/bfin_mac.c static void bfin_tx_hwtstamp(struct net_device *netdev, struct sk_buff *skb) · line 833
Quoted 7 lines
drivers/net/bfin_mac.c +1
-2@@ -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 ?
drivers/net/bfin_mac.c static void bfin_mac_rx(struct net_device *dev) · line 1100
Quoted 7 lines
drivers/net/bfin_mac.c +1
-2@@ -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
Re: [PATCH net-next 3/3] drivers/net/bfin_mac.c: Misc function cleanups, neatening
In reply to Joe PerchesQuoted 4 lines · Joe Perches
Use new
bfin_alloc_skbto centralize skb allocations Add and useget_mac_addrfunction
Neatenbfin_mac_init
Neatenbfin_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
PATCH v2 2/3 drivers/net/bfin_mac.c: Use pr_<level>, netdev_<level>
In reply to Mike FrysingerAdd and use pr_fmt, pr_<level> and netdev_<level>
--- drivers/net/bfin_mac.c | 64 +++++++++++++++++++++++------------------------ 1 files changed, 31 insertions(+), 33 deletions(-)
drivers/net/bfin_mac.c +31 -33
@@ -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);
Signature · 1 line
1.7.2.19.g9a302
Re: [PATCH net-next 3/3] drivers/net/bfin_mac.c: Misc function cleanups, neatening
In reply to Mike FrysingerQuoted 5 lines · Mike Frysinger
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.
PATCH v2 3/3 drivers/net/bfin_mac.c: Misc function cleanups, neatening
In reply to Mike FrysingerUse 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
--- drivers/net/bfin_mac.c | 93 ++++++++++++++++++++++++++--------------------- 1 files changed, 51 insertions(+), 42 deletions(-)
drivers/net/bfin_mac.c +51 -42
@@ -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);
Signature · 1 line
1.7.2.19.g9a302
Re: [PATCH net-next 3/3] drivers/net/bfin_mac.c: Misc function cleanups, neatening
In reply to Joe PerchesOn Thu 29 Jul 2010 21:45, Joe Perches pondered:
Quoted 9 lines · Mike Frysinger
Quoted 5 lines
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
Re: [PATCH net-next 3/3] drivers/net/bfin_mac.c: Misc function cleanups, neatening
Quoted 6 lines · Robin Getz
On Thu 29 Jul 2010 21:45, Joe Perches pondered:
Quoted 5 lines · Mike Frysinger
Quoted 4 lines
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 ...
Quoted 8 lines
Quoted 4 lines
Quoted 1 line
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..
Quoted 7 lines
-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
Signature · 2 lines
Regards, Denis