~ubuntu-branches/ubuntu/quantal/linux-linaro-mx51/quantal

« back to all changes in this revision

Viewing changes to drivers/net/mdio.c

  • Committer: Package Import Robot
  • Author(s): John Rigby, John Rigby
  • Date: 2011-09-26 10:44:23 UTC
  • Revision ID: package-import@ubuntu.com-20110926104423-3o58a3c1bj7x00rs
Tags: 3.0.0-1007.9
[ John Rigby ]

Enable crypto modules and remove crypto-modules from
exclude-module files
LP: #826021

Show diffs side-by-side

added added

removed removed

Lines of Context:
176
176
 * @npage_adv: Modes currently advertised on next pages
177
177
 * @npage_lpa: Modes advertised by link partner on next pages
178
178
 *
 
179
 * The @ecmd parameter is expected to have been cleared before calling
 
180
 * mdio45_ethtool_gset_npage().
 
181
 *
179
182
 * Since the CSRs for auto-negotiation using next pages are not fully
180
183
 * standardised, this function does not attempt to decode them.  The
181
184
 * caller must pass them in.
185
188
                               u32 npage_adv, u32 npage_lpa)
186
189
{
187
190
        int reg;
 
191
        u32 speed;
188
192
 
189
193
        ecmd->transceiver = XCVR_INTERNAL;
190
194
        ecmd->phy_address = mdio->prtad;
287
291
                if (modes & (ADVERTISED_10000baseT_Full |
288
292
                             ADVERTISED_10000baseKX4_Full |
289
293
                             ADVERTISED_10000baseKR_Full)) {
290
 
                        ecmd->speed = SPEED_10000;
 
294
                        speed = SPEED_10000;
291
295
                        ecmd->duplex = DUPLEX_FULL;
292
296
                } else if (modes & (ADVERTISED_1000baseT_Full |
293
297
                                    ADVERTISED_1000baseT_Half |
294
298
                                    ADVERTISED_1000baseKX_Full)) {
295
 
                        ecmd->speed = SPEED_1000;
 
299
                        speed = SPEED_1000;
296
300
                        ecmd->duplex = !(modes & ADVERTISED_1000baseT_Half);
297
301
                } else if (modes & (ADVERTISED_100baseT_Full |
298
302
                                    ADVERTISED_100baseT_Half)) {
299
 
                        ecmd->speed = SPEED_100;
 
303
                        speed = SPEED_100;
300
304
                        ecmd->duplex = !!(modes & ADVERTISED_100baseT_Full);
301
305
                } else {
302
 
                        ecmd->speed = SPEED_10;
 
306
                        speed = SPEED_10;
303
307
                        ecmd->duplex = !!(modes & ADVERTISED_10baseT_Full);
304
308
                }
305
309
        } else {
306
310
                /* Report forced settings */
307
311
                reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
308
312
                                      MDIO_CTRL1);
309
 
                ecmd->speed = (((reg & MDIO_PMA_CTRL1_SPEED1000) ? 100 : 1) *
310
 
                               ((reg & MDIO_PMA_CTRL1_SPEED100) ? 100 : 10));
 
313
                speed = (((reg & MDIO_PMA_CTRL1_SPEED1000) ? 100 : 1)
 
314
                         * ((reg & MDIO_PMA_CTRL1_SPEED100) ? 100 : 10));
311
315
                ecmd->duplex = (reg & MDIO_CTRL1_FULLDPLX ||
312
 
                                ecmd->speed == SPEED_10000);
 
316
                                speed == SPEED_10000);
313
317
        }
314
318
 
 
319
        ethtool_cmd_speed_set(ecmd, speed);
 
320
 
315
321
        /* 10GBASE-T MDI/MDI-X */
316
 
        if (ecmd->port == PORT_TP && ecmd->speed == SPEED_10000) {
 
322
        if (ecmd->port == PORT_TP
 
323
            && (ethtool_cmd_speed(ecmd) == SPEED_10000)) {
317
324
                switch (mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
318
325
                                        MDIO_PMA_10GBT_SWAPPOL)) {
319
326
                case MDIO_PMA_10GBT_SWAPPOL_ABNX | MDIO_PMA_10GBT_SWAPPOL_CDNX: