diff options
Diffstat (limited to 'scripts/package-build/linux-kernel/patches')
6 files changed, 1 insertions, 946 deletions
diff --git a/scripts/package-build/linux-kernel/patches b/scripts/package-build/linux-kernel/patches new file mode 120000 index 00000000..fd016d35 --- /dev/null +++ b/scripts/package-build/linux-kernel/patches @@ -0,0 +1 @@ +../../../packages/linux-kernel/patches
\ No newline at end of file diff --git a/scripts/package-build/linux-kernel/patches/accel-ppp/0001-L2TP-Include-Calling-Number-to-Calling-Station-ID-RA.patch b/scripts/package-build/linux-kernel/patches/accel-ppp/0001-L2TP-Include-Calling-Number-to-Calling-Station-ID-RA.patch deleted file mode 100644 index 0c3141a0..00000000 --- a/scripts/package-build/linux-kernel/patches/accel-ppp/0001-L2TP-Include-Calling-Number-to-Calling-Station-ID-RA.patch +++ /dev/null @@ -1,183 +0,0 @@ -From 12778d1e9296b6dbf190a80dcf407b24f9821f95 Mon Sep 17 00:00:00 2001 -From: zsdc <taras@vyos.io> -Date: Tue, 4 Apr 2023 11:15:26 +0300 -Subject: [PATCH] L2TP: Include Calling-Number to Calling-Station-ID RADIUS - attribute - -Patch authored by Alexander Serkin from -https://phabricator.accel-ppp.org/T59 ---- - accel-pppd/ctrl/l2tp/l2tp.c | 112 ++++++++++++++++++++++++++++++------ - 1 file changed, 93 insertions(+), 19 deletions(-) - -diff --git a/accel-pppd/ctrl/l2tp/l2tp.c b/accel-pppd/ctrl/l2tp/l2tp.c -index 027d710..c541c60 100644 ---- a/accel-pppd/ctrl/l2tp/l2tp.c -+++ b/accel-pppd/ctrl/l2tp/l2tp.c -@@ -123,6 +123,11 @@ struct l2tp_sess_t - struct l2tp_conn_t *paren_conn; - uint16_t sid; - uint16_t peer_sid; -+/* We will keep l2tp attributes Calling-Number/Called-Number and their length while the session exists */ -+ char *calling_num; -+ int calling_num_len; -+ char *called_num; -+ int called_num_len; - - unsigned int ref_count; - int state1; -@@ -979,6 +984,10 @@ static void __session_destroy(struct l2tp_sess_t *sess) - _free(sess->ctrl.calling_station_id); - if (sess->ctrl.called_station_id) - _free(sess->ctrl.called_station_id); -+ if (sess->calling_num) -+ _free(sess->calling_num); -+ if (sess->called_num) -+ _free(sess->called_num); - - log_session(log_info2, sess, "session destroyed\n"); - -@@ -1771,25 +1780,52 @@ static int l2tp_session_start_data_channel(struct l2tp_sess_t *sess) - sess->ctrl.max_mtu = conf_ppp_max_mtu; - sess->ctrl.mppe = conf_mppe; - -- sess->ctrl.calling_station_id = _malloc(17); -- if (sess->ctrl.calling_station_id == NULL) { -- log_session(log_error, sess, -- "impossible to start data channel:" -- " allocation of calling station ID failed\n"); -- goto err; -+ /* If l2tp calling number avp exists, we use it, otherwise we use lac ip */ -+ if (sess->calling_num != NULL) { -+ sess->ctrl.calling_station_id = _malloc(sess->calling_num_len+1); -+ if (sess->ctrl.calling_station_id == NULL) { -+ log_session(log_error, sess, -+ "impossible to start data channel:" -+ " allocation of calling station ID failed\n"); -+ goto err; -+ }else { -+ strcpy(sess->ctrl.calling_station_id, sess->calling_num); -+ } -+ } else { -+ sess->ctrl.calling_station_id = _malloc(17); -+ if (sess->ctrl.calling_station_id == NULL) { -+ log_session(log_error, sess, -+ "impossible to start data channel:" -+ " allocation of calling station ID failed\n"); -+ goto err; -+ } else { -+ u_inet_ntoa(sess->paren_conn->peer_addr.sin_addr.s_addr, -+ sess->ctrl.calling_station_id); -+ } - } -- u_inet_ntoa(sess->paren_conn->peer_addr.sin_addr.s_addr, -- sess->ctrl.calling_station_id); -- -- sess->ctrl.called_station_id = _malloc(17); -- if (sess->ctrl.called_station_id == NULL) { -- log_session(log_error, sess, -- "impossible to start data channel:" -- " allocation of called station ID failed\n"); -- goto err; -+ /* If l2tp called number avp exists, we use it, otherwise we use my ip */ -+ if (sess->called_num != NULL) { -+ sess->ctrl.called_station_id = _malloc(sess->called_num_len+1); -+ if (sess->ctrl.called_station_id == NULL) { -+ log_session(log_error, sess, -+ "impossible to start data channel:" -+ " allocation of called station ID failed\n"); -+ goto err; -+ } else { -+ strcpy(sess->ctrl.called_station_id, sess->called_num); -+ } -+ } else { -+ sess->ctrl.called_station_id = _malloc(17); -+ if (sess->ctrl.called_station_id == NULL) { -+ log_session(log_error, sess, -+ "impossible to start data channel:" -+ " allocation of called station ID failed\n"); -+ goto err; -+ } else { -+ u_inet_ntoa(sess->paren_conn->host_addr.sin_addr.s_addr, -+ sess->ctrl.called_station_id); -+ } - } -- u_inet_ntoa(sess->paren_conn->host_addr.sin_addr.s_addr, -- sess->ctrl.called_station_id); - - if (conf_ip_pool) { - sess->ppp.ses.ipv4_pool_name = _strdup(conf_ip_pool); -@@ -3295,6 +3331,10 @@ static int l2tp_recv_ICRQ(struct l2tp_conn_t *conn, - uint16_t sid = 0; - uint16_t res = 0; - uint16_t err = 0; -+ uint8_t *calling[254] = {0}; -+ uint8_t *called[254] = {0}; -+ int n = 0; -+ int m = 0; - - if (conn->state != STATE_ESTB && conn->lns_mode) { - log_tunnel(log_warn, conn, "discarding unexpected ICRQ\n"); -@@ -3332,7 +3372,17 @@ static int l2tp_recv_ICRQ(struct l2tp_conn_t *conn, - case Call_Serial_Number: - case Bearer_Type: - case Calling_Number: -+ /* Save Calling-Number L2TP attribute locally */ -+ if (attr->attr->id == Calling_Number) { -+ n = attr->length; -+ memcpy(calling,attr->val.octets,n); -+ } - case Called_Number: -+ /* Save Called-Number L2TP attribute locally */ -+ if (attr->attr->id == Called_Number) { -+ m = attr->length; -+ memcpy(called,attr->val.octets,m); -+ } - case Sub_Address: - case Physical_Channel_ID: - break; -@@ -3371,6 +3421,30 @@ static int l2tp_recv_ICRQ(struct l2tp_conn_t *conn, - sess->peer_sid = peer_sid; - sid = sess->sid; - -+ /* Allocate memory for Calling-Number if exists, and put it to l2tp_sess_t structure */ -+ if (calling != NULL && n > 0) { -+ sess->calling_num = _malloc(n+1); -+ if (sess->calling_num == NULL) { -+ log_tunnel(log_warn, conn, "can't allocate memory for Calling Number attribute. Will use LAC IP instead\n"); -+ }else{ -+ memcpy(sess->calling_num, calling, n); -+ sess->calling_num[n] = '\0'; -+ sess->calling_num_len = n; -+ } -+ } -+ -+ /* Allocate memory for Called-Number if exists, and put it to l2tp_sess_t structure */ -+ if (called != NULL && m > 1) { -+ sess->called_num = _malloc(m+1); -+ if (sess->called_num == NULL) { -+ log_tunnel(log_warn, conn, "can't allocate memory for Called Number attribute. Will use my IP instead\n"); -+ } else { -+ memcpy(sess->called_num, called, m); -+ sess->called_num[m] = '\0'; -+ sess->called_num_len = m; -+ } -+ } -+ - if (unknown_attr) { - log_tunnel(log_error, conn, "impossible to handle ICRQ:" - " unknown mandatory attribute type %i," -@@ -3390,8 +3464,8 @@ static int l2tp_recv_ICRQ(struct l2tp_conn_t *conn, - goto out_reject; - } - -- log_tunnel(log_info1, conn, "new session %hu-%hu created following" -- " reception of ICRQ\n", sid, peer_sid); -+ log_tunnel(log_info1, conn, "new session %hu-%hu with calling num %s len %d, called num %s len %d created following" -+ " reception of ICRQ\n", sid, peer_sid, sess->calling_num, sess->calling_num_len, sess->called_num, sess->called_num_len); - - return 0; - --- -2.34.1 - diff --git a/scripts/package-build/linux-kernel/patches/ixgbe/add_1000base-bx_support.patch b/scripts/package-build/linux-kernel/patches/ixgbe/add_1000base-bx_support.patch deleted file mode 100644 index 6c536c38..00000000 --- a/scripts/package-build/linux-kernel/patches/ixgbe/add_1000base-bx_support.patch +++ /dev/null @@ -1,259 +0,0 @@ -From 02491fc5cb9bfd0905cfa481d3a6156167fa1720 Mon Sep 17 00:00:00 2001 -From: Ernesto Castellotti <ernesto@castellotti.net> -Date: Sat, 23 Mar 2024 12:57:56 +0100 -Subject: [BACKPORT linux v6.9] [PATCH] ixgbe: Add 1000BASE-BX support - -Added support for 1000BASE-BX, i.e. Gigabit Ethernet over single strand -of single-mode fiber. -The initialization of a 1000BASE-BX SFP is the same as 1000BASE-SX/LX -with the only difference that the Bit Rate Nominal Value must be -checked to make sure it is a Gigabit Ethernet transceiver, as described -by the SFF-8472 specification. - -This was tested with the FS.com SFP-GE-BX 1310/1490nm 10km transceiver: -$ ethtool -m eth4 - Identifier : 0x03 (SFP) - Extended identifier : 0x04 (GBIC/SFP defined by 2-wire interface ID) - Connector : 0x07 (LC) - Transceiver codes : 0x00 0x00 0x00 0x40 0x00 0x00 0x00 0x00 0x00 - Transceiver type : Ethernet: BASE-BX10 - Encoding : 0x01 (8B/10B) - BR, Nominal : 1300MBd - Rate identifier : 0x00 (unspecified) - Length (SMF,km) : 10km - Length (SMF) : 10000m - Length (50um) : 0m - Length (62.5um) : 0m - Length (Copper) : 0m - Length (OM3) : 0m - Laser wavelength : 1310nm - Vendor name : FS - Vendor OUI : 64:9d:99 - Vendor PN : SFP-GE-BX - Vendor rev : - Option values : 0x20 0x0a - Option : RX_LOS implemented - Option : TX_FAULT implemented - Option : Power level 3 requirement - BR margin, max : 0% - BR margin, min : 0% - Vendor SN : S2202359108 - Date code : 220307 - Optical diagnostics support : Yes - Laser bias current : 17.650 mA - Laser output power : 0.2132 mW / -6.71 dBm - Receiver signal average optical power : 0.2740 mW / -5.62 dBm - Module temperature : 47.30 degrees C / 117.13 degrees F - Module voltage : 3.2576 V - Alarm/warning flags implemented : Yes - Laser bias current high alarm : Off - Laser bias current low alarm : Off - Laser bias current high warning : Off - Laser bias current low warning : Off - Laser output power high alarm : Off - Laser output power low alarm : Off - Laser output power high warning : Off - Laser output power low warning : Off - Module temperature high alarm : Off - Module temperature low alarm : Off - Module temperature high warning : Off - Module temperature low warning : Off - Module voltage high alarm : Off - Module voltage low alarm : Off - Module voltage high warning : Off - Module voltage low warning : Off - Laser rx power high alarm : Off - Laser rx power low alarm : Off - Laser rx power high warning : Off - Laser rx power low warning : Off - Laser bias current high alarm threshold : 110.000 mA - Laser bias current low alarm threshold : 1.000 mA - Laser bias current high warning threshold : 100.000 mA - Laser bias current low warning threshold : 1.000 mA - Laser output power high alarm threshold : 0.7079 mW / -1.50 dBm - Laser output power low alarm threshold : 0.0891 mW / -10.50 dBm - Laser output power high warning threshold : 0.6310 mW / -2.00 dBm - Laser output power low warning threshold : 0.1000 mW / -10.00 dBm - Module temperature high alarm threshold : 90.00 degrees C / 194.00 degrees F - Module temperature low alarm threshold : -45.00 degrees C / -49.00 degrees F - Module temperature high warning threshold : 85.00 degrees C / 185.00 degrees F - Module temperature low warning threshold : -40.00 degrees C / -40.00 degrees F - Module voltage high alarm threshold : 3.7950 V - Module voltage low alarm threshold : 2.8050 V - Module voltage high warning threshold : 3.4650 V - Module voltage low warning threshold : 3.1350 V - Laser rx power high alarm threshold : 0.7079 mW / -1.50 dBm - Laser rx power low alarm threshold : 0.0028 mW / -25.53 dBm - Laser rx power high warning threshold : 0.6310 mW / -2.00 dBm - Laser rx power low warning threshold : 0.0032 mW / -24.95 dBm - -Signed-off-by: Ernesto Castellotti <ernesto@castellotti.net> -Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> -Tested-by: Sunitha Mekala <sunithax.d.mekala@intel.com> (A Contingent worker at Intel) -Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> -Link: https://lore.kernel.org/r/20240301184806.2634508-3-anthony.l.nguyen@intel.com -Signed-off-by: Jakub Kicinski <kuba@kernel.org> ---- - ixgbe_82599.c | 4 +++- - ixgbe_ethtool.c | 4 ++++ - ixgbe_phy.c | 33 +++++++++++++++++++++++++++++---- - ixgbe_phy.h | 2 ++ - ixgbe_type.h | 2 ++ - 5 files changed, 40 insertions(+), 5 deletions(-) - -diff --git a/ixgbe_82599.c b/ixgbe_82599.c -index 75e368f..b0a10de 100644 ---- a/ixgbe_82599.c -+++ b/ixgbe_82599.c -@@ -395,7 +395,9 @@ s32 ixgbe_get_link_capabilities_82599(struct ixgbe_hw *hw, - hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || - hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 || - hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || -- hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1) { -+ hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1 || -+ hw->phy.sfp_type == ixgbe_sfp_type_1g_bx_core0 || -+ hw->phy.sfp_type == ixgbe_sfp_type_1g_bx_core1) { - *speed = IXGBE_LINK_SPEED_1GB_FULL; - *autoneg = true; - goto out; -diff --git a/ixgbe_ethtool.c b/ixgbe_ethtool.c -index 7ada455..fb16f3c 100644 ---- a/ixgbe_ethtool.c -+++ b/ixgbe_ethtool.c -@@ -412,6 +412,8 @@ static int ixgbe_get_link_ksettings(struct net_device *netdev, - case ixgbe_sfp_type_1g_sx_core1: - case ixgbe_sfp_type_1g_lx_core0: - case ixgbe_sfp_type_1g_lx_core1: -+ case ixgbe_sfp_type_1g_bx_core0: -+ case ixgbe_sfp_type_1g_bx_core1: - ethtool_link_ksettings_add_link_mode(cmd, supported, - FIBRE); - ethtool_link_ksettings_add_link_mode(cmd, advertising, -@@ -642,6 +644,8 @@ static int ixgbe_get_settings(struct net_device *netdev, - case ixgbe_sfp_type_1g_sx_core1: - case ixgbe_sfp_type_1g_lx_core0: - case ixgbe_sfp_type_1g_lx_core1: -+ case ixgbe_sfp_type_1g_bx_core0: -+ case ixgbe_sfp_type_1g_bx_core1: - ecmd->supported |= SUPPORTED_FIBRE; - ecmd->advertising |= ADVERTISED_FIBRE; - ecmd->port = PORT_FIBRE; -diff --git a/ixgbe_phy.c b/ixgbe_phy.c -index 647fdba..0f39fd8 100644 ---- a/ixgbe_phy.c -+++ b/ixgbe_phy.c -@@ -1266,6 +1266,7 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) - u8 comp_codes_1g = 0; - u8 comp_codes_10g = 0; - u8 oui_bytes[3] = {0, 0, 0}; -+ u8 bitrate_nominal = 0; - u8 cable_tech = 0; - u8 cable_spec = 0; - u16 enforce_sfp = 0; -@@ -1309,6 +1310,12 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) - IXGBE_SFF_CABLE_TECHNOLOGY, - &cable_tech); - -+ if (status != IXGBE_SUCCESS) -+ goto err_read_i2c_eeprom; -+ -+ status = hw->phy.ops.read_i2c_eeprom(hw, -+ IXGBE_SFF_BITRATE_NOMINAL, -+ &bitrate_nominal); - if (status != IXGBE_SUCCESS) - goto err_read_i2c_eeprom; - -@@ -1391,6 +1398,18 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) - else - hw->phy.sfp_type = - ixgbe_sfp_type_1g_lx_core1; -+ /* Support only Ethernet 1000BASE-BX10, checking the Bit Rate -+ * Nominal Value as per SFF-8472 by convention 1.25 Gb/s should -+ * be rounded up to 0Dh (13 in units of 100 MBd) for 1000BASE-BX -+ */ -+ } else if ((comp_codes_1g & IXGBE_SFF_BASEBX10_CAPABLE) && -+ (bitrate_nominal == 0xD)) { -+ if (hw->bus.lan_id == 0) -+ hw->phy.sfp_type = -+ ixgbe_sfp_type_1g_bx_core0; -+ else -+ hw->phy.sfp_type = -+ ixgbe_sfp_type_1g_bx_core1; - } else { - hw->phy.sfp_type = ixgbe_sfp_type_unknown; - } -@@ -1481,7 +1500,9 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) - hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || - hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 || - hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || -- hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1)) { -+ hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1 || -+ hw->phy.sfp_type == ixgbe_sfp_type_1g_bx_core0 || -+ hw->phy.sfp_type == ixgbe_sfp_type_1g_bx_core1)) { - hw->phy.type = ixgbe_phy_sfp_unsupported; - status = IXGBE_ERR_SFP_NOT_SUPPORTED; - goto out; -@@ -1500,7 +1521,9 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) - hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || - hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 || - hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || -- hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1)) { -+ hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1 || -+ hw->phy.sfp_type == ixgbe_sfp_type_1g_bx_core0 || -+ hw->phy.sfp_type == ixgbe_sfp_type_1g_bx_core1)) { - /* Make sure we're a supported PHY type */ - if (hw->phy.type == ixgbe_phy_sfp_intel) { - status = IXGBE_SUCCESS; -@@ -1819,12 +1842,14 @@ s32 ixgbe_get_sfp_init_sequence_offsets(struct ixgbe_hw *hw, - if (sfp_type == ixgbe_sfp_type_da_act_lmt_core0 || - sfp_type == ixgbe_sfp_type_1g_lx_core0 || - sfp_type == ixgbe_sfp_type_1g_cu_core0 || -- sfp_type == ixgbe_sfp_type_1g_sx_core0) -+ sfp_type == ixgbe_sfp_type_1g_sx_core0 || -+ sfp_type == ixgbe_sfp_type_1g_bx_core0) - sfp_type = ixgbe_sfp_type_srlr_core0; - else if (sfp_type == ixgbe_sfp_type_da_act_lmt_core1 || - sfp_type == ixgbe_sfp_type_1g_lx_core1 || - sfp_type == ixgbe_sfp_type_1g_cu_core1 || -- sfp_type == ixgbe_sfp_type_1g_sx_core1) -+ sfp_type == ixgbe_sfp_type_1g_sx_core1 || -+ sfp_type == ixgbe_sfp_type_1g_bx_core1) - sfp_type = ixgbe_sfp_type_srlr_core1; - - /* Read offset to PHY init contents */ -diff --git a/ixgbe_phy.h b/ixgbe_phy.h -index 3ece00f..60c7574 100644 ---- a/ixgbe_phy.h -+++ b/ixgbe_phy.h -@@ -18,6 +18,7 @@ - #define IXGBE_SFF_1GBE_COMP_CODES 0x6 - #define IXGBE_SFF_10GBE_COMP_CODES 0x3 - #define IXGBE_SFF_CABLE_TECHNOLOGY 0x8 -+#define IXGBE_SFF_BITRATE_NOMINAL 0xC - #define IXGBE_SFF_CABLE_SPEC_COMP 0x3C - #define IXGBE_SFF_SFF_8472_SWAP 0x5C - #define IXGBE_SFF_SFF_8472_COMP 0x5E -@@ -40,6 +41,7 @@ - #define IXGBE_SFF_1GBASESX_CAPABLE 0x1 - #define IXGBE_SFF_1GBASELX_CAPABLE 0x2 - #define IXGBE_SFF_1GBASET_CAPABLE 0x8 -+#define IXGBE_SFF_BASEBX10_CAPABLE 0x64 - #define IXGBE_SFF_10GBASESR_CAPABLE 0x10 - #define IXGBE_SFF_10GBASELR_CAPABLE 0x20 - #define IXGBE_SFF_SOFT_RS_SELECT_MASK 0x8 -diff --git a/ixgbe_type.h b/ixgbe_type.h -index d85bd9b..fbe2e66 100644 ---- a/ixgbe_type.h -+++ b/ixgbe_type.h -@@ -3705,6 +3705,8 @@ enum ixgbe_sfp_type { - ixgbe_sfp_type_1g_sx_core1 = 12, - ixgbe_sfp_type_1g_lx_core0 = 13, - ixgbe_sfp_type_1g_lx_core1 = 14, -+ ixgbe_sfp_type_1g_bx_core0 = 15, -+ ixgbe_sfp_type_1g_bx_core1 = 16, - ixgbe_sfp_type_not_present = 0xFFFE, - ixgbe_sfp_type_unknown = 0xFFFF - }; --- -2.44.0 - diff --git a/scripts/package-build/linux-kernel/patches/ixgbe/allow_unsupported_sfp.patch b/scripts/package-build/linux-kernel/patches/ixgbe/allow_unsupported_sfp.patch deleted file mode 100644 index 647fe4d5..00000000 --- a/scripts/package-build/linux-kernel/patches/ixgbe/allow_unsupported_sfp.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 4f6c1dc3c48a1b2fa7c06206e6366bcfaa33f3f7 Mon Sep 17 00:00:00 2001 -From: Christian Breunig <christian@breunig.cc> -Date: Fri, 22 Mar 2024 11:33:27 +0000 -Subject: [PATCH] ixgbe: always enable support for unsupported SFP+ modules - ---- - ixgbe_param.c | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -diff --git a/ixgbe_param.c b/ixgbe_param.c -index 71197b7..dac33ca 100644 ---- a/ixgbe_param.c -+++ b/ixgbe_param.c -@@ -307,7 +307,7 @@ IXGBE_PARAM(LRO, "Large Receive Offload (0,1), default 0 = off"); - * Default Value: 0 - */ - IXGBE_PARAM(allow_unsupported_sfp, "Allow unsupported and untested " -- "SFP+ modules on 82599 based adapters, default 0 = Disable"); -+ "SFP+ modules on 82599 based adapters, default 1 = Enable"); - - /* Enable/disable support for DMA coalescing - * -@@ -1133,8 +1133,8 @@ void ixgbe_check_options(struct ixgbe_adapter *adapter) - struct ixgbe_option opt = { - .type = enable_option, - .name = "allow_unsupported_sfp", -- .err = "defaulting to Disabled", -- .def = OPTION_DISABLED -+ .err = "defaulting to Enabled", -+ .def = OPTION_ENABLED - }; - #ifdef module_param_array - if (num_allow_unsupported_sfp > bd) { -@@ -1150,7 +1150,11 @@ void ixgbe_check_options(struct ixgbe_adapter *adapter) - } - #ifdef module_param_array - } else { -+ if (opt.def == OPTION_ENABLED) { -+ adapter->hw.allow_unsupported_sfp = true; -+ } else { - adapter->hw.allow_unsupported_sfp = false; -+ } - } - #endif - } --- -2.39.2 - diff --git a/scripts/package-build/linux-kernel/patches/kernel/0001-linkstate-ip-device-attribute.patch b/scripts/package-build/linux-kernel/patches/kernel/0001-linkstate-ip-device-attribute.patch deleted file mode 100644 index bedcec6e..00000000 --- a/scripts/package-build/linux-kernel/patches/kernel/0001-linkstate-ip-device-attribute.patch +++ /dev/null @@ -1,158 +0,0 @@ -From 81d38c4a32e059ad7835f7dc254e7627642afbe9 Mon Sep 17 00:00:00 2001 -From: Stephen Hemminger <stephen@networkplumber.org> -Date: Mon, 29 Apr 2013 18:50:15 -0700 -Subject: [PATCH] VyOS: Add linkstate IP device attribute - -Backport of earlier Vyatta patch. - -(cherry picked from commit 7c5a851086686be14ae937c80d6cee34814dbefc) ---- - Documentation/networking/ip-sysctl.rst | 11 +++++++++++ - include/linux/inetdevice.h | 1 + - include/linux/ipv6.h | 1 + - include/uapi/linux/ip.h | 1 + - include/uapi/linux/ipv6.h | 1 + - net/ipv4/devinet.c | 1 + - net/ipv6/addrconf.c | 8 ++++++++ - net/ipv6/route.c | 10 ++++++++++ - 8 files changed, 34 insertions(+) - -diff --git a/Documentation/networking/ip-sysctl.rst b/Documentation/networking/ip-sysctl.rst -index a66054d0763a..53440098fa98 100644 ---- a/Documentation/networking/ip-sysctl.rst -+++ b/Documentation/networking/ip-sysctl.rst -@@ -1734,6 +1734,17 @@ src_valid_mark - BOOLEAN - - Default value is 0. - -+link_filter - INTEGER -+ 0 - Allow packets to be received for the address on this interface -+ even if interface is disabled or no carrier. -+ 1 - Ignore packets received if interface associated with the incoming -+ address is down. -+ 2 - Ignore packets received if interface associated with the incoming -+ address is down or has no carrier. -+ -+ Default value is 0. Note that some distributions enable it -+ in startup scripts. -+ - arp_filter - BOOLEAN - - 1 - Allows you to have multiple network interfaces on the same - subnet, and have the ARPs for each interface be answered -diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h -index ddb27fc0ee8c..8ee3191d9558 100644 ---- a/include/linux/inetdevice.h -+++ b/include/linux/inetdevice.h -@@ -137,6 +137,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev) - #define IN_DEV_ARP_NOTIFY(in_dev) IN_DEV_MAXCONF((in_dev), ARP_NOTIFY) - #define IN_DEV_ARP_EVICT_NOCARRIER(in_dev) IN_DEV_ANDCONF((in_dev), \ - ARP_EVICT_NOCARRIER) -+#define IN_DEV_LINKFILTER(in_dev) IN_DEV_MAXCONF((in_dev), LINKFILTER) - - struct in_ifaddr { - struct hlist_node hash; -diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h -index af8a771a053c..ece8ac89d317 100644 ---- a/include/linux/ipv6.h -+++ b/include/linux/ipv6.h -@@ -84,6 +84,7 @@ struct ipv6_devconf { - __u8 ndisc_evict_nocarrier; - - struct ctl_table_header *sysctl_header; -+ __s32 link_filter; - }; - - struct ipv6_params { -diff --git a/include/uapi/linux/ip.h b/include/uapi/linux/ip.h -index 283dec7e3645..8067941a635e 100644 ---- a/include/uapi/linux/ip.h -+++ b/include/uapi/linux/ip.h -@@ -173,6 +173,7 @@ enum - IPV4_DEVCONF_DROP_GRATUITOUS_ARP, - IPV4_DEVCONF_BC_FORWARDING, - IPV4_DEVCONF_ARP_EVICT_NOCARRIER, -+ IPV4_DEVCONF_LINKFILTER, - __IPV4_DEVCONF_MAX - }; - -diff --git a/include/uapi/linux/ipv6.h b/include/uapi/linux/ipv6.h -index cf592d7b630f..e8915701aa73 100644 ---- a/include/uapi/linux/ipv6.h -+++ b/include/uapi/linux/ipv6.h -@@ -199,6 +199,7 @@ enum { - DEVCONF_NDISC_EVICT_NOCARRIER, - DEVCONF_ACCEPT_UNTRACKED_NA, - DEVCONF_ACCEPT_RA_MIN_LFT, -+ DEVCONF_LINK_FILTER, - DEVCONF_MAX - }; - -diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c -index bc74f131fe4d..9cdd5b50f9b2 100644 ---- a/net/ipv4/devinet.c -+++ b/net/ipv4/devinet.c -@@ -2595,6 +2595,7 @@ static struct devinet_sysctl_table { - "route_localnet"), - DEVINET_SYSCTL_FLUSHING_ENTRY(DROP_UNICAST_IN_L2_MULTICAST, - "drop_unicast_in_l2_multicast"), -+ DEVINET_SYSCTL_RW_ENTRY(LINKFILTER, "link_filter"), - }, - }; - -diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c -index a9358c796a81..7e39846f556b 100644 ---- a/net/ipv6/addrconf.c -+++ b/net/ipv6/addrconf.c -@@ -5657,6 +5657,7 @@ static inline void ipv6_store_devconf(struct ipv6_devconf *cnf, - array[DEVCONF_NDISC_EVICT_NOCARRIER] = cnf->ndisc_evict_nocarrier; - array[DEVCONF_ACCEPT_UNTRACKED_NA] = cnf->accept_untracked_na; - array[DEVCONF_ACCEPT_RA_MIN_LFT] = cnf->accept_ra_min_lft; -+ array[DEVCONF_LINK_FILTER] = cnf->link_filter; - } - - static inline size_t inet6_ifla6_size(void) -@@ -7086,6 +7087,13 @@ static const struct ctl_table addrconf_sysctl[] = { - .extra1 = (void *)SYSCTL_ZERO, - .extra2 = (void *)SYSCTL_ONE, - }, -+ { -+ .procname = "link_filter", -+ .data = &ipv6_devconf.link_filter, -+ .maxlen = sizeof(int), -+ .mode = 0644, -+ .proc_handler = proc_dointvec, -+ }, - { - .procname = "ioam6_id", - .data = &ipv6_devconf.ioam6_id, -diff --git a/net/ipv6/route.c b/net/ipv6/route.c -index eb3afaee62e8..0f8670e74cc7 100644 ---- a/net/ipv6/route.c -+++ b/net/ipv6/route.c -@@ -679,6 +679,14 @@ static inline void rt6_probe(struct fib6_nh *fib6_nh) - } - #endif - -+static inline int rt6_link_filter(const struct fib6_nh *nh) -+{ -+ const struct net_device *dev = nh->fib_nh_dev; -+ int linkf = __in6_dev_get(dev)->cnf.link_filter; -+ return (linkf && !netif_running(dev)) -+ || (linkf > 1 && !netif_carrier_ok(dev)); -+} -+ - /* - * Default Router Selection (RFC 2461 6.3.6) - */ -@@ -720,6 +728,8 @@ static int rt6_score_route(const struct fib6_nh *nh, u32 fib6_flags, int oif, - - if (!m && (strict & RT6_LOOKUP_F_IFACE)) - return RT6_NUD_FAIL_HARD; -+ if (rt6_link_filter(nh)) -+ return -1; - #ifdef CONFIG_IPV6_ROUTER_PREF - m |= IPV6_DECODE_PREF(IPV6_EXTRACT_PREF(fib6_flags)) << 2; - #endif --- -2.39.2 - diff --git a/scripts/package-build/linux-kernel/patches/kernel/0002-inotify-support-for-stackable-filesystems.patch b/scripts/package-build/linux-kernel/patches/kernel/0002-inotify-support-for-stackable-filesystems.patch deleted file mode 100644 index b19a8d25..00000000 --- a/scripts/package-build/linux-kernel/patches/kernel/0002-inotify-support-for-stackable-filesystems.patch +++ /dev/null @@ -1,298 +0,0 @@ -From 1d625d2f745b61a718ce52cd1729f467c17defa6 Mon Sep 17 00:00:00 2001 -From: Alex Harpin <development@landsofshadow.co.uk> -Date: Wed, 31 Dec 2014 10:33:38 +0000 -Subject: [PATCH] VyOS: add inotify support for stackable filesystems - (overlayfs) - -As it stands at the moment, overlayfs doesn't have full support for -inotify, and as such anything that relies on inotify currently has -issues. The simplest method of demonstrating this is to tail a file -(so tail -f /var/log/messages) and see that it doesn't follow changes -in that file. This has been reported in a number of places, including -Bug #882147 in Ubuntu. This patch is based on the version proposed by -Li Jianguo in response to this bug, adding support for inotify in -stackable filesystems. - -This commit provides a complete fix for the workaround implemented -for bug #303, and will allow that commit to be reverted. - -Bug #425 http://bugzilla.vyos.net/show_bug.cgi?id=425 - -(cherry picked from commit a93f1128bc83b5a6628da242e71c18ef05e81ea2) ---- - fs/notify/inotify/Kconfig | 9 +++ - fs/notify/inotify/inotify_user.c | 114 ++++++++++++++++++++++++++++++- - fs/overlayfs/super.c | 27 ++++++-- - include/linux/inotify.h | 28 ++++++++ - 4 files changed, 172 insertions(+), 6 deletions(-) - -diff --git a/fs/notify/inotify/Kconfig b/fs/notify/inotify/Kconfig -index 1cc8be25df7e..bc4acd1a6ea4 100644 ---- a/fs/notify/inotify/Kconfig -+++ b/fs/notify/inotify/Kconfig -@@ -15,3 +15,12 @@ config INOTIFY_USER - For more information, see <file:Documentation/filesystems/inotify.rst> - - If unsure, say Y. -+ -+config INOTIFY_STACKFS -+ bool "Inotify support for stackable filesystem" -+ select INOTIFY_USER -+ default y -+ help -+ Say Y here to enable inotify support for stackable filesystem. -+ -+ If unsure, say N. -diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c -index 1c4bfdab008d..cf567cc33679 100644 ---- a/fs/notify/inotify/inotify_user.c -+++ b/fs/notify/inotify/inotify_user.c -@@ -15,6 +15,7 @@ - - #include <linux/file.h> - #include <linux/fs.h> /* struct inode */ -+#include <linux/mount.h> - #include <linux/fsnotify_backend.h> - #include <linux/idr.h> - #include <linux/init.h> /* fs_initcall */ -@@ -97,6 +98,93 @@ static void __init inotify_sysctls_init(void) - #define inotify_sysctls_init() do { } while (0) - #endif /* CONFIG_SYSCTL */ - -+#ifdef CONFIG_INOTIFY_STACKFS -+ -+static DEFINE_RWLOCK(inotify_fs_lock); -+static LIST_HEAD(inotify_fs_list); -+ -+static inline struct file_system_type* peek_fs_type(struct path *path) -+{ -+ return path->mnt->mnt_sb->s_type; -+} -+ -+static struct inotify_stackfs* inotify_get_stackfs(struct path *path) -+{ -+ struct file_system_type *fs; -+ struct inotify_stackfs *fse, *ret = NULL; -+ -+ fs = peek_fs_type(path); -+ -+ read_lock(&inotify_fs_lock); -+ list_for_each_entry(fse, &inotify_fs_list, list) { -+ if (fse->fs_type == fs) { -+ ret = fse; -+ break; -+ } -+ } -+ read_unlock(&inotify_fs_lock); -+ -+ return ret; -+} -+ -+static inline void inotify_put_stackfs(struct inotify_stackfs *fs) -+{ -+} -+ -+int inotify_register_stackfs(struct inotify_stackfs *fs) -+{ -+ int ret = 0; -+ struct inotify_stackfs *fse; -+ -+ BUG_ON(IS_ERR_OR_NULL(fs->fs_type)); -+ BUG_ON(IS_ERR_OR_NULL(fs->func)); -+ -+ INIT_LIST_HEAD(&fs->list); -+ -+ write_lock(&inotify_fs_lock); -+ list_for_each_entry(fse, &inotify_fs_list, list) { -+ if (fse->fs_type == fs->fs_type) { -+ write_unlock(&inotify_fs_lock); -+ ret = -EBUSY; -+ goto out; -+ } -+ } -+ list_add_tail(&fs->list, &inotify_fs_list); -+ write_unlock(&inotify_fs_lock); -+ -+out: -+ return ret; -+} -+EXPORT_SYMBOL_GPL(inotify_register_stackfs); -+ -+void inotify_unregister_stackfs(struct inotify_stackfs *fs) -+{ -+ struct inotify_stackfs *fse, *n; -+ -+ write_lock(&inotify_fs_lock); -+ list_for_each_entry_safe(fse, n, &inotify_fs_list, list) { -+ if (fse == fs) { -+ list_del(&fse->list); -+ break; -+ } -+ } -+ write_unlock(&inotify_fs_lock); -+} -+EXPORT_SYMBOL_GPL(inotify_unregister_stackfs); -+ -+#else -+ -+static inline struct inotify_stackfs* inotify_get_stackfs(struct path *path) -+{ -+ return NULL; -+} -+ -+static inline void inotify_put_stackfs(struct inotify_stackfs *fs) -+{ -+} -+ -+#endif /* CONFIG_INOTIFY_STACKFS */ -+ - static inline __u32 inotify_arg_to_mask(struct inode *inode, u32 arg) - { - __u32 mask; -@@ -370,8 +458,8 @@ static const struct file_operations inotify_fops = { - /* - * find_inode - resolve a user-given path to a specific inode - */ --static int inotify_find_inode(const char __user *dirname, struct path *path, -- unsigned int flags, __u64 mask) -+static inline int __inotify_find_inode(const char __user *dirname, struct path *path, -+ unsigned int flags, __u64 mask) - { - int error; - -@@ -392,6 +480,28 @@ static int inotify_find_inode(const char __user *dirname, struct path *path, - return error; - } - -+static int inotify_find_inode(const char __user *dirname, struct path *path, -+ unsigned int flags, __u64 mask) -+{ -+ int ret; -+ struct path tpath; -+ struct inotify_stackfs *fse; -+ -+ ret = __inotify_find_inode(dirname, &tpath, flags, mask); -+ if (ret) -+ return ret; -+ fse = inotify_get_stackfs(&tpath); -+ if (fse == NULL) { -+ *path = tpath; -+ return 0; -+ } -+ ret = fse->func(path, &tpath); -+ inotify_put_stackfs(fse); -+ path_put(&tpath); -+ -+ return ret; -+} -+ - static int inotify_add_to_idr(struct idr *idr, spinlock_t *idr_lock, - struct inotify_inode_mark *i_mark) - { -diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c -index 2c056d737c27..2cb1f0024e70 100644 ---- a/fs/overlayfs/super.c -+++ b/fs/overlayfs/super.c -@@ -15,6 +15,7 @@ - #include <linux/seq_file.h> - #include <linux/posix_acl_xattr.h> - #include <linux/exportfs.h> -+#include <linux/inotify.h> - #include <linux/file.h> - #include <linux/fs_context.h> - #include <linux/fs_parser.h> -@@ -1528,6 +1529,18 @@ static void ovl_inode_init_once(void *foo) - inode_init_once(&oi->vfs_inode); - } - -+static int ovl_inotify_path(struct path *dst, struct path *src) -+{ -+ ovl_path_real(src->dentry, dst); -+ path_get(dst); -+ return 0; -+} -+ -+static struct inotify_stackfs ovl_inotify = { -+ .fs_type = &ovl_fs_type, -+ .func = ovl_inotify_path, -+}; -+ - static int __init ovl_init(void) - { - int err; -@@ -1543,18 +1556,24 @@ static int __init ovl_init(void) - err = ovl_aio_request_cache_init(); - if (!err) { - err = register_filesystem(&ovl_fs_type); -- if (!err) -- return 0; -+ if (err) -+ goto err; -+ err = inotify_register_stackfs(&ovl_inotify); -+ if (err) -+ goto err; -+ return 0; - -- ovl_aio_request_cache_destroy(); - } -+err: - kmem_cache_destroy(ovl_inode_cachep); -- -+ unregister_filesystem(&ovl_fs_type); -+ ovl_aio_request_cache_destroy(); - return err; - } - - static void __exit ovl_exit(void) - { -+ inotify_unregister_stackfs(&ovl_inotify); - unregister_filesystem(&ovl_fs_type); - - /* -diff --git a/include/linux/inotify.h b/include/linux/inotify.h -index 8d20caa1b268..c126e2f93a73 100644 ---- a/include/linux/inotify.h -+++ b/include/linux/inotify.h -@@ -8,6 +8,8 @@ - #define _LINUX_INOTIFY_H - - #include <uapi/linux/inotify.h> -+#include <linux/list.h> -+#include <linux/fs.h> - - #define ALL_INOTIFY_BITS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \ - IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \ -@@ -17,4 +19,30 @@ - IN_DONT_FOLLOW | IN_EXCL_UNLINK | IN_MASK_ADD | \ - IN_MASK_CREATE | IN_ISDIR | IN_ONESHOT) - -+typedef int (*inotify_path_proc)(struct path *dst, struct path *src); -+ -+struct inotify_stackfs { -+ struct list_head list; /* entry in inotify_fs_list */ -+ struct file_system_type *fs_type; /* registed file_system_type */ -+ inotify_path_proc func; /* registed callback function */ -+}; -+ -+#ifdef CONFIG_INOTIFY_STACKFS -+ -+extern int inotify_register_stackfs(struct inotify_stackfs *fs); -+extern void inotify_unregister_stackfs(struct inotify_stackfs *fs); -+ -+#else -+ -+static inline int inotify_register_stackfs(struct inotify_stackfs *fs) -+{ -+ return 0; -+} -+ -+static inline void inotify_unregister_stackfs(struct inotify_stackfs *fs) -+{ -+} -+ -+#endif /* CONFIG_INOTIFY_STACKFS */ -+ - #endif /* _LINUX_INOTIFY_H */ --- -2.39.2 - |