@@ -2583,6 +2583,19 @@ static int cxgb_get_vf_config(struct net_device *dev,
2583
2583
ether_addr_copy (ivi -> mac , adap -> vfinfo [vf ].vf_mac_addr );
2584
2584
return 0 ;
2585
2585
}
2586
+
2587
+ static int cxgb_get_phys_port_id (struct net_device * dev ,
2588
+ struct netdev_phys_item_id * ppid )
2589
+ {
2590
+ struct port_info * pi = netdev_priv (dev );
2591
+ unsigned int phy_port_id ;
2592
+
2593
+ phy_port_id = pi -> adapter -> adap_idx * 10 + pi -> port_id ;
2594
+ ppid -> id_len = sizeof (phy_port_id );
2595
+ memcpy (ppid -> id , & phy_port_id , ppid -> id_len );
2596
+ return 0 ;
2597
+ }
2598
+
2586
2599
#endif
2587
2600
2588
2601
static int cxgb_set_mac_addr (struct net_device * dev , void * p )
@@ -2762,6 +2775,7 @@ static const struct net_device_ops cxgb4_mgmt_netdev_ops = {
2762
2775
.ndo_open = dummy_open ,
2763
2776
.ndo_set_vf_mac = cxgb_set_vf_mac ,
2764
2777
.ndo_get_vf_config = cxgb_get_vf_config ,
2778
+ .ndo_get_phys_port_id = cxgb_get_phys_port_id ,
2765
2779
};
2766
2780
#endif
2767
2781
@@ -4539,6 +4553,7 @@ static int config_mgmt_dev(struct pci_dev *pdev)
4539
4553
4540
4554
pi = netdev_priv (netdev );
4541
4555
pi -> adapter = adap ;
4556
+ pi -> port_id = adap -> pf % adap -> params .nports ;
4542
4557
SET_NETDEV_DEV (netdev , & pdev -> dev );
4543
4558
4544
4559
adap -> port [0 ] = netdev ;
@@ -4628,6 +4643,7 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
4628
4643
u32 whoami , pl_rev ;
4629
4644
enum chip_type chip ;
4630
4645
static int adap_idx = 1 ;
4646
+ u32 v , port_vec ;
4631
4647
4632
4648
printk_once (KERN_INFO "%s - version %s\n" , DRV_DESC , DRV_VERSION );
4633
4649
@@ -5009,6 +5025,17 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
5009
5025
}
5010
5026
spin_lock_init (& adapter -> mbox_lock );
5011
5027
INIT_LIST_HEAD (& adapter -> mlist .list );
5028
+
5029
+ v = FW_PARAMS_MNEM_V (FW_PARAMS_MNEM_DEV ) |
5030
+ FW_PARAMS_PARAM_X_V (FW_PARAMS_PARAM_DEV_PORTVEC );
5031
+ err = t4_query_params (adapter , adapter -> mbox , adapter -> pf , 0 , 1 ,
5032
+ & v , & port_vec );
5033
+ if (err < 0 ) {
5034
+ dev_err (adapter -> pdev_dev , "Could not fetch port params\n" );
5035
+ goto free_adapter ;
5036
+ }
5037
+
5038
+ adapter -> params .nports = hweight32 (port_vec );
5012
5039
pci_set_drvdata (pdev , adapter );
5013
5040
return 0 ;
5014
5041
0 commit comments