|
@@ -13292,17 +13292,15 @@ static int bnx2x_init_dev(struct bnx2x *bp, struct pci_dev *pdev,
|
|
|
dev->vlan_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
|
|
|
NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6 | NETIF_F_HIGHDMA;
|
|
|
|
|
|
- /* VF with OLD Hypervisor or old PF do not support filtering */
|
|
|
if (IS_PF(bp)) {
|
|
|
if (chip_is_e1x)
|
|
|
bp->accept_any_vlan = true;
|
|
|
else
|
|
|
dev->hw_features |= NETIF_F_HW_VLAN_CTAG_FILTER;
|
|
|
-#ifdef CONFIG_BNX2X_SRIOV
|
|
|
- } else if (bp->acquire_resp.pfdev_info.pf_cap & PFVF_CAP_VLAN_FILTER) {
|
|
|
- dev->hw_features |= NETIF_F_HW_VLAN_CTAG_FILTER;
|
|
|
-#endif
|
|
|
}
|
|
|
+ /* For VF we'll know whether to enable VLAN filtering after
|
|
|
+ * getting a response to CHANNEL_TLV_ACQUIRE from PF.
|
|
|
+ */
|
|
|
|
|
|
dev->features |= dev->hw_features | NETIF_F_HW_VLAN_CTAG_RX;
|
|
|
dev->features |= NETIF_F_HIGHDMA;
|
|
@@ -13738,7 +13736,7 @@ static int bnx2x_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb)
|
|
|
if (!netif_running(bp->dev)) {
|
|
|
DP(BNX2X_MSG_PTP,
|
|
|
"PTP adjfreq called while the interface is down\n");
|
|
|
- return -EFAULT;
|
|
|
+ return -ENETDOWN;
|
|
|
}
|
|
|
|
|
|
if (ppb < 0) {
|
|
@@ -13797,6 +13795,12 @@ static int bnx2x_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta)
|
|
|
{
|
|
|
struct bnx2x *bp = container_of(ptp, struct bnx2x, ptp_clock_info);
|
|
|
|
|
|
+ if (!netif_running(bp->dev)) {
|
|
|
+ DP(BNX2X_MSG_PTP,
|
|
|
+ "PTP adjtime called while the interface is down\n");
|
|
|
+ return -ENETDOWN;
|
|
|
+ }
|
|
|
+
|
|
|
DP(BNX2X_MSG_PTP, "PTP adjtime called, delta = %llx\n", delta);
|
|
|
|
|
|
timecounter_adjtime(&bp->timecounter, delta);
|
|
@@ -13809,6 +13813,12 @@ static int bnx2x_ptp_gettime(struct ptp_clock_info *ptp, struct timespec64 *ts)
|
|
|
struct bnx2x *bp = container_of(ptp, struct bnx2x, ptp_clock_info);
|
|
|
u64 ns;
|
|
|
|
|
|
+ if (!netif_running(bp->dev)) {
|
|
|
+ DP(BNX2X_MSG_PTP,
|
|
|
+ "PTP gettime called while the interface is down\n");
|
|
|
+ return -ENETDOWN;
|
|
|
+ }
|
|
|
+
|
|
|
ns = timecounter_read(&bp->timecounter);
|
|
|
|
|
|
DP(BNX2X_MSG_PTP, "PTP gettime called, ns = %llu\n", ns);
|
|
@@ -13824,6 +13834,12 @@ static int bnx2x_ptp_settime(struct ptp_clock_info *ptp,
|
|
|
struct bnx2x *bp = container_of(ptp, struct bnx2x, ptp_clock_info);
|
|
|
u64 ns;
|
|
|
|
|
|
+ if (!netif_running(bp->dev)) {
|
|
|
+ DP(BNX2X_MSG_PTP,
|
|
|
+ "PTP settime called while the interface is down\n");
|
|
|
+ return -ENETDOWN;
|
|
|
+ }
|
|
|
+
|
|
|
ns = timespec64_to_ns(ts);
|
|
|
|
|
|
DP(BNX2X_MSG_PTP, "PTP settime called, ns = %llu\n", ns);
|
|
@@ -13991,6 +14007,14 @@ static int bnx2x_init_one(struct pci_dev *pdev,
|
|
|
rc = bnx2x_vfpf_acquire(bp, tx_count, rx_count);
|
|
|
if (rc)
|
|
|
goto init_one_freemem;
|
|
|
+
|
|
|
+#ifdef CONFIG_BNX2X_SRIOV
|
|
|
+ /* VF with OLD Hypervisor or old PF do not support filtering */
|
|
|
+ if (bp->acquire_resp.pfdev_info.pf_cap & PFVF_CAP_VLAN_FILTER) {
|
|
|
+ dev->hw_features |= NETIF_F_HW_VLAN_CTAG_FILTER;
|
|
|
+ dev->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
|
|
|
+ }
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
/* Enable SRIOV if capability found in configuration space */
|